DDS技术分享(一)

1.DDS简介
DDS定义:Data Distribution Service 数据分发服务,是新一代分布式实时通信中间件协议,采用发布/订阅体系架构,强调以数据为中心,DDS提供了Qos的策略可以确保通讯信号的监测功能。

在汽车领域,2018年Adaptive AUTOSAR引用了DDS,作为可选择的通信方式之一。
DDS是开源的库,但是其开源的库比较庞大,在汽车行业引入DDS需要进行配置和筛减以达到满足车载通讯的目的,因此这这个工具会在很多的行业进行了适配。所以会有供应商来适配DDS的产品,作为第二供应商提供DDS的平台通讯和搭建。

2.DDS是一个以数据为中心的中间件协议和API标准,数据通过Topic进行标识。发布和接收都是以这种主题消息发布的方式完成通讯的。
在这里插入图片描述
如图所示的方式通讯。
在代码层面,通常这样去设置:
pub.topic.topicKind = NO_KEY;
pub.topic.topicName = “Topic”;
pub.topic.topicDataType = “StructType”;
pub.topic.historyQos.kind = KEEP_LAST_HISTORY_QOS;
pub.topic.historyQos.depth = 30;
pub.topic.resourceLimitsQos.max_samples = 50;
pub.topic.resourceLimitsQos.allocated_samples = 20;
pub.qos.m_reliability.kind = RELIABLE_RELIABILITY_QOS;
pub.qos.m_durability.kind = TRANSIENT_LOCAL_DURABILITY_QOS;
解释一下:
topicName:就是所需要发布的话题名称
topicDataType:是这个话题所设置的话题数据结构,注意这个结构式在IDL文件中设置的。
关于IDL的设置,会在下一章节讲解,简单来说就是自动生成代码的设置文件,会自动生成所需代码,生成的代码是接口代码,开发人员可以使用这些接口文件调用进行代码实现。
historyQos:这是Qos通信设置,用来设置通信的状态等
m_reliability :用来设置Qos状态。
以上是发送端的代码。
sub.topic.topicKind = NO_KEY;
sub.topic.topicName = “Topic”;
sub.topic.topicDataType = “StructType”;
sub.topic.historyQos.kind = KEEP_LAST_HISTORY_QOS;
sub.topic.historyQos.depth = 30;
sub.topic.resourceLimitsQos.max_samples = 50;
sub.topic.resourceLimitsQos.allocated_samples = 20;
sub.qos.m_reliability.kind = RELIABLE_RELIABILITY_QOS;
sub.qos.m_durability.kind = TRANSIENT_LOCAL_DURABILITY_QOS;
以上是接收端的代码。

下一章讲解IDL。。。 。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值