From a26e43eda86d7e0ca14b8c6ba2f1b7883750305b Mon Sep 17 00:00:00 2001 From: Robofish <1683502971@qq.com> Date: Sun, 3 Nov 2024 13:25:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=A8=8B=E5=BA=8F=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 29 +++------------ doc/主界面.png | Bin 0 -> 85412 bytes doc/程序说明.doc | 89 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 25 deletions(-) create mode 100644 doc/主界面.png create mode 100644 doc/程序说明.doc diff --git a/README.md b/README.md index 4a8b806..be507a4 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,10 @@ VoltageReaderApp 是一个基于 PyQt5 和 pyqtgraph 的电压监控应用程序 pip install pyqt5 pyqtgraph pandas openpyxl pyserial ``` +## 主界面 + +![主界面](doc\主界面.png) + ## 使用 1. 运行应用程序: @@ -79,28 +83,3 @@ VoltageReaderApp ├── save_data(self) # 保存数据到 Excel 文件 └── load_data(self) # 从 Excel 文件加载数据 ``` - -## 代码说明 - -monitor.py - -monitor.py 文件包含 VoltageReaderApp 类的实现。以下是主要方法的说明: - -- init(self): 初始化应用程序,设置 UI 和变量。 -- initUI(self): 初始化用户界面。 -- setup_port_group(self, layout): 设置串口选择部分的 UI。 -- setup_action_group(self, layout): 设置操作按钮部分的 UI。 -- setup_channel_group(self, layout): 设置通道选择部分的 UI。 -- setup_plot_widget(self, layout): 设置绘图部分的 UI。 -- update_ports(self): 更新串口列表。 -- connect_serial(self): 连接到选择的串口。 -- start_reading(self): 开始读取数据。 -- stop_reading(self): 停止读取数据。 -- read_data(self): 从串口读取数据并处理。 -- update_plot(self): 更新绘图。 -- toggle_curve_visibility(self, state, index): 切换通道曲线的可见性。 -- toggle_auto_follow(self): 切换自动跟随功能。 -- toggle_show_raw(self): 切换显示原始值或计算值。 -- save_data(self): 保存数据为 Excel 文件。 -- load_data(self): 加载数据并显示。 - diff --git a/doc/主界面.png b/doc/主界面.png new file mode 100644 index 0000000000000000000000000000000000000000..2f228a57e4128bb009849ee02ec8cd1c1b718528 GIT binary patch literal 85412 zcmc$`2UJsQw>AnYA{J0lk&ZM4q>Bg$0YQ)&>C%y2q)3qxLJ%8BlimcB-Vx~~M5Ncy zQA$GZ5UGKLB>%!K``hP^alY}5bMF1`8iNp$wdPyroX>pbd*La!&x#ivJ1+O z6tu|5PAia+ouW8%8u(;tJ(CakMeeSp^nk3mmuVUJejXgpte zE!0wB(&*3<=dC}sF?ygxs^*(6)Fiy}7hi3|c5RId_W09{@EtHZmS>G~{rKFQUMP>a zbz@fStcg{v6
M8`Ep2If`cJYckP(1Bjc(rzSnRKr!$Zly3< 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 literal 0 HcmV?d00001 diff --git a/doc/程序说明.doc b/doc/程序说明.doc new file mode 100644 index 0000000..b90df5f --- /dev/null +++ b/doc/程序说明.doc @@ -0,0 +1,89 @@ +电压监测应用程序详细说明书 +概述 +本说明书详细介绍了一个基于 PyQt5 和 pyqtgraph 的电压监测应用程序。该应用程序通过串口读取电压数据,并实时显示在图表上。用户可以选择不同的串口和波特率,启动和停止数据读取,保存和加载数据,以及切换显示原始值和计算值。 + +系统架构 +主要模块 +界面模块:使用 PyQt5 创建用户界面,包括串口设置、操作按钮、通道选择和数据图表。 +串口通讯模块:使用 pyserial 库进行串口通讯,读取电压数据包。 +数据处理模块:处理读取的数据包,将原始值转换为电压值,并存储在队列中。 +数据展示模块:使用 pyqtgraph 库实时绘制电压数据图表。 +类和方法 + +VoltageReaderApp:主窗口类,继承自 QMainWindow,包含所有界面元素和功能逻辑。 +__init__:初始化界面和变量。 +initUI:设置用户界面。 +setup_port_group:设置串口配置组。 +setup_action_group:设置操作按钮组。 +setup_channel_group:设置通道选择组。 +setup_plot_widget:设置数据图表。 +update_ports:更新串口列表。 +connect_serial:连接到选定的串口。 +start_reading:开始读取数据。 +stop_reading:停止读取数据。 +read_data:从串口读取数据包并处理。 +update_plot:更新数据图表。 +toggle_curve_visibility:切换通道曲线的可见性。 +toggle_auto_follow:切换自动跟随模式。 +toggle_show_raw:切换显示原始值和计算值。 +save_data:保存数据到 Excel 文件。 +load_data:从 Excel 文件加载数据。 +界面设计 +串口设置 +选择串口:下拉列表,显示可用的串口。 +刷新串口:按钮,刷新串口列表。 +选择波特率:下拉列表,选择波特率。 +连接:按钮,连接到选定的串口。 +操作按钮 +开始读取:按钮,开始读取数据。 +停止读取:按钮,停止读取数据。 +自动跟随:按钮,切换自动跟随模式。 +显示原始值:按钮,切换显示原始值和计算值。 +保存数据:按钮,保存数据到 Excel 文件。 +加载数据:按钮,从 Excel 文件加载数据。 +通道选择 +通道复选框:复选框,选择要显示的通道。 +数据图表 +数据图表:使用 pyqtgraph 库绘制的实时数据图表。 +详细实现 +初始化和界面设置 +在 VoltageReaderApp 类的 __init__ 方法中,初始化界面和变量。调用 initUI 方法设置用户界面,包括窗口标题、大小和布局。 + +界面初始化 +在 initUI 方法中,设置主窗口的标题和大小,创建中央小部件和主布局。然后调用 setup_port_group、setup_action_group、setup_channel_group 和 setup_plot_widget 方法分别设置串口配置组、操作按钮组、通道选择组和数据图表。 + +串口设置组 +在 setup_port_group 方法中,创建串口设置组,包括选择串口、刷新串口、选择波特率和连接按钮。每个控件都添加到布局中,并设置相应的事件处理函数。 + +操作按钮组 +在 setup_action_group 方法中,创建操作按钮组,包括开始读取、停止读取、自动跟随、显示原始值、保存数据和加载数据按钮。每个按钮都添加到布局中,并设置相应的事件处理函数。 + +通道选择组 +在 setup_channel_group 方法中,创建通道选择组,包括多个通道复选框。每个复选框都添加到布局中,并设置相应的事件处理函数。 + +数据图表 +在 setup_plot_widget 方法中,创建数据图表,使用 pyqtgraph 库绘制实时数据图表。将图表添加到布局中,并初始化每个通道的数据曲线。 + +串口更新和连接 +在 update_ports 方法中,更新串口列表,获取当前可用的串口并添加到下拉列表中。在 connect_serial 方法中,连接到选定的串口,并设置相应的波特率。 + +数据读取和处理 +在 start_reading 方法中,启动数据读取,创建一个线程从串口读取数据包。在 read_data 方法中,处理读取的数据包,将原始值转换为电压值,并存储在队列中。 + +数据图表更新 +在 update_plot 方法中,更新数据图表,根据用户选择显示原始值或计算值,并实时绘制数据曲线。 + +通道曲线可见性切换 +在 toggle_curve_visibility 方法中,切换通道曲线的可见性,根据用户选择显示或隐藏相应的通道数据。 + +自动跟随和显示原始值切换 +在 toggle_auto_follow 方法中,切换自动跟随模式。在 toggle_show_raw 方法中,切换显示原始值和计算值,并更新数据图表。 + +数据保存和加载 +在 save_data 方法中,保存数据到 Excel 文件,并导出数据图表。在 load_data 方法中,从 Excel 文件加载数据,并更新数据图表。 + +主程序入口 +在主程序入口中,创建 QApplication 实例,创建 VoltageReaderApp 窗口,并启动应用程序。 + +结论 +本电压监测应用程序通过串口读取电压数据,并实时显示在图表上。用户可以方便地选择串口和波特率,启动和停止数据读取,保存和加载数据,以及切换显示原始值和计算值。该应用程序具有良好的用户界面和数据处理能力,适用于各种电压监测场景。 \ No newline at end of file