mavlink应用编程主要内容
2.1 发送和接收说明
利用mavlink通信协议进行编程,主要实现的功能就是:
1.发送端
将需要发送的数据(如:sysstate, batvol),添加mavlink通信协议,通过硬件(如:uart、can)发送出去。
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判断,在后续应用编程中会用到。
接收数据的流程:从应用代码 -> 底层硬件(发送出去)。
以上就是发送和接收的主要函数接口,如果你只是简单的进行通信,这几个接口就够你使用了。当然,更高级的编程应用还需要你进一步掌握其中的内容。
FTDDI成本较高,神盾与敦泰暂停合作
陶瓷电容压力传感器的特点及典型应用说明
红外基本原理介绍
SPR技术原理分析以及未来发展的应用方向
国产集成电路命名方法
MAVLink学习之路05_ MAVLink应用编程接口分析
简述关于边缘检测算法的四个步骤
新基建开启集成电路巨大发展空间
烟感探测器清洗电话
区块链革命注定要“入侵”这些产业?
蜂窝物联网新企业的工作状况如何?
关于国产eda发展状况分析
华为手环4体验:集便携USB即插充电和全面健康监测于一体
景观照明系统的LED限流器设计
中美5G竞速,是以垂直行业为战场的“持久战”
物联网科技赋能,机智云鱼缸水泵智能化解决方案助力科学养鱼
嵌入式系统是如何分层的以及专业是怎样分类的
经验分享:网络布线施工的步骤-科兰
EUV光刻机到底是什么?为什么这么贵?
SKI正在加快其下一代电池技术的开发