我正在使用Pyserial开发一个脚本来将数据发送到微控制器,然后微控制器读取数据,处理它们,并将一些调试信息发送回我的python脚本。
当我只是从微控制器读取数据时,我的python脚本没有任何问题。现在我需要将数据发送到微控制器并在此之后开始读取,我正在读取的数据不完整。
我应该收到类似 [TAG1],10,11,12,[TAG1],13,14,15 \ n 的内容,但有时我没有收到数据的开头但仅结束如 1,12,[TAG1],13,14,15 \ n
我基本上在做:
serial.write(dataOut)
dataIn = serial.read(sizeOfTheDataToReceive)
问题并非来自微控制器我确信,如果我使用putty发送/接收我的数据,我总能看到完整的数据。
我试图在我的微控制器代码中添加一些延迟,以便在从python接收数据后发送数据10s,但它仍然不是每次都有效。
你知道是什么原因引起的吗?当python脚本启动时,COM端口将打开,并在脚本结束时关闭。
答案 0 :(得分:0)
您需要清除读写缓冲区:
serial.flushInput()
serial.flushOutput()
然后按字节读取数据:
serial.write(dataOut)
time.Sleep(0.3)
s=''
while serial.inWaiting()>0:
b=serial.read(1)
# time.Sleep(0.1)
s += b