亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PyQt5 QSerialPort子線程操作的實現

發布時間:2020-10-02 15:18:33 來源:腳本之家 閱讀:230 作者:云中蝦 欄目:開發技術

環境:

python3.6 pyqt5

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

# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
from PyQt5.QtCore import pyqtSignal, QThread, QObject, QTimer
class 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,哈哈

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

水富县| 闽清县| 武宁县| 兴山县| 新闻| 那曲县| 北流市| 赤峰市| 常熟市| 玛多县| 会东县| 泰和县| 云阳县| 巴楚县| 响水县| 璧山县| 理塘县| 广州市| 南木林县| 德阳市| 汽车| 行唐县| 五常市| 衢州市| 青神县| 大连市| 平江县| 寿宁县| 安化县| 武宣县| 江门市| 大名县| 郸城县| 凌海市| 杨浦区| 阿拉善盟| 萨嘎县| 濉溪县| 五家渠市| 顺平县| 理塘县|