基于VB 6.0串口通信的气压测高系统数据采集实现
王晓岚
(中国科学院国家天文台 北京 100012)
串口通信在系统控制的范畴中一直占据着极其重要的地位,在规格上越来越完善,应用也越来越广泛,使用串行通信的方式可以达到系统控制的目的。以往,要实现计算机的串口通信需要做大量复杂的工作,如今,Visual Basic 6.0(VB 6.0)在开发可视化环境下的监控系统时有其独特的优势,VB 6.0提供了串行通信控件,可以轻松实现串口数据的交换。本文介绍了基于VB 6.0的ActiveX控件――Microsoft Communication(MSComm)通信控件,实现了PC机对气压测高系统的串行通讯功能,完成了对多台气压测高设备进行数据采集。
1 气压测高测试系统的基本构成
气压测高系统的基本构成如图1所示,由PC机、气压测高基准站以及气压测高接收机三部分组成。PC机通过RS 232接口以及USB-RS 232接口与一个气压测高基准站和多个气压测高接收机相连接。气压测高基准站和每个气压测高接收机通过选用不同的串口端口来区分,这样PC机就可以对基准站和每个接收机进行通信,实现对气压测高基准站以及接收机的数据采集。
采集到的数据主要用于以下分析:
(1)分析不同地点的气压值、温度值以及大地高度值。
(2)比较同一地点不同气压测高接收机测量的气压值、温度值以及大地高度值。
2 气压测高接收机的简介
气压测高接收机采用主要器件为:瑞士Intersema公司生产的集成压阻式压力传感器和ADC接口的SMD混合集成模块――MS5534C,微控制器选用ATmega8L单片机。气压测高接收机的硬件示意图如图2所示。其工作流程为:气压测高基准站将气象资料(基准站的气压、温度和高度)发送给ATmega8L,同时,ATmega8L采集MS5534C测得的接收机所在位置的气压和温度,利用相关的公式,解算出当地的大地高度,并发送给PC机。
3 VB 6.0中MSComm通信控件
VB 6.0增加了面向对象程序设计功能,它不仅可以方便快捷地编制适用于数据处理、多媒体等方面的程序,并且提供了一个ActiveX控件――Microsoft Communication Control,Version 6.0,称为MSComm控件,可以方便地开发出使用计算机串口的计算机通信程序。MSComm控件提供了两种处理通信的方式:一种为事件驱动方式,该方式相当于一般程序设计中的中断方式。当串口发生事件或错误时,MSComm控件会产生OnComm事件,用户程序可以捕获该事件进行相应处理。另一种为查询方式,在用户程序中设计定时或不定时查询MSComm控件的某些属性是否发生变化,从而确定相应处理。
利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。以下是MSComm控件的常用属性和方法:
Commport:设置或返回串口号,类型short。
Settings:以字符串的形式设置或返回串口通信参数。
Portopen:设置或返回串口状态。
InputMode:设置或返回接收数据的类型。
Inputlen:设置或返回一次从接收缓冲区中读取字节数,类型short。
Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。
Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。
Rthreshold:当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。
Sthreshold:当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。若Sthreshold属性设置为0,则不产生OnComm事件。
CommEvent:串口事件,该属性设计时无效,运行时只读。一旦串口发生通信事件或产生错误,依据产生的事件和错误,MSComm控件为CommEvent属性赋不同的代码,同时产生OnComm事件。用户程序就可在OnComm事件处理程序中针对不同的代码,进行相应的处理。
评论