Arduino Serial.read(),读取与ASCII字符对应的错误十进制数

时间:2016-01-26 23:34:49

标签: arduino ascii

我正在编写arduino sketch,当通过串口发送certian字符时,它将执行certian事务!

我的arduino草图的重要部分是:

while(Serial.available()){
Status = Serial.read();
Serial.println(Status);

if (Status == A){
    digitalWrite(led, HIGH);
    Serial.println("Pin 13 -> ON");

  }else if(Status == B){
      digitalWrite(led, LOW);
      Serial.println("Pin 13 -> OFF");
    }
}

BTW:变量状态是整数类型!!

问题是它有时可以工作,有时不工作,所以当我上传草图时工作正常我输入字母A并将其转换为数字65,键入字母B并将其转换为数字66.过了一段时间后突然开始输出数字193和194.如果它返回193和194 alwas但它没有!     希望somone会知道解决方案,如果你想要更多信息...

2 个答案:

答案 0 :(得分:0)

if (Status == A)正在比较两个变量StatusA

您应该将其替换为if (Status == 'A')。 与if (Status == 'B')相同。

答案 1 :(得分:0)

那么,193/194仅与65/66比1(MSB)不同。您可以像这样掩盖最左边的位:

Status = Status & 01111111; // MSB will be zeroed

或双班:

Status = Status << 1;
Status = Status >> 1; // now you have dropped the leftmost bit

查看文档here