基于pyqt的上位機開發

目錄

安裝依賴

功能包含

運行結果?


安裝依賴

pip install pyqt5 pyqtgraph pyserial?

功能包含

????????自動檢測串口設備,波特率選擇/連接斷開控制,數據發送/接收基礎框架,實時繪圖區域(需配合數據解析)

"""
PyQt5 上位機基礎框架
功能:串口通信+數據可視化+基礎控件
"""
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt, QTimer
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
import pyqtgraph as pgclass SerialMonitor(QMainWindow):def __init__(self):super().__init__()self.serial = QSerialPort()self.initUI()self.initSerial()def initUI(self):self.setWindowTitle("Serial Monitor")self.setGeometry(300, 300, 800, 600)# 中央控件central = QWidget()self.setCentralWidget(central)layout = QHBoxLayout(central)# 左側控制面板controlPanel = QGroupBox("串口設置")controlLayout = QVBoxLayout()self.portCombo = QComboBox()self.baudCombo = QComboBox()self.connectBtn = QPushButton("打開串口")self.sendText = QLineEdit()self.sendBtn = QPushButton("發送數據")# 填充控件self.baudCombo.addItems(['9600', '115200', '230400'])controlLayout.addWidget(QLabel("端口:"))controlLayout.addWidget(self.portCombo)controlLayout.addWidget(QLabel("波特率:"))controlLayout.addWidget(self.baudCombo)controlLayout.addWidget(self.connectBtn)controlLayout.addWidget(QLabel("發送數據:"))controlLayout.addWidget(self.sendText)controlLayout.addWidget(self.sendBtn)controlPanel.setLayout(controlLayout)# 右側繪圖區域self.plotWidget = pg.PlotWidget()self.plotWidget.setBackground('w')self.curve = self.plotWidget.plot(pen='b')layout.addWidget(controlPanel, 1)layout.addWidget(self.plotWidget, 3)# 信號連接self.connectBtn.clicked.connect(self.toggleSerial)self.sendBtn.clicked.connect(self.sendData)self.serial.readyRead.connect(self.readData)def initSerial(self):ports = QSerialPortInfo.availablePorts()self.portCombo.clear()for port in ports:self.portCombo.addItem(port.portName())def toggleSerial(self):if self.serial.isOpen():self.serial.close()self.connectBtn.setText("打開串口")else:self.serial.setPortName(self.portCombo.currentText())self.serial.setBaudRate(int(self.baudCombo.currentText()))if self.serial.open(QSerialPort.ReadWrite):self.connectBtn.setText("關閉串口")def readData(self):data = self.serial.readAll().data()# 示例:顯示原始數據(需根據協議解析)print(data.decode('ascii', errors='replace'))def sendData(self):text = self.sendText.text().encode()if self.serial.isOpen():self.serial.write(text)if __name__ == "__main__":app = QApplication(sys.argv)window = SerialMonitor()window.show()sys.exit(app.exec_())

運行結果?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/78943.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/78943.shtml
英文地址,請注明出處:http://en.pswp.cn/web/78943.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

QT人工智能篇-opencv

第一章 認識opencv 1. 簡單概述 OpenCV是一個跨平臺的開源的計算機視覺庫,主要用于實時圖像處理和計算機視覺應用?。它提供了豐富的函數和算法,用于圖像和視頻的采集、處理、分析和顯示。OpenCV支持多種編程語言,包括C、Python、Java等&…

Python自學第5天:字符串相關操作

1.字符串運算符 作符描述字符串連接*重復輸出字符串[]通過索引獲取字符串中字符[ : ]截取字符串中的一部分,遵循左閉右開原則,str[0:2] 是不包含第 3 個字符的。in成員運算符 - 如果字符串中包含給定的字符返回 Truenot in成員運算符 - 如果字符串中不包…

RabbitMq(尚硅谷)

RabbitMq 1.RabbitMq異步調用 2.work模型 3.Fanout交換機(廣播模式) 4.Diret交換機(直連) 5.Topic交換機(主題交換機,通過路由匹配) 6.Headers交換機(頭交換機) 6…

分庫分表后復雜查詢的應對之道:基于DTS實時性ES寬表構建技術實踐

1 問題域 業務發展的初期,我們的數據庫架構往往是單庫單表,外加讀寫分離來快速的支撐業務,隨著用戶量和訂單量的增加,數據庫的計算和存儲往往會成為我們系統的瓶頸,業界的實踐多數采用分而治之的思想:分庫…

CVE-2024-4577:Windows 編碼錯誤

CVE-2024-4577是一個 PHP-CGI 漏洞,就是其中一種情況:雖然有這個版本,但由于 PHP 經常被反向移植,因此無法可靠地使用。 這篇博文詳細介紹了如何研究 CVE-2024-4577 以及當前用于檢測它的方法。 CVE-2024-4577 CVE-2024-4577 是 Windows 版 PHP 安裝中的一個高危漏洞,會…

NetBox Docker 全功能部署方案(Ubuntu 22.04 + Docker)

環境準備 檢查操作系統版本: 本方案使用 Ubuntu 22.04,并在 VMware 虛擬機中運行。通過以下命令檢查系統版本: lsb_release -a 如果未安裝 Ubuntu 22.04,請下載并安裝一個全新的系統。 更新系統軟件源: 更新軟件包列表…

DeepSeek Copilot idea插件推薦

🌌 DeepSeek Copilot for IntelliJ IDEA 讓 AI 成為你的編程副駕駛,極速生成單元測試 & 代碼注釋驅動開發! 🚀 簡介 DeepSeek Copilot 是一款為 IntelliJ IDEA 打造的 AI 編程助手插件,它能夠智能分析你的代碼邏輯…

QT中的JSON

1.JSON的兩種數據格式 JSON有兩種數據格式:JSON對象和JSON數組 JSON數組: JSON數組格式:[元素1,元素2,元素3,......元素n] JSON數組中的元素可以是同一類型,也可以使不同類型,可以嵌套JSON數組…

詳細剖析傳輸層協議(TCP和UDP)

詳細講解傳輸層的網絡協議,為什么TCP是可靠連接協議,憑什么能做到不丟包,有哪些機制保證可靠呢? TCP/UDP UDPTCP**三次握手和四次揮手****滑動窗口****擁塞控制**(socket套接字)**listen的第二個參數** UD…

數據可視化:藝術與科學的交匯點,如何讓數據“開口說話”?

數據可視化:藝術與科學的交匯點,如何讓數據“開口說話”? 數據可視化,是科技與藝術的結合,是讓冰冷的數字變得生動有趣的橋梁。它既是科學——講究準確性、邏輯性、數據處理的嚴謹性;又是藝術——強調美感…

解決使用lettuce連接Redis超時的問題(tcpUserTimeout 參數失效問題)

問題背景 lettuce 連接Redis的主從實例,當主節的主機異常下電重啟后,由于沒有發送RST 包,導致 lettuce 一直在復用之前的TCP鏈接,然后會出現連接超時的情況。一直出現io.lettuce.core.RedisCommandTimeoutException: Command tim…

如何使用python保存字典

在Python中,可以通過多種方式將字典(dict)保存到文件中,并能夠隨時讀取恢復。以下是幾種常見的方法: 1. 使用 json 模塊(推薦) 適用場景:需要人類可讀的文件格式,且數據不…

SQL 與 Python:日期維度表創建的不同選擇

文章目錄 一、日期維度表概述日期維度表結構 二、使用 SQL 創建日期維度表2.1 表結構設計2.2 數據插入2.3 SQL 創建方式的優勢與局限 三、使用 Python 創建日期維度表3.1 依賴庫引入3.2 代碼實現3.3 Python 創建方式的優勢與局限 四、應用場景與選擇建議4.1 應用場景4.2 選擇建…

如何用postman進行批量操作

業務場景: 有些時候,我們會需要批量的將SAP B1系統中的幾千條的數據刪除或者取消單據,這個時候,一條條去操作,指定是到猴年馬月了。SAP Business One本身提供了DTW這個工具,但是這個更新,可以操…

Mysql如何完成數據的增刪改查(詳解從0到1)

前言: Mysql可能是每個程序員的必修課,可以說是使用起來是沒有什么問題的,但是作為一名合格的程序猿,深入學習Mysql的內部工作原理是非常有必要的,主要是理解和學習Mysql的底層思想,希望在日后如遇到一些&…

單片機嵌入式按鍵庫

kw_btn庫說明 本庫主要滿足嵌入式按鍵需求,集成了常用的按鍵響應事件:高電平、低電平、上升沿、下降沿、單擊、雙擊、長按鍵事件。可以裸機運行,也可以配合實時操作系統運行。 本庫開源連接地址:連接 實現思路 本庫采用C語言進行…

Qt—鼠標移動事件的趣味小程序:會移動的按鈕

1.項目目標 本次根據Qt的鼠標移動事件實現一個趣味小程序:當鼠標移動到按鈕時,按鈕就會隨機出現在置,以至于根本點擊不到按鈕。????? 2.項目步驟 首先現在ui界面設計控件(也可以用代碼的方式創建,就不多說了) 第一個按鈕不需…

MySQL的information_schema在SQL注入中的關鍵作用與防御策略

目錄 一、information_schema的核心價值 二、攻擊利用場景與示例 1. 聯合查詢注入(Union-Based) 2. 報錯注入(Error-Based) 3. 布爾盲注(Boolean Blind) 4. 時間盲注(Time-Based&#xff0…

c語言 關鍵字--目錄

下面是詳細介紹的鏈接 1.c語言 關鍵字 2.typedef 關鍵字 3.volatile 關鍵字 4.register 關鍵字 5.const關鍵字用法 6.extern關鍵字 7.sizeof關鍵字

python爬蟲爬取網站圖片出現403解決方法【僅供學習使用】

基于CSDN第一篇文章,Python爬蟲之入門保姆級教程,學不會我去你家刷廁所。 這篇文章是2021年作者發表的,由于此教程,網站添加了反爬機制,有作者通過添加cookie信息來達到原來的效果,Python爬蟲添加Cookies以…