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文件相关推荐

  1. .h 与.hpp文件的区别

    hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译.而实现代码将直接 ...

  2. 什么是.hpp文件?

    hpp(Header Plus Plus)头文件,顾名思义就是 .h 文件加上 .cpp 文件,在 boost 开源库中频繁出现,其实就是 .cpp 实现代码混入 .h 文件当中,定义和实现都包含在同 ...

  3. .h 与 .hpp 文件

    hpp,顾名思义等于.h加上.cpp,在boost.Xerces等开源库中频繁出现,偶在机缘巧合之下,学得一招半式,遂记录如下,以供参考学习.     hpp,其实质就是将.cpp的实现代码混入.h头 ...

  4. .hpp文件和.h文件的区别

    hpp,顾名思义等于.h加上.cpp,在boost. Xerces等开源库中频繁出现,偶在机缘巧合之下,学得一招半式,遂记录如下,以供参考学习.     hpp,其实质就是将.cpp的实现代码混入.h ...

  5. HLS第三十八课(xfopencv,H文件和HPP文件的使用)

    常用的几个xfopencv的H文件和HPP文件的分析与使用. 常用的可综合的通用H文件. xf_common.h. common/xf_infra.h common/xf_structs.h comm ...

  6. C++ hpp 文件

    一.hpp 干啥的? hpp,其实质就是将 .cpp 的实现代码混入 .h 头文件当中,即声明.定义和实现都包含在同一文件, 则该类的调用者只需要 include 该 hpp 文件即可,无需再将 cp ...

  7. C++ hpp文件的编写

    hpp,顾名思义等于.h加上.cpp,在boost. Xerces等开源库中频繁出现,偶在机缘巧合之下,学得一招半式,遂记录如下,以供参考学习.     hpp,其实质就是将.cpp的实现代码混入.h ...

  8. c++中什么时候使用.hpp文件

    分文件编写类模板 类模板的声明和定义要写在一个.hpp文件中,声明和定义不可以分开,因为分文件的话,main.cpp中只引入.h,在类模板进行二次编译的时候,无法找到类的定义,会出错.所以要将其声明和 ...

  9. .h与.hpp文件的区别

    c++中的.hpp文件 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再 将cpp加入到project中 ...

最新文章

  1. 输入输出 原理 java_java输入输出,书写规范,运行原理,跨平台原理(复习)...
  2. ADAS在车载导航设备上的应用
  3. vue php axios 跨域,在vue项目中,使用axios跨域处理
  4. RxJava 2.x 教程
  5. # command-line-arguments .\main.go:72:23: undefined: initApp
  6. 服务器电脑 默认虚拟内存,服务器是否需要设置虚拟内存
  7. 各位,请慎用 subList!原来这么多坑!!
  8. 【数据结构】线性表的链式存储结构
  9. 计算机文言,中国最具有概括性的文言文文字?本人学计算机编程的
  10. C语言斐波那契数列解析
  11. No toolchains found in the NDK toolchains folder for ABI with prefix:XXX
  12. 用matlab求roc曲线的面积Auc,sklearn计算ROC曲线下面积AUC
  13. win10误删的注册表能还原吗_win10自带注册表恢复方法 win10注册表误删如何修复...
  14. [python][project][爬虫] 时光网抓取信息
  15. pureftpd 配置 mysql_Pure-ftp配置文件详解
  16. flutter开发的即时聊天应用
  17. opencv 图像拼接和图像融合技术
  18. 用turtle作画玩一玩吧
  19. 在uniapp中使用element-ui组件
  20. 交换机基本原理与应用

热门文章

  1. jsp和mysql答辩_jsp+servletmysql 毕业论文答辩理系统(带远程指导)
  2. python中的异或操作_Python中的异或和位操作的反转
  3. 微信抢红包python脚本不用手机_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...
  4. 统计各部门的薪水总和_近年来,统计学热过金融火过计算机,这是真的吗?
  5. 树状数组 + 离散化 求逆序对数量
  6. laravel 图片流_Laravel 之添加图片水印
  7. php跳过一段html,PHP_一段能瞬间秒杀所有版本IE的简单HTML代码,许多人都非常讨厌Internet Explore - phpStudy...
  8. python //运算符
  9. pcap文件提取后的dataframe,切分前向流与后向流
  10. Mac os安装SEAL