Arduino中的空字符问题

时间:2012-12-18 00:35:11

标签: null serial-port arduino

我正在尝试编写一个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'错了吗?

1 个答案:

答案 0 :(得分:4)

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