MAVLINK包的校验方法

2023-05-16

  这段时间做一个项目要进行MAVLINK的解包校验,但有一个叫做 CRC_EXTRA的位导致这个校验码怎么算结果都不对,后来找了好久还是在github的论坛上看见别人讨论才找到方法的。

  1、先上从官网上拿的mavlink包格式

图里字有点小,放大可以看到,最后两个字节是校验码,然后校验方法是CRC-16/MCRF4XX,校验范围是1-n+6(即除去包头和校验字节)再额外加上一个叫 CRC_EXTRA的东西。

2、首先说这个校验方法,之前不知道从哪里看到的说是用CRC16CCITT校验,看到官方的才发现原来是CRC-16/MCRF4XX。这个校验方法在这个网站有它的在线校验器,16进制(CRC16)(多项式异或,多种)校验(2),循环冗余校验在线计算器_三贝计算网_23bei.com。这里就说一下它的几个参数,

算法名称                   多项式    初始值    结果异或    输入反转    输出反转   
CRC-16/MCRF4XX    1021       FFFF      0000           true              true    

3、然后再说最关键的,校验计算的时候不但要算进去收到的1-n+6范围内的数据,还要加上一个CRC_EXTRA,而这个东西的值是从如下数组中取得的,对应的序号是收到数据包中的Messa ID字节+1。(当用c程序实现的时候直接用Messa ID当数组下标就能取到了)

crc-extra in array
50, 124, 137, 0, 237, 217, 104, 119, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 214, 159, 220, 168, 24, 23, 170, 144, 67, 115, 39, 246, 185, 104, 237, 244, 222, 212, 9, 254, 230, 28, 28, 132, 221, 232, 11, 153, 41, 39, 214, 223, 141, 33, 15, 3, 100, 24, 239, 238, 30, 200, 183, 0, 130, 0, 148, 21, 0, 52, 124, 0, 0, 0, 20, 0, 152, 143, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 183, 63, 54, 0, 0, 0, 0, 0, 0, 0, 175, 102, 158, 208, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 49, 170, 44, 83, 46, 0
(sequential number crc-extra = #Message ID +1)

最后算出来之后注意一下高位低位的位置顺序就好了。

4、关于这个校验算法的程序实现,我是用c语言实现的,如果有人需要的话可以之后再贴出来。

我也是自己踩了太多坑,成功后才想开贴帮助后来的人避一下坑,有疑问的话欢迎讨论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MAVLINK包的校验方法 的相关文章

随机推荐

  • Ubuntu22.04安装与配置记录

    Ubuntu22 04安装与配置记录 原文地址 xff1a Ubuntu22 04安装与配置记录 2022年4月21日 xff0c ubuntu发布了22 04版本 xff0c 该版本是一个LTS长期支持版本 xff0c 技术支持5年 xf
  • java版GDAL环境报错--Native library load failed. java.lang.UnsatisfiedLinkError: no gdalalljni in java.

    xff08 windows版 xff09 ERROR Native library load failed java lang UnsatisfiedLinkError no gdalalljni in java library path
  • 整理牛客网的C++面经

    基础知识 牛客网上的C 43 43 面经有很多重复的问题 xff0c 经过我自己的理解和思考重新整理一下 xff0c 希望可以加深自己的记忆 Static关键字的作用 静态全局变量 xff1a 静态存储区 xff0c 未初始化会初始化为0
  • 【EHub_tx1_tx2_E100】Ubuntu18.04 + ROS_ Melodic + WHEELTEC 9轴IMU测试(如何在该环境下配置驱动/RVIZ查看)

    简介 xff1a 介绍WHEELTEC 9轴IMU 在EHub tx1 tx2 E100载板 xff0c TX1核心模块环境 xff08 Ubuntu18 04 xff09 下测试ROS驱动 xff0c 配置驱动环境 xff0c RVIZ查
  • #kali网卡配置以及乱码问题解决 #title1:kali-linux-2019.4-i386 #title2:network

    kali网卡配置以及乱码问题解决 title1 kali linux 2019 4 i386 title2 network 0x01 改网卡配置 xff0c 重启网卡服务 保证虚拟机系统桥接 vi etc network interface
  • git错误记录:git-lfs filter-process: git-lfs: command not found

    参考文章 The Git init amp fetch approach breaks Git LFS 问题描述 在pull远程主分支代码时 xff0c 因为合作开发的伙伴上传了个静态库 xff0c 大文件拉取不下来 xff0c 出现了 g
  • 智能车调试

    首先 xff1a 摄像头采集图像 xff0c 采集是一张一张的 xff0c 在每一张图片然后根据二维数组识别黑白边界 xff0c 进而通过每一行得到黑白边界求出中值点 xff0c 车随中值点构成的中值线驱动电机的行驶 xff0c 电机有加速
  • STM32串口不定长度传输策略

    目录 一 接收中断 43 空闲中断 二 接收中断 43 外加定时器 三 接收中断 43 自定义结束符 四 串口DMA接收不定长数据 一 接收中断 43 空闲中断 RXNE中断和IDLE中断的区别 xff1f 当接收到1个字节 xff0c 就
  • 【AUTOSAR】【信息安全】CSM

    目录 一 概述 二 依赖模块 三 功能描述 3 1 基本体系结构 3 2 通用行为 3 2 1 正常操作 3 2 2 设计说明 3 3 错误分类 3 3 1 开发错误 3 3 2 运行时错误 四 API接口 4 1 通用接口 4 2 加密接
  • ::在c++中什么意思

    34 34 在C 43 43 中表示作用域 xff0c 和所属关系 34 34 是运算符中等级最高的 xff0c 它分为三种 xff0c 分别如下 xff1a 一 作用域符号 xff1a 作用域符号 的前面一般是类名称 xff0c 后面一般
  • 在eclipse上配置使用tomcat

    在eclipse上配置使用tomcat 1 确认自己已经下载好tomcat后 xff0c 打开eclipse后选择菜单栏中的windows列表中的首选项配置 2 找到Server选项中的Runtime Envirnm选项 xff0c 如图所
  • 本科学完C语言、C++、python(学透点),还有必要学别的语言吗?

    原作者是一名高校的信息技术类的教师 xff0c 主教程序设计类课程 这样的问题 xff0c 作者的学生也会经常问他 本篇文章意于为各位大学生提供一些在编程上的疑惑 xff0c 希望能够对大家有帮助 作者 xff1a 悟空问答丨EXCEL进阶
  • C/C++编程笔记:C/C++中的strrchr()函数,到底该怎么用?

    在C 43 43 中 xff0c strrchr xff08 xff09 是用于字符串处理的预定义函数 cstring是字符串函数所需的头文件 此函数返回一个指针 xff0c 该指针指向字符串中最后一次出现的字符 我们想要找到的最后一个出现
  • C++编程书籍推荐:零基础入门书籍,学C++看它们就够了!

    如果你是一个没有编程经验的C 43 43 零基础小白 xff0c 或者有其它语言经验的C 43 43 初学者 xff0c 那么强烈推荐下面的十本零基础小白入门C 43 43 书籍 1 C 43 43 Primer 作者 xff1a Stan
  • 【ROS2 入门】虚拟机环境 ubuntu 18.04 ROS2 安装

    大家好 xff0c 我是虎哥 xff0c 从今天开始 xff0c 我将花一段时间 xff0c 开始将自己从ROS1切换到ROS2 xff0c 做为有别于ROS1的版本 xff0c 做了很多更新和改变 xff0c 我还是很期待自己逐步去探索R
  • 如何解压.gz的压缩文件

    如何解压 gz的压缩文件 gzip d xxx gz tar命令 root 64 linux tar cxtzjvfpPN 文件与目录 参数 xff1a c xff1a 建立一个压缩文件的参数指令 create 的意思 xff1b x xf
  • GPS经纬度坐标与XY坐标相互转换的python程序

    文章目录 前言一 说明二 函数1 import 和 常数2 GPS经纬度转XY坐标3 XY坐标转GPS经纬度 总结 前言 室外定位常用的是GPS xff0c 故编队队形 设定轨迹都是基于GPS经纬度坐标 而在仿真中我们通常会在XY坐标系下进
  • AD20 原理图设计流程

    Altium Designer 20 的原理图设计大致可以分为 9 个步骤 xff1a xff08 1 xff09 新建原理图 这是原理图设计的第一步 xff08 2 xff09 图纸设置 图纸设置就是要设置图纸的大小 xff0c 方向等信
  • JavaScript基础——DOM节点操作学习笔记

    目录 笔记 方法的使用 案例一 动态生成表格 案例二 下拉菜单 xff0c 鼠标经过和离开实现 案例全部代码 笔记 节点概述 1 网页中的任何内容都是节点 文字 标签 元素 文档等 节点至少有nodeType 节点类型 nodeName 节
  • MAVLINK包的校验方法

    这段时间做一个项目要进行MAVLINK的解包校验 xff0c 但有一个叫做 CRC EXTRA的位导致这个校验码怎么算结果都不对 xff0c 后来找了好久还是在github的论坛上看见别人讨论才找到方法的 1 先上从官网上拿的mavlink