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

标签 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' 对象没有属性 'in_waiting'

这是我引用的引用页,它告诉我“in_waiting”存在:http://pyserial.readthedocs.io/en/latest/pyserial_api.html

(更新)相关:

  1. PySerial non-blocking read loop

最佳答案

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

您可以通过如下方式查看PySerial的版本:

import serial
print serial.VERSION

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

pip install --upgrade pyserial

否则,更改您的代码以使用 PySerial < 3.0 中的正确接口(interface):

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

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

相关文章:

python - 将 Union 对象转换为间隔列表

python - 如何设置MultiIndex的排序顺序

python - 我正在尝试让树莓派相机与 opencv 一起工作

linux - openCV库GLIBC编译错误

python - 从 web 服务器日志中免费实现用户 session 计数?

Python pandas 与 OR 逻辑合并

linux - 树莓派 gpio 命令行 sysfs 不设置 gpio 输出高

python - 在 python 中与 Firewire 端口通信

Python串口监听器

python - 如何使用 Python 3.3 和 pyserial 向 arduino 发送一个 5 位数字(奇怪的错误)