Je développe un pilote d'instrument et je veux savoir comment calculer la checke of cadre.
Explication:
Exprimé par des personnages [0-9] et [A-F].
Les caractères commençant par le caractère après [STX] et jusqu'à ce que [ETB] ou [ETX] (y compris [ETB] ou [ETX]) sont ajoutés en binaire.
Les numéros à 2 chiffres, qui représentent les 8 bits les moins importants en code hexadécimal, sont convertis en ASCII caractères [0-9] et [A-F].
Le chiffre le plus significatif est stocké dans CHK1 et le chiffre le moins important de CHK2.
Ceci est un exemple de cadre:
<STX>2Q|1|2^1||||20011001153000<CR><ETX><CHK1><CHK2><CR><LF>
et je veux savoir quelle est la valeur de chk1 et chk2 et je suis nouveau dans cela, donc je suis totalement vide sur la façon de calculer la checksum
Je ne reçois pas au-dessus du 3ème et 4ème point.
Quelqu'un peut-il fournir un exemple de code pour C #?
Finalement j'ai répondu.
Voici C # Code pour calculer le checksum.
private string CalculateChecksum(string dataToCalculate)
{
byte[] byteToCalculate = Encoding.ASCII.GetBytes(dataToCalculate);
int checksum = 0;
foreach (byte chData in byteToCalculate)
{
checksum += chData;
}
checksum &= 0xff;
return checksum.ToString("X2");
}
Parlant en tant que quelqu'un qui a développé un protocole de communication de LIS entier du pilote série à des entités fortement dactylographiées pour une machine utilisée dans des centaines de laboratoires différents.
Je suis venu à beaucoup de conclusions (liste courte):
Cela étant dit:
http://www.hendricksongroup.com/code_003.cox
Est un exemple très simple de la façon de calculer une somme de contrôle pour un cadre LIS.
Si vous écrivez un pilote LIS, mon conseil vous conseille est d'obtenir de nombreux journaux du vendeur (afin que vous puissiez voir exactement la communication de la communication) que vous connectez et écrivez beaucoup de tests d'unités pour correspondre à ces journaux (que et etc. Si cela doit être pour plus d'un fournisseur de le rendre extrêmement flexible). Oh et ajoutez beaucoup de journalisation pour vous-même.