我使用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发送一个信号,以降低带宽"发送数据。
答案 0 :(得分:0)
serial.Serial
对象具有inWaiting()
方法 - 它返回在串行缓冲区中等待的字节数。您可以使用此值来决定何时限制Arduino。
请注意,在PySerial 3.0中,这已更改为in_waiting()
,请参阅documentation