你想通过CRC表查每一帧数据对应的校验值吗?到这边我教你

2023-10-14 19:58

本文主要是介绍你想通过CRC表查每一帧数据对应的校验值吗?到这边我教你,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一 CRC校验的作用
在通信过程,传输数据对于我们就很重要,那么如何保证数据传输的正确性呢?如果在我们传输的数据之后添加一个数(这个数是双方都知道的一个数),对方都能接受到这个数的话是不是就能保证数据的准确性呢?这就用到了今天我们所要讲的CRC校验了。
二 CRC校验的原理
这一部分比较多,我就放到另一个博客里面讲解。
三 如何通过查表,来得出你想要的每一帧数据的校验码呢?
首先我们应该要清楚的是这个校验码就是我们所说的保证数据准确性而在原始数据之后添的一个数。
一定要看清楚我这里写的是哪个多项式下的表!!!!
/*****************************************************
描 述: CRC8校验子程序 x^8 + x ^5 + x ^4 + x ^0
入口参数: 指向数组指针,校验字节个数
出口参数: 8位CRC校验码
******************************************************/
这里主要写的是CRC_8的校验码的求法,代码是在Visual Studio 2017中写的,直接看代码!!
**#include
using namespace std;
//CRC表
unsigned char const CRC8Table[] = {
0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65,
157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220,
35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98,
190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255,
70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7,
219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154,
101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36,
248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185,
140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205,
17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80,
175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238,
50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115,
202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139,
87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22,
233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168,
116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53
};
int CRC8_Table(unsigned char p, int counter)
{
unsigned int crc8 = 0;
//查表得到CRC码
for (; counter > 0; counter–) {
crc8 = CRC8Table[crc8^p];
p++;
}
return(crc8);
}
int main()
{
unsigned char data[] = { 0xaa,0xaa,0x18,0x03,0xc8,0x03,0xc8,0x03,0xc8,0x03,0xc8,
0x03,0xc8, 0x03,0xc8, 0x03,0xc8, 0x0a,0x17,0x00,0x3c,0x00,0x3c};
int len ;
len = sizeof(data) / sizeof(unsigned char);
//cout << len << endl;
int c = CRC8_Table( data, len);
cout << c << endl;
system(“pause”);
return 0;
}

说明:unsigned char data[] = { 0xaa,0xaa,0x18,0x03,0xc8,0x03,0xc8,0x03,0xc8,0x03,0xc8,
0x03,0xc8, 0x03,0xc8, 0x03,0xc8, 0x0a,0x17,0x00,0x3c,0x00,0x3c};
这个表示我们的原始数据,所以通过这个就可以求出任意一帧数据的校验码了,得出校验码后加到原始数据之后组成一帧新的数据,然后传给上位机。那么我们就可以在一个项目中测试到底传输的数据对不对了。

这篇关于你想通过CRC表查每一帧数据对应的校验值吗?到这边我教你的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/212785

相关文章

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

golang获取prometheus数据(prometheus/client_golang包)

《golang获取prometheus数据(prometheus/client_golang包)》本文主要介绍了使用Go语言的prometheus/client_golang包来获取Prometheu... 目录1. 创建链接1.1 语法1.2 完整示例2. 简单查询2.1 语法2.2 完整示例3. 范围值

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

Rust中的BoxT之堆上的数据与递归类型详解

《Rust中的BoxT之堆上的数据与递归类型详解》本文介绍了Rust中的BoxT类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用BoxT来实现递归类型和处理大小未知类型,通过BoxT,Rus... 目录1. Box<T> 的基础知识1.1 堆与栈的分工1.2 性能优势2.1 递归类型的问题2.2

Python重命名文件并移动到对应文件夹

《Python重命名文件并移动到对应文件夹》在日常的文件管理和处理过程中,我们可能会遇到需要将文件整理到不同文件夹中的需求,下面我们就来看看如何使用Python实现重命名文件并移动到对应文件夹吧... 目录检查并删除空文件夹1. 基本需求2. 实现代码解析3. 代码解释4. 代码执行结果5. 总结方法补充在

Python使用Pandas对比两列数据取最大值的五种方法

《Python使用Pandas对比两列数据取最大值的五种方法》本文主要介绍使用Pandas对比两列数据取最大值的五种方法,包括使用max方法、apply方法结合lambda函数、函数、clip方法、w... 目录引言一、使用max方法二、使用apply方法结合lambda函数三、使用np.maximum函数

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE