arduino - 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);
}
}
}
解决方案
Serial.parseInt
0
当超时而没有收到或收到无效字符时返回。
由于您正在循环等待可用数据Serial.parseInt
,因此唯一的解释是您正在发送除数字之外的其他内容。很可能是来自终端程序或 println 函数的换行符或回车符......
你应该打电话Serial.peek
检查下一个字节是否是你打电话之前的数字Serial.parseInt
。如果您确定除了单个整数和一些非数字字符之外没有发送任何内容,您还可以在解析可能的下一个整数之前清除输入缓冲区。
但是,如果您要发送一个整数和一个终止字符,您最好不要使用Serial.parseInt
. 将数据读入数组,直到收到终止字符。然后自己将数据转换为整数。
仅当您知道您将在特定时间间隔内接收整数表示时,使用Serial.parseInt
才有意义。
推荐阅读
- javascript - 使用三元运算符设置对象属性
- html - 如何从html中的表格中删除左侧的空格
- azure - Azure 免费试用帐户 VM 大小为灰色
- pyspark - 如何检查RDD是否包含pyspark中的列表元素?
- sql - 如何在 from_json Spark SQL 中从 double 转换为 int(NULL 输出)
- php - 将每个查询重定向到上层文件夹中的文件
- python - 解压 IEEE 754 浮点数
- html - 动态构建部分 Razor 视图 - 获取结束标记问题
- python - 为什么只绘制了一个情节?
- sql - 带有两个表和案例的 Oracle UPDATE