# mavlink-headers **Repository Path**: WangWeight/mavlink-headers ## Basic Information - **Project Name**: mavlink-headers - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: mf-mavlink - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-04-19 - **Last Updated**: 2021-04-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mavlink 头文件库 ## 描述 本代码库是基于mavlink v2 协议,并在其基础上增加了自定义消息类型。 ## 代码库使用 本代码库可单独使用,也可在其他项目中作为git子模块方式添加 1. 单独使用 本仓库不依赖于其他子仓库以及模块,所以单独使用时只需要通过 ``` git clone https://gitee.com/xclouduav/mavlink-c-c-header-only-library-v2.git ``` 即可获得。 2. 子模块 此仓库常常作为基础库供包括地面站系统、飞控系统使用,因此通常作为其子仓库被引用。可查看相关代码库中是否存在 `.gitsubmodules` 文件并在其中有类似文字: ``` [submodule "libs/mavlink/include/mavlink/v2.0"] path = 存放路径 url = https://gitee.com/xclouduav/mavlink-c-c-header-only-library-v2.git ``` 也可`git bash` 中输入 `git submodule` 查看 ``` $ git submodule 8358826720b1799b2b899ff6cb33d5644d350423 libs/mavlink/include/mavlink/v2.0 (heads/master) ``` 如果此仓库未作为子模块添加到目标代码仓库中,可执行 ``` git submodule add https://gitee.com/xclouduav/mavlink-c-c-header-only-library-v2.git 相对路径文件夹 ``` 如果此头文件仓库发生了更新,需要对依赖仓库中的头文件仓库更新,可执行 ``` git submodule foreach git checkout master git submodule foreach git pull origin master ``` ## 库文件更新 ### 更新准备工作 1. 从 [Git官网](https://git-scm.com/download/win) 和 [Python官网](https://www.python.org/downloads/release/python-2716/) 分别获取 `Git` 以及 `Python` **注意** 安装git时保持默认选项即可,但安装python时选择自定义安装,并在高级选项(Advanced Options)中增加 `将Python加入环境变量(Add Python to environment variables)` ,点击"安装"。 ![a](./README-res/install-python.png) 2. 在cmd中运行以下命令安装所需要额外库: ```pip install future``` 如果以上正常结束,运行环境准备完成。 ### 简要流程说明 如果需要拓展mavlink协议内容,即更新此代码库。更新流程如下: 1. 克隆仓库[mavlink](https://gitee.com/xclouduav/mavlink)以及本仓库到本地,最好是将两个文件夹放在同一目录中。 ``` git clone https://gitee.com/xclouduav/mavlink.git --recurse-submodules ``` 2. 修改`mavlink`仓库中xml文件,参照其他的消息增加或者拓展 ``` 进入mavlin/message_definitions/v1.0目录中,使用编辑器打开terminus.xml,添加新消息。例如: Generate Headers. Timestamp field int8_tfield ``` **注意** 字段 `time_boot_ms` 在程序中有可能被其他代码使用,所以新建消息一定要增加此字段,除非有特殊要求。 3. 使用 `pygenerate` 生成新的mavlink库文件 推荐在中以 的方式运行,可在控制台中看到输出信息,警告信息,错误信息等,方便调试。 ![](./README-res/gui-generator.png) ``` 如上图 [xml]选择"mavlink/message_definitions/v1.0/ardupilotmega.xml", [Out]选择克隆到本地的本仓库的文件夹,如:E:\workspace\mavlink-c-c-header-only-library-v2 [Language]选择"C", [Protocol]选择"2.0", 点击"Generate",会提示“目标目录已存在,是否覆盖?”,点击确认 ``` 4. 在目标文件夹中对比文件变更,核查变更是否正确。正常情况下,变更局限于若干个文件:除了生成新的消息头文件外,其他文件的更改一般局限于时间版本和CRC校验数据。 ![](./README-res/header-modified.png) 5. 将此仓库提交到远程仓库 **** # F&Q 1. 安装Git后不能拉取代码,提示 `remote: You do not have permission to pull from the repository via HTTPS` [*] 是否使用ssh-keygen生成了id_rsa.pub并填入了远程git [*] 通过git config 检查user.email和user.name是否已经设置 [*] 检查 `控制面板`——`凭据管理器`——`Window凭据`的普通凭据中是否有其他账户