缺少pyseri的输出

2024-09-30 10:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用以下代码从串行端口读取:

z1baudrate = 115200
z1port = '/dev/ttyUSB11'
ser = serial.Serial(z1port, z1baudrate, timeout=0, parity=serial.PARITY_NONE,

                    stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
while True:
    queue = ser.inWaiting()
    if queue > 0:
        data = ser.read(1000)
        print data
    time.sleep(.2)

我应该每隔几秒钟就把结果打印出来

^{pr2}$

但是,我偶尔会收到不完整的输出,比如

bbbb::0000:0:0:00 # sometimes broken into 2 lines
2412 7 -1 250 -58 108 0 2398 # line 2
bbbb::0000 # sometimes a part of the output is missing like this 
bbbb::0000:0:0:00 2475 4 # or like this. Length is variable!

有什么问题吗?是同步问题吗?我怎么解决这个问题?在


Tags: 端口代码devdataqueueisserialthis
1条回答
网友
1楼 · 发布于 2024-09-30 10:26:43

它是sleep和print语句的组合。当接收到一个句子时,程序可能会休眠,当使用print命令时,它将每次写入一个新行。在

试试这个:

import sys

z1baudrate = 115200
z1port = '/dev/ttyUSB11'
ser = serial.Serial(z1port, z1baudrate, timeout=0, parity=serial.PARITY_NONE,

                    stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS)
while True:
    data = ser.readline()
    sys.stdout.write(data)

相关问题 更多 >

    热门问题