Возникли проблемы с реализацией последовательного кода вне цикла PyQt GUI? (Читает сериал)? - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь создать программу с 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 кажется другим, и мне было интересно, смогу ли я найти какое-нибудь руководство. Спасибо!

...