我正在通过串口连续循环读取cat / proc / kmsg。当串口缓冲区中的no.of字节为零时,我正在打破循环。
但是我无法从缓冲区中读取完整的数据。有些数据丢失了。如何 我能读完整数据吗?
import serial
ser1=serial.Serial('COM67')
ser.baudrate=115200
resp=[]
ser1.write("cat /proc/kmsg\n")
cnt=0
time.sleep(1)
while True:
bytesToRead = ser1.inWaiting()
c=ser1.read(bytesToRead)
ser1.flushInput()
import re
c=re.sub(r'\x08','',c)
resp.append(c)
if(bytesToRead==0):
cnt=cnt+1
if(cnt>5):
print "-"*57
ser1.write("\x03") #'\x03' ==CTRL+C
break
ser1.flushInput()
print "_kmsg data :",resp
答案 0 :(得分:0)
我认为问题出在以下三个方面:
bytesToRead = ser1.inWaiting()
c=ser1.read(bytesToRead)
ser1.flushInput()
在Python读取输入缓冲区中有多少字节之后,在Python到达flushInput()
之前,实际上可以写入更多字节。在此持续时间内到达的所有字节都不会读取,但只会被丢弃。