Python从串口读取

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python从串口读取相关的知识,希望对你有一定的参考价值。

我正在尝试将数据从RFID(RMD6300)读取到Python中的Raspberry Pi 1,但在读取30-40秒后出现中断,它会崩溃,并显示以下错误消息:

回溯(最近一次调用最后一次):文件“tmp.py”,第7行,在string = ser.read(20)文件“/usr/local/lib/python2.7/dist-packages/serial/serialposix.py” ,第501行,读取'设备报告准备读取但没有返回数据'serial.serialutil.SerialException:设备报告准备读取但没有返回数据(设备断开连接或端口多次访问?)

这是我的代码:

import serial
ser = serial.Serial('/dev/ttyAMA0',9600, timeout=1)
IDs = ["xxxxxxxxxx","xxxxxxxxxx"]
while True:
    bool = False;
    string = ser.read(20)
    if len(string) == 0:
        print "Insert tag"
        continue
    else:
        for i in range(len(IDs)):
            for l in range(len(string)):
                if IDs[i] in string:
                    print IDs[i]
                    bool = True
                    break
                 else:
                     string = string[1:]+string[0]
             if bool:
                 break
    if not bool:
        print "Not found"
答案

问题:...设备报告已准备好读取但未返回任何数据

增加你的timeout

ser = serial.Serial('/dev/ttyAMA0',9600, timeout=1)

使用try ... except

try:
    string = ser.read(20)
except serial.serialutil.SerialException:
    except_counter +=1
    if except_counter == 5:
       break

    time.sleep(1)

问题:...设备断开连接或端口多次访问?

你能排除这两点吗?

以上是关于Python从串口读取的主要内容,如果未能解决你的问题,请参考以下文章

Python从串口读取

使用 Python 串行库处理从串口读取的原始数据?

如何从文本框中读取串口名称(可编辑)

python的pyserial读取串口占用状态?

从两个串口异步读取

python到arduino串口读写