ROS2串口通讯serial库(适用于humble版本)(本文章已被淘汰)

要的串口操作的API介绍在这里:serial: serial::Serial Class Reference (wjwwood.io)

这个库看起来还不错,还有个专门的网站,串口库就用这个吧

但是我们不是直接利用上面这个东西,而是使用的是根据这个改写的一个针对ros2的一个serial库,这个serial库是根据上面这个库改写来的,ros2的库在这里:https://github.com/ZhaoXiangBox/serial/tree/foxy/include/serial

关于这个ros2库相关的使用方式的例子可以参考下面这个博客:

需要注意的是:这个博客并不完整,应该是无法运行的:例如这个很重要的东西没有:

install(TARGETS
  talker              #这个是可执行文件名称例如talkerexe
  DESTINATION lib/${PROJECT_NAME})

 还有最后需要编译的时候需要这样:

cd serial_demo
colcon build --packages-select serial_demo
#这个格式应该都知道了:colcon build --packages-select 包名
#还有就是ros2一再强调的需要source
source install/setup.bash
#或者干脆把这一句放到~/.bashrc的末尾去

 

https://blog.csdn.net/weixin_53035484/article/details/128135356

如果网页太慢那个serial库可以从这里下载:【免费】ros2-humble串口通信serial库资源-CSDN文库 

这个压缩包下载以后是这个样子的:

网页结构是这个样子的:

可以看到他们的结构是完全一样的,内容应该也是完全一样的 

(我并非计算机专业的,所以如果有什么错误,不要取笑)

ROS2中使用C++进行串口通信,通常需要借助第三方来实现,因为ROS2本身不提供直接的串口通信功能。一个常用的是`serial`,这是一个跨平台的串口通信。以下是使用`serial`ROS2 C++节点进行串口通信的基本步骤: 1. 首先,需要在ROS2工作空间中安装`serial`。可以通过管理器(如vcpkg或apt-get)或者从源代码编译安装。 2. 在你的ROS2 C++项目中,含`serial`的头文件,并在你的节点代码中创建一个`serial::Serial`对象。 3. 配置串口参数,如端口名称、波特率、数据位、停止位和校验方式等。 4. 打开串口,进行读写操作。 5. 使用完毕后,关闭串口。 6. 可以通过ROS2节点的生命周期回调来控制串口的打开和关闭,确保资源的正确管理。 下面是一个简单的代码示例,展示如何在ROS2 C++节点中使用`serial`初始化串口并读取数据: ```cpp #include <rclcpp/rclcpp.hpp> #include <serial/serial.h> class SerialCommNode : public rclcpp::Node { public: SerialCommNode() : Node("serial_comm_node") { // 初始化串口 serial::Serial ser("/dev/ttyUSB0", 9600, serial::Timeout::simpleTimeout(1000)); // 打开串口 if (ser.isOpen()) { RCLCPP_INFO(get_logger(), "Serial port is open"); } else { RCLCPP_ERROR(get_logger(), "Failed to open serial port"); return; } // 读取数据 std::string read_data = ser.read(ser.available()); RCLCPP_INFO(get_logger(), "Read data: %s", read_data.c_str()); // 关闭串口 ser.close(); } }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geniusNMRobot专家

觉得有帮助,请给2块钱谢谢

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值