我的树莓派通过串行引脚连接到微控制器。我试图从串口读取数据。该脚本读取数据几秒钟。但是,它会终止抛出异常
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()
答案 0 :(得分: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()
也许改变这种方法对你来说会更好。