0

我正在尝试编写一个 Arduino 程序,它将通过串行监视器传输的文本字符串转换为摩尔斯电码。这是有问题的功能:

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

它应该一个接一个地从串行输入中获取字符,将它们添加到输入字符串中,直到它到达串行输入的末尾(即空字符)。由于某种原因,“if”语句不会执行

inChar == '\0'

但是如果我用任意字符替换 '\0'

inChar == 'g'

它执行得很好。我是否以某种方式将空字符 '\0' 称为错误?

4

1 回答 1

4

我认为您认为您在 while 循环中读取了所有字符,对吗?事实上,每次调用该loop()方法只读取一个字符,因此,您可以设置stringComplete = truewhen Serial.available() == 0

于 2012-12-18T01:24:43.307 回答