mavlink协议原理_mavlink协议长度

mavlink协议原理_mavlink协议长度参考https://cloud.tencent.com/developer/news/48344https://www.cnblogs.com/lovechen/p/5801679.htmlhtt

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

参考https://cloud.tencent.com/developer/news/48344

https://www.cnblogs.com/lovechen/p/5801679.html

https://www.cnblogs.com/lovechen/p/5809709.htm

https://www.jianshu.com/p/e57aa664103f

https://www.e-learn.cn/content/qita/1017591

是一种用于飞行器上的轻量级成熟通信协议,与很多自定的协议相比,它的开发难度非常小,有现成的配置工具,可直接生成MSG代码(简单来说,就是生成对应的函数接口供你直接调用即可),直接调用几个相应的函数接口即可,不需要自己封装、解析等;突出的优点在于配置调用比较简单,字节流发送buf长度sendbuf[6+n+2].

mavlink协议原理_mavlink协议长度

 其中0到149为公共消息ID(飞控系统共有消息,一般不建议用于自定义)。而150到240为用于自定义消息的ID范围。

 

1.配置

MAVLink通过xml文件,配置信息(MSG),这个MSG可以理解成我们需要接收或者发送的数据变量。比如:运动控制包含速度距离,xml配置如下:mavlink协议原理_mavlink协议长度

 

 2.通过生成代码 

从官网下载mavlink(git clone https://github.com/mavlink/mavlink.git)

mavlink官网(http://qgroundcontrol.org/mavlink/start),下拉到MAVLink Code and Generator如下图,得到mavlink源码有多种途径,这里选取用python生成。即点击MAVLink Generator (C/C++, Python)

git clone https://github.com/mavlink/mavlink mavlink-generator

或者用PYTHON进行安装 pip install pymavlink,切换到mavlink-master目录下然后运行python mavegenerate.py ,然后修改xml并生成C库

mavlink协议原理_mavlink协议长度

 

 

3.调用代码

代码生成,只需要简单调用两个函数接口即可:

发送:调用两个函数即可:

mavlink_msg_motion_pack():封包函数接口;参数为:sysid,comid,&buf,参数值1,2,。。。n)

mavlink_msg_to_send_buffer:转换成发送的BUF

接收解析:

1调用mavlink_parse_char函数来判断数据是否接收完成(完成标志:MAVLINK_FRAMING_OK)

2 根据接收完成标志对数据进行解析和调用。

mavlink协议原理_mavlink协议长度
mavlink协议原理_mavlink协议长度

 1 //状态uint8_t ret = 0;
 2 //消息结构
 3 mavlink_message_t msg;
 4 void USART1_IRQHandler(void)                  //串口1中断服务程序
 5 {    
 6     if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断   
 7     {        
 8         uint8_t data = USART_ReceiveData(USART1);//(USART1->DR);  //读取接收到的数据        //调用mavlink_parse_char函数来判断数据,数据接收完成,返回MAVLINK_FRAMING_OK        
 9         ret = mavlink_parse_char(MAVLINK_COMM_3, data, &msg, &status);    
10     }
11 }
12 void MAVLinkRcv_Handler(mavlink_message_t MAVLinkMsg)
13 {  //心跳包结构  
14     mavlink_heartbeat_t current_messages;    
15     if(MAVLinkMsg.msgid==MAVLINK_MSG_ID_HEARTBEAT)//消息ID为心跳包
16     {    //调用mavlink_msg_heartbeat_decode函数解码心跳包    
17         mavlink_msg_heartbeat_decode(&MAVLinkMsg, current_messages);    //显示心跳包数据(需要自己编写)    
18         SHOW_HEARTBEAT(MAVLinkMsg, current_messages);  
19     }
20 }
21 int main(void)
22 {   
23     init();   
24     while(1)    
25     {        
26         if( MAVLINK_FRAMING_OK == ret )      
27         {            
28             //接收成功            //解码           
29             MAVLinkRcv_Handler(msg);           
30             ret = 0;          
31         }            
32         else 
33         {
34             /*TODO*/        
35         }
36     }
37 }

View Code

 

4编译排错:

keil工程里面全局编译一下,会发现好多的错误。这个错误跟编译器有关。一种方式是直接修改每一个错误,可以自行百度“mavlink移植 ”;当然还有一种方法,是在工程配置中加入如下配置:

--no_strict --gnu

目的是想让MAVLink这段代码采用gun的格式进行编译,但是要注意其他的代码需要保证是使用的keil的默认编译器__CC_ARM进行编译。再次编译会发现没有错误。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167269.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux常用命令菜鸟教程_化妆初学者必备工具

    linux常用命令菜鸟教程_化妆初学者必备工具一.学习Linux终端命令的原因1.Linux刚面世时并没有图形界面,所有的操作全靠命令完成,如磁盘操作、文件存取、目录操作、进程管理、文件权限设定等2.在职场中,大量的服务器维护工作都是在远程通过SSH客户端来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成在职场中,作为后端程序员,必须要或多或少的掌握一些Linux常用的终端命令。3.Linux发行版本的命令大概有200多个,但是常用的命令只有10多个而已二.linux常用指令ls命令…

    2022年9月23日
    2
  • 2010款汉兰达参数配置_windows安装程序兼容性报告

    2010款汉兰达参数配置_windows安装程序兼容性报告
    关于配置TFS2010的总结:
    TFS2010是我第一次配置,这个东西配置有点麻烦,我还从来没有用过,听经理说,他好像类似于一个大管家,将项目的的需求管理,跟踪,版本管理,测试管理等一系列功能综合在一起,免去了做一个项目要选择许多管理工具的繁琐问题,经理说要不惜一切代价搞定这个东西,在安装的过程中走了很多弯路。
     
    我是参考一篇关于TFS配置的文章配置的,文章介绍的很详细,有插图(我会将它分享给大家),但是我在实际安装的时候还是除了很多问题
    开始我很发愁

    2022年9月14日
    2
  • Java从入门到精通技术书籍最全50+本推荐(内附电子书资源无偿共享)建议收藏!

    Java从入门到精通技术书籍最全50+本推荐(内附电子书资源无偿共享)建议收藏!前言:技术书阅读方法论一.速读一遍(最好在1~2天内完成)人的大脑记忆力有限,在一天内快速看完一本书会在大脑里留下深刻印象,对于之后复习以及总结都会有特别好的作用。对于每一章的知识,先阅读标题,弄懂大概讲的是什么主题,再去快速看一遍,不懂也没有关系,但是一定要在不懂的地方做个记号,什么记号无所谓,但是要让自己后面再看的时候有个提醒的作用,看看第二次看有没有懂了些。二.精读一遍(在2周内看完)有了前面速读的感觉,第二次看会有慢慢深刻了思想和意识的作用,具体为什么不要问我,去问30年后的神经大脑专家

    2022年7月8日
    45
  • Java爬取先知论坛文章

    Java爬取先知论坛文章0x00前言上篇文章写了部分爬虫代码,这里给出一个完整的爬取先知论坛文章代码,用于技术交流。0x01代码实现pom.xml加入依赖:<dependencie

    2021年12月12日
    41
  • 如何使用Java获取当前时间戳[通俗易懂]

    如何使用Java获取当前时间戳[通俗易懂]要获取Java中的当前时间戳:Timestamptimestamp=newTimestamp(System.currentTimeMillis());//2016-11-1606:43:19.77这是两个Java示例,向您展示如何获取Java中的当前时间戳。(使用Java8更新)1.java.sql.Timestamp获得当前java.sql.Times…

    2022年4月28日
    112
  • 女生学Java软件开发好就业吗

    女生学Java软件开发好就业吗  java在IT行业非常火热,近几年不仅引起了很多人的关注,女性同胞也非常关注这一行业,想要学习java技术,但是不知道女生学Java软件开发好就业吗?来看看下面的详细介绍就知道了。  女生学Java软件开发好就业吗?目前大多数想要参加Java培训学习女生的一个重要关注的话题,学习不用多说,只要是自己足够的努力,在选择一个靠谱的Java培训机构,还是比较容易学会的。有的时候我们可以看到同样的老师、同样的课程和同样的学习方式,整个Java培训过程下来女生很多是要比男生学习的更好。  所以,在学习

    2022年7月8日
    16

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号