栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从PyQt GUI连接到串行

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从PyQt GUI连接到串行

与其使用pySerial +线程,不如使用

QSerialPort
它与Qt事件循环一起使用:

from PyQt5 import QtCore, QtWidgets, QtSerialPortclass Widget(QtWidgets.QWidget):    def __init__(self, parent=None):        super(Widget, self).__init__(parent)        self.message_le = QtWidgets.QLineEdit()        self.send_btn = QtWidgets.QPushButton( text="Send", clicked=self.send        )        self.output_te = QtWidgets.QTextEdit(readonly=True)        self.button = QtWidgets.QPushButton( text="Connect",  checkable=True, toggled=self.on_toggled        )        lay = QtWidgets.QVBoxLayout(self)        hlay = QtWidgets.QHBoxLayout()        hlay.addWidget(self.message_le)        hlay.addWidget(self.send_btn)        lay.addLayout(hlay)        lay.addWidget(self.output_te)        lay.addWidget(self.button)        self.serial = QtSerialPort.QSerialPort( '/dev/tty.usbmodem14201', baudRate=QtSerialPort.QSerialPort.Baud9600, readyRead=self.receive        )    @QtCore.pyqtSlot()    def receive(self):        while self.serial.canReadLine(): text = self.serial.readLine().data().depre() text = text.rstrip('rn') self.output_te.append(text)    @QtCore.pyqtSlot()    def send(self):        self.serial.write(self.message_le.text().enpre())    @QtCore.pyqtSlot(bool)    def on_toggled(self, checked):        self.button.setText("Disconnect" if checked else "Connect")        if checked: if not self.serial.isOpen():     if not self.serial.open(QtCore.QIODevice.ReadWrite):         self.button.setChecked(False)        else: self.serial.close()if __name__ == '__main__':    import sys    app = QtWidgets.QApplication(sys.argv)    w = Widget()    w.show()    sys.exit(app.exec_())


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/638254.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号