1.1 Connect模块介绍

Connect模块早期名称是交互处理通讯模块(IPC),它包括一系列的功能来打开UNIX或TCP/IP到STK的接口,以便给STK发送连接命令和接收从STK返回的数据,并在通讯完成后关闭接口。Connect具有提供信息的功能,可按用户规定的各种方式输出错误信息和诊断信息。使用Connect时仅需提供连接名和端口,以便STK驻留和打开接口。IPC指令可以用单一函数发送然后返回希望的数据。

Connect编程接口包括标准C和Matlab两类,其中Matlab还对常用的STK操作进行了封装。用户程序与STK连接后,只需要向STK发送相关指令,就可以控制STK进行仿真,并能够得到STK执行情况。Connect命令可以分为应用程序、想定、对象、显示、工具、接口六类,借助这些命令可对STK软件进行全面控制。通过STK/Connect模块,用户可以把对STK的操作封装到自己的程序中,从而实现对STK的控制。

Connect模块的主要特性有:

(1)在客户机/服务器环境下,通过TCP/IP的Socket或UNIX DomainSocket很方便地建立用户应用程序和STK的接口。这种网络能力能够允许来自任何虚拟环境的实时数据传送。

(2)Connect提供的连接库能够方便地建立和使用TCP/IP或DomainSocket。利用连接库提供的函数、常值和其它消息能力可以建立第三方应用程序与STK的连接。

(3)Connect可以有选择地生成信息,用户也可以取消标准的信息,使用自定义的格式编辑以适应第三方的应用程序。该功能可以使开发人员更好地控制信息环境。

(4)Connet连接着STK和STK/VO,开发人员可以实时观察事件。例如,可以通过Connect获得从运载火箭或卫星上得到的遥测数据,然后在二维或三维地图窗口中模拟飞行任务,帮助了解和解决可能出现的问题。

使用STK/Connect模块的优点是直接利用了STK软件的强大功能,实现了对STK软件和用户程序的开发集成,而且该方法简单易行、开发速度快,因此,该方法已成为目前使用最广泛的集成方式之一。但Connect库只提供了STK模块功能的命令方式调用,代码效率较低、灵活性不够并且执行速度受到了限制。

1.2 STK/Connect模块连接步骤

1.2.1 模块初始化

在启动模块前,首先要初始化,初始化函数是

char*initFileName=NULL;
AgConInit(initFileName);//初始化

参数initFileName指向初始化配置文件,若initFileName为空表示STK/Connect将启用缺省配置文件,对于UNIX系统,该文件为…\.connect,对于Windows系统,该文件为…\Connect\PCData\Connect.dat。若初始化成功,STK返回AgNoError消息,否则返回AgCError消息。初始化配置文件中列出了用以接收返回数据的STK/Connect命令,这些命令是第三方应用程序获得STK数据的有效途径。此外,初始化文件中还包含一些必要的配置信息,以便在建立连接时设置STK/Connect模块的参数。

1.2.2 建立与STK的连接

初始化完毕后,需要调用AgConOpenSTK( )函数建立与STK的连接,该函数形式为

intAgConOpenSTK(char *context, char *connectType, char *connectName);

参数connectType用于指定连接的类型,其值为以下两个常量中的一个:

(1)“TCPSOCKET”

(2)“UNIXSOCKET”

参数connectName说明了连接的细节:对于TCP/IP连接,要指定主机名称和端口号,例如:localhost,5001;对于UNIX连接,则需要指定数据包的路径,例如:…/soc/Socket。

参数context用来区分同时打开多个STK连接时的不同连接,对于只建立单个连接的情况可使用缺省值NULL。

1.2.3 发送命令

建立连接以后,就可以用AgConProcessSTKCmd函数向STK发送命令,格式如下:

intAgConProcessSTKCmd(char *context, char *cmdString , AgTConReturnInfo*returnInfo);

其中,参数context用以区分不同连接,参数cmdString表示发送的具体命令,参数returnInfo用来存储从STK返回的信息。

调用函数AgConProcessSTKCmd( )发送命令时,如果数据发送成功,将返回AgCNoError信息,如果出现错误将返回AgCError信息,如果命令发送成功但是STK拒绝接收的话,将返回AgCNackReturned信息。

1.2.4 接收数据

命令发送完毕后,STK/Connect接收STK返回的信息并将其存储在AgTConReturnInfo结构体中,该结构体具体定义如下:

typedef structAgTConReturnInfo
{
      char hdrType[AgCRMHAHDRTypeLen+1];
      char transId[AGCRMHAHdrIdLen+1];
      int numEntries;
      char *returnList;
}AgTConReturnInfo;

其中,hdrType和transId只用于异步模式的STK/Connect连接。hdrType存储异步数据包的类型,transId存储标志符,numEntries存储返回数据的数目,returnList存储返回的数据。

每次成功接收数据之后,需要调用AgConCleanupReturnInfo函数释放存储空间,其函数结构为:

voidAgConCleanupReturnInfo(AgConCleanupReturnInfo *pReturnInfo);

其中,pReturnInfo为指向存储空间的指针。

1.2.5 关闭连接

函数AgConClose( )用以关闭与STK服务器的连接,函数原型为

intAgConCloseSTK(char *context);

其中,参数context是在与STK建立连接时初始化的,由于它指定了一个特定的连接,因此在调用AgConCloseSTK( )函数时,其它连接不会受到影响。

1.3 STK/Connect模块命令格式

Connect模块为用户程序提供了一系列命令来控制STK内部复杂的操作,命令的一般格式如下:

<CommandName><ObjectPath> <CommandData>

其中,CommandName表示特定的命令名称,ObjectPath指定了STK中的一个对象,CommandData设置此命令所需的参数。

例如,GetReport */Satellite/Satellite1 “AER” Facility/Facility1UseAccessTimes,表示获取卫星Satellite1对地面站Facility1的AER报告。

 

利用VC开发STK连接应用程序,首先需要对提供STK连接支持的头文件和库文件进行配置。头文件有三个,均在“STK安装目录\Connect\Includes”文件夹中,文件名分别为AgConnect.h、AgConSendData.h和AgCoUtMsgCommon.h。库文件分别为调试库文件和运行库文件,分别在“STK安装目录\Connect\lib\Debug”和“STK安装目录\Connect\lib\Release”目录下,文件名都为AgConnect.lib。

VC中头文件和库文件的配置方法如下:单击Tool/Options命令,打开VC的option对话框,将STK连接头文件所在的目录加入到VC的“Project Settings”(工程设置)对话框,在“Link”(链接)对话框选项卡中,分别对“Win32 Debug”和“Win32 Release”配置相应的“Object/library modules”(对象/链接模块)。

要调用STK的命令函数,首先要加入两个头文件“AgConnect.h”和“AgUtMsgCommon.h”。

在启动Connect模块之前首先要进行初始化,方法是调用AgConInit( ),初始化完成后再利用AgConOpenSTK( )建立与STK的连接,代码如下:

char *initFileName=NULL;
char*connection1=NULL;
static charconnectName[256]=”Localhost: 5001”;
AgConInit(initFileName);//初始化
AgConOpenSTK(&connection1,0,connectName);//建立连接

对于函数AgConInit(initFileName),参数initFileName指向初始化配置文件,若initFileName为空表示STK/Connect将启用缺省配置文件,对于UNIX系统,该文件为…\.connect,对于Windows系统,该文件为…\Connect\PCData\Connect.dat。若初始化成功,STK返回AgNoError消息,否则返回AgCError消息。初始化配置文件中列出了用以接收返回数据的STK/Connect命令,这些命令是第三方应用程序获得STK数据的有效途径。此外,初始化文件中还包含一些必要的配置信息,以便在建立连接时设置STK/Connect模块的参数。

函数AgConOpenSTK(&connection1,0,connectName)语句的功能是建立客户端程序与STK的连接关系,它包含三个参数:参数1为初始连接变量,其值必须为NULL。一旦客户端程序与STK之间建立了连接关系,这种关系就会记录在该参数中;参数2表示连接类型,0表示利用TCP/IP形式进行连接;参数3为连接对象的名称,“Localhost: 5001”代表通过本地计算机的5001端口与STK进行连接。      

建立连接以后,就可以用AgConProcessSTKCmd函数向STK发送命令,格式如下:

AgConProcessSTKCmd(connection1,CommandName,&returnInfo);

其中,CommandName为命令的内容,返回值储存在returnInfo中。在完成初始化和建立连接后,可根据需要将不同的命令赋给该函数的第2个参数,然后调用该函数来驱动STK运行。