0

シリアルデータを別の文字列と比較できる文字列に読み込もうとしています。if (inputString.equals("test")) を使用してブール値をテストしていますが、シリアルモニターに test を入力すると、 THEY ARE EQUAL が表示されないため、常に false として返されます (送信したものはすべてエコーバックされます) arduinoに)。何か案は?このように文字列を連結すると、表示されない余分なバイトが文字列に追加されますか?

String inputString = "";         // a string to hold incoming data
boolean stringComplete = false;  // whether the string is complete

void setup() {
// initialize serial:
Serial.begin(9600);
}

void loop() {
  // print the string when a newline arrives:
  if (stringComplete) {

       if (inputString.equals("test")) {
       Serial.print("THEY ARE EQUAL"); 
    }

    Serial.print(inputString); 
    // clear the string:
    inputString = "";
    stringComplete = false;
    }

   }

void serialEvent() {
  while (Serial.available()) {
  // get the new byte:
  char inChar = (char)Serial.read(); 
  // add it to the inputString:
  inputString += inChar;
  stringComplete = true;

  }
}

ありがとう!

4

1 に答える 1

0

シリアルデータが読み取られるのに十分な時間をとる必要があります。遅延を追加する

char inChar = (char)Serial.read(); 
// add it to the inputString:
delay(100);
inputString += inChar;
于 2012-11-29T01:25:20.810 に答える