Я пытаюсь прочитать серийные данные, чтобы обновить страницу диагностики. Я нашел этот код после долгого поиска и смог заставить его работать для моего кода. Но теперь мой графический интерфейс будет случайным сбоем. Иногда это работает безупречно, а иногда случайно падает. Я знаю, что это связано с этим, так как я прокомментировал это и не смог вызвать сбой графического интерфейса.
Я использую PyQt5 с Qt Designer.
Спасибо за вашу помощь!
class WorkerThread(QtCore.QObject):
signalExample = QtCore.pyqtSignal(int)
def __init__(self):
super().__init__()
@QtCore.pyqtSlot()
def run(self):
while True:
# Long running task ...
rawserial = ser.readline()
cookedserial = rawserial.decode('utf-8').strip('\r\n')
datasplit = cookedserial.split(',')
global temperature
temperature = datasplit[0].strip('<')
print(temperature)
self.signalExample.emit(temperature)
time.sleep(1)
class Ui_DIAGNOSTICS(object):
def __init__(self, parent = None):
super(Ui_DIAGNOSTICS,self).__init__()
self.worker = WorkerThread()
self.workerThread = QtCore.QThread()
self.workerThread.started.connect(self.worker.run) # Init worker run() at startup (optional)
self.worker.signalExample.connect(self.setTemp) # Connect your signals/slots
self.worker.moveToThread(self.workerThread) # Move the Worker object to the Thread object
self.workerThread.start()
time.sleep(1)
def setTemp(self):
self.TEMP.display(temperature)