我试图用Arduino Mega中的Pi读取串行数据。大多数时候我得到正确的读取,但偶尔我没有读取正确的字节数。我从Arduino的串行监视器显示正在发送的正确数据。
Arduino代码
String reading = String(analogRead(0));
String out1 = reading + "\n";
Serial.print(out1);
Pi Python Code
ser = serial.Serial('/dev/ttyACM0', 9600 , timeout = 1)
ser.open()
num = ser.readline()
print num
ser.close()
num的值范围为60到200。
以下是七个连续执行的输出示例(粗体读错):
74
74
734
73
734
74
3
我已经搜索了论坛,找不到任何提出问题来解决我的问题的人。我读到的一切都说这应该是小菜一碟,但我仍然有问题。
答案 0 :(得分:0)
这可能是一个时间问题。 Arduino代码可能在一个循环中运行,对吗?它只是以某种速度抨击角色。看起来Python程序没有循环,或者如果有循环,你就不断打开和关闭串口。当Pi没有收听时,Arduino可能正在传输。
试试这个:
ser = serial.Serial() # whatever you need as arguments
ser.open()
while True:
num = ser.readline()
print(num)
你必须使用Control-C或其他东西来解决这个问题,但至少你可以看看它是否有效。