昨晚直播小鱼搞了个开源库之FishProtocol,目前已经两颗星

网友投稿 314 2022-11-05


昨晚直播小鱼搞了个开源库之FishProtocol,目前已经两颗星

最近没怎么发文章,主要原因是推进FishBot的开发,小鱼也经常在B站直播干活,昨天周末直播了十几个小时的时间,把FishBot验证板的原理图、PCB搞完了,过两天写个文章给大家汇报下进度。

在写FishBot的SDK时,小鱼打算以多种方式进行数据的通信的,包括串口、UDP、TCP等,所以就对通信模块进行了封装,实现简单的更换配置,完成协议的切换。

因为前段时间总有小伙伴问如何在ROS2中调用串口,就想着要不把这部分代码抽出来给大家,二来后续的更新和维护可以从FishBot中抽离出来,方便更多的小伙伴一起Work。同时小鱼顺手写了一个ROS2的例程,当然还有g++和CMake版本的使用样例代码。

开源地址:apt install libboost-devgit clone cd fish_protocol && mkdir build && cd buildcmake .. && sudo make install # 将安装到系统库

2.快速使用/串口通信

fish_protocol::ProtocolConfig proto_config;proto_config.protocol_type_ = PROTOCOL_TYPE::SERIAL;proto_config.serial_baut_ = 115200;proto_config.serial_address_ = "/dev/ttyS12";// 初始化auto protocol = GetProtocolByConfig(proto_config);// 发送数据protocol->ProtocolSendRawData("Hello FishBot!");// 接收数据protocol->SetDataRecvCallback([](const std::string& data) -> void { std::cout<<"recv"<ProtocolDestory();

3.快速上手/UDPServer通信

fish_protocol::ProtocolConfig proto_config;proto_config.protocol_type_ = PROTOCOL_TYPE::UDP_SERVER;proto_config.udp_server_ip_ = "0.0.0.0";proto_config.udp_server_port_ = 3474;// 初始化auto protocol = GetProtocolByConfig(proto_config);// 发送数据protocol->ProtocolSendRawData("Hello FishBot!");// 接收数据protocol->SetDataRecvCallback([](const std::string& data) -> void { std::cout<<"recv"<ProtocolDestory();

4.在ROS2中使用-串口通信

#include "fish_protocol/fish_protocol.h"#include "rclcpp/rclcpp.hpp"int main(int argc, char** argv) { /* 初始化rclcpp */ rclcpp::init(argc, argv); /*产生一个node_01的节点*/ auto node = std::make_shared("example_fish_protocol"); // 打印一句自我介绍 RCLCPP_INFO(node->get_logger(), "example_fish_protocol节点已经启动."); fish_protocol::ProtocolConfig proto_config; proto_config.protocol_type_ = fish_protocol::PROTOCOL_TYPE::SERIAL; proto_config.serial_baut_ = 115200; proto_config.serial_address_ = "/dev/ttyS12"; // 初始化 auto protocol = GetProtocolByConfig(proto_config); // 发送数据 protocol->ProtocolSendRawData("Hello FishBot!"); // 接收数据 protocol->SetDataRecvCallback([](const std::string& data) -> void { std::cout << "recv" << data << std::endl; }); // 销毁 protocol->ProtocolDestory(); /* 运行节点,并检测退出信号 Ctrl+C*/ rclcpp::spin(node); /* 停止运行 */ rclcpp::shutdown(); return 0;}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:电工证查询API(电工证查询网站官方网网上查询)
下一篇:学信网学籍查询API(学信网学籍查询完整截图)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~