Roscpp中构造函数与析构函数及在无人机串口通信应用

本文主要是介绍Roscpp中构造函数与析构函数及在无人机串口通信应用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 概念辨析

构造函数

作用:初始化,在创建对象时会自动调用,有点像Python中的 __init__ 方法
特点:命名为class命名,在public中声明。

析构函数

作用:完成释放前的一些清理工作。
特点:命名为~+class命名,在public中声明。

调用顺序

栈的顺序,先构造的后析构。

2. 编写示例

ROScpp中在include文件夹下的.h头文件中声明class类别。
以一个无人机串口通信代码为例:

class turn_on_robot
{public:turn_on_robot(); //构造函数~turn_on_robot(); //析构函数void Control();//循环控制代码serial::Serial Stm32_Serial; //声明串口对象 private:...
};

3. 在ROScpp中的应用

以无人机串口通信代码为例
在构造函数中,通常要进行Node节点初始化、参数设定、话题设定、打开串口等。

turn_on_robot::turn_on_robot()
{ros::NodeHandle private_nh("~");//参数设定Cmd_Vel_Callbackprivate_nh.param<std::string>("usart_port_name", usart_port_name, "/dev/ttyTHS1"); //固定串口private_nh.param<int>("serial_baud_rate", serial_baud_rate, 115200); //和下位机底层波特率115200 不建议更高的波特率了//订阅1个话题Cmd_Vel_Sub = n.subscribe("/switch_cmd", 100, &turn_on_robot::Cmd_Vel_Callback, this);//接收阿克曼类型的数据//初始化串口try{Stm32_Serial.setPort(usart_port_name);//选择哪个口,如果选择的口没有接串口外设初始化会失败Stm32_Serial.setBaudrate(serial_baud_rate);//设置波特率serial::Timeout _time = serial::Timeout::simpleTimeout(2000);//超时等待Stm32_Serial.setTimeout(_time);Stm32_Serial.open();//串口开启}
}

在析构函数中,通常要进行数据处理、关闭串口等操作

turn_on_robot::~turn_on_robot()
{Send_Data.tx[0]=...catch (serial::IOException& e)   {ROS_ERROR_STREAM("Unable to send data through serial port"); //如果try失败,打印错误信息}Stm32_Serial.close();//关闭串口  ROS_INFO_STREAM("Shutting down");//close 
}

第一部分内容参考构造函数与析构函数

这篇关于Roscpp中构造函数与析构函数及在无人机串口通信应用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604456

相关文章

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Python中re模块结合正则表达式的实际应用案例

《Python中re模块结合正则表达式的实际应用案例》Python中的re模块是用于处理正则表达式的强大工具,正则表达式是一种用来匹配字符串的模式,它可以在文本中搜索和匹配特定的字符串模式,这篇文章主... 目录前言re模块常用函数一、查看文本中是否包含 A 或 B 字符串二、替换多个关键词为统一格式三、提

MySQL count()聚合函数详解

《MySQLcount()聚合函数详解》MySQL中的COUNT()函数,它是SQL中最常用的聚合函数之一,用于计算表中符合特定条件的行数,本文给大家介绍MySQLcount()聚合函数,感兴趣的朋... 目录核心功能语法形式重要特性与行为如何选择使用哪种形式?总结深入剖析一下 mysql 中的 COUNT

Java MQTT实战应用

《JavaMQTT实战应用》本文详解MQTT协议,涵盖其发布/订阅机制、低功耗高效特性、三种服务质量等级(QoS0/1/2),以及客户端、代理、主题的核心概念,最后提供Linux部署教程、Sprin... 目录一、MQTT协议二、MQTT优点三、三种服务质量等级四、客户端、代理、主题1. 客户端(Clien

MySQL 中 ROW_NUMBER() 函数最佳实践

《MySQL中ROW_NUMBER()函数最佳实践》MySQL中ROW_NUMBER()函数,作为窗口函数为每行分配唯一连续序号,区别于RANK()和DENSE_RANK(),特别适合分页、去重... 目录mysql 中 ROW_NUMBER() 函数详解一、基础语法二、核心特点三、典型应用场景1. 数据分

C++11委托构造函数和继承构造函数的实现

《C++11委托构造函数和继承构造函数的实现》C++引入了委托构造函数和继承构造函数这两个重要的特性,本文主要介绍了C++11委托构造函数和继承构造函数的实现,具有一定的参考价值,感兴趣的可以了解一下... 目录引言一、委托构造函数1.1 委托构造函数的定义与作用1.2 委托构造函数的语法1.3 委托构造函

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

Python get()函数用法案例详解

《Pythonget()函数用法案例详解》在Python中,get()是字典(dict)类型的内置方法,用于安全地获取字典中指定键对应的值,它的核心作用是避免因访问不存在的键而引发KeyError错... 目录简介基本语法一、用法二、案例:安全访问未知键三、案例:配置参数默认值简介python是一种高级编

python 常见数学公式函数使用详解(最新推荐)

《python常见数学公式函数使用详解(最新推荐)》文章介绍了Python的数学计算工具,涵盖内置函数、math/cmath标准库及numpy/scipy/sympy第三方库,支持从基础算术到复杂数... 目录python 数学公式与函数大全1. 基本数学运算1.1 算术运算1.2 分数与小数2. 数学函数