PyQt5-接收串行数据时未显示主界面

时间:2019-03-15 04:43:02

标签: interface raspberry-pi serial-port pyqt5 python-3.5

我正在为树莓派平台开发一个应用程序,用于实时查看数据。我正在使用Python 3.5.3和PyQt5。我已经使用Qt Designer创建了用户界面并将其转换为py文件。当我运行文件时,它可以正常工作并显示界面。但是,当我尝试与arduino进行串行通信时,数据即将到来,并且界面未显示。然后,我尝试了另一个功能的串行读取。然后显示界面,但是当串行读取功能激活界面没有响应时。自程序启动以来,我需要程序读取串行数据并更新界面中的标签。帮我解决这个问题。

from PyQt5 import QtWidgets
from qtdesign import Ui_Form
import sys

import serial
from PyQt5.QtWidgets import QMessageBox
global ser
import time

class ApplicationWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super(ApplicationWindow, self).__init__()
        global ser
        self.ui = Ui_Form()
        self.ui.setupUi(self)
        self.ui.pushButtonAbout.clicked.connect(self.about)
        self.ui.pushButtonClose.clicked.connect(self.close)
        self.ui.pushButtonData.clicked.connect(self.getData)

        ser = serial.Serial("/dev/ttyUSB0",baudrate = 115200, timeout = 1)
        #self.getData()

        while True:
            self.getData()
            time.sleep(2)
            #getData = ser.readline().decode()

            #print(getData)

    def getData(self):
        global ser
        Data = ser.readline().decode()
        print(Data)
        #self.ui.labelAlt.clear()
        #data1 = getData.split('.')
        #d1 = int(data1[0])
        #self.ui.labelAlt.setText(d1)
        #print(Data)

def main():
    app = QtWidgets.QApplication(sys.argv)
    application = ApplicationWindow()
    application.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()

0 个答案:

没有答案