嘗試使用Arduino Uno和標準IDE發送串行消息。解析發送到設備的串行消息時遇到問題。Serial.read()跳過串行輸入
看到如果我包含這一行Serial.println("Serial.available() = " + String(Serial.available()));
我將能夠閱讀剩餘的消息。如果這被註釋掉了,我只會看到消息的第一個字母,然後跳過其餘的部分。我看到有沒有添加代碼行的輸出的附加圖像。
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
while (!Serial) {} // wait for serial to be initialized
Serial.println("Setup called. Serial port ready.");
Serial.println("Waiting for time sync message...");
while (!Serial.available()) {}
processSyncMessage();
}
void processSyncMessage() {
// parse first letter of message
char messageHeader = (char) Serial.read();
switch (messageHeader) {
case TIME_HEADER:
// do processing
break;
default:
Serial.println("Unknown message sent with header: " + String(messageHeader));
// must include this line in order to see the entire message sent
// just calling a println or a Serial.available() doesn't work ????
Serial.println("Serial.available() = " + String(Serial.available()));
Serial.println("---start of message");
for (int r = 0; r != -1; r = Serial.read()) {
Serial.print((char) r);
}
Serial.println();
Serial.println("---end of message");
break;
}
}
是這個主題相關的緩衝區?我可以用fflush(SOME_SECRET_BUFFER)
以某種方式沖洗它嗎?
Arduino不是C,刪除標籤。這由'Serial.println(「Serial.available()=」+ String(Serial.available()))演示;' –
setup()只調用一次。您應該定義一個loop()函數並將setup()的最後3行代碼移入其中,以便連續運行。 –