为256字节的数据CRC

J

john2020

Guest
大家好,下面的代码可以用来检测的256个字节的数据包错误?/ *
*功能:Do_CRC8
* *描述:
*计算CRC值给定的字节和旧启为静态值的值
*
*返回值:CRC值
*参数:输入数据字节是CRC'ed
*备注:
*使用一个表驱动的方法来加快速度。
*
* * /
无符号字符Do_CRC8(无符号字符二十)

/ /此过程计算
const无符号的字符代码表[256] =(
0x00,为0x07,0x0E,0x09,0x1C,0x1B,0x12,0x15,0x38,0x3F,0x36,0x31,0x24,0x23,0x2A,0x2D,
0x70,0x77,0x7E,0x79,0x6C,0x6B,0x62,0x65,0x48,0x4F,0x46,0x41,0x54,0x53,0x5A,0x5D,
0xE0,0xE7,0xEE,0xE9,0xFC,0xFB,0xF2,0xF5,0xD8,0xDF,0xD6,0xD1,0xC4,0xC3,0xCA,0xCD,
0x90,0x97,0x9E,0x99,0x8C,0x8B,0x82,0x85,0xA8,0xAF,0xA6,0xA1,0xB4,0xB3,0xBA,0xBD,
0xc7的,0xC0,0xC9,0xCE,0xDB,0xDC,0xD5,0xD2,0xFF,0xF8,0xF1,0xF6,0xE3,0xE4,0xED,0xEA,
0xB7,0xB0,0xB9,0xBE,0xAB,0xAC,0xA5,0xA2,0x8F,0x88,0x81,0x86,0x93,0x94,0x9D,0x9A,
0x27,0x20,0x29,0x2E,0x3B,0x3C,0x35,0x32,0x1F,0x18,0x11,0x16,0x03,0x04,字符0x0D,字符0x0A,
0x57,0x50,0x59,0x5E,0x4B,0x4C,0x45,0x42,0x67上,0x68,0x61,0x66,0x73,0x74,0x7D,0x7A,
0x89,0x8E,0x87,0x80,0x95,0x92,0x9B,0x9C,0xB1,0xB6,0xBF,0xB8,0xAD,包含0xAA,0xA3,0xA4,
0xF9,0xFE,0xF7,0xF0,0xE5,0xE2,0xEB,0xEC,0xC1,0xC6,0xCF,0xC8,0xDD,0xDA,0xD3,0xD4,
0x69,0x6E,0x67,0x60,0x75,0x72,0x7B的,0x7C,0x51,0x56,0x5F,0x58,0x4D,0x4A,0x43,0x44,
0x19,0x1E,0x17,0x10,0x05,0x02,0x0B,0x0C,0x21,0x26,为0x2F,0x28,0x3D,0x3A,0x33,0x34,
0x4E,0x49,0x40,0x47,0x52,0x55,0x5C,0x5B,0x76,0x71,0x78,0x7F的,0x6A,0x6D,0x64,0x63,
0x3E,0x39,0x30,0x37,0x22,0x25,0x2C,0x2B,0x06,0x01,0x08,0x0F,0x1A,0x1D,0x14,0x13,
0xAE,0xA9,0xA0,0xA7,0xB2,0xB5,0xBC,0xBB,0x96,0x91,0x98,0x9F,0x8A,0x8D,0x84,0x83,
0xDE,0xD9,0xD0,0xD7,0xC2,0xC5,0xCC,0xCB,0xE6,0xE1,0xE8,0xEF,0xFA,0xFD,0xF4,0xF3

);

ucCRC =表[ucCRC ^ xx]个;

返回(ucCRC);
)答复的一些建议和思想的交流
, 我尽早

关心
约翰

 
“下面的代码可以用来检测的256个字节的数据包错误?

它看起来plausable。

一个8位CRC将通过未被发现让很多坏包。当一个数据包数位获得翻转或者如果一个字节就丢失了你在256具有原始数据
, 该错误将不会被检测到相同的CRC8机会的坏数据粗略1。

 
您好throwaway18

为感谢您的reply.have您试图执行一个CRC 16位或32位?若有暂答复me.can你建议我一些好的书,在那里我可以检索有关实现儿童权利的信息?

 
你的程序当然是非常快
, 但它需要大量的Flash。
如果你有足够的时间也许这代码可以帮助您。

戈麦斯

/************************************************* ****************************
*** ***
*** Funktion:crc8 ***
***说明:函数钙crc8总结***
***输入:旧启总之,新的数据***指针
***输出:非***
*** ***
************************************************** ***************************/
无效crc8(无符号字符*华润,符号)char数据

廉政指数= 8;
廉政蛋白原;

做(
纤维蛋白原=(*华润^数据)&0x01;
数据“”= 1;
*华润“”= 1;

如果(财)
*华润^ = 0x8c;

),而( -指数);


/************************************************* ****************************
*** ***
*** Funktion:crc16 ***
***说明:函数钙crc16总结***
***输入:旧启总之,新的数据***指针
***输出:非***
*** ***
************************************************** ***************************/
无效crc16(无符号整型*华润,符号)char数据

廉政指数= 8;
无符号字符蛋白原;

*华润^ =(无符号长)数据“”8;
做(
如果(*华润&0x8000)
*华润=(*儿童权利公约“”1)^ 0x1021;
其他的
*华润“”= 1;
),而( -指数);


 
亲爱的戈麦斯

为感谢您的伪code.i会尝试的,但是吃你确定它西港岛线为256字节的检测数据CRC?反正
让我检查一下输出

关心
约翰

 
john2020说:

为感谢您的伪code.i会尝试的,但是吃你确定它西港岛线为256字节的检测数据CRC?反正

让我检查一下输出

 

Welcome to EDABoard.com

Sponsor

Back
Top