当前位置: 代码迷 >> python >> Pyserial 的初学者,在落后时检测
  详细解决方案

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

热度:136   发布时间:2023-06-13 13:39:22.0

我正在使用 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 发送信号以降低发送数据的“带宽”。

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

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