在ROS中与其他器件使用十六进制串口通信

来源:互联网 发布:sql have count 编辑:程序博客网 时间:2024/06/01 08:09

      第一次自己写博客,有什么问题请@我。

首先非常感谢一位网友的博客(点击打开链接),他在ros上使用了串口通信,不过使用的是字符串,因为项目需要,我在其基础了改成十六进制,并发布接收十六进制数组主题。

需要特别说明的是,你根据上面这个博客(点击打开链接)在进行自定义你的消息时,如果是同一工作空间

add_dependencies(test1 test_msgs_gencpp)#调用同一工作空间的自定义消息类型时注明依赖关系,防止发生头文件找不到报错
在添加上面一行代码后还找不到头文件时,需要在CMakeLists.txt 文件中添加这行代码,否则找不到msg.h文件 


(点击打开链接)微笑我在这里卡了好久,一直找不到自己生成信息的.h文件,后来才发现的。

现在说到主题了,如何传输十六进制数。

首先 定义自定义.msg文件。

uin8[] serial
此类数组实际上是vector类型,它并没有定义长度,你可以使用几种方法赋值,具体参考(点击打开链接)。vector类型还有一个很好的文章是(点击打开链接)写的很nice,收益很多。从串口读写数据的函数为serial包中的
 ser.read(r_buffer,rBUFFERSIZE);
 ser.write(r_buffer,rBUFFERSIZE);
具体可参考链接(点击打开链接)

还有一个小的知识点,如果你编译时找不到catkin包中安装的头文件,即就是你在catkin-ws中安装了serial包,但是在安装其他包时需要serial/serial.h的头文件却找不到时,需要在CMakeLists.txt 文件中添加这行代码,否则找不到catkin空间中的包

Include_directiones(catkin_include_dirs)

总结一下,学好C++,感谢各位博主。大笑

最后放上我的源码链接(点击打开链接)

原创粉丝点击