最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

pyqt串口通信的項(xiàng)目實(shí)踐

 更新時(shí)間:2023年12月26日 11:20:20   作者:QT真的好難呀  
串口通信工業(yè)控制上面常用的,本文主要介紹了pyqt串口通信的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

串口通信工業(yè)控制上面常用的,能夠很簡(jiǎn)單的實(shí)現(xiàn)出來

說明都在代碼中,下面是主要邏輯代碼,窗口類的創(chuàng)建,是直接繼承了ui窗口類,進(jìn)行初始化操作

import sys
import mianWindow
from PyQt5.QtSerialPort import QSerialPortInfo, QSerialPort
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtCore import QIODevice, QTextCodec
# 直接寫一個(gè)類繼承mainWindow,方便去操作窗口


class MyWindow(QWidget, mianWindow.Ui_Form):
    serialPort = QSerialPort()  # 通信用的對(duì)象

    def __init__(self):
        super(MyWindow, self).__init__()
        self.setupUi(self)  # 初始化窗口
        self.enumComPort()
        self.serialPort.readyRead.connect(self.recvMessage)
        self.pushButton_open.clicked.connect(self.openCom)
        self.pushButton_send.clicked.connect(self.sendMessage)
    def enumComPort(self):
        self.comboBox_Port.clear()
        comInfo = QSerialPortInfo.availablePorts()
        for item in comInfo:
            self.comboBox_Port.addItem(item.portName())

    def openCom(self):
        # 串口號(hào)
        name = self.comboBox_Port.currentText()
        # 波特率
        baudRate = int(self.comboBox_BaudRate.currentText())
        # 數(shù)據(jù)位
        dataBits=0
        if self.comboBox_DataBits.currentIndex() == 0:
            dataBits = QSerialPort.DataBits.Data5
        elif self.comboBox_DataBits.currentIndex() == 1:
            dataBits = QSerialPort.DataBits.Data6
        elif self.comboBox_DataBits.currentIndex() == 2:
            dataBits = QSerialPort.DataBits.Data7
        elif self.comboBox_DataBits.currentIndex() == 3:
            dataBits = QSerialPort.DataBits.Data8
        # 停止位
        stopBits = 0
        if self.comboBox_StopBits.currentIndex() == 0:
            stopBits = QSerialPort.StopBits.OneStop
        elif self.comboBox_StopBits.currentIndex() == 1:
            stopBits = QSerialPort.StopBits.OneAndHalfStop
        elif self.comboBox_StopBits.currentIndex() == 2:
            stopBits = QSerialPort.StopBits.TwoStop
        # 校驗(yàn)位
        parity = 0
        if self.comboBox_Parity.currentIndex() == 0:
            parity = QSerialPort.Parity.NoParity
        elif self.comboBox_Parity.currentIndex() == 1:
            parity = QSerialPort.Parity.EvenParity
        elif self.comboBox_Parity.currentIndex() == 2:
            parity = QSerialPort.Parity.OddParity
        elif self.comboBox_Parity.currentIndex() == 3:
            parity = QSerialPort.Parity.SpaceParity
        elif self.comboBox_Parity.currentIndex() == 4:
            parity = QSerialPort.Parity.MarkParity
        # 流控
        flowControl = 0
        if self.comboBox_FlowControl.currentIndex() == 0:
            flowControl = QSerialPort.FlowControl.NoFlowControl
        elif self.comboBox_FlowControl.currentIndex() == 1:
            flowControl = QSerialPort.FlowControl.HardwareControl
        elif self.comboBox_FlowControl.currentIndex() == 2:
            flowControl = QSerialPort.FlowControl.SoftwareControl
        # 設(shè)置獲取到的串口信息
        self.serialPort.setPortName(name)
        self.serialPort.setBaudRate(baudRate)
        self.serialPort.setDataBits(dataBits)
        self.serialPort.setParity(parity)
        self.serialPort.setStopBits(stopBits)
        self.serialPort.setFlowControl(flowControl)

        if not self.serialPort.isOpen():
            if not self.serialPort.open(QIODevice.OpenModeFlag.ReadWrite):
                return
            else:
                self.pushButton_open.setText("關(guān)閉串口")
        else:
            self.serialPort.close()
            self.pushButton_open.setText("關(guān)閉串口")

    # 對(duì)于消息的收發(fā)需要自己稍微處理一下,主要是對(duì)于發(fā)送的數(shù)據(jù)的轉(zhuǎn)換,我這里是轉(zhuǎn)為了本地字符集,對(duì)于各自的情況,做不同的處理
    def recvMessage(self):
        data = self.serialPort.readAll()
        self.textBrowser_recvStr.append(QTextCodec.codecForName("UTF-8").toUnicode(data))

    def sendMessage(self):
        data = self.lineEdit_sendStr.text()
        self.serialPort.write(QTextCodec.codecForName("UTF-8").fromUnicode(data).data())



if __name__ == '__main__':

    app = QApplication(sys.argv)

    w = MyWindow()

    w.show()

    sys.exit(app.exec_())

窗口ui的,python代碼

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mianWindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.9
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(456, 434)
        self.gridLayout = QtWidgets.QGridLayout(Form)
        self.gridLayout.setObjectName("gridLayout")
        self.groupBox = QtWidgets.QGroupBox(Form)
        self.groupBox.setObjectName("groupBox")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtWidgets.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.label = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label.sizePolicy().hasHeightForWidth())
        self.label.setSizePolicy(sizePolicy)
        self.label.setObjectName("label")
        self.horizontalLayout.addWidget(self.label)
        self.comboBox_Port = QtWidgets.QComboBox(self.groupBox)
        self.comboBox_Port.setObjectName("comboBox_Port")
        self.horizontalLayout.addWidget(self.comboBox_Port)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label_2 = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_2.sizePolicy().hasHeightForWidth())
        self.label_2.setSizePolicy(sizePolicy)
        self.label_2.setObjectName("label_2")
        self.horizontalLayout_2.addWidget(self.label_2)
        self.comboBox_BaudRate = QtWidgets.QComboBox(self.groupBox)
        self.comboBox_BaudRate.setObjectName("comboBox_BaudRate")
        self.comboBox_BaudRate.addItem("")
        self.comboBox_BaudRate.addItem("")
        self.comboBox_BaudRate.addItem("")
        self.comboBox_BaudRate.addItem("")
        self.comboBox_BaudRate.addItem("")
        self.comboBox_BaudRate.addItem("")
        self.comboBox_BaudRate.addItem("")
        self.comboBox_BaudRate.addItem("")
        self.horizontalLayout_2.addWidget(self.comboBox_BaudRate)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.horizontalLayout_3 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_3.setObjectName("horizontalLayout_3")
        self.label_3 = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_3.sizePolicy().hasHeightForWidth())
        self.label_3.setSizePolicy(sizePolicy)
        self.label_3.setObjectName("label_3")
        self.horizontalLayout_3.addWidget(self.label_3)
        self.comboBox_DataBits = QtWidgets.QComboBox(self.groupBox)
        self.comboBox_DataBits.setObjectName("comboBox_DataBits")
        self.comboBox_DataBits.addItem("")
        self.comboBox_DataBits.addItem("")
        self.comboBox_DataBits.addItem("")
        self.comboBox_DataBits.addItem("")
        self.horizontalLayout_3.addWidget(self.comboBox_DataBits)
        self.verticalLayout.addLayout(self.horizontalLayout_3)
        self.horizontalLayout_4 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_4.setObjectName("horizontalLayout_4")
        self.label_4 = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_4.sizePolicy().hasHeightForWidth())
        self.label_4.setSizePolicy(sizePolicy)
        self.label_4.setObjectName("label_4")
        self.horizontalLayout_4.addWidget(self.label_4)
        self.comboBox_StopBits = QtWidgets.QComboBox(self.groupBox)
        self.comboBox_StopBits.setObjectName("comboBox_StopBits")
        self.comboBox_StopBits.addItem("")
        self.comboBox_StopBits.addItem("")
        self.comboBox_StopBits.addItem("")
        self.horizontalLayout_4.addWidget(self.comboBox_StopBits)
        self.verticalLayout.addLayout(self.horizontalLayout_4)
        self.horizontalLayout_5 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_5.setObjectName("horizontalLayout_5")
        self.label_5 = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_5.sizePolicy().hasHeightForWidth())
        self.label_5.setSizePolicy(sizePolicy)
        self.label_5.setObjectName("label_5")
        self.horizontalLayout_5.addWidget(self.label_5)
        self.comboBox_Parity = QtWidgets.QComboBox(self.groupBox)
        self.comboBox_Parity.setObjectName("comboBox_Parity")
        self.comboBox_Parity.addItem("")
        self.comboBox_Parity.addItem("")
        self.comboBox_Parity.addItem("")
        self.comboBox_Parity.addItem("")
        self.comboBox_Parity.addItem("")
        self.horizontalLayout_5.addWidget(self.comboBox_Parity)
        self.verticalLayout.addLayout(self.horizontalLayout_5)
        self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_6.setObjectName("horizontalLayout_6")
        self.label_6 = QtWidgets.QLabel(self.groupBox)
        sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
        sizePolicy.setHorizontalStretch(0)
        sizePolicy.setVerticalStretch(0)
        sizePolicy.setHeightForWidth(self.label_6.sizePolicy().hasHeightForWidth())
        self.label_6.setSizePolicy(sizePolicy)
        self.label_6.setObjectName("label_6")
        self.horizontalLayout_6.addWidget(self.label_6)
        self.comboBox_FlowControl = QtWidgets.QComboBox(self.groupBox)
        self.comboBox_FlowControl.setObjectName("comboBox_FlowControl")
        self.comboBox_FlowControl.addItem("")
        self.comboBox_FlowControl.addItem("")
        self.comboBox_FlowControl.addItem("")
        self.horizontalLayout_6.addWidget(self.comboBox_FlowControl)
        self.verticalLayout.addLayout(self.horizontalLayout_6)
        self.horizontalLayout_7 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_7.setObjectName("horizontalLayout_7")
        spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_7.addItem(spacerItem)
        self.pushButton_open = QtWidgets.QPushButton(self.groupBox)
        self.pushButton_open.setStyleSheet("")
        self.pushButton_open.setObjectName("pushButton_open")
        self.horizontalLayout_7.addWidget(self.pushButton_open)
        self.verticalLayout.addLayout(self.horizontalLayout_7)
        self.gridLayout.addWidget(self.groupBox, 0, 0, 1, 1)
        self.verticalLayout_3 = QtWidgets.QVBoxLayout()
        self.verticalLayout_3.setObjectName("verticalLayout_3")
        self.textBrowser_recvStr = QtWidgets.QTextBrowser(Form)
        self.textBrowser_recvStr.setObjectName("textBrowser_recvStr")
        self.verticalLayout_3.addWidget(self.textBrowser_recvStr)
        self.lineEdit_sendStr = QtWidgets.QLineEdit(Form)
        self.lineEdit_sendStr.setObjectName("lineEdit_sendStr")
        self.verticalLayout_3.addWidget(self.lineEdit_sendStr)
        self.gridLayout.addLayout(self.verticalLayout_3, 0, 1, 1, 1)
        self.horizontalLayout_8 = QtWidgets.QHBoxLayout()
        self.horizontalLayout_8.setObjectName("horizontalLayout_8")
        spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
        self.horizontalLayout_8.addItem(spacerItem1)
        self.pushButton_send = QtWidgets.QPushButton(Form)
        self.pushButton_send.setObjectName("pushButton_send")
        self.horizontalLayout_8.addWidget(self.pushButton_send)
        self.gridLayout.addLayout(self.horizontalLayout_8, 1, 0, 1, 2)

        self.retranslateUi(Form)
        QtCore.QMetaObject.connectSlotsByName(Form)

    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.groupBox.setTitle(_translate("Form", "串口設(shè)置"))
        self.label.setText(_translate("Form", "串口號(hào):"))
        self.label_2.setText(_translate("Form", "波特率:"))
        self.comboBox_BaudRate.setItemText(0, _translate("Form", "1200"))
        self.comboBox_BaudRate.setItemText(1, _translate("Form", "2400"))
        self.comboBox_BaudRate.setItemText(2, _translate("Form", "4800"))
        self.comboBox_BaudRate.setItemText(3, _translate("Form", "9600"))
        self.comboBox_BaudRate.setItemText(4, _translate("Form", "19200"))
        self.comboBox_BaudRate.setItemText(5, _translate("Form", "38400"))
        self.comboBox_BaudRate.setItemText(6, _translate("Form", "57600"))
        self.comboBox_BaudRate.setItemText(7, _translate("Form", "115200"))
        self.label_3.setText(_translate("Form", "數(shù)據(jù)位:"))
        self.comboBox_DataBits.setItemText(0, _translate("Form", "Data5"))
        self.comboBox_DataBits.setItemText(1, _translate("Form", "Data6"))
        self.comboBox_DataBits.setItemText(2, _translate("Form", "Data7"))
        self.comboBox_DataBits.setItemText(3, _translate("Form", "Data8"))
        self.label_4.setText(_translate("Form", "停止位:"))
        self.comboBox_StopBits.setItemText(0, _translate("Form", "OneStop"))
        self.comboBox_StopBits.setItemText(1, _translate("Form", "OnendHalfStop"))
        self.comboBox_StopBits.setItemText(2, _translate("Form", "TwoStop"))
        self.label_5.setText(_translate("Form", "校驗(yàn)位:"))
        self.comboBox_Parity.setItemText(0, _translate("Form", "NoParity"))
        self.comboBox_Parity.setItemText(1, _translate("Form", "EvenParity"))
        self.comboBox_Parity.setItemText(2, _translate("Form", "OddParity"))
        self.comboBox_Parity.setItemText(3, _translate("Form", "SpaceParity"))
        self.comboBox_Parity.setItemText(4, _translate("Form", "MarkParity"))
        self.label_6.setText(_translate("Form", "流  控:"))
        self.comboBox_FlowControl.setItemText(0, _translate("Form", "NoFlowControl"))
        self.comboBox_FlowControl.setItemText(1, _translate("Form", "HardwareControl"))
        self.comboBox_FlowControl.setItemText(2, _translate("Form", "SoftwareControl"))
        self.pushButton_open.setText(_translate("Form", "打開串口"))
        self.pushButton_send.setText(_translate("Form", "發(fā)送"))

運(yùn)行界面:

對(duì)于這種模塊的使用,主要就是要注意一些數(shù)據(jù)的獲取和設(shè)置,要先搞清楚,使用這個(gè)模塊要獲取那些數(shù)據(jù),怎么設(shè)置,使用的一個(gè)過程,是使用什么對(duì)象來操作這些數(shù)據(jù)

到此這篇關(guān)于pyqt串口通信的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)pyqt串口通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django代碼性能優(yōu)化與Pycharm Profile使用詳解

    Django代碼性能優(yōu)化與Pycharm Profile使用詳解

    本文通過一個(gè)簡(jiǎn)單的實(shí)例一步一步引導(dǎo)讀者對(duì)其進(jìn)行全方位的性能優(yōu)化,這篇文章主要給大家介紹了關(guān)于Django代碼性能優(yōu)化與Pycharm Profile使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-08-08
  • Python?Pandas中append方法舉例詳解

    Python?Pandas中append方法舉例詳解

    這篇文章主要給大家介紹了關(guān)于Python?Pandas中append方法的相關(guān)資料,在Pandas中append()方法用于將一個(gè)或多個(gè)DataFrame或Series添加到DataFrame中,需要的朋友可以參考下
    2023-12-12
  • python四種出行路線規(guī)劃的實(shí)現(xiàn)

    python四種出行路線規(guī)劃的實(shí)現(xiàn)

    路徑規(guī)劃中包括步行、公交、駕車、騎行等不同方式,今天借助高德地圖web服務(wù)api,實(shí)現(xiàn)出行路線規(guī)劃。感興趣的可以了解下
    2021-06-06
  • python適合人工智能的理由和優(yōu)勢(shì)

    python適合人工智能的理由和優(yōu)勢(shì)

    在本篇文章里小編給大家分享了關(guān)于python適合人工智能的理由和優(yōu)勢(shì)以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-06-06
  • 如何使用python生成大量數(shù)據(jù)寫入es數(shù)據(jù)庫(kù)并查詢操作

    如何使用python生成大量數(shù)據(jù)寫入es數(shù)據(jù)庫(kù)并查詢操作

    這篇文章主要介紹了如何使用python生成大量數(shù)據(jù)寫入es數(shù)據(jù)庫(kù)并查詢操作,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • 在django中使用自定義標(biāo)簽實(shí)現(xiàn)分頁(yè)功能

    在django中使用自定義標(biāo)簽實(shí)現(xiàn)分頁(yè)功能

    這篇文章主要介紹了在django中使用自定義標(biāo)簽實(shí)現(xiàn)分頁(yè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • python 使用百度AI接口進(jìn)行人臉對(duì)比的步驟

    python 使用百度AI接口進(jìn)行人臉對(duì)比的步驟

    這篇文章主要介紹了python 使用百度AI接口進(jìn)行人臉對(duì)比的步驟,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • Python如何使用paramiko模塊連接linux

    Python如何使用paramiko模塊連接linux

    這篇文章主要介紹了Python如何使用paramiko模塊連接linux,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • python binascii 進(jìn)制轉(zhuǎn)換實(shí)例

    python binascii 進(jìn)制轉(zhuǎn)換實(shí)例

    今天小編就為大家分享一篇python binascii 進(jìn)制轉(zhuǎn)換實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python將CSV轉(zhuǎn)換為Excel的高效方案

    Python將CSV轉(zhuǎn)換為Excel的高效方案

    在數(shù)據(jù)處理中,CSV 轉(zhuǎn) Excel 是常見且高頻的需求,無論是從數(shù)據(jù)庫(kù)導(dǎo)出的 CSV 文件,還是爬蟲獲取的原始數(shù)據(jù),最終往往需要以 Excel 格式進(jìn)行分析或共享,本文將介紹如何使用 Spire.XLS for Python 庫(kù)實(shí)現(xiàn)實(shí)現(xiàn) CSV 到 Excel 的無縫轉(zhuǎn)換,需要的朋友可以參考下
    2025-09-09

最新評(píng)論

普兰店市| 卓尼县| 越西县| 洪湖市| 龙山县| 莱芜市| 河池市| 平凉市| 广水市| 喀喇| 广安市| 吴堡县| 桑日县| 新竹县| 肇源县| 本溪| 阳谷县| 莱州市| 金山区| 观塘区| 隆子县| 长宁县| 临江市| 垦利县| 界首市| 平湖市| 高阳县| 永胜县| 顺昌县| 阳新县| 南投县| 华容县| 福清市| 新余市| 容城县| 卫辉市| 萨嘎县| 札达县| 嘉黎县| 文安县| 宜丰县|