一种基于VC的光纤光栅波长数据实时绘图显示的方法与流程

文档序号:11458443阅读:253来源:国知局
一种基于VC的光纤光栅波长数据实时绘图显示的方法与流程

本发明提供一种基于微软c/c++编译器(即microsoftvisualc/c++,以下简称vc)的光纤光栅波长数据实时绘图显示的方法,它涉及一种基于对光纤光栅波长数据实时绘图显示的方法,属于计算机实时绘图显示技术领域。



背景技术:

光纤光栅具有重量轻、耐腐蚀等优点,目前已在石油产业、电力行业、航空航天等多个领域进行应用,在光纤光栅的使用过程中经常需要将波长的数据进行存储,并实时监控光纤光栅波长数据的变化情况,本文采用vc进行光纤光栅波长数据的实时绘图显示。

在现有的vc实时显示的绘图算法中,常见的有逐点分屏绘制和动态绘制,逐点分屏绘制根据时间顺序绘出第一个点、第二个点至绘满整个显示区域,后所有的点被清除,重新开始下一轮的绘制,这种算法简单但是不符合正常的视觉习惯;动态绘制包括直接平移法和辅助图片框法,直接平移法是先绘图至整个屏幕,然后擦除最左边的一部分曲线,将剩下的曲线图放在屏幕最左端,再在右侧空白区绘图,从而实现对图像的平移;辅助图片框法是将数据画在绘图空间两倍大小的辅助图片框上,用屏幕大小的图片框进行移动截取实现图像的平移。它们均能实现图像的实时显示,但是,实际应用中光纤光栅波长信号存在数据变化小且传输通道多等问题,导致光纤光栅波长信号难以采用以上方法实现实时显示。基于以上问题,提出一种基于vc的光纤光栅波长数据实时绘图显示的方法。



技术实现要素:

本发明的目的是:

针对光纤光栅实际波长信号变化范围小、显示频率不可更改、传输通道多等问题,提出一种基于vc的光纤光栅波长数据实时绘图显示的方法,从而能够稳定的对光纤光栅波长数据进行显示,并能动态的调整横纵坐标、改变显示频率及点数、实现传输通道的切换等功能,使光纤光栅波长数据的显示能够更加符合实际情况。

本专利发明了一种基于vc的光纤光栅波长数据实时绘图显示的方法,其具体步骤如下:

步骤一,搭建光纤光栅波长数据传输软件平台,将硬件的光纤光栅波长数据通过网络通信协议传输到软件平台上;

步骤二,将传输到软件平台的波长数据存储到本计算机,并创建数组存放当前的数据;

步骤三,设置定时器的时间time,用来控制数据的显示频率;

步骤四,判断传感器通道是否发生改变,如果改变则保存当前的通道号,清空当前的绘图进入下一步,如果没改变则直接进行下一步;

步骤五,设置屏幕上要显示的数据点数,设为data_num,进行绘图显示;

步骤六,找出当前数组的最大值与最小值,分别设为data_max和data_min,若数据个数小于data_num,则对当前个数的数据寻找最大值与最小值,若数据个数等于data_num,则对data_num个数据寻找最大值与最小值;

步骤七,将纵坐标值根据数据的变化实时进行更新,以使光纤光栅波长数据在小范围变化时仍能在显示时波动幅度较大,便于观察。

其中,在步骤一中所述的“搭建光纤光栅波长数据传输软件平台”,是指基于微软c/c++编译器6.0版本(即vc++6.0)和微软基础类库microsoftfoundationclasses(简称mfc)开发的用于传输处理光纤光栅波长数据的软件平台;具体做法为,在计算机上安装vc++6.0,新建名为“fiber”的工程,使用mfc设计开发软件平台。

其中,在步骤二中所述的“将传输到软件平台的波长数据存储到本计算机,并创建数组存放当前的数据”,其作法如下:创建文本文档,命名为data.txt,用数据流buffer将数据写进文本文档中,并创建数组temp存放当前的数据。

其中,在步骤四中所述的“传感器通道”,是指不同的光纤布拉格光栅的数据通道,本发明所述软件平台实现的是多光纤光栅传感器波长数据的实时显示,一个“传感器通道”即指一个光纤光栅传感器的波长数据通道。

通过以上步骤,实现了基于vc的光纤光栅波长数据实时绘图显示,解决了实际应用中光纤光栅波长变化范围小、实时性高、传输通道多等问题,有利于在实际情况中的推广应用。

本发明的优点在于:

1、解决了光纤光栅波长数据显示的过程中数据实时显示时坐标无法随时变化、不能更改显示频率且不可切换显示通道的问题。

2、实现方式简单,无复杂算法,适用性和可操作性强,配合vc的传输控制协议(即tcp)通信能稳定的对数据进行传输并实现实时显示的作用,对光纤光栅波长数据实时显示的精度和稳定性改善明显。

3、与其他实时绘图显示的算法相比,本文所述方法将光纤光栅波长信号的原始数据进行了存储,有利于实际的应用。

附图说明

图1本发明所述方法流程图。

图2当k值设置过小时的光纤光栅波长数据显示结果。

图3当k值设置过大时的光纤光栅波长数据显示结果。

图4当k值设置合适时的光纤光栅波长数据显示结果。

图中序号、符号、代号说明如下:

图1中:“data_num”为要显示的数据点数;“data_max”为数组中数据的最大值,“data_min”为数组中数据的最小值。

具体实施方式

本发明一种基于vc的光纤光栅波长数据实时绘图显示的方法,见图1所示,其具体步骤如下:

步骤一:搭建光纤光栅波长数据传输软件平台,使用的软件版本是微软c/c++编译器6.0版本(即vc++6.0),采用tcp协议进行通信,将软件平台设置成是服务器,可以用来接收不同的客户端发送的数据。

步骤二:将传输到软件平台的数据存储到本地(即本计算机),并创建数组存放当前的数据。当侦听函数发现有数据传输之后将其存放在定义的数组中,设数组为temp,然后创建文本文件存放数据,并且对数据进行实时更新。

步骤三,设置定时器的时间time,用来控制数据的显示频率,在定时器函数中调用绘图函数,当达到设定的时间时就进行绘图显示,从而控制实时显示的频率。

步骤四:判断传感器通道是否发生改变,将传感器通道用变量存储下来,设为sensor_num,把当前的传感器通道号与之比较,若一样,则传感器通道没有改变,直接进入下一步,若不一样,则将当前的传感器通道号保存在sensor_num,并清空绘图,做绘制当前传感器通道数据的准备。

步骤五,设置屏幕上要显示的数据点数,设为data_num,并将数组的大小设为data_num,当数据的个数小于data_num时,直接绘图,当数据的个数大于data_num,将数组的数据前移,并将当前的数据赋给最后一位。

步骤六,找出当前数组的最大值data_max与最小值data_min,设置一个数据为最大值和最小值,遍历所有的数据,若当前数据比最大值大,则将当前数据赋值到最大值;若当前数据比最小值小,则将当前数据赋值到最小值。

步骤七,将纵坐标值根据数据的变化实时进行更新,根据最大最小值变化,设k为常数,用来控制纵坐标的变化,将纵坐标的最大值确定data_max+(data_max-data_min)*k,最小值确定为data_min-(data_max-data_min)*k,当k值选择过小时会使曲线显示不全,如图2所示;当k值选择过大时会使数据的显示区域过小,如图3所示;为使最大值最小值显示在图像上且有较好的效果,经测试k为0.075显示最好,显示效果如图4所示。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1