MavLink通信协议开发环境搭建(Windows)

MavLink官网地址
1 使用git克隆MavLink仓库

git clone https://github.com/mavlink/mavlink.git --recursive

2 安装Python的Future库

pip install future

3 打开MavLink仓库下的mavgenerate.py,运行,出现GUI界面

4 XML选择仓库下的message_definitions/v1.0/common.xml(此为官方基础消息库,自定义消息选择自己的XML文件亦可)OUT选择生成路径Language选择目标语言,本文选择C++ Protocol选择协议版本,本文选择2.0

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消息教程相关推荐

  1. Java开发环境搭建详解

    Java开发环境搭建详解  http://topic.csdn.net/u/20110829/13/BF4FAA45-3E1A-48A8-BC46-0405B7F862A2.html 一.jdk安装与 ...

  2. NRF52x开发环境搭建详解

    NRF52x开发环境搭建详解 准备 环境搭建 了解内存布局 Bootloader工程 APP工程 JFlash下载 打印log 准备 以下是项目开发环境搭建的一些文档或工具链接: 项目 链接 CPU ...

  3. DAMP环境搭建详解 DAMP----Debian Apache2 Mysql PHP5

    DAMP环境搭建详解 DAMP----Debian Apache2 Mysql PHP5 1. 更新Debian apt-get update apt-get updgrade 2. 安装Samba服 ...

  4. 小皮面板有php环境吗,php环境搭建详解

    本文主要和大家分享php环境搭建wampserver.Apache.Mysql和php php环境搭建csdn php环境搭建详解 ,希望能帮助到大家. wampserver2.5-Apache-2. ...

  5. 传智播客C/C++各种开发环境搭建视频工具文档免费教程

    传智播客作为中国IT培训的领军品牌,一直把握技术趋势,给大家带来最新的技术分享!传智播客C/C++主流开发环境免费分享视频文档中,就有写一个helloworld程序的示范.火速前来下载吧 所谓&quo ...

  6. linux上 arm开发环境搭建,详解 LINUX下QT For ARM开发环境搭建过程

    LINUX下QT For ARM开发环境搭建过程是本文介绍的内容,不多说,先来看内容.在PC上,我们需要得到两个版本的Qt,分别是:Qt-4.5.2和QtEmbedded-4.5.2-arm.前者包括 ...

  7. Go语言环境搭建详解(2020版)

    最近写了很多Go语言的原创文章,其中Go语言实战系列30篇,近15W字,还有最近更新的Go经典库系列,不过通过大家的咨询来看,还是想要一些入门的知识,这一篇文章写于2017年初,这3年多Go更新了很多 ...

  8. sublime c 语言 编译环境搭建,详解sublime搭建C/C++编译环境

    2. Vue语法--插值操作动态绑定属性 详解 目录 1. 设置vue模板 2. vue语法--插值操作 3. 动态绑定属性--v-bind 一. 设置vue模板 我们经常新建一个vue项目的时候, ...

  9. ZooKeeper 3.4.5 分布式环境搭建详解

    概述 上一篇中,我们说到了关于 Hadoop-2.2.0 集群的搭建.在这个系列中,Zookeeper 是必不可少的.本文会介绍 Zookeeper-3.4.5 的安装,后面会介绍 HBase-0.9 ...

  10. boost标准库开发环境搭建boost标准库环境搭建以及简单案例介绍

    1.下载boost相关的库的安装包 网址:http://www.boost.org/ 其中1.55.0版本的下载地址是:http://sourceforge.net/projects/boost/fi ...

最新文章

  1. 因果关系是通向强AI的阶梯or作用被夸大?
  2. 破解网页禁止使用“复制”、“粘贴“
  3. 一次 Java 内存泄漏的排查
  4. s2sh集成dataSource配置无效的问题 -Access denied for user 'sa'@'localhost'
  5. 任我行二 - 高德地图篇1 - 显示地图
  6. Feature Extractor[DenseNet]
  7. 回顾线程的竞争机制-偏向锁
  8. python爬虫技术路线_爬虫学习——中国大学最好排名(技术路线:requests库和bs4)(来源于北理工Python网络爬虫与信息提取网络公开课)...
  9. 编程思想:面向对象和面向过程
  10. wordpress html页面缓存 cdn,WordPress 下老旧又高效的本地缓存插件 cos-html-cache
  11. 程序员简历的10不要与7要
  12. hashmap是单向链表吗_HashMap源码大剖析
  13. 移动互联消亡者及原因分析
  14. 《永不放弃-马云给创业者的24堂课》— 综合素质提升书籍
  15. 20180810 突然发现自己不小心跑到了数据分析呈现岗位
  16. 12.Memcached 与 Redis 区别
  17. Okhttp对http2的支持简单分析
  18. OV7725摄像头模块SCCB通信
  19. Electron 使用Widevine CDM插件
  20. iPad,下载迅雷电影,迅雷HD出现“应版权方要求,文件无法下载”解决方法!

热门文章

  1. nu.xom:Element
  2. YYH的积木(NOIP模拟赛Round 6)
  3. 机器人视觉硬件方案设计对比
  4. 《龙腾世纪2》图文流程攻略
  5. 通过任意数量点拟合曲线
  6. ps切图后 JAVA开发_两种ps切图方法(图层/切片)
  7. 物联网安全攻防的“线上幽灵”
  8. 百度2005年面试题
  9. 代码质量检查规则中的 is provided externally to the method and not sanitized b.
  10. 《变革中的思索》连载三:展望个人电脑的未来之路