Pyserial在发送数据后无法读取完整行

时间:2017-08-15 13:49:11

标签: python serial-port microcontroller pyserial

我正在使用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端口将打开,并在脚本结束时关闭。

1 个答案:

答案 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