我有这段代码:
void setup() {
Serial.begin(9600);
while (!Serial){}
Serial.println("Connected");
Serial.println("L");
Serial.println("R");
Serial.println("B");
Serial.println("S");
Serial.println("T");
}
void loop() {
evalComms(Serial.readStringUntil("0"));
}
void evalComms(String recv){
if (recv == "L"){
Serial.println("ok L " + String(Serial.parseInt()));
} else if (recv == "R"){
Serial.println("ok R " + String(Serial.parseInt()));
} else if (recv == "B") {
Serial.println("ok B " + String(Serial.parseInt()));
} else if (recv == "S") {
Serial.println("ok S");
} else if (recv == "T"){
Serial.println("ok T");
} else if (recv != ""){
Serial.println("Comm error. Read: " + recv);
}
}
预期的I / O场景: IN:L020 OUT:好的L 20
实际I / O场景: IN:L020 OUT:Comm错误。阅读:L020
我做错了什么?
答案 0 :(得分:0)
尝试:
Serial.readStringUntil('0')
因为根据docs,它接受char
否则我建议将终止字符改为\n
(ENTER),
然后在序列号上:"L\n20"
将为您提供正确的输出。
void loop()
{
if(Serial.available() > 0)
{
evalComms( Serial.readStringUntil('\n') );
}
}