0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-07 16:21 次阅读

MAVLink应用编程主要内容

2.1 发送和接收说明

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

1.发送端

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

2.接收端

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

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

2.2 发送和接收流程图

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

提示:

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

而实际项目可能会:

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

2.包含操作系统

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

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

3

MAVLink函数接口详细说明

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

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

3.1 发送主要函数接口

上面是我提供例程的代码,主要讲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 接收主要函数接口

上面是我提供例程的代码(方便截图,去掉了部分),主要讲以上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判断,在后续应用编程中会用到。

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

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    858

    浏览量

    40263
  • CAN
    CAN
    +关注

    关注

    57

    文章

    2717

    浏览量

    463377
  • uart
    +关注

    关注

    22

    文章

    1227

    浏览量

    101176
  • mavlink
    +关注

    关注

    0

    文章

    8

    浏览量

    2586
收藏 人收藏

    评论

    相关推荐

    4G模组SD卡接口编程:深度学习

    今天我们需要深度学习的是4G模组SD卡接口编程,以我常用的模组Air724UG为例,分享给大家。
    的头像 发表于 11-20 23:14 86次阅读
    4G模组SD卡<b class='flag-5'>接口</b><b class='flag-5'>编程</b>:深度<b class='flag-5'>学习</b>

    什么是机器学习?通过机器学习方法能解决哪些问题?

    来源:Master编程树“机器学习”最初的研究动机是让计算机系统具有人的学习能力以便实现人工智能。因为没有学习能力的系统很难被认为是具有智能的。目前被广泛采用的机器
    的头像 发表于 11-16 01:07 231次阅读
    什么是机器<b class='flag-5'>学习</b>?通过机器<b class='flag-5'>学习</b>方法能解决哪些问题?

    通过JTAG接口对MSP430进行编程

    电子发烧友网站提供《通过JTAG接口对MSP430进行编程.pdf》资料免费下载
    发表于 10-31 09:31 0次下载
    通过JTAG<b class='flag-5'>接口</b>对MSP430进行<b class='flag-5'>编程</b>

    FPGA加速深度学习模型的案例

    :DE5Net_Conv_Accelerator 应用场景 :面向深度学习的开源项目,实现了AlexNet的第一层卷积运算加速。 技术特点 : 采用了Verilog语言进行编程,与PCIe接口相集成,可以直接插入到
    的头像 发表于 10-25 09:22 145次阅读

    接口芯片的编程模型方法是什么

    接口芯片的编程模型方法是一个复杂的话题,涉及到硬件设计、软件编程、通信协议等多个方面。 1. 接口芯片概述 接口芯片是用来连接不同硬件设备或
    的头像 发表于 09-30 11:30 168次阅读

    基于迅为RK3568/RK3588开发板的AI图像识别方案

    01_官方模型测试 02_人脸识别 03_口罩检测 04_工地防护 05_扑克牌识别 06_手掌关键点检测 07_人脸特征点检测
    发表于 08-28 09:50

    如何理解socket编程接口

    Socket编程接口是一种网络编程的基本概念,它提供了一种在不同计算机之间进行通信的方法。 Socket编程接口的基本概念 1.1 Sock
    的头像 发表于 08-16 10:48 354次阅读

    按照这样学习C语言,成为卷王不是梦!

    在计算机编程领域,C语言被誉为一种强大而灵活的编程语言,掌握好C语言不仅可以让你轻松驾驭各种编程任务,还能够为你的职业生涯打下坚实的基础。但要成为C语言的“卷王”,需要一定的学习方法和
    的头像 发表于 07-06 08:04 290次阅读
    按照这样<b class='flag-5'>学习</b>C语言,成为卷王不是梦!

    机器学习在数据分析中的应用

    随着大数据时代的到来,数据量的爆炸性增长对数据分析提出了更高的要求。机器学习作为一种强大的工具,通过训练模型从数据中学习规律,为企业和组织提供了更高效、更准确的数据分析能力。本文将深入
    的头像 发表于 07-02 11:22 544次阅读

    带开放式电容器输出的十六进制逆变器SN54LS05 SN54S05 SN7405 SN74LS05 SN74S05数据表

    电子发烧友网站提供《带开放式电容器输出的十六进制逆变器SN54LS05 SN54S05 SN7405 SN74LS05 SN74S05数据表.pdf》资料免费下载
    发表于 05-09 11:12 0次下载
    带开放式电容器输出的十六进制逆变器SN54LS<b class='flag-5'>05</b> SN54S<b class='flag-5'>05</b> SN7405 SN74LS<b class='flag-5'>05</b> SN74S<b class='flag-5'>05</b>数据表

    OBD接口的CAN分析仪使用方法

    OBD接口的CAN分析仪的使用主要涉及到将设备与汽车的OBD接口连接,并通过配套的软件进行数据的读取和分析。以
    的头像 发表于 04-18 11:21 917次阅读

    MAVLink在应用编程中的编程原理和思路

    嵌入式开发过程中,UART、 CAN、 USB等通信基本离不开通信协议。 下面给大家分享一种通信协议(MAVLink)在应用编程中的编程原理和思路。
    发表于 03-08 12:45 796次阅读
    <b class='flag-5'>MAVLink</b>在应用<b class='flag-5'>编程</b>中的<b class='flag-5'>编程</b>原理和思路

    浅析MCU通信、存储常用的简单校验算法

    UART有一个奇偶校验,CAN通信有CRC校验。Modbus、MAVlink、USB等通信协议也有校验信息。
    的头像 发表于 03-07 10:56 476次阅读
    浅析MCU通信、存储常用的简单校验算法

    全志D1s开发板裸机开发之坏境搭建

    环境搭建 开发板介绍 张天飞老师编写的《RISC-V体系结构编程与实践》,里面的源码是基于 QEMU 模拟器的,可以认为它是一款虚拟的开发板。如果需要在真实开发板上学习,可以使用百问网
    发表于 03-06 13:54

    verilog与其他编程语言的接口机制

    Verilog是一种硬件描述语言,用于描述数字电路的行为和结构。与其他编程语言相比,Verilog具有与硬件紧密结合的特点,因此其接口机制也有一些与众不同之处。本文将详细介绍Verilog与其他编程
    的头像 发表于 02-23 10:22 628次阅读