在我的生命中,我无法想出如何使用我的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'
这里是我引用的参考页面,告诉我“iNi等待”存在:http://pyserial.readthedocs.io/en/latest/pyserial_api.html

最佳答案

您列出的文档链接将in_waiting显示为PySerial 3.0中添加的属性。很可能您使用的是PySerialinWaiting()函数。
您可以检查PySerial的版本,如下所示:

import serial
print serial.VERSION

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

否则,请更改代码以使用PySerial
while (True):
    if (ser.inWaiting() > 0):
        ser.read(ser.inWaiting())

关于python - 使用pySerial进行Python 3非阻塞读取(无法使pySerial的“in_waiting”属性正常工作),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38757906/

10-10 19:28