我正在使用Python脚本通过2Mbps的串口从PIC微控制器收集数据。
PIC在2Mbps下有完美的定时,FTDI USB-串口在2Mbps下也非常出色(经过示波器验证)。
我发送大约15个字符大小的消息100-150次/秒,并且那里的数字会递增(以检查是否有丢失消息等)。
我的笔记本电脑上运行Xubuntu虚拟机,我可以通过Putty和我的脚本(Python 2.7和pySerial)读取串口。
问题:
- 通过Putty打开串口时,我可以看到所有消息(消息中的计数器逐一递增)。完美!
- 通过pySerial打开串口时,我可以看到所有消息,但是每秒只接收到大约5条消息(仍然递增1条消息),但它们可能存储在某个缓冲区中,因为当我关闭PIC的电源时,我可以去厨房回来仍然在接收消息。
以下是代码(我省略了大部分代码,但循环是相同的):
ser = serial.Serial('/dev/ttyUSB0', 2000000, timeout=2, xonxoff=False, rtscts=False, dsrdtr=False) #Tried with and without the last 3 parameters, and also at 1Mbps, same happens.
ser.flushInput()
ser.flushOutput()
While True:
data_raw = ser.readline()
print(data_raw)
有人知道为什么pySerial从串口读取到行末需要这么长时间吗? 需要帮助。
我希望能够实时获取数据。
谢谢。
ser.read()
д»Јж›їser.readline()
еђ—пјџ - Tim\n
再打印输出,每当一个字符到达时就立即打印出来。你是突然接收到大量字符还是每个字符都单独到达? - TiminWaiting()
),仍然可能需要Python在打印整个消息(多字节)之前等待所有字节的接收。这在逻辑上会导致延迟。您的系统仍然是实时的吗?您能确认一下吗? - Pe Dro