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