基于C#Connect连接的STK远程控制系统设计与实现∗
2017-12-25霍烁烁刘镇瑜赵文杰钱苏敏
霍烁烁 刘镇瑜 陈 磊 赵文杰 钱苏敏
(中国洛阳电子装备试验中心 洛阳 471000)
基于C#Connect连接的STK远程控制系统设计与实现∗
霍烁烁 刘镇瑜 陈 磊 赵文杰 钱苏敏
(中国洛阳电子装备试验中心 洛阳 471000)
STK(卫星仿真工具包)已成为系统仿真领域重要的工具软件,其覆盖雷达、通信、光电等领域的仿真开发能力为各类系统仿真开发提供了强大的支撑。STK Connect模块为基于网络通信的STK二次开发提供了高效的实现方法。论文深入研究了基于C#的STK Connect连接方法,提出一种基于此的STK远程控制系统软件的设计方法,实现了对STK的通用驱动。
STK;Connect;C#;二次开发
1 引言
STK作为一款重要的仿真开发软件,其在视景仿真领域也拥有重要的地位,结合C#较为快捷的桌面应用开发能力,能够迅速搭建出定制化的视景仿真软件。本文对基于C#的STK Connect连接方法进行研究,并基于此提出一种基于C#的STK con⁃nect连接的STK远程控制系统的设计实现方法。
2 STK Connect模块[1~3]应用概述
STK Connect模块是STK中进行网络驱动开发的一个重要模块,封装了一种基于TCP/IP的网络连接方式,为用户进行二次开发提供了基本的通信接口函数及返回信息,具体的通信流程如图1所示。
STK Connect模块提供了用于连接开发的函数库[2,4],函数库使用基本流程如图 2所示。
3 系统设计
3.1 系统设计思路
系统采用C#进行开发,主要功能为基于STKConnect模块实现对STK的远程控制,包括实现多种格式航迹数据的驱动、固定格式命令按钮的控制以及通用的STK命令控制等功能,系统的用例图如图3所示。
如用例图所示,系统主要功能包括数据接入、任务管理、STK控制三个部分。其中,数据接入功能主要是通过网络通信及读取本地文件的方式读取路径及航迹类数据,用于对STK相关运动模型进行数据驱动;任务管理模块主要用于对多源数据的驱动以及驱动多个STK模块任务的管理;STK控制功能是通过Connect模块对STK进行控制,包括对运动模型的数据驱动及通过按钮、命令文本的方式发送控制命令控制STK进行相关操作。
基于对系统功能模块的分析和上一节对STK Connect模块的分析,系统主要功能活动图如图4所示。
本系统的运行方式是以任务为基本管理对象进行相关操作的,因此系统启动后首先需要设置基本的任务参数,基于任务相关参数生成STK驱动控制任务。添加任务后,启动任务开始接收网络数据或读取本地文件数据,连接STK对STK场景中相关运动模型进行数据驱动。同时,可以通过输入命令参数或以命令参数生成控制按钮,对STK场景进行相关控制操作。在任务添加后,还可以对任务进行删除操作,任务运行期间,任务信息显示框会实时显示任务的运行状态信息。
3.2 关键技术研究
系统实现的关键技术在于采用C#语言调用STK Connect模块对STK进行驱动控制。因为STK Connect模块提供了直接供VC++、JAVA等语言调用的函数动态库,但没有提供基于C#编写的动态库,且帮助文档及示例程序中没有相关调用说明,因此,本节对基于C#的Connect连接方法进行研究,提出了两种可行方法。
3.2.1 C#直接调用AgConnect.dll进行连接
C#可以直接调用VC的动态库[5]进行软件开发,因此,第一种方法就是直接调用AgConnect.dll动态库进行Connect模块的调用。C#[6]调用VC动态库仅需要.dll文件,其具体调用步骤为:
1)将.dll文件放在C#工程目录的Debug文件夹下;
2)在类申明中包含命名空间using System.Run⁃time.InteropServices,为引入dll文件中的函数提供了相应的类或者方法来支持托管/非托管模块间的互相调用;
3)在类中导入要引入的函数,部分示例代码如下:
[DllImport(“AgConnect.dll”,CallingConvention=Call⁃ingConvention.Cdecl)]
public static extern int AgConOpenSTK(ref IntPtr con⁃text,string notUsed,string pczConnectName);
经过以上几个步骤,即可调用VC动态库中的函数,实现相应功能。此方法存在的困难主要在第三步导入VC动态库函数时。因VC中数据类型与C#不一致,且AgConnect.dll中函数参数类型较为复杂,存在多种类型的指针、结构体及结构体指针等数据类型,直接调用该动态库需在C#中转换所有调用的函数参数类型并在C#中重写结构体等类型,数据类型转换较多,容易出现内存泄漏等诸多安全隐患。
3.2.2 基于VC动态库封装的连接方法
基于对C#直接调用AgConnect.dll方法的研究,改进一种Connect模块调用方法。重新建立VC动态库工程对AgConnect.dll动态库进行封装,屏蔽中间过程调用的诸多函数,从而减少C#调用Ag⁃Connect.dll时需进行函数参数数据类型转换的数量及复杂度。本方法分两步,首先,使用VC进行动态库编程,重新生成供C#调用的dll文件;然后,使用C#调用新的动态库文件进行Connect模块的驱动。
本文使用MFC规则DLL建立动态库,该动态库需要采用静态调用方式调用STK提供的Connect接口库AgConnect.dll,引入AgConnect.lib和AgCon⁃nect.h文件。在头文件中添加导出变量和函数,部分代码示例如下:
extern“C”__declspec(dllexport) void SendSTKCmd(char strCmd[]);
其.cpp文件中的具体实现如下:
extern“C”__declspec(dllexport) void SendSTKCmd(char strCmd[])
{
AgTConReturnInfo returnInfo;
int ires=AgConProcessSTKCmd(connection,strCmd,&returnInfo);
AgConCleanupReturnInfo(&returnInfo);
if(ires==AgCError||ires==AgCNackReturned)
{
throw“STK命令错误!”;
}
}
代码中调用AgConnect.dll中的函数实现主要功能,添加了一些异常判断。屏蔽了内部函数的调用实现,导出的函数参数仅保留char数组,与C#中char数组结构一致,能够直接进行参数的调用。编译该工程后,形成可供C#调用的。dll文件。然后,采用与上一种方法相同的调用动态库步骤调用该动态库。
4 系统实现
基于系统设计分析及对C#STK Connect连接方法的研究,采用C#开发出一款调用Connect模块对STK进行远程控制的应用软件[7~8]。软件主界面如图5所示。
软件启动后,在任务参数设置区内分别添加数据接收设置内容及STK驱动设置内容,作为任务的初始化参数添加任务,任务添加后的界面如图6所示。
添加任务后,选择某项任务连接STK并启动任务,在任务信息显示栏显示该项任务连接STK及启动信息,任务管理栏的任务状态项显示为已启动,任务启动后界面如图7所示。
在任务信息显示栏显示所选任务已连接和已启动后,能够对STK场景运动模型[9~10]进行数据驱动或操作右侧STK控制区的场景常用操作按钮及发送命令按钮发送Connect命令对场景进行控制。场景控制界面及STK场景显示效果如图8、图9、图10所示。
5 结语
本文首先对STK Connect模块应用进行介绍,然后提出一种基于C#Connect连接的STK远程控制系统的设计实现方法,并对其中的关键技术进行了详细分析。最后,基于系统设计分析及对C#Connect连接的研究,采用C#语言调用Connect模块开发出一款对STK场景进行远程驱动控制的软件系统。本系统能够实现对STK场景的远程控制[11~12]及多源数据的实时驱动接入,是一款通用性较强的STK远程控制软件系统。
[1]杨颖,王琦.STK在计算机仿真中的应用[M].北京:国防工业出版社,2005.
[2]张云彬,张永生.STK/Connect模块分析与应用[J].郑州:测绘学院学报,2001,18(S1):29-32.
[3]黄洁,党同心,赵拥军.VC和STK集成的途径及其在仿真中的应用[J].计算机仿真,2007,24(1):291-294.
[4]李弢,陈立云,连云峰,高秀峰.基于STK的Connect模块设计与应用[J].科学技术与工程,2008,8(22):6110-6112.
[5]谭浩强.C++程序设计[M].北京:清华大学出版社,2004.
[6]管西京.C#核心开发技术从入门到精通[M].北京:电子工业出版社,2009.
[7]李睿,曾德贤.STK用于网络环境下仿真的实现方法[J].航天控制报,2005,23(3):64-68.
[8]张占月,徐艳丽,曾国强.基于STK的航天任务仿真方案分析[J].装备指挥技术学院学报,2006,17(1):48-51.
[9]邓晶,张明智,李志强,等.基于STK的信息作战态势三维可视化表现方法研究[J].系统仿真学报,2010,11(22):2654-2659.
[10]杜增.基于STK 软件包的应用开发[J].软件,2015,36(4):102-106.
[11]http://www.agi.com/STK Suite.
[12]彭会湘,陈顺昌.STK开发包用法探讨[J].无线电工程,2007(11):62-64.
Design and implementation of STK remote control system based on C#Connect connection
HUO ShuoshuoLIU Zhenyu CHEN LeiZHAO WenjieQIAN Sumin
(Luoyang Electronic Equipment Test Center of China,Luoyang 471000)
STK has become an important tool in the field of system simulation.Its simulation capabilities coverage of radar,communications,optoelectronics and other fields provides a strong support for the development of various types of system simulation.The STK Connect module provides an efficient implementation method for the secondary development of STK based on network com⁃munication.In this paper,the method of STK Connect connection based on C#is deeply studied,a design method of STK remote con⁃trol system software based on this is developed,which realizes the universal drive of STK.
STK,Connect,C#,secondary development
TP391
10.3969/j.issn.1672-9730.2017.11.025
Class Number TP391
2017年5月17日,
2017年6月27日
霍烁烁,男,工程师,研究方向:数据可视化。刘镇瑜,男,工程师,研究方向:数据可视化。陈磊,男,硕士研究生,助理工程师,研究方向:数据可视化。赵文杰,男,硕士研究生,助理工程师,研究方向:数据可视化。钱苏敏,女,硕士研究生,助理工程师,研究方向:数据可视化。