分享一种通信协议的应用编程原理和思路

news2024/11/24 14:39:14

已剪辑自: https://mp.weixin.qq.com/s/wy-flva6pCNqHV3ObeLPCQ

嵌入式开发过程中,UART、 CAN、 USB等通信基本离不开通信协议。
下面给大家分享一种通信协议(MAVLink)在应用编程中的编程原理和思路。
本节提供“MAVLink发送接收例程”例程下载地址:

地址:

https://pan.baidu.com/s/1xraErAnmL-BN9CMwE6aQ-A

(公众号不支持外链接,请复制链接到浏览器打开)

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

1.发送端

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

2.接收端

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

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

2.发送和接收流程图

图片

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

我提供例程是针对初学者提供比较单一发送和接收例程(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通过该接口获取消息变量,看图中说明文字,前面是消息,后面是消息变量
接收数据的流程:从底层硬件(接收数据) -> 应用代码。
以上就是发送和接收的主要函数接口,如果你只是简单的进行通信,这几个接口就够你使用了。当然,更高级的编程应用还需要你进一步掌握其中的内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/102390.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[FTP] ftp通信协议抓包分析

想在ESP32上用TCP来实现ftp服务器,抓一下ftp通信包分析一下。总的来说就是两个TCP通道,一个命令通道,一个数据通道;数据通道只有在遍历目录、下载、上传的时候才开启,其余时候均不开启;主要就是协议对接好就…

【认识】wireshark使用教程

本文章,是简单粗暴学习Wireshark的抓包功能后,记录的一些笔记。 1 Wireshark简介及抓包原理及过程 1.1 简介 Wireshark是1个网络封包分析软件。网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用…

从盒马生鲜迫切转型升级有感而发,疫情之后,路在何方

据悉,针对浦东地区目前突增的需求,市民线上采买生活物资的订单激增,饿了么联合包括每日优鲜、大润发在内的主要生鲜买菜商户,一起增加运力配合;盒马生鲜也对接了上海之外的山东、云南等省外基地,以避免中间…

JVM核心知识详解

文章目录1. JVM内存分配程序计数器虚拟机栈栈帧都有哪些内容栈内存溢出线程运行诊断演示1(cpu占用过多)演示2(死锁)本地方法栈堆堆内存诊断jmp诊断堆内存jconsole诊断堆内存jvisualvm诊断堆内存方法区直接内存java操作磁盘文件NIO…

IT行业分析报告:2022年哪个编程语言最受雇主公司喜欢?

2022年哪个编程语言最受雇主公司喜欢? 被认为是朝阳行业的IT互联网,软件工程师的平均年薪只涨了0.8%,再加上这两年互联网“寒冬”的说法,很多人不禁会问,现在还能入行IT互联网吗? 今天给大家整理了一份IT行…

Vue全局共享数据之globalData,vuex,本地存储使用方法

目录 一、globalData 二、vuex存储方式 1.vue2用法,2.vue3用法 三、本地存储 uniapp的数据缓存 写在最前面,把vue能用到的存储方法都整理拿出来,方便阅读以及工作用。🍉🍉🍉可以收藏起来即拿即用 Vue全局共…

杨旸:从边缘智能迈向泛在智能

内容来源:2022年11月12日,在全球边缘计算大会上海站上,我们非常荣幸邀请到了特斯联集团首席科学家杨旸博士来分享,杨旸博士曾任上海科技大学教授、科道书院院长、上海雾计算实验室主任;科技部“第五代移动通信系统&…

win10VS2017安装boost库

安装boost库参考:Windows下VS2017下boost库安装配置 https://blog.51cto.com/u_15179769/5633439 下载boost库 官方网站:https://www.boost.org/ 下载链接:https://www.boost.org/users/history/version_1_67_0.html 搜索vs开发人员命令…

JavaWeb框架(一):Web入门,Http的请求和响应,https介绍,Web实战自定义服务器

Servlet入门 MVC实战项目 仓储管理系统JavaWeb入门介绍Http协议Http请求数据格式Http响应数据格式Web实战Demo:自定义服务器对比Https协议总结Redis章节复习已经过去,新的章节JavaWeb开始了,这个章节中将会回顾JavaWeb实战项目 仓储管理 代码…

LC-417. 太平洋大西洋水流问题(多源BFS、DFS)

417. 太平洋大西洋水流问题 难度中等558 有一个 m n 的矩形岛屿,与 太平洋 和 大西洋 相邻。 “太平洋” 处于大陆的左边界和上边界,而 “大西洋” 处于大陆的右边界和下边界。 这个岛被分割成一个由若干方形单元格组成的网格。给定一个 m x n 的整数…

[附源码]计算机毕业设计Python的文成考研培训管理系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

详细复习云开发~小程序【云存储、列表的下拉刷新、列表的分页加载】

文章目录一,云开发~云存储1-1,云开发控制台管理文件1-2,上传图片到云存储1-3,给商品列表加商品图片1-4,上传视频到云存储1-5,上传word,excel文件到云存储1-5-1,上传之前先选择文件1-…

我国数据库现状与未来发展趋势

作者:IT圈黎俊杰 一、数据库现状 (一)国际数据库市场现状 在看国内数据库市场现状前,先看一组国际市场数据库的应用情况。 以2021年4月份数据国际市场数据库热度排名为例,稳居前三的Oracle、MySQL 和 Microsoft SQL …

朗坤环境递交注册:拟募资11亿 陈建湘家族色彩浓厚

雷递网 雷建平 12月19日深圳市朗坤环境集团股份有限公司(简称:“朗坤环境”)日前更新招股书,并提交注册,准备在深交所创业板上市。朗坤环境计划募资11.22亿元,其中,6.57亿元用于中山市南部组团垃…

目标检测论文解读复现【NO.22】多尺度下遥感小目标多头注意力检测

前言 此前出了目标改进算法专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

JavaWeb框架(四):JavaWeb项目基于三大组件实现的公司管理系统

MVC实战项目 Web 三大组件实现 公司管理系统需求:项目实战基于会话跟踪技术实现登录功能基于Filter过滤器实现登录验证功能基于Listener监听器监听ServletCntext对象的创建和销毁会话跟踪技术cookiesession对比Filter过滤器入门入门DemoFilter执行流程Filter拦截路径…

基于SSM+Maven+Shiro+Layui+Websocket在线论坛交流聊天bbs系统设计

开发软件:Idea Mysql Redis 开发技术: SSM Maven Shiro Websocket Bootstrap Layui 前台部分 1.用户注册登录模块 用户登录后,可以进行发帖回帖功能,在线签到功能,完善个人信息,添加好友,收藏贴子,评论帖子,点赞功能,记录功能(比如记录今天发生的…

(附源码)ssm巢湖学院校园报修系统 毕业设计 021813

SSM巢湖学院校园报修系统 摘 要 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自己的信息更及时有效地推广出去,而其中最好的方式就是建立网络管理系统,并对其进行信息管理。由于现在网络的发达&…

行业认可|墨菲安全登信息通信软件供应链安全社区优秀榜单

11月以来信息通信软件供应链安全社区开展了“软件供应链优秀成果案例”征集评审活动,在 12 月 16 日的结果公示中,墨菲安全软件供应链安全管理平台本次成功入选自主研发创新成果。这是对墨菲安全长期专注在软件供应链安全领域的成果认可,我们…

堆叠自动编码器(Stacked AutoEncoder)

Deeplearning Algorithms tutorial 谷歌的人工智能位于全球前列,在图像识别、语音识别、无人驾驶等技术上都已经落地。而百度实质意义上扛起了国内的人工智能的大旗,覆盖无人驾驶、智能助手、图像识别等许多层面。苹果业已开始全面拥抱机器学习&#xf…