Je suis un pilote d'instrument en développement et je veux savoir comment calculer la checksum du 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.
je ne reçois pas au-dessus du 3ème et 4ème point.
quelqu'un peut-il fournir un code d'échantillon pour C #.
Aidez-moi, s'il vous plaît.
Enfin, j'ai une réponse, voici le code de calcul de la somme de contrôle:
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");
}
Vous pouvez le faire en une seule ligne:
return Encoding.ASCII.GetBytes(dataToCalculate).Aggregate((r, n) => r += n).ToString("X2");