树莓派 c语言 uart,ROS下树莓派USB串口通信

做工程时需要在树莓派进行串口通信。具体为接收到某个ROS的topic数据后,向串口下发数据。代码编写有两种方法。

方法一:借助serial库

1、运行环境为ubuntu,首先安装serial库:

sudo apt-get install serial

2、配置编写的package中的CMakeLists.txt

在find_package中添加serial;

3、给设备的USB端口权限;

4、代码范例:

manipulator_ros_serial.cpp

#include #include #include #include #define sBUFFERSIZE 7

unsigned char s_buffer[sBUFFERSIZE];

using namespace std;

serial::Serial ser;

//trans different serial cmds according to different action_cmd(joystick button)

void write_action_cmd(const std_msgs::Int64& action_cmd){

memset(s_buffer,0,sizeof(s_buffer));

if( 1 == action_cmd.data ){

s_buffer[0] = 0x55;

s_buffer[1] = 0x55;

s_buffer[2] = 0x05;

s_buffer[3] = 0x06;

s_buffer[4] = 0x01;

s_buffer[5] = 0x01;

s_buffer[6] = 0x00;

//std::cout

nh_private.param("baudrate", baudrate_, 9600);

std::cout<

5、USB端口号和波特率都能通过launch文件配置。

manipulator_ros_serial.launch

方法二:借助boost

1、运行环境为raspbian,raspbian没有serial库;

2、代码范例

manipulator_ros.h

#ifndef MANIPULATOR_SERIAL_H_

#define MANIPULATOR_SERIAL_H_

#include #include #include #include #include boost::asio::io_service io;

boost::asio::serial_port sp(io);

namespace manipulator_serial_namespace{

class ManipulatorSerial{

public:

ManipulatorSerial();

~ManipulatorSerial();

ros::Subscriber write_sub;

//boost::asio::io_service io;

void write_action_cmd(const std_msgs::Int64& action_cmd);

};

}

#endif

manipulator_serial.cpp

#include #define sBUFFERSIZE 7

unsigned char s_buffer[sBUFFERSIZE];

using namespace std;

using namespace boost::asio;

namespace manipulator_serial_namespace{

ManipulatorSerial::ManipulatorSerial(){

ros::NodeHandle nh;

ros::NodeHandle nh_private("~");

std::string serial_port_;

int baudrate_;

nh_private.param("serial_port", serial_port_, "/dev/ttyUSB0");

nh_private.param("baudrate", baudrate_, 9600);

std::cout<

5、USB端口号和波特率都能通过launch文件进行配置。

manipulator_serial.launch

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值