Communication模块
简介
Communication作为通信总线,为应用屏蔽底层通信链路细节,提供统一的通信接口。支持多种通信模式、多个平台,使应用开发者能够快速搭建应用和解决方案。

功能特性
通信模式
COM模块以接口的形式提供三种不同的通讯模式分别为:publish/subscribe,service,action
通信协议
communication 本身具有可扩展性,可以集成不同的通信协议,目前支持如下通信协议:zmq tcp,zmq ipc,zmq epgm,intra,bif-sdio,shared memory,PCIe,Fast-DDS,hybrid,composite。
COM模块的安装和编译
编译
这里主要以ubuntu为例
communication目录下:
安装
执行下面命令安装目标文件到 bin 目录下:
配置文件
使用示例
这里的示例以C++为基础
Pub sub通信模式示例
pub-sub 模式是发布订阅模式,subscriber 订阅某个主题(topic),每当 publisher 发布该主题的消息,subscriber 就会收到对应消息,该模式是一种松耦合的通信模式,publisher 和 subscriber 是 M:N 的关系。
具体代码:
example/pub_sub_example/publisher_example.cpp
example/pub_sub_example/subscriber_example.cpp
proto message
example/protocol_msg

protocolC工具通过protol文件生成消息定义和序列号功能,在这里就是pb.cc pb.h文件

以zmq iqc通信为例:
在communication.json文件中配置相关的信息
调用 hobot::communication::Init(“communication.json”) 接口
创建 pub 通信实例
定义 subscriber 回调函数,用来处理订阅的消息,创建 sub 通信实例
编译

利用example下的build.py脚本进行编译
编译完成后会生成build目录,里面有两个可执行程序publisher和subscriber:

执行./subscriber 4 4代表通讯使用的协议号,4号为zmq ipc。
sub成功执行,等待中:

执行./publisher 4:

可以看到这边sub成功接收,并调用回调函数输出信息:


