使用pySerial读取Python 3非阻塞(无法获取pySerial' s" in_waiting"属性工作)

时间:2016-08-04 03:12:52

标签: python raspberry-pi pyserial

对于我的生活,我无法弄清楚如何使用我的Raspberry Pi在Python 3中进行非阻塞串行读取。

这是我的代码:

import serial #for pySerial

ser = serial.Serial('/dev/ttyUSB0', 9600) #open serial port
print ('serial port = ' + ser.name) #print the port used

while (True):
    if (ser.in_waiting>0):
        ser.read(ser.in_waiting)

结果:
AttributeError: 'Serial' object has no attribute 'in_waiting'

这是我参考的参考页面告诉我" in_waiting"存在:http://pyserial.readthedocs.io/en/latest/pyserial_api.html

1 个答案:

答案 0 :(得分:2)

您列出的文档链接显示in_waiting作为PySerial 3.0中添加的属性。很可能你正在使用PySerial< 3.0因此您必须调用inWaiting()函数。

您可以按如下方式检查PySerial的版本:

import serial
print serial.VERSION

如果使用pip安装PySerial,则应该能够执行升级(可能需要管理员权限):

pip install --upgrade pyserial

否则,请更改代码以使用PySerial<中的正确接口。 3.0:

while (True):
    if (ser.inWaiting() > 0):
        ser.read(ser.inWaiting())