首页 > 解决方案 > serial.parseInt() 自己返回一个 0 值

问题描述

我正在尝试从串行读取一些整数,所以我使用 Serial.parseInt() 读取两个值(0 或 1),问题是代码第一次完美运行,但随后串行开始读取值 0它自己的,没有我发送任何东西,这是我正在使用的代码的一部分:

while (!Serial.available()) {}
A = Serial.parseInt();
Serial.println(A);
if (A == 1) {
  Book = "";
  Serial.println("add tag");
  while (Book == "") {
    delay(2000);
    Book = tagB();
  }
  Serial.println(Book);
  sendToE1("", Book);
  delay(2000);
}
}
}

标签: arduinoserial-port

解决方案


Serial.parseInt0当超时而没有收到或收到无效字符时返回。

由于您正在循环等待可用数据Serial.parseInt,因此唯一的解释是您正在发送除数字之外的其他内容。很可能是来自终端程序或 println 函数的换行符或回车符......

你应该打电话Serial.peek检查下一个字节是否是你打电话之前的数字Serial.parseInt。如果您确定除了单个整数和一些非数字字符之外没有发送任何内容,您还可以在解析可能的下一个整数之前清除输入缓冲区。

但是,如果您要发送一个整数和一个终止字符,您最好不要使用Serial.parseInt. 将数据读入数组,直到收到终止字符。然后自己将数据转换为整数。

仅当您知道您将在特定时间间隔内接收整数表示时,使用Serial.parseInt才有意义。


推荐阅读