对于我的生活,我无法弄清楚如何使用我的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
答案 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())