30. november 2004 - 11:07Der er
9 kommentarer og 1 løsning
verificere data
Hey,
Jeg står og skal bruge en måde at teste om de data jeg har sendt over en serial linie også er den korrekte når det kommer frem, jeg er næsten helt blank på det område....
Jeg har kigget på MD5, 128 bit = 16 byte, men det er jo et meget stort overhead, hvis jeg kun sender et tegn(unicode) 2 byte, altså ialt 18 byte.
Er der ikke et andet system som ikke bruger så mange bytes til checksum/crc eller hvad det hedder...
Du skal også checke om der er paritetsfejl eller andre fejl i transmissionen på selve com porten hvis du kan, CRC16 er noget bedre til at fange fejl, CRC32 skulle være enormt god (jeg har ingen erfaring med den), hvis jeg husker rigtigt formindsker CRC'erne med mindst en faktor 1000 antallet af fejlagtige men godkendte meddelelser i forhold til den før.
unsigned short int crc16(char *s) { int i; unsigned short int res = 0x0000; for(i = 0; i < strlen(s); i++) { res = (unsigned short int)((res >> 8) ^ table[s[i] ^ (res & 0xFF)]); } return res; }
int main() { printf("%d\n",crc16("ABC")); printf("%d\n",crc16("This is a string")); return 0; }
unsigned short int crc16(char *s) { int i; unsigned short int res = 0x0000; for(i = 0; i < strlen(s); i++) { res = (unsigned short int)((res >> 8) ^ table[s[i] ^ (res & 0xFF)]); } return res; }
int main() { printf("%d\n",crc16("ABC")); printf("%d\n",crc16("This is a string")); return 0; }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.