无法从python中的串口读取完整数据

时间:2015-10-08 06:57:29

标签: python-2.7 pyserial

我正在通过串口连续循环读取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

1 个答案:

答案 0 :(得分:0)

我认为问题出在以下三个方面:

bytesToRead = ser1.inWaiting()
c=ser1.read(bytesToRead)
ser1.flushInput()

在Python读取输入缓冲区中有多少字节之后,在Python到达flushInput()之前,实际上可以写入更多字节。在此持续时间内到达的所有字节都不会读取,但只会被丢弃。