Hola suky, claro, tengo no uno si no varios ejemplos, pero en ninguno ha dado, he hecho muchas combinaciones pero no han tenido resultado, te voy a poner varios ejemplos y lo que dice un libro en español y mi código para ver si alguien puede hacer algo:
CRC: Campo para la verificación de error. Se calcula desde STX a ETX y no toma en cuenta los DLE intermedios. Utiliza el algoritmo CRC UIT-T V.41. (DLE,DLE,STX,DATOS,DLE,ETX,CRC1,CRC2)
0,10,2,1,32,8B,31,10,3,E3,F6
0,10,2,1,33,85,0,10,3,39,55
0,10,2,0,32,86,1,0,4,10,3,84,44
char CRC1, CRC2;
unsigned int CRC;
int ContBan;
unsigned int j, i, z;
short d;
CRC1=CRC2=0;
CRC = 65535;//;
z = 0;d = 0;
for (j=0; j<tamano_crc; j++){
//d = (crc_vector[j]*256);
CRC = CRC^crc_vector[j];//d;
i = 0;
for (i=0; i<8; i++){
z = CRC & 1;//32768;
if (z>0){
CRC = CRC >> 1;//<< 1;
CRC = CRC & 0x7FFF;//65534;
CRC = CRC ^ 0x1021;//polinomio
}else{
CRC = CRC >> 1;//<< 1;
CRC = CRC & 0x7FFF;//65534;
}
}
}
//CRC
CRC1 = CRC & 255;
CRC = CRC >> 8;
CRC2 = CRC & 255;
Este metodo ha sido cambiado varias veces pero ninguna ha dado, ojala me puedan ayudar en algo.