Я пытаюсь создать программу с PyQt (в основном для собственной практики), которая будет прослушивать последовательный порт и считывать любой поток данных.
Я уже некоторое время использую Tkinter, но PyQt5 - это совсем другой зверь.
У меня возникли проблемы с наличием цикла, который будет распознавать наличие в буфере сообщений на последовательном порту и затем соответствующим образом обновлять графический интерфейс, потому что проблема с последовательным интерфейсом, так сказать, не является событием графического интерфейса.
Я пытался решить эту проблему с помощью отдельного потока, который проверял бы, есть ли что-то на последовательном порте, однако мне кажется, что я получаю ошибку, которая говорит мне, что я не могу обновить GUI с функцией на отдельном нить.
https://pastebin.com/HK1Frh5g
def find_port(self):
if self.is_connected is False:
self.is_connected = True
else:
self.is_connected = False
for port in serial.tools.list_ports.comports():
if port.vid == 5824 and port.pid == 1155:
self.ser.port = str(port.device)
self.port_found = True
print("Found")
if self.port_found is False:
print("Not found")
x = threading.Thread(target=self.talk_module)
x.start()
def talk_module(self):
self.ser.open()
while self.is_connected is True:
fd_line = self.ser.readline().decode()
print(fd_line)
self.table_widget.add_row(fd_line)
self.ser.close()
Вот ссылка на мой код. Также есть фрагмент, который показывает поток. Функция работает, я просто не могу заставить ее обновить GUI
По сути, я хотел бы иметь возможность нажимать кнопку или диалоговое окно, чтобы считывать последовательный порт, пока я не нажму другую кнопку.
С Tkinter я смог обновить графический интерфейс с помощью метода, и в моих собственных функциях происходило что-то другое.
PyQt кажется другим, и мне было интересно, смогу ли я найти какое-нибудь руководство. Спасибо!