次のコードをコンパイルしようとすると、タイトルにエラーが表示されます:

#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; 

これで、charsendBack = 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コードを使用する理由はまったくありません。プログラムを理解するのは難しい。 '?'を使用してください。以前のエラーは、単一文字(一重引用符)ではなく文字列(二重引用符)を使用した結果でした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です