跳转至

DDS 简介

DDS(全称 Data Distribution Service 数据分发服务),是一个中间件,由OMG发布的分布式通信规范,采用发布/订阅模型,提供多种QoS服务质量策略,以保障数据进行实时、高效、灵活地分发,可满足各种分布式实时通信应用需求。

pnd_sdk_python 是在DDS上做了一层封装,支持 DDS 组件的 Qos 配置,对应用开发提供简单的封装接口,并实现了基于 DDS Topic 的 RPC 机制,适用于在 Adam 内部进程间以及 Adam 外部与内部的进程间通过发布/订阅和请求/响应两种方式完成不同场景下的数据通信。


接口说明

pndbotics_sdk_py.core.channel.ChannelPublisher

ChannelPublisher 类为指定类型的消息实现了消息发布功能。

类名 构造函数
ChannelPublisher ChannelPublisher(self, name: str, type: Any)
函数名 Init
函数原型 def Init(self)
功能描述 初始化 Channel,准备发送消息。
参数 无
返回值 无
备注 初始化通道的写入器。确保通道已准备好发送消息。
函数名 Close
函数原型 def Close(self)
功能描述 关闭通道写入器,停止发布消息。
参数 无
返回值 无
备注 调用 Close 后,发布器在重新初始化之前无法再写入任何消息。
函数名 Write
函数原型 def Write(self, sample: Any, timeout: float = None)
功能描述 发送指定类型的消息(样本)。
参数 sample: Any (待写入的数据,可以是任何 Python 对象)
返回值 self.__channel.Write 的返回值
备注 如果提供了 timeout 参数,它表示等待写入操作完成的最长时间。

pndbotics_sdk_py.core.channel.ChannelSubscriber

ChannelSubscriber 实现了指定类型消息的订阅功能。

类名 构造函数
ChannelSubscriber ChannelSubscriber(self, name: str, type: Any)
函数名 Init
函数原型 def Init(self, handler: Callable = None, queueLen: int = 0)
功能描述 初始化通道,设置读取器和处理器,并可选择指定队列长度。
参数 handler: Callable = None (可选,用于处理消息的回调函数)
queueLen: int = 0 (可选,指定队列长度的整数)
返回值 无
备注 仅初始化通道一次(使用 self.__inited 标志防止重复初始化)。如果 handler 为 None,则使用默认处理器。
函数名 Close
函数原型 def Close(self)
功能描述 关闭与通道关联的读取器,并将其标记为未初始化状态。
参数 无
返回值 无
备注 此函数停止从通道读取并清理状态。调用 Close 后,必须重新初始化通道才能再次使用。
函数名 Read
函数原型 def Read(self, timeout: int = None)
功能描述 从通道读取数据,带有一个可选的超时参数。
参数 timeout: int = None (可选,读取操作的超时时间,单位为秒)
返回值 取决于通道 Read 方法的实现,通常是读取到的数据,如果超时则可能返回 None。
备注 如果未提供 timeout 参数,通常表示读取操作没有超时限制。

pndbotics_sdk_py.core.channel.ChannelFactoryInitialize

此函数用于初始化通道环境。

函数名 ChannelFactoryInitialize
函数原型 def ChannelFactoryInitialize(id: int = 0, networkInterface: str = None)
功能描述 初始化 ChannelFactory,以在指定域中创建和管理通道。
参数 id: int = 0 (DDS 参与者的域 ID)
networkInterface: str = None (可选,用于通道的网络接口名称)
返回值 如果初始化失败则引发异常,否则返回 None。
备注 确保在使用通道之前创建 DDS 域和参与者。