Python 从 arduino 读取数据错误

Python reads data wrong from arduino

我刚开始使用串口,​​有个问题我真的无法解决。让我解释一下我一直在使用的代码的问题。

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]);
}
}

当这个 运行s(我首先加载 arduino 代码,然后 运行 来自 python 的脚本) 代码 运行s 成功但是输出结果是这样的; 准备好 10 -1 -1 15 -1 -1 10

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

查看 Arduino 文档。

Serial.read() 中的 -1 表示 "no data available"。

稍微长一点:

您正在等待串行接口上​​的可用字符。之后你尝试读取 4 个字符,但没有人知道它们是否已经可用。 (串行接口没那么快,µC 快多了) 因此,在来自 Python 脚本的下一个字符到达之前,您会读取 "no character" 两次。