PyQt5 QSerialPort子线程操作的实现
作者:云中虾 时间:2023-08-21 13:07:28
环境:
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,哈哈
来源:http://www.cnblogs.com/wangmantou/p/8901483.html
标签:PyQt5,QSerialPort,子线程
0
投稿
猜你喜欢
基于tensorflow for循环 while循环案例
2022-01-26 14:40:34
Python3开发环境搭建详细教程
2023-11-12 10:46:28
Golang如何编写内存高效及CPU调优的Go结构体
2024-04-23 09:45:55
Python的高级Git库 Gittle
2023-06-14 14:52:05
Golang websocket协议使用浅析
2024-02-07 14:19:28
Python曲线拟合详解
2023-12-29 05:54:50
Vue.js实现微信过渡动画左右切换效果
2023-07-02 17:03:10
MySQL外键约束详解
2024-01-28 11:30:00
关于golang 字符串 int uint int64 uint64 互转问题
2023-07-13 17:52:44
基于Python实现全自动下载抖音视频
2023-03-20 13:14:18
Go 语言数组和切片的区别详解
2024-04-25 15:08:37
如何利用Python模拟GitHub登录详解
2023-11-18 11:08:05
asp伪继承初探_实例代码
2011-04-19 10:32:00
python实现批量修改服务器密码的方法
2021-09-11 01:23:09
Python实现读取字符串按列分配后按行输出示例
2023-08-07 19:39:14
ASP生成静态模版技术(带参数的标签)
2009-03-03 12:29:00
python直接访问私有属性的简单方法
2022-09-18 12:03:47
详解python数据结构之栈stack
2023-02-12 17:48:56
Python实现爬取网页中动态加载的数据
2021-08-11 18:35:27
vue 自定义全局方法,在组件里面的使用介绍
2024-05-29 22:46:17