博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ros与下位机通信常用的c++ boost串口应用--22
阅读量:7294 次
发布时间:2019-06-30

本文共 2347 字,大约阅读时间需要 7 分钟。

摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/

 

一.首先移植c++ boost 库:

1. 先去 下载最新的Boost版本, 我下载的是boost_1_6_0版本, 解压.

2. 进入解压后目录: cd boost_1_6_0, 执行下面的命令:

$ ./bootstrap.sh --prefix=path/to/installation/prefix

prefix 的值是你希望安装boost的路径, 不开启此参数的话默认安装在 /usr/local 下. 我安装在 /home/xzz/boost_1_56_0目录下:

$ ./bootstrap.sh --prefix=/home/xzz/boost_1_6_0

Note: 家目录不要用 ~ 表示, 编译脚本不识别 ~, 会在当前目前新建一个名为 '~' 的目录.

接着执行:

$ ./b2 install

这条命令把boost的头文件文件夹 include/ 安装在prefix定义的目录中, 并且会编译所有的boost模块, 并将编译好的库文件夹 lib/ 也放在prefix定义的目录中. 所有如果成功编译的的话, prefix目录即 /home/xzz/boost_1_56_0目录应当包含有 include/ 和 lib/ 两个文件夹.

3. 测试,在你得ros工作空间的任意功能包中src/目录下,创建boost_bode.cpp文件,内容如下:

先测试只依赖头文件的功能模块:

ASIO不仅支持网络通信,还能支持串口通信。要让两个设备使用串口通信,关键是要设置好正确的参数,这些参数是:波特率、奇偶校验 位、停止位、字符大小和流量控制。两个串口设备只有设置了相同的参数才能互相交谈。

ASIO提供了boost::asio::serial_port类,它有一个set_option(const SettableSerialPortOption& option)方法就是用于设置上面列举的这些参数的,其中的option可以是:

  • serial_port::baud_rate 波特率,构造参数为unsigned int
  • serial_port::parity 奇偶校验,构造参数为serial_port::parity::type,enum类型,可以是none, odd, even。
  • serial_port::flow_control 流量控制,构造参数为serial_port::flow_control::type,enum类型,可以是none software hardware
  • serial_port::stop_bits 停止位,构造参数为serial_port::stop_bits::type,enum类型,可以是one onepointfive two
  • serial_port::character_size 字符大小,构造参数为unsigned int
#include 
#include
#include
using namespace std;using namespace boost::asio;int main(int argc, char* argv[]){ io_service iosev; //节点文件 serial_port sp(iosev, "/dev/ttyUSB0"); // 设置参数 sp.set_option(serial_port::baud_rate(115200)); sp.set_option(serial_port::flow_control(serial_port::flow_control::none)); sp.set_option(serial_port::parity(serial_port::parity::none)); sp.set_option(serial_port::stop_bits(serial_port::stop_bits::one)); sp.set_option(serial_port::character_size(8)); // 向串口写数据 write(sp, buffer("Hello world", 12)); // 向串口读数据 char buf[1]; read(sp, buffer(buf));      printf("buf[0] = %c\n",buf[0]); iosev.run(); return 0;}

添加编译选项:在你得功能包中的CMakeLists.txt 文件中添加:

add_executable(boost_node src/boost_node.cpp) target_link_libraries(boost_node ${catkin_LIBRARIES}

编译boost测试程序:在你得工作空间的顶层目录下

catkin_make

将你的电通和另一台电脑通过串口连接。运行ros节点,另一台电脑通过串口发送数据:接收如下:

root@zxwubuntu-Aspire-V3-572:rosrun odom_tf_package boost_node buf[0] = c
你可能感兴趣的文章
蓝桥杯:基础练习 特殊的数字
查看>>
Cairngorm3中文简介
查看>>
数据结构练手05 关于堆的up策略和down策略实现
查看>>
python-排序算法 冒泡和快速排序
查看>>
JAVA jdbc(数据库连接池)学习笔记(转)
查看>>
c#调用webservices
查看>>
CentOS 网络设置修改
查看>>
删除重复项,保留最大值
查看>>
项目开发中的一些注意事项以及技巧总结
查看>>
JDK环境配置记录
查看>>
模型的深度探究
查看>>
codeforces Round #354 (Div. 2) A
查看>>
自用VS Code 上的Markdown 编辑器css
查看>>
判断字符串中是否含有汉字及其汉字的个数
查看>>
mysql Can't connect to local MySQL server through socket 问题解决
查看>>
linux 技术网站
查看>>
jQuery使用示例详解
查看>>
Swift 数据类型
查看>>
数据结构 queue
查看>>
Go语言中的方法(Method Sets)
查看>>