通过pySerial正确接收数据有点问题:它通常不会读取完整的数据或太多的数据。有时并且有时候更常见的是,还有额外的字符或某些字符/部分的发送数据丢失。看来,PC和数据的发射器没有正确同步。PySerial没有正确接收数据
在我使用的Arduino当前示例中,发送的“Hello World”我的电脑的串口(操作系统是Ubuntu的14.04),用下面的简单代码:
void setup(){
Serial.begin(9600);
Serial.print("Programme initiated\n");
}
我用下面的python3代码接收数据:
import serial
import time
arduino = serial.Serial(port, baudrate=9600, timeout=2)
print(arduino.isOpen)
print(arduino)
time.sleep(1)
while True:
print(arduino.readline())
这是非常简单的教程例子,这里是我收到(除了那些正确的东西):
b'PrProgramme initiated\n'
或
b'PProgramme initiated\n'
或
b'ProgProgramme initiated\n'
或
b'ogramme initiated\n'
我提出与我的代码更复杂的问题,但我仍然没有解决这个问题。当从arduino(标准hello world代码)的循环中发送消息时,通常需要时间来稳定(虽然它再次只显示数据的中间片段),然后运行非常稳定,但即使如此它有时会打破单行。
我在与万用表设备通信时遇到同样的困难。在那里,它通常不会读取第一个字符或与之前的数据混合在一起。
有没有人遇到过这个问题?我认为这是一个同步问题,但我不知道如何解决它。而令我感到困惑的是,我真的只使用了教程,并且它似乎不能正常工作。或者它是我的电脑的配置问题?
感谢您的解释。总的来说,在通信开始之前是否有办法清除缓冲区(解决第3点)? – kire
尝试使用 arduino.flushInput() 刚刚打开 – Lesto