Calculer une checksum sur 8 bits

Résolu
JOE56570 Messages postés 5 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 29 janvier 2021 - 12 déc. 2011 à 23:01
JOE56570 Messages postés 5 Date d'inscription lundi 12 décembre 2011 Statut Membre Dernière intervention 29 janvier 2021 - 13 déc. 2011 à 15:42
Bonjour,
Je cherche la méthode (en C) pour calculer la checksum d'une trame de 6 octets, dont j'ai saisi le modèle à l'analyseur logique.
1er trame :0x01,0x06,0x7D,0x67,0x64,0x5B le dernier octet (5B) étant la checksum.
2iem trame :0x01,0x01,0x00,0xA6,0x00,0xB4.
2iem trame :0x01,0x06,0x00,0x26,0x1A,0x53.
Il s'agit d'un système de thermostat de radiateur avec commande par radio (868Mhz) de marque ELV (Allemand). En cherchant des renseignements sur le produit, j'ai trouvé sur le Web, une phrase qui explique que la checksum est la somme des 5 premiers octets + Ch. Impossible de savoir à quoi correspont ce Ch (en Allemand)
J'ai essayé avec une somme octet par octet, un XOR octet par octet puis un modulo 256,... mais rien à faire !!! je sèche.
le petit bout de C : (qui ne donne pas le résultat attendu)

iuResult = 0; // Resultat sur 8 bits
/* Calcul de la somme, le premier caractère est en position 1 */
for ( i = 0; i <= 4; i++)
if(Message[i]
iuResult += Message[i];
/* Modulo Valeur Maxi sur 8 Bits */
iuResult %= 0xFF;

Si quelqu'un peut m'aider.
Merci d'avance
A voir également:

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 déc. 2011 à 09:57
Xh est une notation indiquant le coté hexadécimal de la chose...

equivalent à 0xC dans ton cas :



int sum = 0xC; // Resultat sur 8 bits 
unsigned char chkSum;
// Calcul de la somme
for (i = 0; i < 5; i++) 
sum += Message[i]; 
chkSum = sum & 0xFF;



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
Rejoignez-nous