WPF SensorHub 是一款基于 .NET 8 的工业传感器实时监控上位机软件,旨在为工业现场提供传感器数据的实时采集、可视化展示、阈值报警、统计分析和持久化存储功能。软件采用 MVVM 架构模式,结合 MaterialDesignThemes 打造现代化深色界面,并集成 ScottPlot 实现高性能实时曲线绘制。
SELECT * FROM SensorData WHERE Timestamp >= date('now', '-1 day') AND SensorName = '温度传感器'
| 字段 | 类型 | 说明 |
|---|---|---|
| Id | int | 自增主键 |
| SensorName | string | 传感器名称 |
| Type | string | 传感器类型(温度/压力/振动等) |
| Value | double | 测量数值 |
| Unit | string | 单度 (°C, bar, m/s² 等) |
| Timestamp | datetime | 数据时间戳 |
| AlarmFlag | bool | 是否触发报警(0/1) |
# 1. 还原 NuGet 包
dotnet restore
# 2. 编译运行
dotnet run
或直接在 Visual Studio 2022 中打开 工业传感器实时监控上位机.slnx 并按 F5 运行。
dotnet run,界面将自动启动devmgmt.msc 打开设备管理器COM3、COM4)COM3)传感器通过串口发送的数据格式示例:
TEMP:24.5\r\n HUMI:55.2\r\n
或
0xA0 0x01 0x18 0x34 0xFF\r\n
(具体格式取决于传感器协议,可在配置页面的 "调试日志" 中查看原始字节数据)
80.0,下限设置为 20.05.0(单位:bar),下限设置为 0.5alarm_log_YYYYMMDD.csv 文件,便于生成报告或进行二次分析。config/settings.json 文件"StorageType": "Csv" 这一行"StorageType": "Sqlite"
config/data/sensorhub.db推荐使用免费工具 DB Browser for SQLite(下载:https://sqlitebrowser.org/)打开数据库。
-- 查询最近24小时温度数据
SELECT SensorName, AVG(Value), MIN(Value), MAX(Value)
FROM SensorData
WHERE Timestamp >= date('now', '-1 day')
GROUP BY SensorName;
-- 查询超过阈值的报警记录
SELECT * FROM AlarmRecord
WHERE Value > 80.0
ORDER BY Timestamp DESC;
-- 查询特定传感器的日均数据
SELECT DATE(Timestamp) as DataDate, AVG(Value) as AvgValue, COUNT(*) as SampleCount
FROM SensorData
WHERE SensorName = '压力传感器'
GROUP BY DATE(Timestamp)
ORDER BY DataDate DESC;
数据库包含以下主要表:
#00D8FF
#FF6B6B
#A855F7
#1a237e
#2d3a4b
MaterialDesign 默认提供浅色/深色主题切换。如需自定义主题颜色,可在 Themes/MaterialDesign.Xaml.Colors.xaml 中修改系统颜色。建议备份原始 App.xaml 文件后再进行大规模修改。
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 界面不启动或闪退 | .NET 8 SDK 未安装或版本不匹配 | 下载安装 .NET 8 SDK(https://dotnet.microsoft.com/download/dotnet/8.0) |
| 串口连接失败 | 端口被其他程序占用、波特率不匹配 | 1. 关闭串口监视器等占用端口的程序 2. 核对波特率、数据位、停止位、校验位 |
| 曲线不更新或卡死 | 数据传输中断、缓存点数设置过大 | 1. 检查物理连接 2. 降低 "最大缓存点数"(参数配置页) 3. 重启数据源 |
| 报警不触发 | 阈值设置不当、数据格式错误 | 1. 调整阈值范围(上限>典型值、下限<典型值) 2. 检查串口数据格式是否符合预期 3. 查看调试日志获取原始数据 |
| 内存逐渐增大 | 持久化关闭但未清理、缓存未释放 | 1. 定期重启应用 2. 检查是否开启不必要的统计功能 3. 如长时间运行,每天重启一次 |
| CSV 文件打不开 | 文件损坏、写入中断 | 1. 检查磁盘空间是否足够 2. 重启应用重新生成 CSV 3. 如使用 SQLite,建议转为 SQLite 模式 |
| Ctrl + R | 刷新当前页面数据 |
| Ctrl + S | 保存当前配置(自动保存至 settings.json) |
| F5 | 重启应用(等同重新加载所有配置) |
| Esc | 关闭任何弹窗或下拉菜单 |
| Ctrl + Shift + E | 打开/关闭 调试日志 窗口 |