Я использую pyserial для чтения данных, отправленных с arduino nano.Новичок в Pyserial, обнаруживает, что отстает от
Мне нужно много данных для чтения в режиме реального времени.
Чтобы прочитать его, я использую этот код:
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, чтобы снизить «пропускную способность» отправленных данных.
Что вы пробовали до сих пор? SO - это веб-сайт, на котором вы публикуете код, связанный с вашим вопросом, и получаете на нем помощь. Вы не указали код обработки. –
Поскольку * выходной сигнал Arduino * 'serial' довольно мал, вполне вероятно, что данные накапливаются в буфере ввода' pyserial'. Поэтому вы можете использовать 'ser.inWaiting()' для проверки количества накопленных там байтов. Если вы делаете это с постоянными временными интервалами, вы можете определить, нужно ли задавать * Arduino * замедление или, проще говоря, более усердно работать с хрустом данных, используя всю вычислительную мощность вашего компьютера. Это не должно быть затмеванным * Ардуино *. –
Я добавил дополнительную информацию о моем коде. Не могли бы вы объяснить мне, как «больше работать, чтобы хруст данных»? спасибо :) – n0tis