基于C++Builder的串口数据实时曲线绘制的实现

基于C++Builder的串口数据实时曲线绘制的实现

ID:40639515

大小:100.00 KB

页数:4页

时间:2019-08-05

基于C++Builder的串口数据实时曲线绘制的实现_第1页
基于C++Builder的串口数据实时曲线绘制的实现_第2页
基于C++Builder的串口数据实时曲线绘制的实现_第3页
基于C++Builder的串口数据实时曲线绘制的实现_第4页
资源描述:

《基于C++Builder的串口数据实时曲线绘制的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于C++Builder的串口数据实时曲线绘制的实现范寒柏,赵建锐,谢汉华时间:2011年10月27日来源:微型机与应用2011年第14期关键词:C++Builder实时曲线MSComm控件串行通信摘要:介绍了在C++Builder6.0软件开发环境下设计温盐深实时数据采集与处理系统的方法,其中PC机与数据接收装置之间的串行通信采用MSComm串行通信控件来实现,并给出了相应的程序代码,利用模拟数据源模拟现场采集数据,将实地测量得到的温度和电导率值依次通过串口传输到本软件中,结果证实系统运行稳定,该后台软件以实时曲线绘制的方式形象、直观地显示了采集的温盐深数据,

2、并能把盐度、密度、声速的曲线绘制出来,运行良好。关键词:C++Builder;实时曲线;MSComm控件;串行通信在海洋投弃式温盐深剖面测量中,需要进行大量的实时数据采集和可视化显示,经过软件处理后形成的曲线比原始数据更能给人直观的印象。C++Builder是一种面向对象的可视化应用程序开发工具,为程序开发人员提供了十分轻松而快捷的开发环境。它以其友好的界面设计和方便的编程实现,广泛应用于工程实践中。本系统在C++Builder环境下针对抛弃式温盐深剖面测量系统进行软件设计。其中利用C++Builder进行数据的串行传输的方法,只要根据实际情况对代码稍做修改,即

3、可应用到其他的以串口测量的系统,具有一定的通用性。1系统概述 该软件在Windows操作系统下以C++Builder为开发平台,应用于海洋投弃式温盐深剖面测量系统中的实时数据采集与处理。如图1所示,其主要包含与下位机通信、实时数据处理、实时曲线显示和数据导出,浏览等部分。软件以RS232方式与下位机进行通信。对接收的数据进行处理和温度盐度曲线绘制后可在每次测量结束后自动将所有数据存储到RealtimeData文件夹和Backup文件夹中。操作人员可以对历史数据进行查询,并根据需要打印。2串口通信2.1MSComm控件 MSComm(MicrosoftCommun

4、icationsContro1)控件是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。它的安装也十分简单,只需把VB安装目录下Mscomm.reg、Mscomm32.ocx、Mscomm32.dep这三个文件拷贝到Windows的system32目录下。然后用Windows下的注册工具regsvr32注册该OCX控件,剩下的工作是在C++Builder中导入这个ActiveX控件,进入C++Builder环境在Component菜单下选ImportActiveXControl,这

5、时在列表中可以看到MicrosoftCommControl6.0选项,选中这个选项点击Install按钮,完成安装。在ActiveX控件页面上可以看到一个为电话图标的控件,这就是MSComm控件。 MSComm控件有很多属性,如CommPort属性用来设置或返回通信端口号,可以设置为1~16之间的任何值,本系统采用缺省值2;Settings属性以字符串形式设置或返回波特率、奇偶校验、数据位和停止位,本系统采用缺省值“9600,n,8,1”; PortOpen属性用来设置或返回通信端口的状态以及打开和关闭端口;InBufferSize和OutBufferSize属

6、性分别设置接收和发送缓冲区分配的内存数量,单位为字节。 MSComm控件提供了两种处理通信问题的方法:(1)事件驱动方式,当串口上发生某一事件时,MSComm控件将解发OnComm事件,还可以检测并处理通信错误信息,从而采取相应的操作。(2)查询方式,在程序的每个串行口操作后,将不断检查CommEvent属性的值以查询事件和错误。本后台软件采取事件驱动方式,事件驱动方式相当于一般程序设计中的中断方式。2.2串口实现 在添加了MSComm控件后,采集工作之前还要对串口进行必要的初始化工作。实质上就是要在PC机与数据接收装置之间建立起一个共同遵守的协议,以使两者在接

7、收或发送数据上保持协调一致。串口初始化部分代码如下:if(MSComm1->PortOpen==true)MSComm1->PortOpen=false;MSComm1->CommPort=StrToInt(comno.Trim().SubString(comno.Length(),1));//点击开始后才开启Timer1MSComm1->RThreshold=60;//接收缓冲区每有1个字符时,就会触发一次OnComm事件MSComm1->InputMode=1;//设置传入数据的格式,0表示文本形式MSComm1->InBufferCount=0;//清除接

8、收缓冲区MSComm1-

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。