Pyserial的初学者,在落后时检测到

时间:2017-02-10 02:47:14

标签: python arduino pyserial

我使用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 个答案:

答案 0 :(得分:0)

serial.Serial对象具有inWaiting()方法 - 它返回在串行缓冲区中等待的字节数。您可以使用此值来决定何时限制Arduino。

请注意,在PySerial 3.0中,这已更改为in_waiting(),请参阅documentation