引言
在多功能显示器测试过程中,需要设计相应的测试软件。测试软件模拟任务管理计算机的部分功能,与多功能显示器通过GJB289A、FC-AE总线通讯,实时向显示器发送画面信息。
LabWindows/CVI是测试领域优秀的开发软件,用于开发大型复杂的测试软件,能获得优良的测试性能[1]。其开发环境提供了一种所见即所得的可视化开发界面,使开发人员能够在图形应用程序被载入嵌入式系统前充分验证其各种状态和性能,使得硬件与软件能同步开发,大大节省了开发时间、提高了开发效益。
1. CVI工程简介
Labwindows/CVI是交互式C语言开发环境,它以ANSIC为核心,将功能强大、使用灵活的C语言与用于数据分析和显示的测控专业工具有机地结合起来,他的集成化开发环境、交互式编程方法、函数面板和丰富的库函数大大增强了C语言的功能[2]。
常用的CVI工程一般包括用户界面文件(.uir),基于C语言的头文件(*.h)和资源文件(*.c)。CVI功能强大于它提供了丰富的函数库,可在工程中添加422、429、AFDX动态库和静态库,便于使用时调用厂家提供的API接口[3]。
2. 多功能显示器介绍
多功能显示器(以下简称“MFD”)安装在座舱仪表板上,每架飞机配装一台,是航电/显示控制分系统中的显示终端设备,通过FC-AE总线、GJB289A总线和HB6096总线接收和发送数据,显示周边态势、飞机姿态、导航、系统状态、目标指示、攻击解算、视频和告警等信息,实现机载设备综合控制和显示画面调度。
3. 测试软件开发流程
3.1 制定程序基本框架
本软件要测试一台具有转发GJB289A总线、FC总线数据功能的任务处理器,测试软件应具有的功能为与协议相符的GJB289A总线、FC总线数据发送模块,与协议相符的GJB289A总线、FC总线数据接收模块。发送模块为定时发送符合协议的GJB289A总线、FC总线数据,接收为定时接收符合协议的GJB289A总线、FC总线数据。待指令为发送时开始发送数据,待指令为停止时停止发送数据。发送时可以实时修改数据,接收时可以实时显示数据。最后测试结束可以关闭测试程序。
3.2 创建用户界面
根据上述制定的方案,创建用户界面、设置控件属性和回调函数的名称。用户界面如图3-1所示。
图3-1 用户界面
图3-2 tcf文件
图3-3 选择用例
图3-4 载入用例发送
将每个链路的数据信息录到tcf文件中,其中tcf文件中每个数据的内容包括起始数据、动态发送时变化范围的最大值最小值、该数据所占的字节长度、该数据对应的十六机制数据和实际意义上数据的转换比例(简称分辨率)、动态变化时的变化步长以及该数据的名称(例如图3-2)。需要测试哪路数据时,在测试界面上下拉框选择对应的链路,点击载入按钮,将该路的数据加载到TABLE表上进行显示(图3-4所示)。
如图3-1所示为测试软件的界面,测试时,首先点击“测试用例”按键,选择路径弹出对话框,选择需要测试的tcf文件所在的路径,点击“done”(如图3-3)。将文件夹中的所有tcf文件都录入到左边框内,选择其中一个需要测试的文件,点击“载入”,则将tcf文件中的数据导入到TABLE表中,点击“发送”,则完成一个tcf文件的数据发送。若需要修改发送数据的内容,可在TABLE表上修改十六进制数或者实际数据。
3.3 程序源代码编写
(1)发送按钮
……
//根据数据标志位识别GJB289A或FC通讯
TxDataUsingCard(gTestItem.sChanleData[i])
//打开FC发送定时器
SetCtrlAttribute(tabpanel,TABPANEL_TIMER_Send,ATTR_ENABLED,1);
//打开GJB289A发送定时器
SetCtrlAttribute(tabpanel,TABPANEL_TIMER_2_Send,ATTR_ENABLED,1);
//“发送”按钮不可操作
SetCtrlAttribute(tabpanel,TABPANEL_BUTTON_Send,ATTR_DIMMED,1);
//发送开始
SendData();
……
(2)停止按钮
……
//关闭FC发送定时器
SetCtrlAttribute(tabpanel,TABPANEL_TIMER_Send,ATTR_ENABLED,0);
//关闭GJB289A发送定时器
SetCtrlAttribute(tabpanel,TABPANEL_TIMER_2_Send,ATTR_ENABLED,0);
//“发送”按钮可操作
SetCtrlAttribute(tabpanel,TABPANEL_BUTTON_Send,ATTR_DIMMED,0);
//发送停止
……
(3)发送定时器
……
//获取面板数据
GetCtrlVal(tabpanel,TABPANEL_STRING_High,&high);
//发送FC数据
SendDataFC(nPortList[0].nPortId,nPortHandle1,&SendBuf,2096);
//发送GJB289A数据
Card1553WriteBuf(bcMbuf,Num);
……
(4)接收定时器
……
//接收数据
RecvDataFC(nPortList[1].nPortId,nPortHandle2,&RecvBuf);
……
(5)退出程序
QuitUserInterface (0);
3.4 创建工程文件并运行
将用户界面文件(*.uir文件)、源代码文件(*.c文件)、头文件(*.h文件)、静态库文件(*.lib文件)、动态库文件(*.dll文件)添加到工程文件中来完成工程文件的创建,然后编译调试工程文件,运行成功。
其中HwaFcNicDriver.dll与HwaFcNicDriver.lib文件为神州飞航FC板卡驱动程序和通道操作函数,busapi32.dll与busapi32.lib文件为神州飞航1553B板卡驱动程序和通道操作函数。
4. 结束语
本文利用LabWindows/CVI开发了多功能显示器测试软件。经过多次实际测试,系统能够准确地进行数据采集和处理,成功模拟了大部分任务管理计算机的功能,达到了预期的测试效果。可以实现测试任务处理,保证数据采集的实时性、数据分析显示的高效性,并且不影响界面操作,大大提高了系统的效率和可靠性,现已成功用用到某型号显示器的测试中。
参考文献:
[1] 叶群松,习友宝. 基于Labwindows/CVI的数据库应用程序开发[计算机与现代化]-2008-S1;
[2] 王晓岗, 吴得光. LabWindows/CVI环境下调用Excel文档的实现方法[甘肃科学学报]-2013;
[3] 刘君华.虚拟仪器编程语言Labwindows/CVI教程 [M].电子工业出版社,2005.