QGC地面站Mavlink协议自定义
文章目录前言一、开发环境1.mavlink生成器环境2.QGC运行环境二、版本区别三、操作步骤1、创建自定义协议文件2、创建自定义 XML 文件3、编辑 custom_messages.xml文件内容4、运行mavlink生成器5、生成结果6、配置QGC中mavlink库四、总结前言之前已经出了一版本的QGC自定义协议开发在之后更新地卖弄站时开发其它地面站版本时发现mavlink调用形式有做改变再用之前的方式无法通过CRC验证有做改变改动不大。一、开发环境1.mavlink生成器环境PyCharm 2025.3.3python-3.13.12-embed-amd642.QGC运行环境QT 5.15.2Visual Studio 2019QGC V4.3二、版本区别QGC v4.1至部分QGC v4.2的版本中mavlink库目录为QGC v4.3版本之后中mavlink库目录为最大的区别在多了一个all文件决定了整体的调用略作了区别。在message_definitions文件中多了一个all.xml文件用于连接所有的XML文件三、操作步骤1、创建自定义协议文件进入 QGC 4.3 源码中的 MAVLink 消息定义目录并确认该目录下已存在common.xml文件。qgroundcontrol-Stable_V4.3\libs\mavlink\include\mavlink\v2.0\message_definitions2、创建自定义 XML 文件将你的custom_messages.xml文件复制到上述目录中与common.xml放在同一层级。3、编辑custom_messages.xml文件内容你的custom_messages.xml应该遵循以下基本结构?xml version1.0? mavlink !-- 关键引入标准消息定义 -- includecommon.xml/include !-- 可选版本号如果 common.xml 已包含则注释掉 -- !-- version6/version -- !-- 方言号可选-- dialect8/dialect enums !-- 自定义枚举可选-- /enums messages !-- 你的两个自定义消息 -- message id19001 nameCUSTOM_DATA_1 description自定义数据1/description field typeuint8_t namedata数据字段/field /message message id19002 nameCUSTOM_DATA_2 description自定义数据2/description field typefloat namevalue数值字段/field /message /messages /mavlink4、运行mavlink生成器使用PyCharm运行生成器在 GUI 中 XML: 直接输入 custom_messages.xml Out: 设置输出目录建议放在 一个新文件夹如 newMavlink Language: 选择 C Protocol: 选择 2.0 点击 Generate工具会自动找到同目录下的 common.xml 并成功生成。5、生成结果newMavlink中生成的内容6、配置QGC中mavlink库配置QGC中的mavlink库使得可以调用newMavlink文件夹中custom_messages是自定义协议包将custom_messages拷贝到“qgroundcontrol-Stable_V4.3\libs\mavlink\include\mavlink\v2.0”文件下与“all”文件夹同目录将newMavlink\common\common.h中部分内容拷贝到qgroundcontrol-Stable_V4.3\libs\mavlink\include\mavlink\v2.0\all.h中1、# define MAVLINK_MESSAGE_CRCS中找到新增的CRC_EXTRA 值如“{12, 107, 12, 12, 0, 0, 0}, {13, 219, 25, 25, 0, 0, 0}”第一位为新协议设置的ID 2、在all.xml中 添加 #include ../custom_messages/custom_messages.h 3、# define MAVLINK_MESSAGE_INFO中添加新的协议名称 4、# define MAVLINK_MESSAGE_NAMES中添加新的协议名称和ID 注1、3、4、都可在newMavlink/common/common.h中找到四、总结使用时请区分版本与实际情况。