我正在尝试编写一个Arduino程序,该程序将通过串行监视器传输的文本字符串转换为摩尔斯电码。这是有问题的函数:
void serialEvent() {
while (Serial.available()){
char inChar = Serial.read();
input += inChar;
if (inChar == ' '){
Serial.print("END!");
stringComplete = true;
}
}
}
它应该从串行输入中逐个获取字符,将它们添加到输入字符串中,直到到达串行输入的末尾(即空字符)。由于某种原因,"if"语句不会执行
inChar == ' '
但是如果我用任意字符替换"\0",如
inChar == 'g'
它执行得很好。我是否以某种方式错误地称空字符"\0"?
我认为您认为您阅读了while循环中的所有字符,对吗?事实是,每次调用 loop()
方法时只读取一个字符,因此,您可以在Serial.available() == 0
时设置stringComplete = true
。