国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

PyQt5 QSerialPort子線程操作的實現

2020-02-22 23:48:17
字體:
來源:轉載
供稿:網友

環境:

python3.6 pyqt5

只是簡單的一個思路,請忽略脆弱的異常防護:

# -*- coding: utf-8 -*-import sysfrom PyQt5.QtWidgets import *from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfofrom PyQt5.QtCore import pyqtSignal, QThread, QObject, QTimerclass SerialWork(QObject):  def __init__(self):    super().__init__()  def init(self):    self.com = QSerialPort()    self.com.setPortName('COM7')    self.com.setBaudRate(115200)     if self.com.open(QSerialPort.ReadWrite) == False:      return    self.readtimer = QTimer()    self.readtimer.timeout.connect(self.readData)    self.readtimer.start(100)   def readData(self):    revData = self.com.readAll()    revData = bytes(revData)    print('%d read' % len(revData))class PyQt_Serial(QWidget):  def __init__(self):    super().__init__()    self.serialthread = QThread()    self.serialwork = SerialWork()    self.serialwork.moveToThread(self.serialthread)    self.serialthread.started.connect(self.serialwork.init)    self.serialthread.start()if __name__ == '__main__':  app = QApplication(sys.argv)  win = PyQt_Serial()  win.show()  sys.exit(app.exec_()) 

需要注意的地方:

1、對QSerialPort的讀寫操作需要在同一個線程,不能跨線程操作

2、serialwork內不能有死循環,原因可能是死循環阻塞了串口接收事件的傳遞,導致readall函數一直讀不到數據。如果非要加入死循環,在循環內加入QApplication.processEvents()可以讀到串口數據

3、通過這次子線程操作QSerialPort的例程大致了解了兩種QThread使用的陣營:run和moveToThread,哈哈

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潜山县| 屯昌县| 治县。| 三台县| 扎囊县| 宜黄县| 永靖县| 南京市| 遵义县| 成安县| 南陵县| 吉林市| 寿宁县| 新乐市| 景宁| 宕昌县| 高邑县| 保靖县| 扶沟县| 罗定市| 黎川县| 姚安县| 积石山| 淳安县| 泗洪县| 东丰县| 迭部县| 柘城县| 沐川县| 老河口市| 绥宁县| 宣化县| 樟树市| 炎陵县| 靖西县| 河南省| 昆明市| 临夏市| 扶风县| 昆明市| 郴州市|