嵌入式|Mavlink 通讯协议与新消息生成方法
Mavlink 通讯协议与新消息生成方法
- Mavlink 概念
- Mavlink封包的数据包数据格式
- Mavlink 安装
- 生成新的Mavlink消息包
- 1、修改common.xml或ardupilotmega.xml文件
- 新增自己的消息包
- 2、自动生成
- 3、查找自己的文件
Mavlink 概念 Mavlink 的全称是 Micro Air Vehicle link
【嵌入式|Mavlink 通讯协议与新消息生成方法】一些飞控(pixhawk)把它作为与地面站通信的手段
有了 它通信变的有序且简洁。
自身完成了封包的工作,需要新的传输变量可以方便的添加
mavlink的强大一部分源于支持的语言多达4种,不仅支持windows和linux,同时封包、发送的机制全部自动生成,这一点比较节省开发周期
Mavlink封包的数据包数据格式
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/21503cfdb261470298a0835402686453.jpg)
文章图片
Mavlink传输时的基本单位是消息帧。协议设计的目标是传输速度和安全性。它允许消息内容检查、消息丢失检测 ;每个数据包需要6 字节报头。每次发完一个消息,SEQ的内容会加1,加到255后会从0重新开始。这个序号用于mavlink消息帧接收端计算消息丢失比例用的,在地面站处理中相当于是信号强度。
这个不用关心,理解就可以。毕竟是自动完成封包的。
Mavlink 安装 下载软件进入mavlink官网
以前的官网
mavlink下载地址
现在好像不能用了。。。
自己上传一个吧
生成新的Mavlink消息包 1、修改common.xml或ardupilotmega.xml文件 路径如下图
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/b789ddcef96147d49f0b42eab64c0471.jpg)
文章图片
以common.xml 为例
开头是这样的
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/21d03bc00ca94b359ea9cb6c55696917.jpg)
文章图片
找到最下边
下面基本上都是这种结构,找 没有使用的id
注意和 ardupilotmega.xml 对比 着看 , id不能重复,
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/615b9326456640338c72000b6611bfe9.jpg)
文章图片
180-229 是没有使用的 ,新加的可以在这个范围内
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/c9cb953d00f0477094f28ed84d4e3eb0.jpg)
文章图片
新增自己的消息包
仿照 原有的写就可以了
// 你生成的消息包的id 和名称
your description // 说明
// 变量的类型 和名称
2、自动生成
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/500a4885adf14f30b003604d5f6c6077.jpg)
文章图片
到MAVLINK/mavlink路径下
打开终端
$ python mavgenerate.py
出现交互窗口如下
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/0f89f468ee5c4b2ab2d460b87a3d7342.jpg)
文章图片
不用点击 Browse 了,没有用
XML里写入 common.xml或ardupilotmega.xml(在哪个里面添加的写哪个)
Out 里写入 要输出的路径,一般放
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/335daab7b025497f94273fd59296054b.jpg)
文章图片
语言看用的场合 ,单片机 什么的 肯定用C
点后会下拉几种语言
![嵌入式|Mavlink 通讯协议与新消息生成方法](https://img.it610.com/image/info8/0e87e34e0c7f4e5c822bfa9f1b4c2e91.jpg)
文章图片
然后点击Generate就可以了
3、查找自己的文件 自己的文件在Out设置的路径下面
C语言生成的文件名称为
mavlink_msg_your_name.h
Java语言生成的文件名称为
msg_your_name.java
推荐阅读
- 核心
- 嵌入式(编译内核、根文件系统等)
- day|day 28 设置路由表
- C语言静态动态两版本通讯录实战源码
- Android轻松实现跨进程/跨app通讯框架及其原理
- GD32VF103|GD32VF103 I2C 通讯
- 嵌入式-外设|DDR3基础详解
- SpringBoot中的嵌入式ActiveMQ
- MobIM仅为开发者提供即时通讯的消息通道服务
- 嵌入式电脑|Paddle Inference——基于python API在Jetson上部署PaddleSeg模型