【发布时间】:2014-07-03 12:40:50
【问题描述】:
我正在使用 pyserial 处理一些通过 1.25MBaud 串行接口传输的数据。我正在使用一个非常简单的线程来收集数据:
class SerialReadThread(StoppableThread):
def __init__(self, port):
super(SerialReadThread, self).__init__()
self.serial = s.Serial(
port=port,
baudrate=1250000, # 1.25 MBaud
bytesize=s.EIGHTBITS,
parity=s.PARITY_NONE,
stopbits=s.STOPBITS_ONE,
timeout=0.5 # Do not wait longer than a half second for next message
)
self.data = []
def run(self):
# Discard old Buffer Data
self.serial.flushInput()
#self.serial.read(256)
while not self.stopped():
data = self.serial.read(64)
self.data.append(data)
log.debug(":".join("{:02x}".format(ord(c)) for c in data))
如果我读取和处理数据,我总是在前 256 个字节中得到一个错误的字节。通常 8 字节的消息之一是 9 字节长,我不知道这个额外的字节来自哪里。如果我在启动接收器后启动发送器,则不会传输错误的字节。到目前为止,唯一可行的解决方案是在self.serial.read(256) 行中发表评论。之后,即使我读取大量数据也不会出现错误。
除了跳过第一条消息之外,还有其他解决方案吗?
【问题讨论】: