Python 3 使用 pySerial 进行非阻塞读取(无法使 pySerial 的 "in_waiting" 属性 工作)

Python 3 non-blocking read with pySerial (Cannot get pySerial's "in_waiting" property to work)

对于我的生活,我无法弄清楚如何使用我的 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. PySerial non-blocking read loop

您列出的文档 link 显示 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())