一种轻量级的通信协议-MAVLink

MAVLink主要是一种用于飞行器上的通信协议,但很有参考意义,算是给大家普及的知识。

关于MAVLink

可能很多人都不知道“MAVLink”是什么东西,简单来说它就是一种轻量级的通信协议

可能很多人会问,大家都不了解的这个“东西”,你讲来干什么?

正如抬头所说:给大家普及知识,而且可以应用到许多地方,说不定我讲过之后你就会用上它。

1.对于初学者,了解一种协议的格式,以及它的应用我觉得对他以后的编程有帮助;

2.一种在某个行业通用,并且很成熟的通信协议很有借鉴;

3.MAVLink与很多自定的协议相比,它的开发难度非常小,有现成的配置工具,可直接生成MSG代码(简单来说,就是生成对应的函数接口供你直接调用即可),直接调用几个相应的函数接口即可,不需要自己封装、解析等;

4.MAVLink是一种轻量级的通信协议,可用于各类运行速度不是很高的单片机中(当然,也能用于快速的PC中)。

MAVLin协议结构

先看协议结构(或者说格式),如下图:

看到上面协议格式,相信大家都会觉得,这不就是一般的协议吗? 说实话,它和一般的协议格式没什么两样,但“五脏俱全”,就是一种协议。就像人,有黄种人、白种人、黑种人等各种各样的人,但都属于人。

MAVLink的使用简单、方便

说实话,本文的重点在于这一章节。MAVLink和一般协议比较,它不仅具有常规协议的格式,突出的优点在于配置调用比较简单

1.配置

MAVLink通过xml文件,配置信息(MSG),这个MSG可以理解成我们需要接收或者发送的数据变量。比如:运动控制包含速度距离,xml配置如下:

2.通过生成代码

本节牵涉到相关工具的安装,这里不讲述。下面是生成的工具:

3.调用代码

代码生成,只需要简单调用两个函数接口即可:

两个函数即可:

mavlink_msg_motion_pack:封包函数接口;

mavlink_msg_to_send_buffer:转换成发送的BUF;

如下:

看到上面的调用,是不是很简单呢?

本文只是简单的讲述,想要学习更是相关MAVLink的知识,请参考网址:

MAVLink主页:mavlink_msg_to_send_buffer

协议说明(维基百科):https://en.wikipedia.org/wiki/MAVLink

最后

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171214G00MGN00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券