大数跨境

.NET 8 + WPF 的温湿度远程监测上位机系统

.NET 8 + WPF 的温湿度远程监测上位机系统 dotNET跨平台
2026-06-06
4
导读:前言工业物联网与智能仓储日益普及,环境数据的实时采集与监控已成为保障物资安全的关键环节。传统的温湿度记录方式

前言

工业物联网与智能仓储日益普及,环境数据的实时采集与监控已成为保障物资安全的关键环节。传统的温湿度记录方式往往效率低下,且难以做到异常情况的及时预警。

本文推荐一个基于.NET 8 与 WPF 开发的一套轻量级的温湿度远程监测系统。系统通过 TCP 协议接收下位机上报的数据,不仅提供了直观的实时显示与趋势曲线,还集成了完善的报警功能与多用户权限管理,为中小型场景提供了一套可靠的桌面端解决方案。

项目介绍

一个集数据采集、处理、分析和展示于一体的综合性上位机系统。它利用 TCP 服务端被动接收模式,与各类下位机设备进行通信,实时获取库房或机房内的温度、湿度等关键参数。使用 WPF 现代化的界面表现力,管理人员可以直观地查看环境的实时状态和历史数据。同时,系统内置了强大的报警机制,当环境参数超出预设范围时,能够自动触发警报并生成日志,提醒运维人员迅速采取应对措施。

项目功能

1、实时数据监控

主界面大字显示当前温湿度数值,并通过状态指示灯反映服务运行情况;右上角实时统计在线设备数量,支持多设备并发接入。

2、动态趋势展示

采用 LiveCharts 绘制实时折线图,红色曲线代表温度,蓝色曲线代表湿度;保留最近 200 个数据点防止内存溢出,并支持鼠标滚轮缩放 X 轴。

3、智能报警机制

根据后台配置的阈值(如温度 10~30°C,湿度 20~80%)自动判断状态。一旦超限,界面文字变红并在左下角弹出橙色消息栏;仅在状态变化时写入数据库,避免重复记录。

4、多用户权限管理

系统区分管理员与操作员角色。管理员拥有启停服务器、修改阈值及管理用户的最高权限;操作员仅能查看数据与报警信息,确保系统操作的安全性。

5、数据持久化存储

使用 SQLite + FreeSql ORM 进行数据落盘,包含用户账户、历史数据、报警记录及系统配置四张核心表,启动时自动建表,无需手动维护数据库结构。

6、设备模拟测试

内置控制台模拟器程序,以内置正弦波动加随机噪声模拟真实物理环境,方便在无硬件环境下进行联调与功能验证。

项目特点

特点维度
具体说明
架构分层清晰
严格遵循 MVVM 模式,View、ViewModel、Service、Repository、Entity 各司其职,代码可维护性强。
轻量化部署
采用嵌入式 SQLite 数据库并开启 WAL 模式,读写并发不阻塞,免去安装大型数据库服务的繁琐。
高安全性设计
用户密码采用 PBKDF2 算法(10万次迭代 SHA256)加盐哈希存储,有效抵御暴力破解攻击。
内存安全控制
UI 图表数据严格裁剪至 200 个点,TCP 后台线程独立运行,确保长时间挂机运行不会发生内存泄漏。
灵活扩展能力
系统配置采用 KV 键值对表设计,未来新增配置项无需修改表结构,降低了二次开发的成本。

项目技术

基础框架:.NET 8 SDK + WPF

MVVM 工具:CommunityToolkit.Mvvm (源生成器实现属性与命令绑定)

数据可视化:LiveChartsCore.SkiaSharpView.WPF (SkiaSharp 硬件加速渲染)

ORM 框架:FreeSql + FreeSql.Provider.Sqlite (CodeFirst 自动迁移)

网络通信:原生 TCP Socket 异步模型 (被动接收下位机数据)

安全加密:PBKDF2 密码哈希工具 (PasswordHasher)

项目效果

系统启动后会自动完成数据库初始化并弹出登录窗口。默认管理员账户为 admin / admin123,登录成功后进入主控台。

点击"启动服务"按钮(默认端口 8080),再运行设备模拟器,WPF 窗口便会开始跳动实时数据。

如果模拟器发送的温度超过 30°C,界面上的状态文字会立刻变红,左下角的橙色报警栏也会同步提示"高温异常"。

管理员可以在右侧控制面板随时调整阈值并保存,所有操作都会即时生效并持久化到本地数据库中。


常见问题

实际部署和使用过程中,可能会遇到一些常规问题,以下为对应的解决指南:

1、端口占用报错

若启动服务时提示"通常每个套接字地址只允许使用一次",说明端口被占用。建议修改端口号后重试,或等待约 30 秒让系统释放端口。

2、模拟器连接断开

请检查上位机是否已正确点击"启动服务",并确认两端配置的端口号完全一致。

3、图表数据清理

如果觉得图表上的数据点过多影响观察,可以直接点击右侧面板的"清除图表"按钮。

4、历史数据查询

所有的历史监测数据均存储在 SQLite 数据库文件(Data/monitor.db)的 data_records 表中。可以使用 DB Browser for SQLite 等任意客户端工具打开并执行 SQL 查询。

5、真实硬件对接

无需更改上位机代码,只需让您的真实硬件/下位机严格按照规定的通信协议格式,向"上位机 IP:端口"发送 TCP 数据即可无缝对接。

6、忘记管理员密码

如果不慎忘记密码,可直接删除程序运行目录下的 Data/monitor.db 文件。重新启动应用后,系统将自动重建数据库并恢复默认的 admin/admin123 账户。

7、修改默认管理员密码

出于安全考虑,admin 主账户本身不可删除。可以先用 admin 登录,通过"管理用户"功能添加一个新的管理员账户,然后用新账户登录后删除旧的 admin 账户即可完成替换。

项目源码

项目的核心目录结构如下,代码逻辑高度模块化:

├── TempMonitorApp/              # WPF 上位机主程序
│   ├── Entities/                # FreeSql ORM 实体映射
│   ├── Repositories/            # 数据仓库层封装 CRUD
│   ├── Services/                # TCP 服务端、报警检测、用户认证等业务逻辑
│   ├── ViewModels/              # 界面状态与 RelayCommand 绑定
│   └── Converters/              # 布尔值转颜色等 UI 转换器
└── DeviceSimulator/             # 独立的下位机设备模拟器

在通信协议上,下位机只需按照 TEMP:25.5;HUMI:60.2;ID:DEV01\n 的格式发送文本流,上位机解析后即可返回 OK\n 确认。整个依赖注入链在 App.xaml.cs 中手动构建,保证了启动的高效性。 

总结

这套基于 .NET 8 的温湿度监测系统摒弃了传统上位机臃肿的设计,以极简的架构实现了从数据采集、实时渲染到权限管控的完整闭环。

不管是用于学习,还是作为实际工程项目的使用,它都展现出了极高的实用价值。对于希望快速掌握 C# 桌面应用开发、TCP 网络编程以及现代 MVVM 架构的开发来说,这是一个非常值得参考的实践案例。 

【声明】内容源于网络
0
0
dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
内容 2128
粉丝 0
dotNET跨平台 专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,
总阅读40.2k
粉丝0
内容2.1k