OpenDDS高级开发指导
文章平均质量分 71
希望我撰写更多的OpenDDS文章,能够对OpenDDS使用者、兴趣者提供指导和帮助,为你的学习和应用之路提供指路明灯。本专栏的内容对你有帮助,尽快订阅和反馈,你的支持是本专栏前进的动力。
【敬告】本专栏的价格会自动随平台而提高,尽快订阅,开卷受益。
优惠券已抵扣
余额抵扣
还需支付
¥199.90
¥299.90
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
pony12
专注OpenDDS【应用开发】、【源码分析】、【项目咨询】、【功能定制】和【学习指导】多年
展开
-
OpenDDS百问百答
问:DDS是什么? 答: 数据分发服务DDS(Data Distribution Service for Real-time Systems),是对象管理组织OMG(Object Management Group),基于HLA和Corba技术框架,提出分布式、以数据为中心的发布订阅DCPS(Data-Centric Publish-Subscribe)模型的实时数据传输的软件架构。 问:DDS架构的优点...原创 2021-10-22 22:12:19 · 676 阅读 · 0 评论 -
基于QT的OpenDDS的发布订阅样例
基于QtCreator,进行OpenDDS的pub-sub开发,和基于VS、IDEA、Eclipse等IDE环境的开发,套路一样,只要设置和导入了OpenDDS的相应资源,进行编译和运行,就可以了。 引入OpenDDS的资源,主要包括 0)设置环境变量 Windows:DDS_ROOT、ACE_ROOT、TAO_ROOT、PATH Linux:DDS_ROOT、ACE_ROOT、TAO_R...原创 2021-09-04 16:43:31 · 3182 阅读 · 0 评论 -
OpenDDS集中发现服务DCPSInfoRepo
集中发现服务DCPSInfoRepo,目的是为局域网或跨网络或互联网的DDS节点,提供主题匹配服务的。1)同一局域网,可以采用对等RTPS发现,也可以采用DCPSInfoRepo集中发现2)跨段网络内,如果交换机或路由器支持跨网组播,同样,可以采用对等RTPS发现,也可以采用DCPSInfoRepo集中发现;如果不支持组播,则可以采用单播发现;当然,采用DCPSInfoRepo集中发现也是ok的;3)互联网环境下,和跨段网络相似。尤其是在云环境中,可能存在进行云主机和内网地址......原创 2020-12-22 08:24:26 · 1915 阅读 · 0 评论 -
OpenDDS的Rtps_Udp传输协议可靠性QoS收发基本流程
OpenDDS中,实现了Rtps_Udp传输协议(非纯udp)的可靠性传输。传输的线程包括:1)发送方线程主要线程和定时器 《1》应用线程 《2》网络异步发送线程 《3》Heartbeat定时器 《4》Nak_response定时器 2)接收方主要线程和定时器 《1》网络异步接收线程原创 2024-08-17 15:47:57 · 180 阅读 · 0 评论 -
RTPS对等发现过程的日志记录
RTPS对等发现过程的日志记录,是快速分析和解决RTPS对等发现过程中问题的有效方法。原创 2024-08-17 15:23:15 · 56 阅读 · 0 评论 -
OpenDDS基于银河麒麟aarch64处理器的编译问题及解决措施
OpenDDS+ACE在国产系统和处理上,编译时遇到的错误,和解决策略。原创 2024-08-17 11:25:36 · 77 阅读 · 0 评论 -
OpenDDS的GUID是如何构造的?
GUID(Global Unique IDentifiers)是RTPS规范约定的DDS对象的唯一性ID;RepoId(Repository IDentifiers)是Repo服务约定的DDS对象的唯一性ID;GUID和RepoId,都是基于GUID_t结构体定义,名称不同,但实质上是一样的。题外话:无论是GUID还是RepoId,都可以根据自己的环境、业务和代码需要,自定义GUID_t结构体(共16个字节位)的组成部分,实现自己的特定需要。原创 2024-08-17 10:53:40 · 35 阅读 · 0 评论 -
OpenDDS 集中发现服务联邦Federator解析
集中发现协议客户端服务端联邦服务可执行服务。原创 2024-08-14 22:46:01 · 142 阅读 · 0 评论 -
OpenDDS集中发现服务DCPSInfoRepo联邦机制
OpenDDS在提供DCPSInfoRepo集中发现服务的基础上,又提供了集中发现服务DCPSInfoRepo的联邦功能,实际上就是集群功能。但联邦Federation功能一直以来,作为一个实验项目存在,功能的完备性、可用性距离真正的集群功能还存在着较大差距,如果你想实现OpenDDS的发现服务的集群化:1)根据DCPSInfoRepo联邦的基础上,进行完善、改造和定制,让它往集群化服务的方向继续前进;2)基于自己的业务需要,结合市面上的集群组件、注册发现的机制进行开发和实现。原创 2024-08-14 22:03:05 · 81 阅读 · 0 评论 -
ACE中为socket增加keepalive策略(windows和linux)
在国产麒麟系统下,基于ACE的tcp-socket,如果长时间不操作,则会自动切断连接,经测试发现,这个时间的上限为30分钟(几乎不差1秒) 经查看/proc/sys/net/ipv4/tcp_keepalive_time=7200,按说是2小时,但测试发现就是30分钟。索性,就通过程序来动态设置keepalive吧原创 2023-12-24 18:08:17 · 777 阅读 · 0 评论 -
集中发现服务DCPSInfoRepo通信端口和ORB交互流程
OpenDDS集中发现服务DCPSInfoRepo,为OpenDDS的pub和sub通信终端提供主题匹配和通信协商和中介服务,是基于TAO的ORB机制完成的,GIOP协议。从通信端口、GIOP协议流程、Pub和Sub端操作步骤及分解动作等进行解析。原创 2023-10-07 20:09:05 · 390 阅读 · 0 评论 -
DDSv1.4规范(中文版)
吭哧憋肚,DDSv1.4翻译完了,下一步继续润色和完善。原创 2023-07-28 19:32:10 · 574 阅读 · 5 评论 -
OpenspliceDDS(1)介绍
OpenSpliceDDS的特点、优势和价值,体系架构等原创 2022-12-31 19:04:20 · 938 阅读 · 0 评论 -
CycloneDDS(5)发现Discovery
CycloneDDS的发现机制,包括Topic Discovery和Type Discovery原创 2022-12-31 10:56:36 · 1807 阅读 · 0 评论 -
CycloneDDS(4)Security插件图解
dds安全插件组件,包括dds安全认证插件、dds安全访问控制插件、dds安全加密插件(图解)原创 2022-12-31 10:44:57 · 346 阅读 · 0 评论 -
CycloneDDS(3)安全Security
DDS安全模型的三个插件是:1、身份验证服务插件2、AccessControl服务插件3、加密服务插件原创 2022-12-31 08:13:23 · 2245 阅读 · 0 评论 -
CycloneDDS(2)路线图
CycloneDDS的版本发布里程碑,从0.1.0到0.10.0原创 2022-12-31 08:03:09 · 1011 阅读 · 0 评论 -
完整的OpenDDS的发布订阅编写及源码(Windows)
一个完整的OpenDDS的发布订阅编写及源码,包括SimuMsg.idl、SimuMsg.mwc和SimuMsg.mpc,SimuMsgCommon_Export.h、publisher.cpp、subscriber.cpp、SimuMsgDataReaderListenerImpl.h和SimuMsgDataReaderListenerImpl.cpp、SimuMsgDataWriterListenerImpl.h和SimuMsgDataWriterListenerImpl.cpp、dds原创 2022-12-29 19:29:34 · 1028 阅读 · 1 评论 -
OpenDDS IDL文件生成dll
从定义idl文件,创建mwc和mpc工程文件,到创建vs2010的sln和vcxproj;定义了集中发现DCPSInfoRepo和对等发现RTPS的相关配置文件(tcp和udp传输协议),到如何运行pub和sub进行发布订阅的整体说明。原创 2022-12-29 19:08:04 · 720 阅读 · 0 评论 -
CycloneDDS配置详细说明中文版(四)
CycloneDDS配置,如SharedMemory、Tracing、Threads、TCP、Sizing原创 2022-12-04 13:23:26 · 1367 阅读 · 0 评论 -
CycloneDDS配置详细说明中文版(三)
CycloneDDS配置,//CycloneDDS/Domain/Partitioning、//CycloneDDS/Domain/SSL、//CycloneDDS/Domain/Security部分原创 2022-12-04 13:03:23 · 1228 阅读 · 0 评论 -
CycloneDDS配置详细说明中文版(二)
CycloneDDS配置,//CycloneDDS/Domain/Internal配置原创 2022-12-04 13:24:21 · 1016 阅读 · 0 评论 -
CycloneDDS配置详细说明中文版(一)
CycloneDDS配置详细说明中文版原创 2022-12-04 11:45:17 · 1812 阅读 · 0 评论 -
Cyclone DDS(1)初识
Cyclone DDS遵循对象管理组织(OMG)的数据分发服务(DDS)技术标准,是一个最新的快速增长的开源实现。现在,Cyclone DDS在机器人、自动驾驶汽车和汽车市场以及其他关键任务和要求苛刻的物联网系统中获得了发展势头原创 2022-11-26 17:53:06 · 3159 阅读 · 4 评论 -
OpenDDS问题记录
最近几年,一直在了解、研究、使用和定制化DDS技术,包括商用的如RTI Connext、CoreDX、OpenSplice,开源的如OpenDDS、Cyclone DDS、FastDDS等;各DDS实现厂家遵循的DDS规范大体是DDSv1.4或更老的规范版本,使用到的开发语言有C、C++、Java等。跟随OpenDDS,从3.8到3.13、3.19、3.21等,这几年走过使用OpenDDS道路,对趟过的坑(bug)、待优化点、重大的功能定制等,做一个大概的记录。原创 2022-09-15 09:06:50 · 823 阅读 · 2 评论 -
OpenDDS的QoS和自定义QoS(校时TimingQosPolicy)
列举OpenDDS的22种QoS的数据结构,并提供DataWriter和DataReader的校时QoS1) DR设置TimingQosPolicy中value=true,则DR方发起校时申请,以DW方的时间戳为准进行校时;2) DW设置TimingQosPolicy中value=true,则DW方发起校时申请,以DR方的时间戳为准进行校时;3) DR和DW设置TimingQosPolicy中value=true,则DR方发起校时申请,以DW方的时间戳为准进行校时;.........原创 2022-07-16 22:26:51 · 792 阅读 · 1 评论 -
OpenDDS实现机制分析(大纲)
后期,拟针对OpenDDS代码实现1)RTPS规范及实现,网络包协议分析2)DDS规范及实现,网络包协议分析3)OpenDDS中应用到的ACE、TAO知识点4)测试场景,包括功能测试场景、性能测试场景5)其他技术专题异步传输机制 可靠性(包核对、续传、frag分包机制、resemble重组机制)传输、 网络重连Reconnect机制 Spdp和Sedp发现机制,DCPSInfoRepo发现机制 内存管理,消息级内存、数据区内存、分配和释放 DDS传输类之间的关系,如Data原创 2022-05-31 13:00:28 · 997 阅读 · 2 评论 -
OpenDDS通讯rtps_discovery对等发现模式的端口
rtps_discovery发现模式的通讯端口 (domainid=0)为例 广播地址和端口 单播地址和端口 Spdp通讯端口 239.255.0.1:7400 广播地址,也可以通过InteropMulticastOverride来设定,如InteropMulticastOverride=239.255.0.11,...原创 2018-02-08 08:25:45 · 1236 阅读 · 0 评论 -
OpenDDS工具之五(ishapes)
E:\OpenDDS-3.19_x86\examples\DCPS\ishapes工具,是OpenDDS提供的基于QT5的有关QoS的可视化发布订阅的demo1)发布订阅三种数据报文,三角形Triangle、圆形Circle、正方形Square2)传输控制策略。发布方四种,Reliability可靠性、Ownership属主、Durability持久性、Priority优先级;订阅方五种,Reliability可靠性、Ownership属主、Priority优先级、H原创 2022-02-19 12:32:39 · 667 阅读 · 0 评论 -
OpenDDS工具之四(monitor+excelRTD)
OpenDDS中monitor和excelRTD,都是基于Qt5的可视化检测工具:1)monitor,监测DCPSInfoRepo服务,动态展示OpenDDS全网内的核心对象,可以Node、等方式展示2)excelRTD,实际上是将monitor的监测UI,注册到Excel中进行展示。(一)准备1.1 安装Qt5.5.0我的OpenDDS3.19是基于vs2010编译的,所以只能选择Qt5.5.0及以前的版本,安装后的目录结构如下图1.2 设置QTDIR环境变量set QTD原创 2022-02-18 19:04:13 · 837 阅读 · 2 评论 -
OpenDDS工具之三(inspect)
tools\inspect,是OpenDDS中提供的以record方式来订阅那些支持"DDS XTypes complete TypeObjects"类型的数据样本,并输出样本数据内容的工具。 参数说明:TOPIC_NAME TYPE_NAME DOMAIN_ID,这3个参数是必须要输入的。inspect 订阅和输出支持DDS Xtypes类型的样本数据原创 2022-02-18 19:03:08 · 417 阅读 · 0 评论 -
OpenDDS工具之二(repoctl)
DCPSInfoRepo集中发现服务,作为一个提供pub和sub匹配的协调器程序,肯定存在单点失效的问题,于是,联邦服务Federation就出现了。1)主DCPSInfoRepo集中发现服务2)从DCPSInfoRepo集中发现服务那么,对于已经分别启动的DCPSInfoRepo集中发现服务,如何实现他们直接的联邦功能呢?repoctl工具,就派上用场了。repoctl工具,就是针对相互独立的DCPSInfoRepo集中发现服务或者是已经形成联邦Federation的DCPSInfoRepo集中发原创 2022-02-09 18:40:17 · 1488 阅读 · 0 评论 -
OpenDDS工具之一(dcpsinfo_dump)
(一)dcpsinfo_dump目的:用来输出集中发现服务DCPSInfoRepo资源库repo.ior中的所有核心OpenDDS::DCPS::DCPSInfo对象的基本描述(分类,如Participant、Topic、Publication、Subscription)。基本原理: 通过读取repo.ior文件中的IOR格式串,转换为CORBA::Object对象,再通过RPC调用dump_to_string方法,获取到DCPSInfoRepo服务进程的rep...原创 2022-02-08 18:15:18 · 746 阅读 · 0 评论 -
Windows平台编译和运行OpenDDS3.19
(一)工具和组件(二)代码下载(三)环境准备(四)编译4.1 编译ACE+TAO_6.5.164.2 编译OpenDDS3.19(五)运行测试实例 5.1基于DCPSInfoRepo集中发现(本地资源库repo.ior)的发布订阅5.2基于RTPS对等发现(rtps.ini)的发布订阅原创 2022-01-18 09:01:11 · 764 阅读 · 0 评论 -
OpenDDS的GUID的来龙去脉
OpenDDS中,所有核心实体对象都以GUID来进行标示,这个GUID和普通的GUID(Globally Unique Identifier,UUID)有一定的区别,也就是说由OpenDDS内部自行定义和维护的。 根据GUID的字符串,就能看懂在OpenDDS中的实体含义,举例如下:(1)01030000.00000800.00000003.00000102,0x0103表示为OpenDDS产品商,0x00000800表示FedertorId=2048,0x000000...原创 2021-12-30 17:30:53 · 345 阅读 · 0 评论 -
OpenDDS内部关键的idl文件(DCPS)
DdsDcpsCore.idl,定义了DCPS模块所需要的各种通讯报文(即DCPS层所需要的结构体),有助于了解和深入掌握DCPS层的含义。 DCPS以数据为中心的发布订阅层,共包含了16个idl文件,将分别列举和解释说明:DdsDcps.idl DdsDcpsConditionSeq.idl DdsDcpsCore.idl DdsDcpsDataReaderSeq.idl DdsDcpsDomain.idl DdsDcpsGuid.idl DdsDcpsI...原创 2021-12-24 09:21:28 · 1480 阅读 · 0 评论 -
OpenDDS内部关键的idl文件(RTPS)
RtpsCore.idl,定义了RTPS对等发现模块所需要的各种内部通讯报文(即RTPS库所需要的结构体),有助于了解和深入掌握RTPS对等发现层的含义。#include "dds/DdsDcpsInfoUtils.idl"module OpenDDS { module RTPS { typedef octet OctetArray2[2]; typedef octet OctetArray4[4]; /* A list of filters tha...原创 2021-12-24 09:18:09 · 663 阅读 · 0 评论 -
OpenDDS和RTI DDS内置数据类型的互联互通测试
作为DDS规范的一部分,基于DDS传输的数据包都是需要预先定义idl结构体,编译成DDS能识别的类和对应的*DataReader和*DataWriter对象,才能进行相应的write和take(或read)。#define PRES_TYPE_PLUGIN_BUILTIN_TYPE_STRING_TYPE_NAME "DDS::String"#define PRES_TYPE_PLUGIN_BUILTIN_TYPE_OCTETS_TYPE_NAME "DDS::Octets"#def...原创 2021-12-10 20:09:31 · 2085 阅读 · 0 评论 -
OpenDDS互操作性测试(Interoperability)
OpenDDS是OMG组织颁布DDS(Data Distribution Service,数据分发服务)规范的一套开源的C++实现,由OCI组织提供,可免费下载和使用,下载地址OpenDDS。------------------------------------------------------------------------------------------------------------------------OpenDDS is an open ...原创 2021-12-10 19:02:52 · 1854 阅读 · 0 评论 -
DDS多域配置实例
[common] DCPSGlobalTransportConfig=$file ORBDebugLevel=0 DCPSDebugLevel=0 DCPSTransportDebugLevel=0 ORBLogFile=dds.log [domain/0] DiscoveryConfig=fast_rtps0 DefaultT...原创 2018-07-23 19:00:13 · 707 阅读 · 0 评论