Я работаю над графическим интерфейсом Python для тестирования устройства.Хотя у меня довольно мало предыдущего опыта работы с Python, я смог заставить работать мой графический интерфейс.Мой графический интерфейс отправляет и получает все команды от устройства через последовательное соединение.В настоящее время при запуске последовательного соединения создается отдельный поток, который опрашивает serial.readline () и передает данные (после некоторого анализа) обратно в основной графический интерфейс.В основном графическом интерфейсе у меня есть функция маршрутизации, которая отправляет данные в соответствующее место, где данные необходимы.Это работает для всех моих потребностей, кроме случаев, когда мне нужно запускать большие сценарии, для которых требуются команды чтения и записи из сценария.Функции, которые в данный момент работают, просто записывают на устройство нажатием кнопки, и затем функция завершается.Таким образом, что главное решает делать с данными, это отдельный процесс в целом.Тем не менее, у меня есть пара функций, которые запускают более длинные сценарии, которые я вынужден запускать в отдельном потоке, в противном случае они будут блокировать ответ GUI.Теперь у меня проблема.Так как у меня один поток жестко опрашивает последовательное соединение, и я не знаю способа прямой связи между потоками (т. Е. Отправлять данные, прочитанные и анализируемые последовательным потоком, непосредственно в поток сценариев по мере необходимости), для меня нет никакого способачтобы получить данные из основного туда, где мне нужно значение в сценарии сразу.В настоящее время я временно отключаю поток последовательного чтения во время выполнения сценария и пытаюсь выполнить все вызовы serial.read () и serial.write () из потока, но это кажется очень неэффективным способом решения этой проблемы.,Мой вопрос в этом: есть ли лучшая структура программного обеспечения, которую я должен рассмотреть, чтобы решить эту проблему, есть ли лучший способ сделать это в Python, о котором я не знаю (я пришел из C ++ фона), или это то, что я 'В настоящее время я пытаюсь решить мою проблему наилучшим образом?
К сожалению, я не могу опубликовать код из-за личных ограничений, но любая форма помощи будет принята с благодарностью.