MAVLink学习之路05_MAVLink应用编程接口分析(也有讲STM32下的收发函数)

2023-05-16

 

摘自:https://blog.csdn.net/ybhuangfugui/article/details/99826891

MAVLink学习之路05_MAVLink应用编程接口分析

ybhuangfugui 2018-09-03 12:20:15 776 收藏 6

STM32CubeMX+IDE

主要讲解STM32Cubemx和IDE常规使用,以及STM32底层驱动等知识。

ybhuangfugui

¥9.90

 

置顶公众,不错过每一条消息!

640?wx_fmt=jpeg

 

 

 

 

    本教程由作者strongerHuang于2018年09月原创发布。

版权所有:禁止商用

申明该文档仅供个人学习使用,转载请公众号联系作者授权。

 

 

 

1写在前面

前面写的几篇文章你掌握了,说明你离成功很近了。那么本文就带你真正进入编程的世界,让你进一步掌握MAVLink应用编程的重要知识点。

 

本文主要内容:

  • MAVLink应用编程主要内容

  • MAVLink函数接口详细说明

 

提示:本文结合上一篇文章提供给大家下载的“MAVLink发送接收例程”进行讲解,请结合例程理解本文。

 

 

2

MAVLink应用编程主要内容

2.1 发送和接收说明

利用MAVLink通信协议进行编程,主要实现的功能就是:

1.发送端

将需要发送的数据(如:SysState, BatVol),添加MAVLink通信协议,通过硬件(如:UART、CAN)发送出去。

 

2.接收端

硬件(如:UART、CAN)接收到的数据,通过MAVLink协议解析,得到一帧完整的MAVLink数据包,提取发送端发送的数据(如:SysState, BatVol),将得到的数据应用到我们程序中。

 

主要流程:数据 -> MAVLink封装 -> 发送 -> 接收 -> MAVLink解析 ->数据

 

2.2 发送和接收流程图

640?wx_fmt=png

该流程图是结合我上一篇文章提供的源代码例程画出来,包含的只是主要内容,更多细节没有在流程图中呈现。

 

提示

我提供例程是针对初学者提供比较单一发送和接收例程(MDK-ARM和EWARM包含各自的发送和接收工程)。

 

而实际项目可能会

1.发送和接收在一个工程;

2.包含操作系统;

3.发送、接收数据FIFO(队列)处理;

 

所以,实际项目,请按需修改我提供的源码

 

 

3

MAVLink函数接口详细说明

这一章节讲述发送和接收主要用到的函数接口,请参考我提供的源代码例程理解。

为方便初学者理解,我将其分为发送和接收两个部分来讲述。

 

3.1 发送主要函数接口

640?wx_fmt=png

上面是我提供例程的代码,主要讲4个接口。

 

1.MAVLink_SendTest

这个接口是根据自己情况进行封装函数,用于应用程序调用,这里不多说。

 

2.mavlink_msg_sys_info_pack

这个函数接口主要目的:将变量信息(SysID、CompID、SysState、BatVol)打包,最终得到MAVLink_Msg这个消息包。

 

3.mavlink_msg_to_send_buffer

将上一步得到的MAVLink_Msg转换成我们要发送的数据BUF缓存。

 

4.MAV_USART_SendNByte

这个函数接口也是我自己根据硬件(UART)封装的,如果你是其它硬件通信,只需要封装一个类似的接口(参数具有BUF,LEN)即可。

 

发送数据的流程:从应用代码 -> 底层硬件(发送出去)。

 

如果要深入了解,可以先熟悉软件流程,再结合源代码工程,同时参看接口函数具体实现。相信你很快就明白了。

 

3.2 接收主要函数接口

640?wx_fmt=png

上面是我提供例程的代码(方便截图,去掉了部分),主要讲以上4点内容。

 

1.MAV_USART_GetByte

该函数接口也是硬件底层通信接口,请根据自己情况修改,只需要传递数据(流)进来即可。

 

2.mavlink_parse_char

MAVLink解析是按照一个一个字符进行解析,我们接收到一个字符,就对其进行解析,直到解析完(根据返回标志判断)一帧数据为止。

 

3.if(MAVLINK_MSG_ID_SYS_INFO == MAVLinkMsg.msgid)

这里就是对解析好的一包完整消息进行分类判断吧。其实,我是想说,这个地方还有两个ID需要进行判断,SysID系统ID和CompID部件ID。

 

我提供例程为方便初学者快速理解,未提供SysID和CompID判断,在后续应用编程中会用到。

 

接收数据的流程:从应用代码 -> 底层硬件(发送出去)。

 

以上就是发送和接收的主要函数接口,如果你只是简单的进行通信,这几个接口就够你使用了。当然,更高级的编程应用还需要你进一步掌握其中的内容。

 

 

4

说明

1.该文档仅供个人学习使用,版权所有,禁止商用。

 

2.本文由我一个人编辑并整理,难免存在一些错误。

 

3.本文收录于公众号【strongerHuang】,关注微信公众号回复【MAVLink学习之路】即可查看全系列教程。  

 

 

5最后

本文由作者strongerHuang原创发布,转载请公众号联系作者授权。

 

若觉得文章对你有帮助,记得点赞、分享。(一个赞代表一份认可

 

 

扫描下面二维码、关注,在底部菜单中查看更多精彩内容!

 

640?wx_fmt=jpeg

长按识别图中二维码关注

 

 

 

640

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MAVLink学习之路05_MAVLink应用编程接口分析(也有讲STM32下的收发函数) 的相关文章

随机推荐