




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VR-Link并不是RTI的替代品,VR-Link是RTI与用户应用程序之间的中间件,开发者只需要调用简单的VR-LinkAPI就可以完成HLA的实现,而烦琐的RTI函数都交给VR-Link去调度。
HLA(HighLevelArchitecture:高层体系结构)的诞生是为了满足了大规模复杂系统的迫切需求,目前不但在军用领域得到了广泛的应用并在民用领域展示出了广阔的应用前景。而RTI(RunTimeInfrastructure:运行支撑环境)作为他HLA的重要组成部分,一直是HLA实现的核心内容。RTI原形系统开始于1995年底,到现在已经整整10年了,就像windows编程世界里WIN32API被MFC所替代一样,通过直接编写繁琐的RTI代码来实现HLA的开发人员正逐渐减少,这是软件界不变规律,也是历史发展的必然结果。对于绝大多数HLA应用开发人员来说,并不希望也不需要对花过多的时间去理解RTI的细节,而更愿意在应用本身上多下功夫,编程只是实现的手段,实现过程当然越简单越好。既然市场有这个需求当然就会有相应的产品,从DIS时代开始,MAK的VR-Link就给开发者提供了这样一个产品,它也成为了国际市场上此类软件的佼佼者,事实上VR-Link已经使得大量的HLA应用程序开发者在对RTI并不十分了解的情况下编出了可靠而功能强大的HLA应用。下面就以MAK的VR-Link为例说明一下RTI中间件的工作方式,需要补充说明的是,VR-Link并不是RTI的替代品,VR-Link是RTI与用户应用程序之间的中间件,开发者只需要调用简单的VR-LinkAPI就可以完成HLA的实现,而烦琐的RTI函数都交给VR-Link去调度。
什么是VR-Link?
VR-Link是一个面向对象的C++工具包,它使得仿真开发人员可以方便快捷的进行HLA或DIS应用开发。它提供了一系列的类库,用于执行实现HLA和DIS的可靠、稳定的API(应用程序接口)。当你使用VR-Link时,你可以专注于你的应用,而不用花太多的时间去担心网络传输的细节。少量的VR-Link函数调用可以替代数千行的RTI代码,在开发和维护过程中为你节省了时间和金钱。
VR-Link的顶层API与网络协议无关。例如,应用程序设置本地实体和对象的状态时,所有被需要的数据都会通过HLARTI或DIS网络自动的送往其它的应用程序。在接受方,VR-Link处理所收到的信息并提供一个远程对象的当前状态接口,应用程序甚至不需要知道更新到达的时间。
VR-Link是RTI代码自动生成软件吗?
不是。现在有很多的RTI代码自动生成软件,这类软件可以通过fed文件自动生成RTI代码,所生成的RTI代码只是一个不包含任何应用程序流程的一个联邦成员框架。对于HLA应用程序开发者而言,如果他们选择使用RTI自动代码工具,还是需要掌握繁琐的RTI内容,而且并不能减轻应用程序本身的逻辑的开发工作量。在后期维护方面,由于RTI代码自动生成软件所生成的代码需要考虑到通用性,所生成的代码往往比手写RTI代码更加繁琐,而且在程序出错时也不容易找到错位来源。于RTI代码自动生成工具不同,VR-Link是一套类库,有着功能强大而又简洁方便的API,使用VR-Link所编写的应用程序代码中可以不包含任何的RTI函数,当然VR-Link也提供了RTI的函数接口,不过在绝大多数情况下你都不需要使用它。使用VR-Link开发基于HLA的应用程序时,开发人员之需要了解一些RTI的基本概念例如:联邦,联邦成员,发布,订购等。当然与RTI代码自动生成工具相比VR-Link也有自己的弱点,由于VR-Link使用的是自己的API,并有着一套独特的框架结构,在使用前,开发人员需要一段时间来学习如何使用它,当然学习VR-Link要比理解RTI要容易的多,如果你已经掌握了RTI,那么这一学习过程将会更加轻松而短暂。
VR-Link只是RTI与应用程序的中间件吗?这个问题就如同问“MFC是否只是Win32API的中间件?”一样,当然不是。VR-Link不但可以使用简洁的API调用复杂的RTI函数,还增加了许多新的功能,以方便分布式仿真应用程序的开发,任何使用VR-Link可以实现的功能都能过使用RTI函数来实现,但是实现过程将会十分复杂,如果你选择直接使用RTI,那么你将花费更多的时间和精力。VR-Link的API长什么样?
回答这个问题最好的方法就是给你展示一个简单的VR-Link例子。这个例子的主要功能是从网络中读取数据:Listen-OnlyExample:1//Defineacallbacktoprocessfireinteractions
2voidfireCb(DtFireInteraction*fire,void*usr)
3{
4printf("FireInteractionfrom%s\n",fire->attackerId().string());
5}
6
7intmain()
8{
9//Createaconnectiontotheexerciseorfederationexecution
10#ifDtHLA
11//PassexecutionNameandfederateName
12DtExerciseConnexConn("VR-Link","VR-Linklisten");
13#else
14//Passportnumber,exerciseId,siteIdandapplicationnumber
15DtExerciseConnexConn(3000,1,1,15);
16#endif
17
18//Registeracallbacktohandlefireinteractions
19DtFireInteraction::addCallback(&exConn,fireCb,NULL);
20
21//Createanobjecttomanageremoteentities.
22DtReflectedEntityListrel(&exConn);
23
24while(1)
25{
26//TellVR-Linkthecurrentvalueofsimulationtime
27exConn.clock()->setSimTime(exConn.clock()->elapsedRealTime());
28//Processanyincomingmessages
29exConn.drainInput();
30
31//Findthefirstentityinthereflectedentitylist
32DtReflectedEntity*first=rel.first();
33
34if(first)
35{
36//Grabitsstaterepository,wherewecaninspectitsdata
37DtEntityStateRepository*esr=first->entityStateRep();
38
39//Printtheposition
40printf("Positionoffirstentity:%s\n",esr->location().string());
41}
42
43//Sleeptillnextiteration
44DtSleep(0.1);
45}
46}代码一共46行,这46行中还包括了详细的注释,以及对DIS的兼容和打印程序的运行结果。而核心代码也就10行左右。与直接使用RTI相比,VR-Link大大减少了编码工作量,所编写的代码可读性更强,更利于日后的扩展和维护。下面我们对这些代码作一个简单的说明:
1.加入联邦
代码的10-16行创建了一个DtExerciseConnection,它是本联邦成员与联邦的接口。对于基于HLA的应用程序,只需要将联邦和本联邦成员的名字作为参数加入即可。
2.管理状态和交互信息
第2行定义了一个用户处理开火交互的回调函数fireCb,在第19行将这个回调函数注册到本联邦成员。这样我们就实现了对开火交互的订购并响应。
3.跟踪实体
在22行我们创建了一个影射实体列表rel,用于跟踪记录在网络中找到的实体。除完成订购工作外,Rel还负责跟踪实体的到达和离开,并进行航路推算,管理超时等工作。
4.从网络中读取数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年湖南省长沙市中考招生考试数学真题试卷(真题+答案)
- 预防肺炎主题班会课件
- 预防疾病安全课件
- 静脉治疗护士教育培训体系
- 《电子产品装配与测试》课件-任务2 仪器的使用
- 预防儿童近视课件
- 预防传染保健康课件
- 学校辅导员(班导师)管理及考评办法
- 城市污水管网建设项目节能评估报告(参考模板)
- 2025年年云服务项目合作计划书
- 贵阳小升初分班全真模拟测A卷
- GB/T 77-2007内六角平端紧定螺钉
- 中华人民共和国安全生产法
- 九年一贯制学校教育教学管理制度汇编
- GA/T 1105-2013信息安全技术终端接入控制产品安全技术要求
- 《C++语言基础》全套课件(完整版)
- 钢筋混凝土框架结构设计讲义
- 《材料成型装备及自动化》课程大纲
- 保温材料进场质量检验表
- DG-TJ 08-2122-2021 保温装饰复合板墙体保温系统应用技术标准
- GB∕T 23937-2020 工业硫氢化钠
评论
0/150
提交评论