3 Arduino Uno, Raspberry pi, Serial, multiprocessing, Queue - медленно загружаются данные через Queue.

Zoia

Новичок
Пользователь
Май 21, 2020
4
0
1
1. Raspberrypi 5.4.72- Linux 10 (buster)
2. Python 2.7.16, 3.7.3

Описание моей безумной задачи: у меня 3 arduino uno с 3 датчиками освещенности, всё это подключено к Raspberry Pi через USB-порты и данные собираются через Serial. Использую multiprocessing для полной передачи данных через serial-порты. Мне нужно вытащить данные с каждого датчика, для дальнейшего сравнения, и я пытаюсь использовать class Queue. Данные выгружаются, но скорость очень маленькая. Знаю, что скорость самого датчика этот процесс не ограничивает из других опытов. Где-то ошибка в логике и правилах использования. Прошу не закидывать тапками, а подсказать куда смотреть и что делаю не так.
Сейчас в коде выведена распечатка данных с каждого датчика для понимания скорости.


Python:
from multiprocessing import Process, Queue, Pool
import serial


def working(port, speed, q):
  ser = serial.Serial(port, speed)
  if ser.isOpen():
        try:
            ser.flushInput()  # flush input buffer, discarding all its contents
            ser.flushOutput()  # flush output buffer, aborting current output
            response = (ser.readline().decode('utf-8'))
            q.put(response)

        except Exception:
            pass
  else:
    pass

q = Queue()
pool = Pool(processes=10)

if __name__ == '__main__':
    usbs = [ '/dev/ttyUSB0', '/dev/ttyUSB1', '/dev/ttyUSB2' ]
    for i in list(usbs):
       Process(target=working, args=(i, 9600, q)).start()
       print(i, q.get())
 

Вложения

  • pip.txt
    3,1 КБ · Просмотры: 0

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 566
454
83
Process(target=working, args=(i, 9600, q)).start()
попробуйте скорость не 9600 поставить а побольше, к примеру 115200
 

Zoia

Новичок
Пользователь
Май 21, 2020
4
0
1
попробуйте скорость не 9600 поставить а побольше, к примеру 115200
Спасибо! Не помогает, всё может и чуточку пошустрей, но не так, как если бы один датчик на арудино работал.
 

Форум IT Специалистов