Pi上的Python串行读取

时间:2015-05-20 03:43:47

标签: python serial-port arduino raspberry-pi

我试图用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

我已经搜索了论坛,找不到任何提出问题来解决我的问题的人。我读到的一切都说这应该是小菜一碟,但我仍然有问题。

1 个答案:

答案 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或其他东西来解决这个问题,但至少你可以看看它是否有效。