国产探花免费观看_亚洲丰满少妇自慰呻吟_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,哈哈

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜章县| 阿拉尔市| 乌兰察布市| 神木县| 涿州市| 德惠市| 新乡市| 澄迈县| 宜州市| 荔波县| 永登县| 平邑县| 武隆县| 新密市| 宁河县| 吉安市| 麻栗坡县| 尤溪县| 永昌县| 新乐市| 商都县| 石台县| 恩施市| 南阳市| 宣化县| 栾城县| 科技| 论坛| 石河子市| 林芝县| 黄平县| 惠来县| 鹿邑县| 桐庐县| 丰原市| 民县| 平塘县| 平凉市| 阜城县| 江源县| 奉化市|