跳转至

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 域和参与者。