次のコードをコンパイルしようとすると、タイトルにエラーが表示されます:
#define char incomingByte; //Defines incomingByte #define char sendBack = K; #define char ?; #define pollTime; bool running = true; void setup() { Serial.begin(9600); //Set data rate. } void loop() { for(Serial.available() > 0;) { //Gets you the number of bytes that are available to be read from the serial port. pollTime = delayMicroseconds(200); // Sets a poll time of 200 microseconds. incomingByte = Serial.read(); if(incomingByte = ?) { Serial.print(sendBack); } } }
回答
コードはほぼすべての点で完全に間違っています。
#define char incomingByte; //Defines incomingByte
この行は、コンパイラがchar
を検出するたびにincomingByte;
を置き換えることを意味します。
#define char sendBack = K;
これで、char
が表示されたときに、sendBack = K;
に置き換えられます。 div>。
#define char ?;
これで、iv id = “2eb2a8dc8bが表示されたときに、?;
に置き換えられます。 “>
。
#define pollTime;
ここで何を考えているのかわかりません。宣言しようとしている場合次のように、型を指定する必要がある変数:
int pollTime;
bool running = true; void setup() { Serial.begin(9600); //Set data rate. } void loop() {
これら行はOKです。
for(Serial.available() > 0;) { //Gets you the number of bytes that are available to be read from the serial port.
そこにセミコロンは必要ありません。 for
ループはそのように記述されていません。 while
、つまり
while(Serial.available() > 0)
pollTime = delayMicroseconds(200); // Sets a poll time of 200 microseconds.
それはそのようなことは何もしていません。 200 µsの遅延があり、何も設定されていません。
incomingByte = Serial.read();
このように、あなたがした方法ではありません:
char incomingByte;
if(incomingByte = ?) {
それ文字を比較する場合は、一重引用符で囲む必要があります。また、==
ではなく=
と比較します。
if(incomingByte == "?") {
Serial.print(sendBack);
つまり、以前のコードから見えます:
Serial.print("K");
} } }
これらの行は問題ないように見えます。
Cプログラミングの初心者ページを読むことをお勧めします。これはここで行っていることを純粋に推測します。1つには、#define
がどのように機能するかを確認します。1ページは次のとおりです。 https://www.techonthenet.com/c_language/constants/create_define.php 。その他: http://www.cprogramming.com/reference/preprocessor/define.html
コメント
- ありがとうございました。これはとても役に立ちました。 '提供されたリンクを調べます。
- P.S。 "リスペクト"を"アスペクト"最初の行
- 'それについてはよくわかりません。 すべての点でを参照してください。つまり、完全に、完全に、完全に、完全に、完全に、完全に、完全に
回答
[UPDATE]
試してみてください:
int question = 63; //in the ascii table, ? is 63 void setup() { Serial.begin(9600); //set baud rate. } void loop() { if (Serial.available()) { //Gets you the number of bytes that are available to be read from the serial port. if (Serial.read() == question) { Serial.println("OK"); } } }
コメント
- コードを実行すると、次のエラーが発生します。
- const char * 'から' char ' [-fpermissive]
- ページを更新して、新しいコードをテストします
- ありがとうございます。この部分は機能しました。条件が満たされない場合は、LEDをオフにするためにも必要であることを忘れました。 LEDがオンになっていると指定したコードを実行すると、
- 'ここで疑問符にASCIIコードを使用する理由はまったくありません。プログラムを理解するのは難しい。
'?'
を使用してください。以前のエラーは、単一文字(一重引用符)ではなく文字列(二重引用符)を使用した結果でした。