Python从arduino读取数据错误

标签 python arduino comm

我对使用串口非常陌生,我有一个问题我确实无法解决。让我用我一直使用的代码来解释这个问题。

Python 代码:

from time import sleep
import serial
ser = serial.Serial('COM8', 9600) 
incoming=[10,15]
while True:
    ser.write((incoming))
    msg=(ser.readline())
    print(msg.decode('utf-8'))
    sleep(3)
int incoming[3];

arduino代码:

void setup() {
pinMode(13, OUTPUT);
Serial.begin(9600); 
Serial.println("Ready");
}

void loop() {
if(Serial.available()) {
   for (int i = 0; i < 3; i++) {
  incoming[i] = Serial.read();
}
if (incoming[1]==-1){
Serial.println(incoming[0]);
Serial.println(incoming[1]);
Serial.println(incoming[2]);
Serial.println(incoming[3]);
}
}

当它运行时(我首先加载arduino代码,然后从python运行脚本) 代码运行成功,但输出如下; 准备好 10 -1 -1 15 -1 -1 10

就这样继续下去…… 为什么会出现这些-1?我在互联网上搜索过,但根本找不到任何可以解决问题的方法。 对于这个问题的任何帮助,我将不胜感激。 非常感谢。

最佳答案

查看 Arduino 文档。

Serial.read() 中的 -1 表示“没有可用数据”。

再长一点:

您正在等待串行接口(interface)上​​有可用字符。之后,您尝试读取 4 个字符,但没有人知道它们是否已经可用。 (串行接口(interface)没那么快,μC 快得多) 因此,在 Python 脚本中的下一个字符到达之前,您会读取“无字符”两次。

关于Python从arduino读取数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59151106/

相关文章:

python - 在 Python 中跨列应用多个函数(均值、STD 等)

c - Arduino和PIC(8位微 Controller )之间的SPI信号转换

linux - linux "comm"工具比较文件时如何显示行号

python - 如何保留自动添加的 argparse 帮助参数,但从中删除 -h,以便我可以将该选项用于另一个参数

python - 无法使用 bs4 从 BSE 网站上抓取特定信息

python - 我想使用 lxml 删除花括号和 XML 命名空间,只报告标签名称

arduino - 如何使用带有 PT100 RTD 传感器的 arduino uno 板读取温度?

c - 如何通过串口将整数发送到arduino?

sed - 比较 2 个相似的文件,只输出差异,保留它们出现的顺序?

sorting - 对终端的 redis 输出进​​行排序,以便与 comm 命令一起使用