OVH Cloud OVH Cloud

[WD5.5b][WD8] Comment Calculer le CRC8 d'un byte ?

1 réponse
Avatar
Fred
Bonjour !

Je communique avec un ecran LCD monochrome liaison RS232 sur port COM1. Pour
charger des images, il faut envoyer des trames avec un caractère de contrôle
en bout de trame qui est la somme des CRC8 de chaque byte. Est-ce que
quelqu'un aurait déjà réalisé une procédure qui calcule ce CRC8 sur un byte
?

Merci d'avance pour vos réponses !

Fred

1 réponse

Avatar
Romain PETIT
Fred a pensé très fort :
Bonjour !



Bonsoir,

Je communique avec un ecran LCD monochrome liaison RS232 sur port COM1. Pour
charger des images, il faut envoyer des trames avec un caractère de contrôle
en bout de trame qui est la somme des CRC8 de chaque byte. Est-ce que
quelqu'un aurait déjà réalisé une procédure qui calcule ce CRC8 sur un byte
?



Il y a plusieurs algorithmes pour les CRC (le CRC8 est peu utilisé) et
j'avoue n'avoir jamais eu le courage d'essayer de les coder en
W-langage...
De toutes façons, ce serait une bourde de le faire car le calcul du CRC
prendrait énormément plus de temps à WD qu'un appel à une DLL ou un OCX
optimisé.

Je te conseille cet OCX : CRCOCX, http://welcome.to/sirocco , il permet
de calculer *très* rapidement (routines en assembleur) des CRC32, 16,
8, XOR, CCITT, sommes 16/32 (LRC) et même des CRC personnalisés...
Gratuit pour un usage perso, il coute 50 (euros ? livres ?) pour avoir
les sources (cf le fichier d'aide)

Très facile à mettre en oeuvre :
- fichier OCX à enregistrer sur le système
- controle ActiveX WD en sélectionnant "CrcCtrl Control" (axCRC dans
mon exemple)
- exemple de code WD :

sChaine est une chaine = "01A2BB"

axCRC>>CRCType = 10 //type CRC8
axCRC>>DoCRC(sChaine, Taille(sChaine), Faux, 0)
Info("le CRC8 de la chaine " + sChaine + " est " + axCRC>>GetCRCHexStr)


A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)