国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【python】制作一個串口工具(上)!

這篇具有很好參考價值的文章主要介紹了【python】制作一個串口工具(上)!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

? ? ? 串口叫做串行接口,也稱串行通信接口,按電氣標準及協(xié)議來分包括RS-232-C、RS-422、RS485、USB等。 RS-232-C、RS-422與RS-485標準只對接口的電氣特性做出規(guī)定,不涉及接插件、電纜或協(xié)議。USB是近幾年發(fā)展起來的新型接口標準,主要應用于高速數(shù)據(jù)傳輸領域。

? ? ? 工作中,經(jīng)常要用到串口來做數(shù)據(jù)的讀寫,今天我們來自己做一個串口工具,這一節(jié),我們先把基礎的框架先搭建好。

一.環(huán)境配置

1.這邊我就直接使用的 Qt Designer 來設計串口界面的布局。

(1)先來制作我們串口的端口選擇,以及波特率,串口的開關等:

python 串口工具,python,python,串口工具,Serial

這邊用到了groupBox、label、comboBox、pushButton幾個控件。

(2)接下來制作我們的串口高級設置部分:

python 串口工具,python,python,串口工具,Serial

(3)然后就是串口數(shù)據(jù)發(fā)送部分:

python 串口工具,python,python,串口工具,Serial

?這邊做了兩種,ASCII、HEX類型。

(4)包括數(shù)據(jù)發(fā)送、接收文本框:

python 串口工具,python,python,串口工具,Serial

?(6)工具欄制作:

python 串口工具,python,python,串口工具,Serial

包括了,文件、設置、幫助、退出四個功能。

(7)最終布局如下:

python 串口工具,python,python,串口工具,Serial

2.生成對應的 .py 文件

附源碼:

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

# Form implementation generated from reading ui file 'Serial_.ui'
#
# Created by: PyQt5 UI code generator 5.15.7
#
# 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_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(914, 672)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(20, 30, 321, 161))
        self.groupBox.setObjectName("groupBox")
        self.comboBox = QtWidgets.QComboBox(self.groupBox)
        self.comboBox.setGeometry(QtCore.QRect(130, 30, 161, 22))
        self.comboBox.setObjectName("comboBox")
        self.comboBox.addItem("")
        self.label_23 = QtWidgets.QLabel(self.groupBox)
        self.label_23.setGeometry(QtCore.QRect(10, 30, 91, 21))
        self.label_23.setStyleSheet("background-color: rgb(85, 170, 255);")
        self.label_23.setAlignment(QtCore.Qt.AlignCenter)
        self.label_23.setObjectName("label_23")
        self.label_24 = QtWidgets.QLabel(self.groupBox)
        self.label_24.setGeometry(QtCore.QRect(10, 70, 91, 21))
        self.label_24.setStyleSheet("background-color: rgb(85, 170, 255);")
        self.label_24.setAlignment(QtCore.Qt.AlignCenter)
        self.label_24.setObjectName("label_24")
        self.comboBox_3 = QtWidgets.QComboBox(self.groupBox)
        self.comboBox_3.setGeometry(QtCore.QRect(130, 70, 161, 22))
        self.comboBox_3.setObjectName("comboBox_3")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.comboBox_3.addItem("")
        self.pushButton_2 = QtWidgets.QPushButton(self.groupBox)
        self.pushButton_2.setGeometry(QtCore.QRect(90, 120, 121, 31))
        self.pushButton_2.setObjectName("pushButton_2")
        self.groupBox_2 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_2.setGeometry(QtCore.QRect(20, 200, 321, 291))
        self.groupBox_2.setObjectName("groupBox_2")
        self.comboBox_4 = QtWidgets.QComboBox(self.groupBox_2)
        self.comboBox_4.setGeometry(QtCore.QRect(230, 30, 69, 22))
        self.comboBox_4.setObjectName("comboBox_4")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.comboBox_4.addItem("")
        self.label_25 = QtWidgets.QLabel(self.groupBox_2)
        self.label_25.setGeometry(QtCore.QRect(10, 30, 91, 21))
        self.label_25.setStyleSheet("background-color: rgb(85, 170, 255);")
        self.label_25.setAlignment(QtCore.Qt.AlignCenter)
        self.label_25.setObjectName("label_25")
        self.label_26 = QtWidgets.QLabel(self.groupBox_2)
        self.label_26.setGeometry(QtCore.QRect(10, 70, 91, 21))
        self.label_26.setStyleSheet("background-color: rgb(85, 170, 255);")
        self.label_26.setAlignment(QtCore.Qt.AlignCenter)
        self.label_26.setObjectName("label_26")
        self.comboBox_5 = QtWidgets.QComboBox(self.groupBox_2)
        self.comboBox_5.setGeometry(QtCore.QRect(230, 70, 69, 22))
        self.comboBox_5.setObjectName("comboBox_5")
        self.comboBox_5.addItem("")
        self.comboBox_5.addItem("")
        self.label_27 = QtWidgets.QLabel(self.groupBox_2)
        self.label_27.setGeometry(QtCore.QRect(10, 110, 91, 21))
        self.label_27.setStyleSheet("background-color: rgb(85, 170, 255);")
        self.label_27.setAlignment(QtCore.Qt.AlignCenter)
        self.label_27.setObjectName("label_27")
        self.comboBox_6 = QtWidgets.QComboBox(self.groupBox_2)
        self.comboBox_6.setGeometry(QtCore.QRect(230, 110, 69, 22))
        self.comboBox_6.setObjectName("comboBox_6")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.comboBox_6.addItem("")
        self.label_28 = QtWidgets.QLabel(self.groupBox_2)
        self.label_28.setGeometry(QtCore.QRect(10, 150, 91, 21))
        self.label_28.setStyleSheet("background-color: rgb(85, 170, 255);")
        self.label_28.setAlignment(QtCore.Qt.AlignCenter)
        self.label_28.setObjectName("label_28")
        self.comboBox_7 = QtWidgets.QComboBox(self.groupBox_2)
        self.comboBox_7.setGeometry(QtCore.QRect(230, 150, 81, 22))
        self.comboBox_7.setObjectName("comboBox_7")
        self.comboBox_7.addItem("")
        self.comboBox_7.addItem("")
        self.comboBox_7.addItem("")
        self.comboBox_7.addItem("")
        self.label_29 = QtWidgets.QLabel(self.groupBox_2)
        self.label_29.setGeometry(QtCore.QRect(10, 190, 201, 21))
        self.label_29.setStyleSheet("background-color: rgb(85, 170, 255);")
        self.label_29.setAlignment(QtCore.Qt.AlignCenter)
        self.label_29.setObjectName("label_29")
        self.comboBox_8 = QtWidgets.QComboBox(self.groupBox_2)
        self.comboBox_8.setGeometry(QtCore.QRect(230, 190, 81, 22))
        self.comboBox_8.setObjectName("comboBox_8")
        self.comboBox_8.addItem("")
        self.pushButton = QtWidgets.QPushButton(self.groupBox_2)
        self.pushButton.setGeometry(QtCore.QRect(50, 230, 201, 31))
        self.pushButton.setObjectName("pushButton")
        self.label_30 = QtWidgets.QLabel(self.groupBox_2)
        self.label_30.setGeometry(QtCore.QRect(270, 230, 31, 31))
        self.label_30.setStyleSheet("border-image: url(:/BACK/107zi.jpg);")
        self.label_30.setText("")
        self.label_30.setAlignment(QtCore.Qt.AlignCenter)
        self.label_30.setObjectName("label_30")
        self.textBrowser = QtWidgets.QTextBrowser(self.centralwidget)
        self.textBrowser.setGeometry(QtCore.QRect(380, 30, 521, 341))
        self.textBrowser.setObjectName("textBrowser")
        self.groupBox_3 = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox_3.setGeometry(QtCore.QRect(20, 500, 321, 91))
        self.groupBox_3.setObjectName("groupBox_3")
        self.radioButton = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton.setGeometry(QtCore.QRect(20, 20, 89, 16))
        self.radioButton.setObjectName("radioButton")
        self.radioButton_2 = QtWidgets.QRadioButton(self.groupBox_3)
        self.radioButton_2.setGeometry(QtCore.QRect(160, 20, 89, 16))
        self.radioButton_2.setObjectName("radioButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.groupBox_3)
        self.pushButton_3.setGeometry(QtCore.QRect(30, 50, 75, 23))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.groupBox_3)
        self.pushButton_4.setGeometry(QtCore.QRect(160, 50, 75, 23))
        self.pushButton_4.setObjectName("pushButton_4")
        self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QtCore.QRect(380, 390, 521, 201))
        self.lineEdit.setObjectName("lineEdit")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 914, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.toolBar = QtWidgets.QToolBar(MainWindow)
        self.toolBar.setObjectName("toolBar")
        MainWindow.addToolBar(QtCore.Qt.TopToolBarArea, self.toolBar)
        self.action = QtWidgets.QAction(MainWindow)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(":/BACK/Desktop/img/file.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action.setIcon(icon)
        self.action.setObjectName("action")
        self.action_2 = QtWidgets.QAction(MainWindow)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(":/BACK/Desktop/img/set.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_2.setIcon(icon1)
        self.action_2.setObjectName("action_2")
        self.action_3 = QtWidgets.QAction(MainWindow)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(":/BACK/Desktop/img/help.jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_3.setIcon(icon2)
        self.action_3.setObjectName("action_3")
        self.action_4 = QtWidgets.QAction(MainWindow)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(":/BACK/Desktop/img/quit(1).jpg"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_4.setIcon(icon3)
        self.action_4.setObjectName("action_4")
        self.toolBar.addAction(self.action)
        self.toolBar.addAction(self.action_2)
        self.toolBar.addAction(self.action_3)
        self.toolBar.addAction(self.action_4)

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

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "串口工具v1.0"))
        self.groupBox.setTitle(_translate("MainWindow", "Basic Serial settings"))
        self.comboBox.setItemText(0, _translate("MainWindow", "Choose at session start"))
        self.label_23.setText(_translate("MainWindow", "Serial port:"))
        self.label_24.setText(_translate("MainWindow", "Speed (bps):"))
        self.comboBox_3.setItemText(0, _translate("MainWindow", "115200"))
        self.comboBox_3.setItemText(1, _translate("MainWindow", "1200"))
        self.comboBox_3.setItemText(2, _translate("MainWindow", "2400"))
        self.comboBox_3.setItemText(3, _translate("MainWindow", "9600"))
        self.comboBox_3.setItemText(4, _translate("MainWindow", "新建項目"))
        self.pushButton_2.setText(_translate("MainWindow", "Open Serial"))
        self.groupBox_2.setTitle(_translate("MainWindow", "Advanced Serial settings"))
        self.comboBox_4.setItemText(0, _translate("MainWindow", "8"))
        self.comboBox_4.setItemText(1, _translate("MainWindow", "7"))
        self.comboBox_4.setItemText(2, _translate("MainWindow", "6"))
        self.comboBox_4.setItemText(3, _translate("MainWindow", "5"))
        self.label_25.setText(_translate("MainWindow", "Data bits:"))
        self.label_26.setText(_translate("MainWindow", "Stop bits:"))
        self.comboBox_5.setItemText(0, _translate("MainWindow", "1"))
        self.comboBox_5.setItemText(1, _translate("MainWindow", "2"))
        self.label_27.setText(_translate("MainWindow", "Parity:"))
        self.comboBox_6.setItemText(0, _translate("MainWindow", "None"))
        self.comboBox_6.setItemText(1, _translate("MainWindow", "Odd"))
        self.comboBox_6.setItemText(2, _translate("MainWindow", "Even"))
        self.comboBox_6.setItemText(3, _translate("MainWindow", "Mark"))
        self.comboBox_6.setItemText(4, _translate("MainWindow", "Space"))
        self.label_28.setText(_translate("MainWindow", "Flow control:"))
        self.comboBox_7.setItemText(0, _translate("MainWindow", "Xon/Xoff"))
        self.comboBox_7.setItemText(1, _translate("MainWindow", "None"))
        self.comboBox_7.setItemText(2, _translate("MainWindow", "Dsr/Dtr"))
        self.comboBox_7.setItemText(3, _translate("MainWindow", "Rts/Cts"))
        self.label_29.setText(_translate("MainWindow", "execute macro as session start:"))
        self.comboBox_8.setItemText(0, _translate("MainWindow", "None"))
        self.pushButton.setText(_translate("MainWindow", "Reset defaults"))
        self.groupBox_3.setTitle(_translate("MainWindow", "Serial Send settings"))
        self.radioButton.setText(_translate("MainWindow", "ASCII"))
        self.radioButton_2.setText(_translate("MainWindow", "HEX"))
        self.pushButton_3.setText(_translate("MainWindow", "清除發(fā)送"))
        self.pushButton_4.setText(_translate("MainWindow", "發(fā)送數(shù)據(jù)"))
        self.toolBar.setWindowTitle(_translate("MainWindow", "toolBar"))
        self.action.setText(_translate("MainWindow", "文件"))
        self.action_2.setText(_translate("MainWindow", "設置"))
        self.action_3.setText(_translate("MainWindow", "幫助"))
        self.action_4.setText(_translate("MainWindow", "退出"))
import TUTU_rc

3.主文件代碼如下:

import os
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
import time
from PyQt5.QtCore import Qt
import serial
import serial.tools.list_ports as serials
from PyQt5.QtGui import QIcon
import Serial_







if __name__ == '__main__':

    app = QApplication(sys.argv)
    MainWindow = QMainWindow()
    ui = Serial_.Ui_MainWindow()
    ui.setupUi(MainWindow)

    MainWindow.show()##顯示

    sys.exit(app.exec_())##退出界面

二.總結

這一篇先說基礎框架的制作,下一期來說說如何功能的實現(xiàn)。

下一篇:【python】制作一個串口工具(下)!_==PP的博客-CSDN博客

@Neng文章來源地址http://www.zghlxwxcb.cn/news/detail-781869.html

到了這里,關于【python】制作一個串口工具(上)!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Python制作一個自動發(fā)送彈幕的工具,讓你看直播不冷場

    Python制作一個自動發(fā)送彈幕的工具,讓你看直播不冷場

    前言 嗨嘍,大家好呀~這里是愛看美女的茜茜吶 讓我們先看看效果: 名字我就打碼了,當然名字不是關鍵,我直接截圖展示算了,GIF的話,太麻煩了。 環(huán)境使用: Python 3.8 / 編譯器 Pycharm 2021.2版本 / 編輯器 素材準備 接下來我們要準備好你想發(fā)送的彈幕內(nèi)容 這個我都是隨便打

    2023年04月27日
    瀏覽(22)
  • 基于C#制作一個串口通信調(diào)試軟件

    基于C#制作一個串口通信調(diào)試軟件

    串口調(diào)試軟件是一種用于調(diào)試和監(jiān)測串口通信的工具軟件。它可以幫助用戶通過串口與外部設備進行通信,并實時顯示發(fā)送和接收的數(shù)據(jù),方便用戶進行數(shù)據(jù)的分析和調(diào)試。

    2024年02月14日
    瀏覽(19)
  • Vue使用Serial連接串口

    Vue使用Serial連接串口

    本來只是隨手記錄一下,發(fā)現(xiàn)看的人多了,想著還是修復一下bug吧,供各位看官指正 2022-10-24本次更新: 1、修復在不支持Serial的情況下,控制臺報錯 2022-09-19本次更新: ?1、修復了傳輸數(shù)據(jù)接收分隔的情況(增加數(shù)據(jù)緩存) ?2、修復串口連接沒有使用選擇的波特率等參數(shù) 1、 Ser

    2024年02月20日
    瀏覽(31)
  • C++使用serial串口通信 + ROS2示例IMU串口驅(qū)動

    C++使用serial串口通信 + ROS2示例IMU串口驅(qū)動

    串行接口 (Serial Interface)簡稱串口(通常指COM接口),是采用串行通信方式的擴展接口,是指數(shù)據(jù)一位一位地順序傳送,串口通信就要解析這一位一位數(shù)據(jù)。這里使用的是亞博智能的10軸IMU模塊為例介紹C++使用serial串口通信,此IMU模塊為UART通信,它是一異步通訊:不需要時

    2024年01月25日
    瀏覽(21)
  • python入門學習之小工具制作系列--02使用tkinter庫寫一個BMI身體指數(shù)檢測小程序

    python入門學習之小工具制作系列--02使用tkinter庫寫一個BMI身體指數(shù)檢測小程序

    一、小程序檢測功能邏輯 即通過輸入身高、體重兩個數(shù)據(jù)即可計算自己的BMI身體指數(shù)是多少,且對身體狀況做相應提醒。 二、小程序使用體驗 1,彈出主界面,輸入身高,體重數(shù)據(jù)~ 2,點擊計算,輸出BMI數(shù)據(jù)~ 3,根據(jù)BMI結果,給出相應的建議~ 三、小程序代碼邏輯 1,引入t

    2024年02月15日
    瀏覽(27)
  • ROS2 Humble如何使用串口驅(qū)動?(Serial)

    目錄 1. 串口庫(Serial Library)簡介: 2.? 源碼及主頁 3.? 國內(nèi)git倉庫(ROS2 humble已測試可用) 4. 可能出現(xiàn)的問題

    2024年02月16日
    瀏覽(84)
  • Vue中使用Web Serial API連接串口,實現(xiàn)通信交互

    Vue中使用Web Serial API連接串口,實現(xiàn)通信交互

    Web Serial API,web端通過串口與硬件通信; 該API是JS本身 navigator 對象上就獨有的,所以與Vue和React框架開發(fā)都沒有太大的關系, 串口是一個雙向通信接口,允許字節(jié)發(fā)送和接收數(shù)據(jù)。 Web Serial API為網(wǎng)站提供了一種使用JavaScript對串行設備進行讀寫的方法。串行設備可以通過用戶系

    2024年02月08日
    瀏覽(28)
  • 利用Web Serial API實現(xiàn)Vue與單片機串口通信

    利用Web Serial API實現(xiàn)Vue與單片機串口通信

    ????????Web Serial API 是一項 Web 技術,用于在瀏覽器中訪問串行端口設備(如 Arduino、傳感器等)并與之通信。它提供了一組 JavaScript 接口,使得 Web 應用程序可以通過 USB 串行端口連接到硬件設備,并進行數(shù)據(jù)發(fā)送和接收操作。 ????????瀏覽器版本:Google Chrome?版本

    2024年02月14日
    瀏覽(19)
  • 【C#】【串口通信(Serial Port)】建議串口調(diào)試WinForm桌面應用實例——已實現(xiàn)功能<存在未知BUG>

    【C#】【串口通信(Serial Port)】建議串口調(diào)試WinForm桌面應用實例——已實現(xiàn)功能<存在未知BUG>

    1、界面組件 ?2、界面實現(xiàn)代碼 界面代碼 ? 3、邏輯代碼 邏輯代碼 ? 4、效果展示 ? 5、錯誤提醒 ? 參考網(wǎng)址:C# 實現(xiàn)串口通信 - 編程教程 (17bigdata.com)

    2024年02月08日
    瀏覽(17)
  • Android 沾包處理,以串口接入為例 (usb-serial-for-android)

    Android 沾包處理,以串口接入為例 (usb-serial-for-android)

    我們在通過串口、 TCP 、 UDP 等方式接收協(xié)議的時候,由于單次接收數(shù)據(jù)有限,導致一條命令可能被分割成多次進行接收。 這種情況下,就需要進行沾包處理,使多次接收的數(shù)據(jù),合并成一條數(shù)據(jù)。本文通過博主本人一個真實的工作案例,實例講解Android串口的接入和對于沾包

    2023年04月16日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包