1. 项目背景与核心需求
在工业自动化和环境监测领域,温湿度数据采集是最基础也最关键的环节之一。作为C#上位机开发者,我们经常需要对接各类传感器设备,而串口通信和Modbus协议是两种最常见的通信方式。这个项目将带你完整实现一个支持双通信方案的温湿度采集系统,从硬件连接到软件调试,解决实际开发中90%的坑点。
为什么选择C#作为开发语言?相比LabVIEW等专业工具,C#具有更好的灵活性和扩展性;相比Python,C#在串口通信稳定性和线程控制上表现更优。WinForm的成熟生态也让界面开发效率大幅提升。实测在工业现场,一个健壮的C#上位机可以稳定运行数月无需重启。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件准备与环境搭建
2.1 传感器选型对比
常见温湿度传感器可分为三个档次:
- 入门级:DHT11(单总线,精度±5%RH)
- 工业级:SHT3x系列(I2C/SPI,精度±2%RH)
- 高精度:SHT4x(I2C,精度±1.5%RH)
建议选择支持Modbus协议的工业级传感器,如AHT20(Modbus RTU)或SHT31-MOD(Modbus ASCII)。这些传感器通常提供0x03功能码读取保持寄存器,温湿度数据分别存放在特定寄存器地址。
2.2 串口驱动避坑指南
不同USB转串口芯片的稳定性差异巨大:
- CH340:成本低但偶发数据丢失
- FT232RL:稳定性最佳但价格高
- PL2303:Win10以上系统需要特定驱动版本
实测发现PL2303在Win11下必须使用3.8.25版驱动,新版本会导致波特率漂移。建议在设备管理器手动回滚驱动。
安装驱动后,用以下代码检测可用串口:
csharp复制using System.IO.Ports;
string[] ports = SerialPort.GetPortNames();
Console.WriteLine("可用串口:" + string.Join(",", ports));
3. 串口通信方案实现
3.1 串口参数配置黄金法则
波特率不是越高越好!根据线缆长度选择:
- 1米内:115200bps
- 3米内:57600bps
- 超过5米:19200bps以下
关键配置代码:
csharp复制SerialPort sp = n
