2024年KY-RTI分布仿真技术教程_rti仿真(4),阿里P8大佬亲自讲解

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

​ DMSO RTI-1.3NGv6是DMSO开发的一个RTI软件。KY-RTI采用了与DMSO RTI-1.3NGv6完全一样的.h文件和库文件名,因此与DMSO RTI-1.3NGv6完全兼容。采用DMSO RTI-1.3NGv6编写的程序几乎不需要修改任何代码即可移植到KY-RTI,包括Windows程序和Linux程序。

​ (2)支持Linux和Windows操作系统

​ 除了支持Windows,KY-RTI为Linux和各种国产操作系统和国产CPU提供全面支持。当前,KY-RTI在x86、飞腾、龙芯、申威等CPU,在RedHat、CentOS、Ubuntu、银河麒麟、中标麒麟、优麒麟、深度等操作系统上都运行良好,并且能够很好地移植到其他国产操作系统和CPU。

​ (3)支持GNU C++、Qt、Java、Visual C++、Visual C#

​ KY-RTI支持多种程序设计语言,包括GNU C++、Qt、Java、Visual C++、Visual C#。Java支持OpenJDK和Oracle JDK、JRE。Visual C++版本包括VC6.0、VC2005、VC2008、VC2010、VC2013等。

​ KY-RTI支持基于不同操作系统、不同CPU、不同程序设计语言开发的仿真成员之间实现透明通信,就好像这些仿真成员在同一台计算机上使用同一种程序设计语言毫无障碍地进行数据通信。

​ (4)坚持“大道至简”的设计原则

​ 对于C++接口而言,KY-RTI采用了与DMSO RTI-1.3NGv6完全一样的.h文件和库文件名。但对于Java和Visual C#来说,则采用了能简单则尽量简单的原则,所有Handle(例如仿真成员句柄、对象类句柄、对象实例句柄、交互类句柄、参数句柄等)都用int表示,所有时间都用double表示。从而有效地提高用户的编程效率。

​ (5)融合IEEE1516标准的优点,支持使用tick和不使用tick两种程序设计方法

​ 在基于HLA1.3标准开发时间管理服务的程序时,仿真成员需要不断调用tick服务来接收来自RTI的回调消息;否则将收不到消息。KY-RTI对此进行了功能增强,既可以按照HLA1.3标准,采用tick服务来接收回调消息;也可以不采用tick服务而直接接收回调消息。

​ 当仿真程序第一次运行时,会在当前目录产生1个叫做“RTI.rid”的文件。RTI.rid是遵循HLA1.3标准实现的RTI所采用的文件。KY-RTI对其功能进行了扩展,如图1.1所示,该文件定义了RTI服务器的IP地址和端口号;另一方面还定义了一个tick开关标识。图中的IP地址为127.0.0.1,即为本机;端口号为10000,可在configure.rti中修改。“;; UsingTickSwitch On”为tick开关标识,该标识以“;;”开头,其他RTI会把该行作为注释行而忽略;KY-RTI会根据该标识确定仿真成员是否使用tick服务;设置为“;; UsingTickSwitch On”表示使用tick服务;设置为“;; UsingTickSwitch Off”表示不使用tick服务。如果没有这一行,则默认表示使用tick服务;因此,基于DMSO RTI-1.3NGv6开发的程序,其RTI.rid文件中并没有这一行,但同样可以在KY-RTI上运行。

img

​ 图1.1 自动生成的RTI.rid

1.3 章节说明

​ 本文主要围绕KY-RTI在GNU C++、Qt、Java、Visual C++、Visual C#等多个程序设计语言的仿真成员开发方法进行介绍。前三种语言分别针对KY-RTI在Linux软件包中的聊天程序和时间管理程序进行介绍;后两种语言通过KY-RTI在Windows软件包中的ping、pong程序进行介绍。通过相近程序的比较,用户可以迅速地掌握基于KY-RTI开发仿真系统的方法。

​ 第一章,本章介绍了KY-RTI遵循HLA1.3标准的原因、KY-RTI自身的优点。对于用户而言,需要重点关注图1.1,在程序设计中会经常用到。

​ 第二章,本章介绍了KY-RTI在Linux和Windows系统下的安装方法。

​ 第三章,本章介绍了对象模型模板的概念,再次探讨了将对象类和交互类作用于数据交换时,在很多情况下是等价的。另外,介绍了基于KY-OMT工具建立fed文件的方法。

​ 第四章,本章介绍了基于GNU C++开发两个示例程序的方法,包括聊天程序和时间管理程序。

​ 第五章,本章介绍了使用Qt Creator开发聊天程序和时间管理程序的方法。聊天程序是一个控制台Qt程序,而时间管理程序则是一个图形界面的Qt程序。时间管理程序是一个接近真实仿真系统的典型用例。

​ 第六章,本章介绍了基于Java开发两个示例程序的方法,包括聊天程序和时间管理程序。用户应主要关注Java程序的接口和调用形式,用例程序的逻辑在前面章节中已有多次介绍。另外,Java程序的使用方式与Visual C#较为相似,两者可参照查看。

​ 第七章,本章介绍了基于Visual C++开发ping、pong示例程序的方法。

​ 第八章,本章介绍了基于Visual C#开发ping、pong示例程序的方法。另外,Visual C#程序的使用方式与Java较为相似,两者可参照查看。

​ 第九章,本章介绍了3个演示系统。一是基于银河麒麟操作系统实现了GNU C++、Qt、Java三种程序的互操作;二是基于Windows 7实现了Visual C++和Visual C#两种程序的ping-pong测试;三是在飞腾和x86两种CPU型号的机器上,基于银河麒麟操作系统和Windows 7实现了GNU C++、Qt、Java、Visual C++和Visual C#等各种程序的互操作功能。在这些程序中,有些使用了tick服务,有些则没有使用tick服务。结果表明KY-RTI具有很好的集成性,能够把基于不同CPU、不同操作系统、不同程序设计语言、不同HLA服务调用方式开发的仿真程序完美地集成在一起。本章以银河麒麟操作系统和飞腾CPU为主进行测试,同样的测试也适用中标麒麟操作系统和龙芯CPU,以及深度操作系统和申威CPU;KY-RTI支持x86、飞腾、龙芯、申威等机器的互联互通,实现各类程序的集成。

KY-RTI的Linux、Windows版本和源码请联系作者:walt_lbq@163.com

KY-RTI分布仿真技术:前 言

KY-RTI分布仿真技术:第一章 简介

KY-RTI分布仿真技术:第二章 系统安装

KY-RTI分布仿真技术:第三章 KY-OMT对象模型模板工具

KY-RTI分布仿真技术:第四章 C++程序设计

KY-RTI分布仿真技术:第五章 Qt程序设计

KY-RTI分布仿真技术:第六章 Java程序设计

img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

如果你需要这些资料,可以戳这里获取

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MatlabHLA13 v0.9 DMSO RTI 的matlab接口工具箱 实现了所有的服务(包括所有权管理服务和分发管理服务) 实现了REGION 实现了所有的回调服务 运行环境: Matlab 2008a DMSO RTI 1.3 NGv6 编译环境:VS 2008 未完成全部测试,如有BUG请mail: zhoubohe@126.com 如果提示RTI错误,一般是依赖的DLL不在m_files目录下主要有matlab的libmex.dll libmx.dll vc8.0的redist(matlab2008的bin目 录下有),vc9.0的redist,dmso rti的dll(包括ace的dll) 使用事项: 1、将m_files添加到Matlab的路径中 2、将RTI.rid文件放在rti.mexw32同一目录中 3、FED文件使用全路径指示,如 fedFile = 'D:\matlab2hla\federations\TwoLevelController.fed' 防止Matlab中的联邦成员找不到数据文件 4、对于RTI的回调接口服务,从m_files找到相应的缺省m文件,拷贝到联邦成员实现的m文件目录下,加入实现部份 并将联邦成员所在目录设置在Matlab搜索路径m_files目录的前面(非常重要,这样才能实现函数的重载) 5、每一台机器只能运行一个联邦成员 6、DDM服务的9.5服务实现进行了简化,每次只设置一个对象的Region ObjectHandle // returned C3 registerObjectInstanceWithRegion ( ObjectClassHandle theClass, // supplied C1 const char *theObject, // supplied C4 AttributeHandle theAttributes[], // supplied C4 Region *theRegions[], // supplied C4 ULong theNumberOfHandles) // supplied C1 throw ( ObjectClassNotDefined, ObjectClassNotPublished, AttributeNotDefined, AttributeNotPublished, RegionNotKnown, InvalidRegionContext, ObjectAlreadyRegistered, FederateNotExecutionMember, ConcurrentAccessAttempted, SaveInProgress, RestoreInProgress, RTIinternalError); 7、Region类的实现在调用时需要传入RegionToken function [Bound,except] = getRangeLowerBound(regionToken,extentIndex,dimHdl)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值