Buscar

Calculo CRC

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

void CRC (unsigned char* msg, unsigned char* out)
{
 //char CRC16[2] = {0xFF,0xFF};
 unsigned int CRC16 = 0xffff;
 unsigned int poly = 0xA001;
 unsigned char data[14];
 unsigned char crc [2];
 for (int i=0; i<14; i++)
 {
 CRC16 = (unsigned int)msg[i] ^ CRC16; //alteração data para msg
 for (int j=0; j<8; j++)
 {
 // AQUI: primeiro verifica, depois executa o shift
 if(CRC16 & 0x0001 == 1) {
 CRC16 >>= 1;
 CRC16 ^= poly;
 } else {
 CRC16 >>= 1;
 }
 }
 }
 crc[0] = CRC16 >> 8;
 crc[1] = CRC16 & 0b0000000011111111 ;
 strcpy (data,msg);
 strcat (data,crc);
 strcpy (out,data);
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando