基于VC++的数据监视系统
引言: 目前主要的监视系统软件大多是由组态软件或VB实现的。组态软件将功能模块化,对于较小的系统有一些多余的功能是用不上的,导致了资源的浪费。而VB功能有限,运行效率不高。随着Windows操作系统的普及和其强大的功能,越来越多的程序支持Windows操作系统。由于VC是微软的产品,用它来编写Windows程序有强大的程序接口和丰富的开发资源的支持,加之VC严谨的内存管理,在堆栈上良好的分配处理,生成代码的体积小,稳定性高的优点,所以VC++就成为目前程序的主流开发工具。本文主要介绍如何用VC++编写监控程序,本程序用在基于凌阳单片机SPCE061A的数据采集及无线传输系统中监视现场采集的数据。
1 .系统筐架及各部分的功能
本系统分两大部分:数据采集及发送部分,数据接收部分。如图1所示:
图1 系统框图
其中:数据采集部分采集外界电压值并将电压的模拟值转换成数字值。
无线传输模块负责收发转换后的数字值。
显示模块将数字值经过处理后显示出测量的电压值。
数据监视部分将接收模块接收到的数据经过处理后显示出测量的电压值。
2 .数据监视程序的设计
要实现数据监视的功能要解决三个问题:
1.上位机(PC机)如何接收数据。
2.接收到数据后如何处理使显示在屏幕上的数据更加直观。
3.由于有测量误差,如何用软件的方法减少误差。
2.1 接收数据
在无线接收模块接收到远处的数据后将数据发送到上位机的串口。VC++ 6.0提供的MSComm控件通过串行端口发送和接收数据,为应用程序提供串行通信功能。当串口接收缓冲区中有字符时,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些数据。在编程过程中,可以在OnComm事件处理函数中加入自己的处理代码处理得到的数据。
2.2 处理数据
从串口接收到的数据是16位2进制码。直接显示不直观,需要将其转化为电压值。
2.2.1.原始数据的格式
因为本系统采集两路数据,为了分辨电压值是哪一路的,我们将16位2进制码的最高位(第15位)设置为路数识别位,0代表第一路1代表第二路。第14位到10位数据无用为0,第9位到0位为电压数据。结构如图2所示:
2.2.2 数据的处理
假设接收的16位数据为X
先判断是哪一路电压的数据:若X ≥32768(2进制数1000000000000000对应的10进制数)说明数据来自第2路。将X减去32768得到真实的电压数据Y,再通过公式运算得到测量电压值:公式为:V=Y*6.6/1024 (此公式是根据电压采集模块而定的这里就不再详述了)。若X< 32768说明数据来自第1路,直接用上述公式得出电压值V。
2.3 显示电压值
程序将两路数据分别显示在两个文本框中。如图3所示:
图3 程序界面图
左边显示第1路右边显示第2路,先收到的数据显示在文本框的最上面后收到的数据依次排在下面,点击“清空”键时文本框清空。
2.4 减少误差
由于电压采集模块本身有一定的阻值,电压测量值总是小于实际的值我们用软件的方法将2.2.2中得到的Y乘以一个固定的数(经过多次试验将此数定为1.023)使测量值于实际值更接近。以下是实验所得结果:
第一路A/D转换,如表1所示。
表1 A/D1转换对照表 单位:伏
实际电压 | 4.902 | 4.466 | 3.970 | 3.570 | 2.996 | 2.462 | 1.994 | 1.550 | 1.042 |
显示电压 | 4.9 | 4.5 | 4.0 | 3.5 | 3.0 | 2.5 | 2.0 | 1.5 | 1.0 |
接收电压 | 4.90 | 4.46 | 3.96 | 3.51 | 3.00 | 2.46 | 1.99 | 1.50 | 1.03 |
第二路A/D转换,如表2所示。
表2 A/D2转换对照表 单位:伏
实际电压 | 4.982 | 4.472 | 4.040 | 3.464 | 2.992 | 2.504 | 1.990 | 1.538 | 0.996 |
显示电压 | 5.0 | 4.5 | 4.0 | 3.5 | 3.0 | 2.5 | 2.0 | 1.5 | 1.0 |
接收电压 | 4.98 | 4.47 | 4.03 | 3.47 | 2.99 | 2.50 | 1.98 | 1.53 | 0.99 |
2.5 程序框图
如图4所示
图4 程序框图
3.结束语
本文结合实际应用介绍了基于VC++的监视程序的设计过程。设计的程序具有接受数据,显示数据,纠正误差等功能。并且结构简单,运行效率高,占系统资源少,体现了VC的优越性。在误差矫正的功能上还可以针对A/D转换带来的误差设计一种算法使显示的电压值更为精确,这将在下一步的工作中的继续研究。
本文作者创新点:不同于大多数监视软件使用组态软件或VB实现,本文使用VC++编写监视程序。
参考文献:
1 罗亚非等编著.凌阳16位单片机应用基础.北京:北京航空航天大学出版社,2005.
2 陈伟,陈法国,王世勋.无线数据通信技术在TPMS中的应用.武汉理工大学报,2005,27 (5):241~244
3 PTR8000.pdf.讯通科技.www.freqchina.com
4 nRF905.pdf.讯通科技.www.freqchina.com
5 丁立波,江小华,张河.基于无线数字传输技术的数据采集系统设计.无线发送/接收IC芯片及其数据通讯技术选编(2):168~171
6 施运梅,刘梅彦,杨根兴.网络资源管理研究[J].微计算机信息 2006(1);109—11
评论