1. 项目背景与核心功能
最近在做一个工业级温湿度监控系统,需要实时显示环境数据并支持参数配置。这个项目用VB.NET配合MSChart控件实现,通过串口与下位机通信。核心功能包括:
- 实时显示温湿度数值
- 动态绘制温湿度变化曲线
- 向下位机发送配置指令
- 异常情况自动处理
选择VB.NET主要考虑到工业现场很多老设备还在用Windows XP系统,而VB.NET的兼容性和MSChart的易用性非常适合这种场景。MSChart控件虽然现在官方已经停止维护,但在数据可视化方面依然表现出色,特别是对实时曲线的支持非常友好。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 硬件连接与通信协议
2.1 硬件架构设计
系统采用典型的上下位机结构:
code复制[温湿度传感器] --RS485--> [485转USB模块] --USB--> [工控机运行VB程序]
硬件选型要点:
- 传感器选用工业级SHT30,测量范围-40~125℃,精度±0.3℃
- 485转换器采用隔离型模块,防止地环路干扰
- USB线缆选用带磁环的抗干扰线材
2.2 自定义通信协议设计
协议帧格式如下:
code复制TH:[温度值]C,[湿度值]%RH\r
SET:[参数名]=[参数值]\r
示例数据帧:
- 上报数据:
TH:25.6C,45%RH\r - 设置命令:
SET:INTERVAL=10\r
协议设计考虑:
- 使用明确的帧头标识(TH/SET)
- 温度湿度用固定分隔符(C,和%)
- 以回车符\r作为帧结束标志
- 数值保留1位小数满足工业精度要求
3. 核心代码实现解析
3.1 串口配置与初始化
vb复制Private Sub Form_Load()
' 自动枚举可用串口
For Each sp As String In My.Computer.Ports.SerialPortNames
cmbPort.Items.Add(sp)
Next
' 默认串口参数配置
With SerialPort1
.BaudRate = 9600 ' 工业常用波特率
.Parity = Parity.None ' 无校验
.DataBits = 8 ' 标准数据位
.StopBits = StopBits.One ' 1位停止位
.Handshake = Handshake.None ' 无流控
.ReadTimeout = 1000 ' 读取超时1秒
End With
' 初始化图表
InitChart()
End Sub
关键点说明:
My.Computer.Ports.SerialPortNames比查询注册表更可靠- 工业环境建议添加
ReadTimeout防止死锁 - 波特率选择要考虑线路长度(9600适合50米内)
3.2 数据接收与解析
vb复制Private buffer As String = ""
Private Sub SerialPort1_Da
