我有一个微控制器,它通过 UART 以 3 MBaud 发送数据。微控制器每 8000 个字节发送一个开始/状态字节。我希望我的 python 脚本能够读取所有数据并分析起始字节之间的数据。
我知道 Python 能够处理 3 MBaud,因为该代码片段显示了起始字节的正确位置:
ser = serial.Serial('COM3', 3000000, timeout=None)
_RawData = ser.read(100000)
for cnt in range(0, 100000, 1):
#search for start byte and print the position
if(_RawData[cnt] < 128): print(cnt)
但是我需要不断地读取数据流,在这个例子中,我在“ser.read(x)”命令之间丢失了数据。所以我需要在读取流时比较数据:
ser = serial.Serial('COM3', 3000000, timeout=None)
_RawData = []
cnt = 0
for c in ser.read():
cnt += 1
#search for start byte
if(c < 128):
#print start byte position
print(cnt)
# -= start thread =-
_RawData.clear()
_RawData.append(c)
但是发现读取单个字节对于该波特率来说太慢了,起始字节位置实际上是随机生成的。有没有办法可以读取我的数据流而不会丢失?