OpenDDS安装与开发

文章目录

  • OpenDDS安装与开发
    • 1. OpenDDS介绍
    • 2. 环境搭建
    • 3. OpenDDS测试
    • 4. 名词解释
    • 5. OpenDDS应用开发步骤
    • 参考链接

1. OpenDDS介绍

官网:https://opendds.org/

是个开源的数据分发中间件,有三层:TAO+ACE+DDS

  • TAO负责封装数据,让OpenDDS支持跨平台;

  • ACE负责数据通信;

  • DDS负责数据的分发交互。

2. 环境搭建

主要包括三部分:

  • Perl:用于运行OpenDDS的用例和一些环境配置
  • OpenDDS:V3.20
  • ACE+TAO:V7.0.6

具体的安装步骤可以参考博客:https://blog.csdn.net/babypphappy/article/details/123228108 ,经过验证可以安装成功。

注:在编译TAO的过程中编译出错,错误如下:

…/orbsvcs\orbsvcs/Security.idl(7): fatal error C1083: 无法打开包括文件: “orb.idl”: No such file or directory [D:\DDS\ACE_wrappers\TAO\orbsvcs\orbsvcs\Security_vs2019.vcxproj]
…/orbsvcs\orbsvcs/Security.idl(7): fatal error C1083: 无法打开包括文件: “orb.idl”: No such file or directory [D:\DDS\ACE_wrappers\TAO\orbsvcs\orbsvcs\Security_vs2019.vcxproj]

参照博客ACE+TAO环境搭建 windows平台,需要先编译一下TAO\TAO_IDL文件夹里的TAO_IDL_ACE_vs2019.sln,另外需要保证已经通过Visual Studio Installer安装了通用Windows平台开发这一组件,另外注意ace\config.h配置中只有一行代码

#include "ace/config-win32.h"

3. OpenDDS测试

OpenDDS在配置完成,并将生成的解决方案.sln编译完成后,就可以通过perl run_test.pl命令进行测试,测试过程中报错如下:

D:\DDS\OpenDDS-3.20\examples\DCPS\Messenger_Imr>perl run_test.pl
Can't locate Win32/Process.pm in @INC (you may need to install the Win32::Process module) (@INC contains: D:\DDS\ACE_wrappers/bin D:\DDS\OpenDDS-3.20/bin D:\DDS\OpenDDS-3.20\bin\PerlDDS c:/Users/SN-539/AppData/Local/activestate/cache/922e561e/site/lib c:/Users/SN-539/AppData/Local/activestate/cache/922e561e/lib) at D:\DDS\ACE_wrappers/bin/PerlACE/Process_Win32.pm line 8.

提示找不到Win32/Process.pm,这个是Perl的模块缺失问题,可以直接在ActiveState命令行中通过state install Win32-Process安装对应的模块包:

[minglwang1115/Perl-5.34.0-Windows] C:\Users\SN-539\Perl-5.34.0-Windows>state install Win32-Process

安装完毕后,再运行命令perl run_test.pl,又出现新的错误:

.\.\publisher.EXE   -DCPSConfigFile pub.ini -orbendpoint iiop://:23204
ERROR: Cannot Spawn: <.\.\publisher.EXE> not found
.\.\subscriber.EXE   -DCPSConfigFile sub.ini
ERROR: Cannot Spawn: <.\.\subscriber.EXE> not found
cP is not of type Win32::Process at D:\DDS\ACE_wrappers/bin/PerlACE/Process_Win32.pm line 458.
ERROR: <D:\DDS\ACE_wrappers\TAO/orbsvcs/ImplRepo_Service/tao_imr_activator> still running upon object destruction
ERROR: <D:\DDS\ACE_wrappers\TAO/orbsvcs/ImplRepo_Service/tao_imr_locator> still running upon object destruction

缺少publishersubscriber,可能是由于目前使用的OpenDDS最新版本中示例文件就没有带这俩文件,不过通过文件全局搜索,发现在OpenDDS-3.20\DevGuideExamples\DCPS\Messenger目录下有上一步sln编译生成好的publisher.exe和subscriber.exe文件,拷贝到OpenDDS-3.20\examples\DCPS\Messenger_Imr目录后,再运行perl run_test.pl发现测试成功。

SampleInfo.instance_state = NOT_ALIVE_DISPOSED_INSTANCE_STATE
>>> D:\DDS\ACE_wrappers\bin\tao_imr.EXE -ORBInitRef ImplRepoService=file://imr.ior shutdown InfoRepo
Successfully shut down server <InfoRepo>
test PASSED.

4. 名词解释

ACE is an open-source framework that provides many components and patterns for developing high-performance, distributed real-time and embedded systems. ACE provides powerful, yet efficient abstractions for sockets, demultiplexing loops, threads, synchronization primitives.TAO (The ACE ORB) is an open-source implementation of a CORBA Object Request Broker (ORB) built using components and patterns in the ACE framework.ACE是一个开源的函数库,一种框架。TAO是基于ACE的对CORBA的一种实现。CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构,通用对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程序体系规范。IDL:Interface description language的缩写,指接口描述语言,是CORBA规范的一部分,是跨平台开发的基础。RPC(Remote Procedure Call)—远程过程调用,CORBA的底层实现OpenDDS is an open-source C++ implementation of the Object Management Group's
specification "Data Distribution Service for Real-time Systems" (DDS), as well
as some other related specifications. OpenDDS is built on the ACE abstraction layer to provide platform portability.  OpenDDS also leverages capabilities of TAO, such as its IDL compiler and as the basis of the OpenDDS DCPS Information Repository (DCPSInfoRepo).OpenDDS: 是对OMG组织的DDS协议的C++开源实现,它建立在ACE抽象层之上来保证平台间的可移植性,OpenDDS同样依赖了TAO的一些特性。

5. OpenDDS应用开发步骤

原文链接: OPenDDS程序 的 实现+运行

基于Windows10的OpenDDS测试、https://github.com/WeiKangJian/OpenDDSapplication

  1. 新建XXX.idl文件:接口描述语言,是CORBA规范的一部分,是跨平台开发的基础,里面内容是结构体,定义了数据类型;
  2. 新建XXX.mpc文件:该文件有点像是配置文件,里面会配置不同属性对应的源文件;
  3. 新建Publisher.cpp、Subscriber.cpp、DataReaderListener.h、DataReaderListener.cpp;
  4. 通过perl脚本生成VS解决方案,shell命令是perl %ACE_ROOT%\MPC\mwc.pl -type vs2019,执行后会生成XXX.sln
  5. 编译XXX.sln,生成publisher.exesubscriber.exe
  6. 运行,先在工程目录下通过命令%DDS_ROOT%/bin/DCPSInfoRepo -ORBEndpoint iiop://localhost:12345,然后双击启动publisher.exesubscriber.exe

参考链接

  • OpenDDS环境搭建-Windows 10
  • Windows环境下OpenDDS的安装
  • OpenDDS的学习和使用
  • OpenDDS开发示例
  • 通讯协议篇(底层TCP/UDP;上层MQTT、HTTP、CoAP、DDS、AMQP、JMS;实现层RabbitMQ、ActiveMQ、Kafka)

OpenDDS安装与开发相关推荐

  1. JDK安装以及开发环境搭建

    无论是Java开发.J2EE以及Android开发搭建环境时JDK开发环境搭建及环境变量配置是必不可少的,这篇文章就来就分别介绍下JDK的下载以及不同平台的环境变量的配置. 1.安装JDK开发环境 官 ...

  2. suse linux c 编译环境,SUSE 11中安装GCC开发环境

    SUSE11中安装GCC开发环境 安装包下载网站:http://213.174.32.130/sles/distribution/11.0-SP1/repo/disk1/suse/x86_64/ RP ...

  3. 在一个空的Eclipse中安装Android开发的ADT和SDK

    在一个空的Eclipse中安装Android开发的ADT和SDK 一.eclipse中安装adt插件(http://jingyan.baidu.com/article/8cdccae99b564a31 ...

  4. 【Visual Studio 2019】创建 MFC 桌面程序 ( 安装 MFC 开发组件 | 创建 MFC 应用 | MFC 应用窗口编辑 | 为按钮添加点击事件 | 修改按钮文字 | 打开应用 )

    文章目录 一.安装 MFC 开发组件 二.创建 MFC 应用 三.MFC 应用窗口编辑 四.为按钮添加点击事件 五.修改按钮文字 六.打开系统其它应用 七.博客源码 一.安装 MFC 开发组件 打开 ...

  5. Windows下安装Objective-C开发环境

    Windows下安装Objective-C开发环境 1.首先用GNUstep在windows下模拟object c开发环境. 官方网址:http://www.gnustep.org/ 百度云下载: 链 ...

  6. 2021-01-13 Linux下安装lua开发环境 Ubuntu

    Linux下安装lua开发环境 Ubuntu 1.下载lua包并解压 wget -c http://www.lua.org/ftp/lua-5.3.5.tar.gz tar zxvf lua-5.3. ...

  7. Windows下Eclipse+PyDev安装Python开发环境

    1.简介 Eclipse是一款基于Java的可扩展开发平台.其官方下载中包括J2EE方向版本.Java方向版本.C/C++方向版本.移动应用方向版本等诸多版本.除此之外,Eclipse还可以通过安装插 ...

  8. 安卓开发日记(1) - 安装 Android 开发环境和 first app

    安装 Android 开发环境 安装 Android Studio 并升级到最新版本(本文使用 1.0.2 版本) 如果没有安装JDK, 安装 64-bit JDK MAC 下需要手动装一下HAXAM ...

  9. visual studio安装python插件_Visual Studio 2012 Ultimate 上安装 Python 开发插件 PTVS

    Visual Studio 2012 Ultimate 上安装Python 开发插件PTVS 转载于ITNOSE1.我的环境 操作系统:Win7 旗舰版Service Pack 1 VS版本:Micr ...

最新文章

  1. 如何为ccflow工作流引擎增加一个优先级PRI?
  2. 15DOM之获取元素方法
  3. 如何在linux服务器上使用hanlp
  4. 网络:传输层 TCP报文格式解析
  5. 研发管理三部曲——贰 · 研发管理应该干什么
  6. html京东快报,练习3:仿京东快报.html
  7. 疯狂python讲义pdf_重磅!Python再次第一,Java和C下降,凭什么?
  8. SQL Server创建复合索引时,复合索引列顺序对查询的性能影响
  9. sklearn学习(模块列表)
  10. “office for mac”模板文件的目录
  11. springboot vue导出excel 使用easypoi
  12. 高电压技术-名词解释题
  13. 小米 网络位置服务器,小米科普:一文看懂路由器上的 Mesh 组网是什么
  14. Gsensor驱动调试
  15. 甘超波:NLP抽离与结合
  16. Shell中IF大于等于小于
  17. CM108AH和DP108/DP108T的区别
  18. Latex之页边距设置
  19. openGL ES进阶教程(五)制作一个简单的VR播放器,播放全景视频
  20. 李大学:CTO,应该像CEO一样思考

热门文章

  1. 还原JavaScript的真实历史~
  2. 图像检索系统 Image Retrieval Systems
  3. 信息检索(IR)的评价指标介绍-准确率、召回率、F1、mAP、ROC、AUC
  4. mssql sqlserver in 关键字在值为null的应用举例
  5. transform插件
  6. 简单的XML和JSON数据的处理
  7. 软件测试——JUnit中的参数化测试
  8. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用48
  9. “这块布的艺术成分都几高唧!”“有几高啊?”“三、四层楼那么高啦。”...
  10. IO模型(select, poll, epoll的区别和原理)