版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农产品守护者
- 2024年钢材企业技术转让合同
- 外销采购合同(2篇)
- 2024年销售培训与发展合同6篇
- 多继承人遗产处理合同(2篇)
- 2024版专业多语种翻译服务合同
- 小吃街承包协议书范本
- 29 跨学科实践“探究游乐设施中的功与能”(说课稿)2024-2025学年初中物理项目化课程案例
- 辅料装修合同
- 个人向事业单位借款合同范本
- (主城一诊)重庆市2025年高2025届高三学业质量调研抽测 (第一次)英语试卷(含答案)
- 2025关于标准房屋装修合同的范本
- 中国建材集团有限公司招聘笔试冲刺题2025
- 2024年马克思主义基本原理知识竞赛试题70题(附答案)
- 2024年中国机织滤布市场调查研究报告
- 2024年湖北省中考物理真题含解析
- 荔枝病虫害防治技术规程
- 贵州业主大会议事规则示范文本模板
- 2024年内容创作者与平台合作协议2篇
- 《实验性研究》课件
- 中国革命战争的战略问题(全文)
评论
0/150
提交评论