APP下载

遥测数据列表滚动控件的设计与实现

2014-04-18陈飞王文韬

现代电子技术 2014年7期
关键词:遥测控件

陈飞+王文韬

摘 要: 实时数据滚动更新在遥测数据监测中占据着重要的地位。但随着遥测数据采集速率的增大,帧间隔越来越小,屏幕刷新引起的闪烁也越来越严重。在此提出通过控件技术实现数据列表滚动功能,并通过内存拷贝,利用双缓存机制,解决数据快速更新引起的闪烁。通过测试证明,该软件运行稳定,操作方便,解决了屏幕闪烁问题,在遥测数据监测中发挥了重要作用。

关键词: 遥测; 控件; 数据滚动更新; 屏幕闪烁; 双缓存

中图分类号: TN957.52?34 文献标识码: A 文章编号: 1004?373X(2014)07?0028?03

Design and implementation of list scroll control in telemetry data

CHEN Fei, WANG Wen?tao

(China Air?to?Air Missile Academy, Luoyang 471099, China)

Abstract: The real time data updating plays an important role in telemetry data monitoring. But screen flicker caused by refresh becomes more and more serious and the inter?frame space becomes smaller with the telemetry data acquisition rate increasing. A new method of data list scroll is introduced, which is realized with control technology, and through memory copy and double buffer storage mechanism to solve the screen flicker. The practical application shows that the software can work stable and convenient, and has high efficiency in telemetry data monitoring.

Keywords: telemetry; control; data updating; screen flicker; double buffer

0 引 言

随着经济的发展和科技的进步,各国越来越重视空空导弹的研制[1],空空导弹整体系统越来越复杂[2],相应遥测传输的信息量也就越来越大,需要实时监测的参数也就越来越多[3]。而不同的参数类型需要匹配不同的显示格式,例如模拟量参数需要滚动显示,各种总线参数需要以曲线的方式连续显示。

在数据滚动更新过程中,随着遥测数据采集速率的增大[4],帧间隔越来越小,屏幕快速更新引起的闪烁也越来越严重。

本文针对需要连续滚动显示参数采取控件编写[5]的方法,将常用功能封装在控件中[6],提供给遥测数据采集软件调用;并通过内存拷贝,利用双缓存机制,解决了数据快速更新引起的闪烁,较好的实现了采集信息列表化滚动的功能。

1 软件设计

1.1 功能设计

在数据驱动的列表滚动控件中,首先应该能够满足数据滚动显示,而滚动显示的过程实际是程序在屏幕上不停的重新绘图,然后刷新显示出来。

采用传统的方法把绘图代码写进函数中,通过函数的互相调用,经过绘制、擦除、重绘三个阶段[7],将图形显示在屏幕上,当刷新比较快时,将出现比较严重的闪烁问题,而遥测数据的更新是以毫秒级为基础的,所以软件的首要功能也是最基本的功能应能够解决当数据刷新频率较快时的屏幕闪烁问题。

此外控件还应该具有以下功能:

(1) 标题栏与滚动栏运行时互相独立;

(2) 可以动态改变行列的高度宽度;

(3) 当数据异常时,报警显示;

(4) 运行过程中可以临时取消显示某一参数;

(5) 所有前景色、背景色均可设置;

(6) 预留接口以供程序调用。

1.2 软件结构

从加载列表滚动控件[8]到使用一个控件的流程如图1所示。分析图1可以得出此控件需要以下几个模块:

(1) 读写配置文件信息模块;

(2) 设置背景色、字体大小、参数显示信息、报警值模块;

(3) 参数显示报警模块;

(4) 改变行宽列宽信息模块。

图1 控件使用流程图

2 软件实现

2.1 滚动采取双缓存技术

双缓存技术是在内存中操作,然后再把操作结果拷贝到屏幕内存中进行显示的技术。应用双缓存技术实时显示的滚动数据,是数据更新后的结果,而不是更新过程,更新过程是在内存中开辟的一块区域中完成,对屏幕操作只有一次过程,更新的效率得到大幅提高。

传统方法与双缓存技术的比较[9]如图2所示。

图2 传统方法与双缓存技术的比较

双缓存技术的使用过程如下[10]:

(1) 定义显示设备对象和位图对象:

CDC memDC;

CBitmap memBitmap;

(2) 建立与屏幕显示内容兼容的内存显示设备和位图,并将位图选入到内存显示设备中:

memDC.CreateCompatibleDC(NULL);

memBitmap.CreateCompatibleBitmap(pDC, nWidth,nHeight);

Cbitmap*pOldBitmap=memDC.SelectObjet (&memBitmap);

(3) 先将背景色清除,然后绘图:

memDC.FillSolidRect(0,0,nWidth,nHeight,

RGB(255,255,255));

memDC.MoveTo(……);

memDC.LineTo(……);

(4) 调用BitBlt在屏幕上显示设备对象中的更新结果;

(5) 绘图完毕后,释放绘图对象:

memDC.DeleteDC();

memBitmap.DeleteObject();

2.2 运行过程中动态改变列宽、行宽

由于控件不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。当某个程序调用控件时,控件的大小可以动态设置,设置后就固定不变。

当需要改变列表控件的列宽时,在鼠标获得列的焦点后,只需要像ListCtrl控件拖动某列即可改变列的宽度。

而为了运行时界面的美观,数据需要铺满整个控件,这就需要在控件中均匀分布各行。当需要改变行宽时,改变的是所有的行宽。所以本控件是在计算数据滚动区域高度后,根据需要改变的行宽,重新分布各行,并且相应改变字体大小,以适应新的行宽。

2.3 读写配置文件信息

当控件被应用程序首次加载时,根据预留接口可以配置参数信息,包括参数名、参数对应数据显示上下限、报警值、字体大小、背景色、文本色、行宽、列宽等信息。程序运行后,根据显示需要,可以动态更改行宽列宽信息,以适应屏幕需要。

为了体现使用控件的便利,这些初步配置信息和更改信息,必须被保存,以供应用程序下次加载控件时自动调用。

3 使用效果

把列表滚动控件集成到遥测数据采集软件中,列表滚动控件运行良好,占用内存空间少。实时运行过程中,可以动态调整列宽行宽信息,当数据超出报警值,可以显示报警信息,运行界面如图3所示。

图3 列表滚动控件运行效果

在100 ms至6 ms间隔的采集信息测试过程中,数据滚动更新稳定,没有出现闪烁现象。

4 结 语

基于ActiveX技术的为数众多的软件组件都提供了满足某个规范的一系列编程接口,应用程序可以通过该编程接口使用有软件组件提供的各种功能,而无需知道这些功能在具体的软件组件里是如何实现的。双缓存技术能够有效的解决数据频繁刷新引起的屏幕闪烁问题。本软件就是基于这两种技术开发出来的,供遥测数据采集软件调用,测试表明,该软件运行稳定,能够满足实时遥测数据的采集分析。

参考文献

[1] 任淼,王秀萍.2011年国外空空导弹发展综述[J].航空兵器,2012(3):3?7.

[2] 樊会涛.空空导弹系统总体设计[M].北京:国防工业出版社,2007.

[3] 李英丽,刘春亭.空空导弹遥测系统设计[M].北京:国防工业出版社,2006.

[4] 安桂生,陈雷.空空导弹靶场遥测接收处理的现状与发展趋势[J].航空兵器,2006(3):56?59.

[5] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.

[6] 方可燕,张双民,徐振明.Visual C++ 6.0实战与精通[M].北京:清华大学出版社,2000.

[7] 孙家广.计算机图形学[M].北京:清华大学出版社,2003.

[8] 任哲.MFC Windows应用程序设计[M].北京:清华大学出版社,2004.

[9] 刘婷婷,潘彤,陈彬茹.利用双缓存技术提高绘图效率[J].电脑编程技巧与维护,2012(18):22?23.

[10] 姜晓峰,李云飞.计算机图形图像技术与应用教程[M].北京:北京希望电子出版社,2002.

[11] 周宪英,高成文.光滑不等距插值算法及其在遥测数据处理中的应用[J].现代电子技术,2013,36(18):13?15.

[12] 刘亚南,陈雷,常树龙,等.遥测数据融合软件的设计与实现[J].现代电子技术,2012,35(4):136?138.

[13] 王冬冬,李宇,张保祥.基于FPGA与ARM的遥测数据网络化采集[J].现代电子技术,2011,34(16):89?92.

[14] 常树龙.空空导弹遥测数据三维实时显示系统设计与实现[J].现代电子技术,2010,33(4):64?66.

memDC.CreateCompatibleDC(NULL);

memBitmap.CreateCompatibleBitmap(pDC, nWidth,nHeight);

Cbitmap*pOldBitmap=memDC.SelectObjet (&memBitmap);

(3) 先将背景色清除,然后绘图:

memDC.FillSolidRect(0,0,nWidth,nHeight,

RGB(255,255,255));

memDC.MoveTo(……);

memDC.LineTo(……);

(4) 调用BitBlt在屏幕上显示设备对象中的更新结果;

(5) 绘图完毕后,释放绘图对象:

memDC.DeleteDC();

memBitmap.DeleteObject();

2.2 运行过程中动态改变列宽、行宽

由于控件不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。当某个程序调用控件时,控件的大小可以动态设置,设置后就固定不变。

当需要改变列表控件的列宽时,在鼠标获得列的焦点后,只需要像ListCtrl控件拖动某列即可改变列的宽度。

而为了运行时界面的美观,数据需要铺满整个控件,这就需要在控件中均匀分布各行。当需要改变行宽时,改变的是所有的行宽。所以本控件是在计算数据滚动区域高度后,根据需要改变的行宽,重新分布各行,并且相应改变字体大小,以适应新的行宽。

2.3 读写配置文件信息

当控件被应用程序首次加载时,根据预留接口可以配置参数信息,包括参数名、参数对应数据显示上下限、报警值、字体大小、背景色、文本色、行宽、列宽等信息。程序运行后,根据显示需要,可以动态更改行宽列宽信息,以适应屏幕需要。

为了体现使用控件的便利,这些初步配置信息和更改信息,必须被保存,以供应用程序下次加载控件时自动调用。

3 使用效果

把列表滚动控件集成到遥测数据采集软件中,列表滚动控件运行良好,占用内存空间少。实时运行过程中,可以动态调整列宽行宽信息,当数据超出报警值,可以显示报警信息,运行界面如图3所示。

图3 列表滚动控件运行效果

在100 ms至6 ms间隔的采集信息测试过程中,数据滚动更新稳定,没有出现闪烁现象。

4 结 语

基于ActiveX技术的为数众多的软件组件都提供了满足某个规范的一系列编程接口,应用程序可以通过该编程接口使用有软件组件提供的各种功能,而无需知道这些功能在具体的软件组件里是如何实现的。双缓存技术能够有效的解决数据频繁刷新引起的屏幕闪烁问题。本软件就是基于这两种技术开发出来的,供遥测数据采集软件调用,测试表明,该软件运行稳定,能够满足实时遥测数据的采集分析。

参考文献

[1] 任淼,王秀萍.2011年国外空空导弹发展综述[J].航空兵器,2012(3):3?7.

[2] 樊会涛.空空导弹系统总体设计[M].北京:国防工业出版社,2007.

[3] 李英丽,刘春亭.空空导弹遥测系统设计[M].北京:国防工业出版社,2006.

[4] 安桂生,陈雷.空空导弹靶场遥测接收处理的现状与发展趋势[J].航空兵器,2006(3):56?59.

[5] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.

[6] 方可燕,张双民,徐振明.Visual C++ 6.0实战与精通[M].北京:清华大学出版社,2000.

[7] 孙家广.计算机图形学[M].北京:清华大学出版社,2003.

[8] 任哲.MFC Windows应用程序设计[M].北京:清华大学出版社,2004.

[9] 刘婷婷,潘彤,陈彬茹.利用双缓存技术提高绘图效率[J].电脑编程技巧与维护,2012(18):22?23.

[10] 姜晓峰,李云飞.计算机图形图像技术与应用教程[M].北京:北京希望电子出版社,2002.

[11] 周宪英,高成文.光滑不等距插值算法及其在遥测数据处理中的应用[J].现代电子技术,2013,36(18):13?15.

[12] 刘亚南,陈雷,常树龙,等.遥测数据融合软件的设计与实现[J].现代电子技术,2012,35(4):136?138.

[13] 王冬冬,李宇,张保祥.基于FPGA与ARM的遥测数据网络化采集[J].现代电子技术,2011,34(16):89?92.

[14] 常树龙.空空导弹遥测数据三维实时显示系统设计与实现[J].现代电子技术,2010,33(4):64?66.

memDC.CreateCompatibleDC(NULL);

memBitmap.CreateCompatibleBitmap(pDC, nWidth,nHeight);

Cbitmap*pOldBitmap=memDC.SelectObjet (&memBitmap);

(3) 先将背景色清除,然后绘图:

memDC.FillSolidRect(0,0,nWidth,nHeight,

RGB(255,255,255));

memDC.MoveTo(……);

memDC.LineTo(……);

(4) 调用BitBlt在屏幕上显示设备对象中的更新结果;

(5) 绘图完毕后,释放绘图对象:

memDC.DeleteDC();

memBitmap.DeleteObject();

2.2 运行过程中动态改变列宽、行宽

由于控件不能独立运行,必须嵌入到某个容器程序中,与该容器一起运行。当某个程序调用控件时,控件的大小可以动态设置,设置后就固定不变。

当需要改变列表控件的列宽时,在鼠标获得列的焦点后,只需要像ListCtrl控件拖动某列即可改变列的宽度。

而为了运行时界面的美观,数据需要铺满整个控件,这就需要在控件中均匀分布各行。当需要改变行宽时,改变的是所有的行宽。所以本控件是在计算数据滚动区域高度后,根据需要改变的行宽,重新分布各行,并且相应改变字体大小,以适应新的行宽。

2.3 读写配置文件信息

当控件被应用程序首次加载时,根据预留接口可以配置参数信息,包括参数名、参数对应数据显示上下限、报警值、字体大小、背景色、文本色、行宽、列宽等信息。程序运行后,根据显示需要,可以动态更改行宽列宽信息,以适应屏幕需要。

为了体现使用控件的便利,这些初步配置信息和更改信息,必须被保存,以供应用程序下次加载控件时自动调用。

3 使用效果

把列表滚动控件集成到遥测数据采集软件中,列表滚动控件运行良好,占用内存空间少。实时运行过程中,可以动态调整列宽行宽信息,当数据超出报警值,可以显示报警信息,运行界面如图3所示。

图3 列表滚动控件运行效果

在100 ms至6 ms间隔的采集信息测试过程中,数据滚动更新稳定,没有出现闪烁现象。

4 结 语

基于ActiveX技术的为数众多的软件组件都提供了满足某个规范的一系列编程接口,应用程序可以通过该编程接口使用有软件组件提供的各种功能,而无需知道这些功能在具体的软件组件里是如何实现的。双缓存技术能够有效的解决数据频繁刷新引起的屏幕闪烁问题。本软件就是基于这两种技术开发出来的,供遥测数据采集软件调用,测试表明,该软件运行稳定,能够满足实时遥测数据的采集分析。

参考文献

[1] 任淼,王秀萍.2011年国外空空导弹发展综述[J].航空兵器,2012(3):3?7.

[2] 樊会涛.空空导弹系统总体设计[M].北京:国防工业出版社,2007.

[3] 李英丽,刘春亭.空空导弹遥测系统设计[M].北京:国防工业出版社,2006.

[4] 安桂生,陈雷.空空导弹靶场遥测接收处理的现状与发展趋势[J].航空兵器,2006(3):56?59.

[5] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.

[6] 方可燕,张双民,徐振明.Visual C++ 6.0实战与精通[M].北京:清华大学出版社,2000.

[7] 孙家广.计算机图形学[M].北京:清华大学出版社,2003.

[8] 任哲.MFC Windows应用程序设计[M].北京:清华大学出版社,2004.

[9] 刘婷婷,潘彤,陈彬茹.利用双缓存技术提高绘图效率[J].电脑编程技巧与维护,2012(18):22?23.

[10] 姜晓峰,李云飞.计算机图形图像技术与应用教程[M].北京:北京希望电子出版社,2002.

[11] 周宪英,高成文.光滑不等距插值算法及其在遥测数据处理中的应用[J].现代电子技术,2013,36(18):13?15.

[12] 刘亚南,陈雷,常树龙,等.遥测数据融合软件的设计与实现[J].现代电子技术,2012,35(4):136?138.

[13] 王冬冬,李宇,张保祥.基于FPGA与ARM的遥测数据网络化采集[J].现代电子技术,2011,34(16):89?92.

[14] 常树龙.空空导弹遥测数据三维实时显示系统设计与实现[J].现代电子技术,2010,33(4):64?66.

猜你喜欢

遥测控件
前馈复合控制在提高遥测跟踪性能中的应用
基于.net的用户定义验证控件的应用分析
远程控制式遥测地面站关键技术研究
某小型无人机遥测软件设计
关于.net控件数组的探讨
浅谈如何提高遥测状态估计合格率
ASP.NET服务器端验证控件的使用
基于JARI_EGK图形开发系统在声呐多功能显控台中的应用
利用VBA处理邻近气象站的相关遥测数据
利用遥测仪测量活塞运动