2012-09-06 2 views
1

i ont ONR protocole du formatProtocole Checksum

\003LLCCDDDD..DDXX 
  • LL: Longueur du paquet total ne comprenant pas l'octet d'attention.
  • CC: Le code de commande.
  • DD: octets de données (en ASCII HEX).
  • XX: La somme de contrôle de LLCCDDDD..DD (elle n'inclut pas l'octet d'attention ni la somme de contrôle elle-même). La somme de contrôle est une simple addition de 8 bits des caractères ASCII dans le paquet de commande.

voici un exemple:

Command: “\0030611C8” (Length=6, command=0x11, checksum=0xC8) 

je veux juste savoir comment la somme de contrôle vient d'être 0xC8 thnx :)

+0

Quel protocole ?? –

+0

protocole pour envoyer et recevoir des commandes à partir de certains périphériques –

+0

quelle est la valeur des octets de données dans vos cas. la longueur n'est pas 0x06 maintenant. – wbao

Répondre

5

Comme votre description des états de protocole, la somme de contrôle est le somme des octets qui ne sont pas l'octet d'attention ou la somme de contrôle. Vous disposez d'un transfert de 7 octets au total:

'\003', '0', '6', '1', '1', 'C', '8' 

Sur ce, \003 est l'octet d'attention, il est donc pas inclus dans la somme de contrôle. De même, les deux derniers caractères sont la somme de contrôle, et ne sont pas inclus. Cela laisse seulement 4 caractères pour votre exemple:

'0', '6', '1', '1' 

la traduction de ces personnages dans leur représentation hexadécimale (cocher une ASCII table) pour les rendre plus faciles à ajouter donne ces résultats:

0x30, 0x36, 0x31, 0x31 

Ensuite, vous ajoutez les valeurs ensemble et obtenir:

0xC8 

Quelle est la réponse que vous cherchez!

+0

s'il vous plaît élaborer plus ?? –

+0

@james, que voulez-vous dire par élaborer plus? Quelle partie avez-vous un problème avec? –

+0

je veux dire comment '0' est converti en 0x30 ??? –

1

Il est ma conjecture:

votre code cible total de contrôle est 0611

Laissez-nous faire ceci:

ASCII (0) = 48, ASCII (6) = 54, ASCII (1) = 49; Obtenir la somme de 4 ASCII est 200 = 0xC8