第一次自己写博客,有什么问题请@我。
首先非常感谢一位网友的博客(点击打开链接),他在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++,感谢各位博主。
最后放上我的源码链接(点击打开链接)