1引言
在数据或信号通信网络中,按照一种链路协议的技术要求连接多个数据站的通讯设施,成为数据链路。数据链路一般包括传输的物理媒介、链路通讯协议、相关设备等,但不包括提供数据信号的功能设备和接收数据信号的功能设备。数据链路通常根据不同的用途或特定的需求来研制的,各种数据链路都有其相应的标准与编号,例如美军有link13、link14等多种数据链路。本文提到的数据链简称J链和U链,它是根据我国实际的用途和需求,定义了专用的传输协议,将处于不同地理位置的作战平台,实现紧密的战术链接,组合为完整战术共同体。
2软件概述
2.1总述
数据链测试系统软件安装在数据链测试系统的计算机系统上,驱动整个测试系统硬件系统,完成对测试工作的控制、数据分析处理、测试结果的判断与显示。为了给用户友好的操作界面,测试系统的计算机操作系统采用基于图形界面的WindowsXP操作系统。测试软件的开发,利用当今流行的可视化编程语言VisualC++6.0编制出一个完全图形化的用户操作界面,设计出操作方便的集成化数据链测试系统软件结构设计。
2.2功能简介
数据链测试系统软件主要实现以下功能:(1)与电子飞行仪表系统建立通信。(2)模拟指挥仪系统发送J链和U链的数据链信息;基于VC的数据链测试系统软件设计文/蔡军本文主要论述了在VC++6.0环境下进行的数据链测试系统软件设计。数据链测试系统软件是为测试、验证某电子飞行仪表系统的数据链功能而研制的软件,该软件在某综合测试系统上配套使用,是一款用于模拟大批量数据链信息,并实现与电子飞行仪表系统建立通信的软件。数据链测试系统软件可完全模拟指挥仪系统发送J和U数据链交联数据信息,并实时接收电子飞行仪表系统对自由文电信息的应答。摘要(3)接收电子飞行仪表系统的自由文电应答信息;(4)打印输出RS422数据的封装结果;(5)多视图方式实现双链多事件型数据界面的切换;(6)通过配置文件一次性装载、修改多批目标数据。
2.3层次划分
分层的设计思想有利于实现设计的模块化,减小模块间的耦合度,从而有利于提高系统可靠性和方便升级维护。从层次结构上讲,整个测试系统可以包括三个层次:硬件层、硬件接口层以及软件层,从软件设计的角度看,测试系统软件可认为由三部分组成:硬件驱动层、软件支持层和用户应用层。系统层次关系如图1所示。各层功能划分如下:
2.3.1硬件层即为了实现具体测试的各数据采集科和总线接口卡,它们将插在测试主机上,实现测试主机与被测系统的互连和通讯;
2.3.2物理接口层该层是软件和硬件的结合层,主要指主机内插卡提供的可通过ISA或PCI总线访问的板卡上的资源。
2.3.3硬件驱动层提供上层软件访问板卡硬件的方法,是软硬件通讯的桥梁。
2.3.4软件支持层在本系统里包括对硬件访问功能封装的API函数,以及对测试系统软件界面支持的导出类。对于硬件功能封装,也将按照接口统一的理念,比如初始化,中断句柄传递,重置,执行等等,以实现统一的函数调用;对于对测试系统软件界面支持的导出类,主要是为了实现界面增强的功能,使测试界面更加人性化,更直观。动态连接库的设计也是模块化设计思想的具体体现。
2.3.5用户应用层即提供给用户的控制测试流程和观察测试结果的可视化视图界面。为了方便用户使用,减少误操作以及无效操作,测试系统软件采用了多视图的构架,将视图客户区主要分成两个部分:视图选择按钮和为多视图,每次只有一个视图处于顶层激活状态。测试需求所要的所有功能都是在功能视图中完成,对于J链测试、U链测试等视图采用了基于FormView的视图类,对于测试结果则采用了ListView作为基类,对于帮助文档采用了HtmlView作为基类。多视图的形式解决了为了实现不同需求功能,而测试界面不同的要求,使测试界面更简洁,用户更容易操作,同时也使代码更加模块化。
3软件设计
3.1软件模块数据链测试系统软件采用模块化、分层的设计思路以保证系统本身的健壮性和有效管理繁杂的测试数据。测试软件具体功能由8个相互联系的模块实现,各模块具体组成和结构如图2所示。
3.2驱动程序模块驱动程序模块通过串口通信控件MSComm控件实现,本模块采用了事件驱动法,主要是考虑MSComm控件在接收到数据事件发生时能及时相应并获取缓冲区中的数据,而且可靠性高。
3.3应用程序类模块在MFC框架里,在工程的其他类实现文件CPP中,只需要利用AfxGetApp()函数就可以很方便的获得应用程序入口类指针。
3.4框架类模块在应用程序框架类中管理所有与测试框架有关的东西,包括加载菜单,加载工具栏,加载状态栏,组织多视图等等,同时还将管理中断的传递,以及测试板卡的指针(长整型)。在本测试软件中,主程序采用了MFC生成向导里面的单文档视图结构,为显示测试结果,视图基类为ClistView。不选择多文档视图,是因为在测试过程中,任何一个时刻J链数据发送、U链数据发送,这两者中只能一个处于激活状态,这是由测试需求中测试项目选择决定的,因此就不存在同时开启多个测试界面,用单文档视图结构是适合的。测试系统的菜单采用了动态连接库封装的CpicMenu类,以支持图形化菜单,工具栏为部分菜单功能的映射。在CstatusBar派生类中重载OnCreate函数,创建一个静态文本框用来显示图片,其中风格设置成WS_CHILD|WS_VISIBLE|SS_ICON|SS_CENTERIMAGE,表示静态文本框是子框架、可见、图表显示、图片居中。
3.5文档类模块文档和视图分离是MFC推荐的一种程序结构,在这种结构下,视图类处理跟界面有关的东西,而文档类处理跟存储有关的东西,两者通过GetDocument函数相关联。这样处理给程序编程带来了很多好处,首先这种方法强调了模块化的思想,两个类中分别处理各自的事情,而需要数据交换时再相关,而这种情况往往是打开文档或者保存文档时发生,因此提高了程序的模块化;其次两个类中都有很多各自的支持类和函数,特别是视图类,这样就便于各自编程,而不互相影响,最大方便的实现每个类。在本测试系统中也采取了这种文档视图分离的结构。
3.6视图类模块数据链测试系统软件将显示界面划分为三块,左1右2,左边加载的是具有Outlook风格的窗口,它可以通过鼠标单击选择右边是J链视图还是U链视图;右边上面是数据输出视图(J链或U链),右边下面是数据输入视图,它显示的电子飞行仪表系统的心跳和自由文电的应答信息。
4主要技术难点
4.1多线程技术数据链测试系统最大可支持的为同时在J链发送200批/400ms,U链发送100批/400ms,二十多个事件型数据不定期的发送,周期数据每批最多有65个字节,事件型数据最多有240个字节。要完成这么大数据量的输出,一般的在定时器里设置400ms时间输出是无法实现该功能的。为此该软件采用了多线程技术,分别创建了J链目标数据输出线程和U链目标数据输出线程,在线程里设置400ms等待时间。
4.2配置文件装载数据链测试系统有空中、水面、陆地、电子战等目标数据,该数据在J链时最多有200批目标,每批目标最多有30多个属性,包括目标编识号、目标属性、目标位置等,如此多的目标完全手动输入的话,测试工作量太大了。为此,该软件建立配置文件,测试人员可以通过修改配置文件,一次性将目标属性全部输入,同时能够将目标属性保存进配置文件,可供下次调用。
4.3数据结果的打印输出为了更好的调试产品软件,数据链测试系统软件里增加了输出RS422数据的打印显示功能,将已经输出的RS422数据按数据类型打印在TXT文档里,通过比较每个字节数据,可以很好的验证产品软件,协助产品软件自测试和软件排故。
5小结
数据链测试系统软件配合完成某电子飞行仪表系统的原理性试验、地面联试、软件鉴定测评等工作,并广泛应用在装配分厂、环境试验中心等单位,充分验证该软件稳定可靠,完全满足检测工作的需求。该软件通过串口通信控件,多线程技术以及配置文件装载等技术实现大批量数据链信息的输入输出管理,界面友好、清晰,操作简单、复用性强,高效得支持产品软件的调试与测试。
作者:蔡军 单位:北京青云航空仪表有限公司