摘 要: 实时数据滚动更新在遥测数据监测中占据着重要的地位。但随着遥测数据采集速率的增大,帧间隔越来越小,屏幕刷新引起的闪烁也越来越严重。在此提出通过控件技术实现数据列表滚动功能,并通过内存拷贝,利用双缓存机制,解决数据快速更新引起的闪烁。通过测试证明,该软件运行稳定,操作方便,解决了屏幕闪烁问题,在遥测数据监测中发挥了重要作用。
关键词: 遥测; 控件; 数据滚动更新; 屏幕闪烁; 双缓存
中图分类号: 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);
相关专题:金融风险管理师 粒子物理与原子核物理