pythons PySerial: несколько скриптов, читающих один и тот же серийный номер

Я использую PYSerial для чтения Arduino, который выводит данные через последовательный порт на Raspberry PI. В PI я запускаю скрипт Python, который считывает данные с помощью pyserial. Я хочу запустить другие сценарии Python, которые также считывают те же данные на том же серийном номере. Будут ли они мешать друг другу? Я протестировал, и оба сценария считывают данные, и он не приводит к сбою или блокировке порта, но задавался вопросом, возникнут ли проблемы? Оба сценария выполняют разные функции, и я хочу, чтобы они были отдельными. Оба сценария начинаются со следующего кода, а затем делают что-то другое, когда доходят до ##do something##

import serial
ser = serial.Serial('/dev/ttyACM1', 115200) # just change the port number to the appropriate
while True :
    line = ser.readline().decode("utf-8").rstrip()
    ##do something##

person resolver101    schedule 09.05.2021    source источник
comment
Python позволяет использовать потоки. Вы можете запустить основной поток, чтобы прочитать серийный номер, а затем разветвить свои 2 скрипта Python с данными, считанными из последовательного порта.   -  person Binar Web    schedule 11.05.2021


Ответы (1)


Если два скрипта читают на последовательном порту абсолютно одни и те же данные, то второму читать будет нечего, потому что после чтения байта он удаляется из буфера RX.

person Jerome Favrou    schedule 09.05.2021
comment
Брилл Спасибо, что прояснили это. ах, не понял, можно ли пропустить какие-либо последовательные данные, которые Arduino отправляет в PI, если мой цикл недостаточно быстр для чтения входящих данных? или он в конечном итоге сообщит об ошибке, если буфер станет слишком большим? - person resolver101; 09.05.2021
comment
Я не знаю, возможно, readline вызовет исключение IOError, на самом деле возможна потеря данных, но я никогда не сталкивался с этим случаем, лучше всего проверить цикл между Rx и Tx pythonhosted.org/pyserial/ - person Jerome Favrou; 09.05.2021