使用QThread从Arduino读取更新的串行数据

我正在尝试读取串行数据以实时更新诊断页面。经过长时间的搜索,我找到了此代码,并且能够使其适用于我的代码。但是现在我的GUI将随机崩溃。有时它可以完美工作,有时它会随机崩溃。我知道这与它有关,因为我已将其注释掉,但从未使GUI崩溃。

我在Qt Designer中使用PyQt5。

谢谢您的帮助!

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)
jiancha471 回答:使用QThread从Arduino读取更新的串行数据

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3126525.html

大家都在问