在头文件中,进行串口头文件的包含
#include < serial/serial.h >
在类的定义中,什么一个 serial 类的实例
serial::Serial Stm32_Serial; //声明串口对象
并且在类的定义中,声明两个结构体,用来存储接收和要发送的数据
RECEIVE_DATA Receive_Data; //The serial port receives the data structure //串口接收数据结构体
SEND_DATA Send_Data; //The serial port sends the data structure //串口发送数据结构体
在类的构造函数中,配置这个串口对象的参数
private_nh.param< std::string >("usart_port_name", usart_port_name, "/dev/stm32_controller"); //Fixed serial port number //固定串口号
private_nh.param< int > ("serial_baud_rate", serial_baud_rate, 115200); //Communicate baud rate 115200 to the lower machine //和下位机通信波特率115200
这两个参数是在launch文件中设置的,代码里进行参数的读取。
usart_port_name 设置的USB设备别名
serial_baud_rate 串口通信的波特率要和stm32设置的一致
try
{
//Attempts to initialize and open the serial port //尝试初始化与开启串口
Stm32_Serial.setPort(usart_port_name); //Select the serial port number to enable //选择要开启的串口号
Stm32_Serial.setBaudrate(serial_baud_rate); //Set the baud rate //设置波特率
serial::Timeout _time = serial::Timeout::simpleTimeout(2000); //Timeout //超时等待
Stm32_Serial.setTimeout(_time);
Stm32_Serial.open(); //Open the serial port //开启串口
}
catch (serial::IOException& e)
{
ROS_ERROR_STREAM("car_robot can not open serial port,Please check the serial port cable! "); //If opening the serial port fails, an error message is printed //如果开启串口失败,打印错误信息
}
初始化串口配置,并开启串口
设置的参数包括:
- 要开启的串口号
- 设置波特率
- 超时等待
判断串口是否被打开,打开输出终端打印信息
if(Stm32_Serial.isOpen())
{
ROS_INFO_STREAM("car_robot serial port opened"); //Serial port opened successfully //串口开启成功提示
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
STM32
+关注
关注
2270文章
10895浏览量
355730 -
串口通信
+关注
关注
34文章
1624浏览量
55508 -
ROS
+关注
关注
1文章
278浏览量
17001
发布评论请先 登录
相关推荐
评论