## 基于Qt的传感器数据采集和可视化软件说明书
### 软件介绍
本软件是一款基于Qt框架的C++应用程序,主要功能是通过串口采集传感器数据并进行可视化展示。软件实现了数据动态绘图、数据保存和自定义协议解析等功能,适用于传感器数据的实时监控和分析。
### 主窗口模块(Main Window Module)
**文件**: main.cpp, mainwindow.cpp, mainwindow.h, mainwindow.ui
**功能**: 启动应用程序并初始化主窗口。设置用户界面,包含串口选择、数据展示和绘图区域。实现界面与用户的交互操作。
**详细说明**:
- 在`main.cpp`中,程序入口函数创建一个`QApplication`对象,并实例化`MainWindow`对象,显示主窗口。
- 在`mainwindow.cpp`中,`MainWindow`类的构造函数初始化界面组件,设置串口通信和数据绘图功能,并通过信号和槽机制实现交互功能。
- 在`mainwindow.ui`中定义了主窗口的界面布局,包含按钮、文本框、下拉菜单和绘图区域。
**操作步骤**:
1. 双击应用程序图标启动程序。
2. 程序启动后,您将看到主窗口界面,界面上有串口选择框、数据展示区域和绘图区域。
### 串口通信模块(Serial Communication Module)
**文件**: mainwindow.cpp
**功能**: 扫描并列出可用的串口设备。通过串口接收传感器数据。
**详细说明**:
- 使用`QSerialPort`类实现串口通信。
- 在主窗口初始化时,扫描所有可用的串口设备并将其添加到下拉菜单中供用户选择。
- 连接选定的串口,并通过信号和槽机制读取数据,当串口有数据可读时,自动调用`readData()`函数读取数据。
**操作步骤**:
1. 在主窗口的串口选择框中,点击下拉菜单选择一个可用的串口设备。
2. 选择串口设备后,点击“连接”按钮,程序将自动开始接收传感器数据。
### 数据可视化模块(Data Visualization Module)
**文件**: mainwindow.cpp, qcustomplot.cpp
**功能**: 使用`QCustomPlot`绘制数据图表。支持动态绘图,实时更新数据。
**详细说明**:
- 在`mainwindow.cpp`中,使用`QCustomPlot`类创建绘图区域,并设置其交互功能,如拖动、缩放和选择。
- 实现了动态绘图功能,通过`QTimer`定时器定期更新绘图数据,实现实时显示。
- 用户可以通过界面按钮控制绘图的开始和暂停,并可保存绘图结果为PNG图片。
**操作步骤**:
1. 点击“开始”按钮,启动数据的动态绘图,图表区域将显示实时更新的传感器数据曲线。
2. 点击“暂停”按钮,停止绘图。
### 数据解析模块(Data Parsing Module)
**文件**: protocol.cpp
**功能**: 自定义数据协议解析。将接收到的原始数据解析为可视化数据。
**详细说明**:
- 在`protocol.cpp`中实现了数据解析逻辑,定义了`Sensor_Data`结构体用于存储解析后的数据。
- 使用`qRegisterMetaType`注册数据类型,确保数据在信号槽机制中传递的正确性。
### 数据保存模块(Data Saving Module)
**文件**: mainwindow.cpp
**功能**: 保存传感器数据到CSV文件。保存绘制的图表为PNG图片。
**详细说明**:
- 在主窗口中提供了保存按钮,用户可以选择将数据保存为CSV文件或将当前绘制的图表保存为PNG图片。
- 使用`QFileDialog`提供文件选择对话框,选择保存路径和文件类型。
**操作步骤**:
1. 点击“保存”按钮。
2. 在弹出的文件选择对话框中,选择保存路径和文件类型(PNG或CSV)。
3. 点击“保存”按钮,数据或图表将保存到指定位置。
### Pressure Module
**文件**: pressure.cpp
**功能**: 模拟和显示不同类型的压力波形。提供启动、停止、重置和保存/加载配置的功能。
**详细说明**:
**UI组件初始化**
**文件**: pressure.cpp
**功能**: 初始化用户界面组件,包括按钮、滑块和标签。设置布局并连接信号和槽。
**详细说明**:
- 创建并初始化按钮(开始、停止、重置、保存、加载)和标签(当前压力、峰值压力)。
- 初始化频率滑块和波形选择器,并设置其范围和默认值。
- 将组件添加到布局中并设置布局。
- 连接按钮和滑块的信号到对应的槽函数。
**操作步骤**:
1. 打开软件后,在波形选择器下拉菜单中选择波形类型(正弦波、锯齿波或方波)。
2. 使用频率滑块调整波形更新的频率,滑块范围为10到1000。
3. 点击“开始”按钮,启动波形模拟。压力数据将以选定的波形类型和频率生成,并实时显示在界面上。
4. 点击“停止”按钮,停止波形模拟。
5. 点击“重置”按钮,清空当前压力数据和峰值压力,界面显示复位。
6. 点击“保存配置”按钮,将当前波形类型和频率设置保存到`pressure_config.txt`文件。
7. 点击“加载配置”按钮,从`pressure_config.txt`文件加载波形类型和频率设置,并更新界面组件。
### Speed Module
**文件**: speed.cpp
**功能**: 模拟和控制速度。提供启动、停止和紧急停止功能。
**详细说明**:
**UI组件初始化**
**文件**: speed.cpp
**功能**: 初始化用户界面组件,包括滑动条、标签、下拉菜单和按钮。设置组件布局并连接信号和槽。
**详细说明**:
- 创建并初始化滑动条,设置其范围为0到3000,用于调节速度。
- 创建并初始化标签,用于显示当前速度。
- 创建并初始化预设速度下拉菜单,包含三个预设值(1000 RPM、2000 RPM、3000 RPM)。
- 创建并初始化按钮(开始、停止、紧急停止)。
- 连接滑动条和按钮的信号到对应的槽函数,实现速度更新和命令发送。
**操作步骤**:
1. 使用滑动条调节速度,标签将实时显示当前速度值。
2. 通过预设速度下拉菜单选择固定速度。
3. 点击“开始”按钮,发送启动命令,开始速度控制。
4. 点击“停止”按钮,发送停止命令,停止速度控制。
5. 点击“紧急停止”按钮,发送紧急停止命令,立即停止速度控制。
### Temperature Module
**文件**: temperature.cpp
**功能**: 模拟温度变化。提供不同场景下的温度变化模拟。
**详细说明**:
**UI组件初始化**
**文件**: temperature.cpp
**功能**: 初始化用户界面组件,包括滑动条、标签、进度条、下拉菜单和按钮。设置组件布局并连接信号和槽。
**详细说明**:
- 创建并初始化滑动条,设置其范围为0到100,用于调节温度。
- 创建并初始化标签,用于显示当前温度。
- 创建并初始化进度条,用于显示温度的变化。
- 创建并初始化场景选择下拉菜单,包含三个预设场景(一般启动、高负载启动、冷启动)。
- 创建并初始化按钮(开始、停止)。
- 连接滑动条和按钮的信号到对应的槽函数,实现温度更新和模拟控制。
**操作步骤**:
1. 使用滑动条调节温度,标签和进度条将实时显示当前温度值。
2. 从场景选择下拉菜单中选择不同的温度变化场景(一般启动、高负载启动、冷启动)。
3. 点击“开始”按钮,启动温度模拟。温度数据将根据选定的场景变化,并实时显示在界面上。
4. 点击“停止”按钮,停止温度模拟。
### 使用说明
1. **启动软件**:
- 运行程序后,主界面将显示可用的串口设备。
- 从下拉菜单中选择一个串口设备并进行连接。
2. **接收数据**:
- 连接串口后,程序将自动开始接收传感器数据。
- 数据将实时显示在主界面的文本区域中。
3. **绘制图表**:
- 点击“开始”按钮,启动数据的动态绘图。
- 图表区域将显示实时更新的传感器数据曲线。
-