5003.c++定义hpp文件
c++定义hpp文件
c++ 定义hpp文件,注意事项方法定义实现必须放在类中,否则会出现重复定义情况。
/********************************************************************************************************* SerialPort.hpp 自定义出串口类,运行平台linux操作系统.* 描述:实现串口的初始化.* 作者:xhome* 时间:2020/1/10*******************************************************************************************************/
#ifndef MAVLINK_DATALINK_SERIALPORT_HPP
#define MAVLINK_DATALINK_SERIALPORT_HPP#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <termios.h>
#include <unistd.h>
#include <stdio.h>
#include <string>
#include <iostream>
#include "mavlink.h"using namespace std;//串口操作类.
class SerialPort {public:SerialPort(string uart_name, speed_t baudrate){uartName = uart_name;speedBaud = baudrate;}public:/*** 功能: 打开设备文件* 参数: 无* 返回值: 文件描述符.* 作者:xhome* 时间:2020/1/10*/int open_serial_dev() {int fd_ = 0;if(uartName.length() == 0){cout << "devName is NULL." << endl;return -1;}fd_ = open(uartName.c_str(), O_RDWR);if(fd_ < 0){cout << uartName << " is opened failed." << endl;return -1;}else{cout << uartName << " is opened ok." << endl;}fd = fd_;return fd_;}int close_serial()//关闭串口设备文件.{close(fd);}/*** 功能: 串口初始化* 参数: fd 文件描述符* 作者: xhome* 时间: 2020/1/10*/void serial_init() //串口初始化.{if(fd < 0){cout << "serial_init failed ." << endl;}struct termios options;tcgetattr(fd, &options); //读取终端参数options.c_cflag |= ( CLOCAL | CREAD ); //忽略调试解调器线路状态,使用接受器options.c_cflag &= ~CSIZE; //清目前字符长度options.c_cflag &= ~CRTSCTS; //不实用RTS/CTS控制流options.c_cflag |= CS8; //字符长度设置为8options.c_cflag &= ~CSTOPB; //设置一个标志位options.c_iflag |= IGNPAR; //允许输入奇偶校验options.c_iflag &= ~(ICRNL | IXON); //回车不转换为换行,不允许输入时对XON/XOFF>options.c_oflag = 0;options.c_lflag = 0;options.c_cflag |= CBAUDEX; //设置特定波特率的标志位.cfsetispeed(&options, speedBaud); //设置波特率为115200cfsetospeed(&options, speedBaud);tcsetattr(fd,TCSANOW,&options); //设置终端参数cout << "serial_init ok." << endl;}/*** 读取串口消息.* 参数:message mavlink 标准消息结构体.* 作者:xhome* 时间:2020/1/15*/int read_message(mavlink_message_t &message){int result = 0;uint8_t ch;mavlink_status_t status;uint8_t msgReceived = false;result = read(fd, &ch, 1);if(result > 0){msgReceived = mavlink_parse_char(MAVLINK_COMM_0, ch, &message, &status);// check for dropped packetsif ( (lastStatus.packet_rx_drop_count != status.packet_rx_drop_count) ){printf("ERROR: DROPPED %d PACKETS\n", status.packet_rx_drop_count);unsigned char v= ch;fprintf(stderr,"%02x ", v);}lastStatus = status;}return msgReceived;}public:string uartName; //设备名称speed_t speedBaud; //设备波特率int fd; //文件描述符.mavlink_status_t lastStatus;};#endif //MAVLINK_EXAMPLE_SERIALPORT_HPP
5003.c++定义hpp文件相关推荐
- .h 与.hpp文件的区别
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译.而实现代码将直接 ...
- 什么是.hpp文件?
hpp(Header Plus Plus)头文件,顾名思义就是 .h 文件加上 .cpp 文件,在 boost 开源库中频繁出现,其实就是 .cpp 实现代码混入 .h 文件当中,定义和实现都包含在同 ...
- .h 与 .hpp 文件
hpp,顾名思义等于.h加上.cpp,在boost.Xerces等开源库中频繁出现,偶在机缘巧合之下,学得一招半式,遂记录如下,以供参考学习. hpp,其实质就是将.cpp的实现代码混入.h头 ...
- .hpp文件和.h文件的区别
hpp,顾名思义等于.h加上.cpp,在boost. Xerces等开源库中频繁出现,偶在机缘巧合之下,学得一招半式,遂记录如下,以供参考学习. hpp,其实质就是将.cpp的实现代码混入.h ...
- HLS第三十八课(xfopencv,H文件和HPP文件的使用)
常用的几个xfopencv的H文件和HPP文件的分析与使用. 常用的可综合的通用H文件. xf_common.h. common/xf_infra.h common/xf_structs.h comm ...
- C++ hpp 文件
一.hpp 干啥的? hpp,其实质就是将 .cpp 的实现代码混入 .h 头文件当中,即声明.定义和实现都包含在同一文件, 则该类的调用者只需要 include 该 hpp 文件即可,无需再将 cp ...
- C++ hpp文件的编写
hpp,顾名思义等于.h加上.cpp,在boost. Xerces等开源库中频繁出现,偶在机缘巧合之下,学得一招半式,遂记录如下,以供参考学习. hpp,其实质就是将.cpp的实现代码混入.h ...
- c++中什么时候使用.hpp文件
分文件编写类模板 类模板的声明和定义要写在一个.hpp文件中,声明和定义不可以分开,因为分文件的话,main.cpp中只引入.h,在类模板进行二次编译的时候,无法找到类的定义,会出错.所以要将其声明和 ...
- .h与.hpp文件的区别
c++中的.hpp文件 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再 将cpp加入到project中 ...
最新文章
- 输入输出 原理 java_java输入输出,书写规范,运行原理,跨平台原理(复习)...
- ADAS在车载导航设备上的应用
- vue php axios 跨域,在vue项目中,使用axios跨域处理
- RxJava 2.x 教程
- # command-line-arguments .\main.go:72:23: undefined: initApp
- 服务器电脑 默认虚拟内存,服务器是否需要设置虚拟内存
- 各位,请慎用 subList!原来这么多坑!!
- 【数据结构】线性表的链式存储结构
- 计算机文言,中国最具有概括性的文言文文字?本人学计算机编程的
- C语言斐波那契数列解析
- No toolchains found in the NDK toolchains folder for ABI with prefix:XXX
- 用matlab求roc曲线的面积Auc,sklearn计算ROC曲线下面积AUC
- win10误删的注册表能还原吗_win10自带注册表恢复方法 win10注册表误删如何修复...
- [python][project][爬虫] 时光网抓取信息
- pureftpd 配置 mysql_Pure-ftp配置文件详解
- flutter开发的即时聊天应用
- opencv 图像拼接和图像融合技术
- 用turtle作画玩一玩吧
- 在uniapp中使用element-ui组件
- 交换机基本原理与应用
热门文章
- jsp和mysql答辩_jsp+servletmysql 毕业论文答辩理系统(带远程指导)
- python中的异或操作_Python中的异或和位操作的反转
- 微信抢红包python脚本不用手机_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...
- 统计各部门的薪水总和_近年来,统计学热过金融火过计算机,这是真的吗?
- 树状数组 + 离散化 求逆序对数量
- laravel 图片流_Laravel 之添加图片水印
- php跳过一段html,PHP_一段能瞬间秒杀所有版本IE的简单HTML代码,许多人都非常讨厌Internet Explore - phpStudy...
- python //运算符
- pcap文件提取后的dataframe,切分前向流与后向流
- Mac os安装SEAL