# TempHumidityMonitor **Repository Path**: pangqingtao/TempHumidityMonitor ## Basic Information - **Project Name**: TempHumidityMonitor - **Description**: 基于 C# 开发的工业级设备配套上位机软件,用于实时采集、显示、存储和管理温湿度传感器数据 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2025-10-21 - **Last Updated**: 2025-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能温湿度监控系统上位机 ![](./img/screenshot.png) > 基于 C# 开发的工业级设备配套上位机软件,用于实时采集、显示、存储和管理温湿度传感器数据。 本项目模拟了一个完整的工业监控场景,适用于学习上位机开发、Modbus 通信、数据库操作等技能。 --- ## 功能特性 - **Modbus RTU 通信**:通过串口与下位机设备进行数据交互。 - **实时数据显示**:在界面上动态显示当前温度和湿度。 - **趋势曲线图**:使用 Chart 控件绘制温湿度变化曲线,支持自动缩放。 - **智能报警系统**: - 可设置高低温、高低湿阈值。 - 状态栏实时显示当前报警状态(颜色区分)。 - 报警列表记录所有历史报警事件,避免 `MessageBox` 阻塞。 - **SQLite 数据库存储**:自动将每次采集的数据持久化到本地数据库。 - **历史数据管理**: - 加载并显示历史记录。 - 支持导出为 Excel (.xlsx) 文件。 - **配置持久化**:用户设置(串口、报警阈值等)保存在 `config.json` 中,重启后自动恢复。 - **响应式布局**:窗体可最大化/缩放,控件自动对齐。 --- ## 技术栈 | 类别 | 技术 | |------|------| | 开发语言 | C# | | 开发框架 | .NET Framework 4.8 | | UI 框架 | Windows Forms (WinForm) | | Modbus 库 | [NModbus](https://github.com/NModbus/NModbus) (v3.0.81) | | 数据库 | SQLite + System.Data.SQLite | | 图表控件 | System.Windows.Forms.DataVisualization | | Excel 导出 | NPOI | | 配置文件 | JSON | --- ## 快速开始 ### 1. 克隆代码 ### 2. 打开项目 使用 Visual Studio 2022 或更高版本打开 TempHumidityMonitor.sln 解决方案文件。 ### 3. 还原 NuGet 包 Visual Studio 会自动还原所需的 NuGet 包。如果未自动还原,请右键解决方案 → “还原 NuGet 包”。 您需要的包已在 packages.config 中定义: - NModbus v3.0.81 - System.Data.SQLite - System.Windows.Forms.DataVisualization - NPOI ### 4. 编译并运行 按 F5 直接编译并启动程序。 ---- ## 测试方法(无真实硬件) 由于本项目无需真实传感器,您可以使用以下工具进行测试: 1. 安装虚拟串口驱动 - 下载并安装 [Virtual Serial Port Driver (VSPD)](https://www.eltima.com/products/vspdxp/?spm=a2ty_o01.29997173.0.0.e4a6c921OMSdbl) 。 - 创建一对虚拟串口,例如 COM3 ↔ COM4。 2. 安装 Modbus 从站模拟器 - 下载 [Simply Modbus Slave](http://simplymodbus.ca/?spm=a2ty_o01.29997173.0.0.e4a6c921OMSdbl)。 - 配置: - 串口:COM4 - 波特率:9600 - Slave ID:1 - 在 Holding Registers 地址 0 和 1 分别填入 256 (代表 25.6°C) 和 600 (代表 60.0%)。 3. 运行上位机 - 在软件中选择串口 COM3,波特率 9600,点击“连接”。 - 您将看到数据被成功读取,并在图表、数据库和报警系统中体现 --- ## 项目结构 TempHumidityMonitor/ ├── TempHumidityMonitor.sln # 解决方案文件 ├── TempHumidityMonitor/ │ ├── Form1.cs # 主窗体逻辑 │ ├── Form1.Designer.cs # 界面设计器代码 │ ├── ModbusHelper.cs # Modbus 通信封装 │ ├── DatabaseHelper.cs # SQLite 数据库操作 │ ├── AppConfig.cs # 配置类 │ ├── JsonHelper.cs # JSON 序列化帮助类 │ ├── ExportHelper.cs # 导出数据到Excel文件帮助类 │ └── packages.config # NuGet 包依赖 ├── config.json # 用户配置文件 (自动生成) ├── sensor_data.db # SQLite 数据库 (首次运行生成) ├── img/ │ └── screenshot.png # 截图示例 └── README.md # 本文件 --- ## 使用说明 1. 启动软件:程序会自动加载上次的配置 2. 连接设备:选择正确的串口号和波特率,点击“连接”。 3. 设置报警:在左下角设置温度和湿度的上下限。 4. 查看历史:点击“加载历史数据”查看所有记录。 5. 导出数据:点击“导出Excel”将当前历史数据保存为文件。 --- ## 许可证 本项目采用 MIT 许可证。 --- ## 学习价值 本项目涵盖了: - C# 核心编程 - WinForm 界面设计 - 串口通信与协议解析 - 多线程与跨线程UI更新 - 本地数据库应用 - 软件工程规范(配置管理、错误处理)