问题描述
我正在使用 pyserial 读取从 arduino nano 发送的数据。
我需要实时读取大量数据。
要阅读它,我使用以下代码:
import threading
ser = serial.Serial('COM6', 250000, timeout=0)
def serial_stuff():
global numb_0
global numb_1
global continuer
while continuer:
chaine=ser.readline()
numb_0=[int(s) for s in chaine.split() if s.isdigit()]
time.sleep(0.005)
if len(numb_0)>0:
print("got one")
numb_1=numb_0
thread = threading.Thread(target = serial_stuff)
thread.start()
while 1:
if numb_1!=numb_archive:
numb_archive=numb_0
#Do stuff to process the data here
即将到来的数据量相当大。 有时,python 脚本开始读取越来越滞后的串行数据,因为数据来得很快。
如何检测系统开始滞后(如何检测串行缓冲区增长非常快)? 我想检测它,所以我可以向 arduino 发送信号以降低发送数据的“带宽”。
1楼
serial.Serial
对象有一个inWaiting()
方法 - 它返回在串行缓冲区中等待的字节数。
您可以使用它的值来决定何时限制您的 Arduino。
请注意,在 PySerial 3.0 中,这已更改为in_waiting()
,请参阅