MavLink 库 c++环境搭建及解ADS-B消息教程
MavLink通信协议开发环境搭建(Windows)
MavLink官网地址
1 使用git克隆MavLink仓库
git clone https://github.com/mavlink/mavlink.git --recursive
pip install future
3 打开MavLink仓库下的mavgenerate.py,运行,出现GUI界面
5 点击Generate生成目标文件,选择C++则为生成对应的头文件.h,我将在下篇文章中介绍使用方法
MavLink通信协议 C++应用详细教程
在项目中包含mavlink库
在vs2019开发环境中使用mavlink通信协议,首先需要将下载好的mavlink库添加至项目包含目录。
即项目->属性->配置属性->VC++目录->包含目录->选择你的文件路径,如下图,然后点击确定,应用。
然后在头文件中包含如下文件
#include<common/mavlink.h>
在自己的程序中使用MavLink库
MavLink c++库解 ADS-B消息 示例代码
/************************************************************************************************************************************************
* @author : *
* @date : *
* @file : *
* @brief : MavLink c++库 解 ADS-B消息 简单使用教程 *
* --------------------------------------------------------------------------------------------------------------------------------------------- *
* Change History *
* --------------------------------------------------------------------------------------------------------------------------------------------- *
* Date | Version | Author | Description *
* --------------------------------------------------------------------------------------------------------------------------------------------- *
* | | | *
************************************************************************************************************************************************/
#include <iostream>
#include <fstream>
#include<common/mavlink.h>
#include <cassert>int fileStrLen = 0;
char fileBuffer[1024] = { 0 };
char MavLinkBuffer[1024] = { 0 };int HexFromString(char SouceStr[], char DstStr[]);
int readFile(const char* fileDir, char DstStr[]);int main()
{uint8_t chan = MAVLINK_COMM_0;//第一个参数,默认取该值uint8_t buffer[100] = {};//这是你接收到的原始信息,并按照2.2.1章节将其转化为了uint8_t数组形式mavlink_message_t rmsg;//第三个参数,用于存储解析完成的内容mavlink_status_t status;//第四个参数,用于存储解析状态// 读取十六进制报文readFile("MavLinkdata.txt", fileBuffer);HexFromString(fileBuffer, MavLinkBuffer);int len = fileStrLen - 1;for (int i = 0; i < len; i++){if (mavlink_parse_char(chan, MavLinkBuffer[i], &rmsg, &status) == 1){//进一步操作switch (rmsg.msgid){case MAVLINK_MSG_ID_HEARTBEAT:mavlink_heartbeat_t heartbeat;mavlink_msg_heartbeat_decode(&rmsg, &heartbeat);std::cout << "type:" << (int)heartbeat.type << std::endl;break;case MAVLINK_MSG_ID_ADSB_VEHICLE:mavlink_adsb_vehicle_t adsb_vehicle;mavlink_msg_adsb_vehicle_decode(&rmsg, &adsb_vehicle);std::cout << std::dec << "\nLat:" << adsb_vehicle.lat << " Long:" << adsb_vehicle.lon << std::endl;break;default:break;}}}return 0;
}/************************************************************************************************************************************************
# @author : WLJ
# @date :
# @file :
# @brief : 将十六进制字符串转换为十六进制数组存放到变量中
# @Function :
# @Parameter:
# SouceStr:十六进制字符串 eg:0xFE0x0C0x120x01......
# DstStr:转换得到的十六进制数组 eg:{0xFE, 0x0C, 0x12, 0x01......}
#
# @Return :
#
#
************************************************************************************************************************************************/
int HexFromString(char SouceStr[], char DstStr[])
{char tepHex[5];int num = 0;std::cout << "len=" << sizeof(DstStr) << std::endl;for (int i = 0; i < fileStrLen-1; i+=4){strncpy_s(tepHex, SouceStr + i, 4);tepHex[4] = '\0';sscanf_s(tepHex, "%x", &DstStr[num]);std::cout << tepHex << " ";num++;}for (int i = 0; i < fileStrLen - 1; i++){std::cout << std::hex << DstStr[i] << " ";}return 0;
}/************************************************************************************************************************************************
# @author : WLJ
# @date :
# @file :
# @brief : fstream类读取文件
# @Function :
# @Parameter:
# DstStr:读取后的数据存放地址
#
# @Return :
#
#
************************************************************************************************************************************************/
int readFile(const char* fileDir, char DstStr[])
{std::ifstream inFile;inFile.open(fileDir, std::ios::in);assert(inFile.is_open()); //若失败,则输出错误消息,并终止程序运行if (inFile){//可以像用cin那样用ifstream对象uint8_t HexCh;while (inFile >> HexCh) {*DstStr++ = HexCh;fileStrLen++;//可以像 cout 那样使用 ofstream 对象//std::cout << std::hex << HexCh << " ";}}else{std::cout << "Open File failed!...\n";}return 0;
}
MavLink 库 c++环境搭建及解ADS-B消息教程相关推荐
- Java开发环境搭建详解
Java开发环境搭建详解 http://topic.csdn.net/u/20110829/13/BF4FAA45-3E1A-48A8-BC46-0405B7F862A2.html 一.jdk安装与 ...
- NRF52x开发环境搭建详解
NRF52x开发环境搭建详解 准备 环境搭建 了解内存布局 Bootloader工程 APP工程 JFlash下载 打印log 准备 以下是项目开发环境搭建的一些文档或工具链接: 项目 链接 CPU ...
- DAMP环境搭建详解 DAMP----Debian Apache2 Mysql PHP5
DAMP环境搭建详解 DAMP----Debian Apache2 Mysql PHP5 1. 更新Debian apt-get update apt-get updgrade 2. 安装Samba服 ...
- 小皮面板有php环境吗,php环境搭建详解
本文主要和大家分享php环境搭建wampserver.Apache.Mysql和php php环境搭建csdn php环境搭建详解 ,希望能帮助到大家. wampserver2.5-Apache-2. ...
- 传智播客C/C++各种开发环境搭建视频工具文档免费教程
传智播客作为中国IT培训的领军品牌,一直把握技术趋势,给大家带来最新的技术分享!传智播客C/C++主流开发环境免费分享视频文档中,就有写一个helloworld程序的示范.火速前来下载吧 所谓&quo ...
- linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程
LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...
- Go语言环境搭建详解(2020版)
最近写了很多Go语言的原创文章,其中Go语言实战系列30篇,近15W字,还有最近更新的Go经典库系列,不过通过大家的咨询来看,还是想要一些入门的知识,这一篇文章写于2017年初,这3年多Go更新了很多 ...
- sublime c 语言 编译环境搭建,详解sublime搭建C/C++编译环境
2. Vue语法--插值操作动态绑定属性 详解 目录 1. 设置vue模板 2. vue语法--插值操作 3. 动态绑定属性--v-bind 一. 设置vue模板 我们经常新建一个vue项目的时候, ...
- ZooKeeper 3.4.5 分布式环境搭建详解
概述 上一篇中,我们说到了关于 Hadoop-2.2.0 集群的搭建.在这个系列中,Zookeeper 是必不可少的.本文会介绍 Zookeeper-3.4.5 的安装,后面会介绍 HBase-0.9 ...
- boost标准库开发环境搭建boost标准库环境搭建以及简单案例介绍
1.下载boost相关的库的安装包 网址:http://www.boost.org/ 其中1.55.0版本的下载地址是:http://sourceforge.net/projects/boost/fi ...
最新文章
- 因果关系是通向强AI的阶梯or作用被夸大?
- 破解网页禁止使用“复制”、“粘贴“
- 一次 Java 内存泄漏的排查
- s2sh集成dataSource配置无效的问题 -Access denied for user 'sa'@'localhost'
- 任我行二 - 高德地图篇1 - 显示地图
- Feature Extractor[DenseNet]
- 回顾线程的竞争机制-偏向锁
- python爬虫技术路线_爬虫学习——中国大学最好排名(技术路线:requests库和bs4)(来源于北理工Python网络爬虫与信息提取网络公开课)...
- 编程思想:面向对象和面向过程
- wordpress html页面缓存 cdn,WordPress 下老旧又高效的本地缓存插件 cos-html-cache
- 程序员简历的10不要与7要
- hashmap是单向链表吗_HashMap源码大剖析
- 移动互联消亡者及原因分析
- 《永不放弃-马云给创业者的24堂课》— 综合素质提升书籍
- 20180810 突然发现自己不小心跑到了数据分析呈现岗位
- 12.Memcached 与 Redis 区别
- Okhttp对http2的支持简单分析
- OV7725摄像头模块SCCB通信
- Electron 使用Widevine CDM插件
- iPad,下载迅雷电影,迅雷HD出现“应版权方要求,文件无法下载”解决方法!