首页 文章

抛出异常SerialException:设备报告已准备好读取但未返回任何数据

提问于
浏览
2

我的覆盆子pi通过串行引脚连接到微控制器 . 我试图从串口读取数据 . 该脚本读取数据几秒钟 . 但是,它会终止抛出以下异常

serial.serialutil.SerialException:设备报告准备读取但没有返回数据(设备已断开连接?)

我使用了以下python代码

#!/usr/bin/python
import serial
import time
serialport = serial.Serial("/dev/ttyAMA0", 115200, timeout=.5)

while 1:

       response = serialport.readlines(None)
       print response 
       time.sleep(.05)


serialport.close()

1 回答

  • 0

    如果您正在认真地尝试传输和打印文件,那么您应该使用以下代码:

    for line in serialport.readlines().split('\n'):
        print line
    

    ------------------------------------------------- -----------

    我相信你遇到了问题,因为你正在使用readlines(None)而不是readline()Readline()一次读取一行,并等待每一行 . 如果读取整个文件,它将比readlines慢 . 但readlines()需要一次整个文件 . 显然没有等待你的串行传输速度 .

    ------------------------------------------------- -

    我的数据记录循环每两分钟接收一行并将其写入文件 . 它可以很容易地打印出你在OP中显示的每一行 . readine()等待每一行 . 通过改变Nano上的程序,我测试了它在线之间等待30分钟没有问题 .

    import datetime
    import serial
    ser = serial.Serial("/dev/ttyUSB0",9600)     --/dev/ACM0 is fine 
    
    while True :
        linein = ser.readline()
    
        date   = str(datetime.datetime.now().date())
        date   = date[:10]            
        time   = str(datetime.datetime.now().time())
        time   = time[:8]
    
        outline = date + tab + time + tab + linein
    
        f = open("/home/pi/python/today.dat","a")
        f.write(outline)
        f.close()
    

    也许改用这种方法对你来说会更好 .

相关问题