这里以一个智能车代码工程为例,抽取串口通信部分代码
在头文件中,进行串口头文件的包含
#include 在类的定义中,什么一个 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(usart_port_name, usart_port_name, /dev/stm32_controller); //fixed serial port number //固定串口号 private_nh.param (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 //串口开启成功提示 }
自恢复保险丝需要多久恢复?自恢复保险丝坏了是否可以跨接?
校源行|北京交通大学开放原子开源社团成立大会成功举办
红外热成像机芯组件详解
为什么传感器作为可穿戴设备的重要组成部分?
kei教程之新建软件文件
智能车ROS与STM32串口通信代码
二极管为何会单向导通
湿度检测报警器的制作方法
PdigilentRGB OLED显示屏简介
AR绘画应用再出新招,Artopia可在任何地方隐藏3D绘画
手机信号不行时如何才能快速提升手机信号详细方法说明
关于保险丝,这里有一些必知其实用的小常识
物理传感器的多样化应用_未来物理传感器面临的挑战
Netflix向电话应用程序添加了一项新功能
2022“安全文明校园”研讨会|强化信息化管理,共建安全文明校园
关于智能工厂管理系统的特征介绍
如何在CentOS 8设置NFS v4服务器
小米5X怎么样?小米5、小米5C和小米5X谁更值得买?小米5、小米5C和小米5X区别对比评测
CES 2018将现全球首个MEMS扬声器
德国大众汽车集团上线工业4.0模式,3万台机器人50秒可造出车