网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
该流程图是结合我上一篇文章提供的源代码例程画出来,包含的只是主要内容,更多细节没有在流程图中呈现。
我提供例程是针对初学者提供比较单一发送和接收例程(MDK-ARM和EWARM包含各自的发送和接收工程)。
而实际项目可能会:
**1.**发送和接收在一个工程;
**2.**包含操作系统;
**3.**发送、接收数据FIFO(队列)处理;
所以,实际项目,请按需修改我提供的源码。
MAVLink函数接口详细说明
这一章节讲述发送和接收主要用到的函数接口,请参考我提供的源代码例程理解。
为方便初学者理解,我将其分为发送和接收两个部分来讲述。
1. 发送主要函数接口[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GQ8i6RVy-1671461450554)(https://mmbiz.qpic.cn/mmbiz_png/HOd0CyicIq1BeVV2QIhWFBXI7R1444lIgbX7p0gczWMSAuQUPhlhwlH8lx2FPDMhr8D1kdXib2lufnEFiamTjeEzA/640?wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=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)即可。
发送数据的流程:从应用代码 -> 底层硬件(发送出去)。
如果要深入了解,可以先熟悉软件流程,再结合源代码工程,同时参看接口函数具体实现。相信你很快就明白了。
2.接收主要函数接口
上面是我提供例程的代码(方便截图,去掉了部分),主要讲以上4点内容。
1.MAV_USART_GetByte该函数接口也是硬件底层通信接口,请根据自己情况修改,只需要传递数据(流)进来即可。
2.mavlink_parse_charMAVLink解析是按照一个一个字符进行解析,我们接收到一个字符,就对其进行解析,直到解析完(根据返回标志判断)一帧数据为止。
**3.if(MAVLINK_MSG_ID_SYS_INFO == MAVLinkMsg.msgid)**这里就是对解析好的一包完整消息进行分类判断吧。其实,我是想说,这个地方还有两个ID需要进行判断,SysID系统ID和CompID部件ID。
我提供例程为方便初学者快速理解,未提供SysID和CompID判断,在后续应用编程中会用到。
4.mavlink_msg_sys_info_get_voltage_battery通过该接口获取消息变量,看图中说明文字,前面是消息,后面是消息变量。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**