0

シリアルモニターを介して送信されたテキスト文字列をモールス信号に変換するArduinoプログラムを作成しようとしています。これは問題のある機能です:

void serialEvent() {
  while (Serial.available()){
    char inChar = Serial.read();
    input += inChar;
    if (inChar == '\0'){  
      Serial.print("END!");
      stringComplete = true;
    }
  }
}

シリアル入力から文字を1つずつ取得し、シリアル入力の最後に到達するまで入力文字列に追加する必要があります(つまり、ヌル文字)。何らかの理由で、「if」ステートメントは実行されません

inChar == '\0'

しかし、「\0」を次のように任意の文字に置き換えると

inChar == 'g'

それはうまく実行されます。どういうわけかヌル文字「\0」を間違って呼んでいますか?

4

1 に答える 1

4

私が思うに、あなたは while ループのすべての文字を読んでいると思いますが、そうですか? 真実は、メソッドへの呼び出しごとに文字のみが読み取られるため、 whenloop()を設定できます。stringComplete = trueSerial.available() == 0

于 2012-12-18T01:24:43.307 に答える