Ein serielles Gerät verlangt zu jedem Befehl eine Checksum. Wie kann ich diese jedoch berechnen? Hier ein paar Beispiele:
- #$FF#$30#$00 -> #$D1
- #$FF#$90#$02#$00#$FF -> #$70
- #$FF#$D0#$02#$00#$05 -> #$2A
Die Beschreibung des Herstellers lautet wie folgt: "...If all message bytes excluding the preamble are summed and the lower byte value of the result equals zero, the message is valid and it may be processed. The checksum value of the message should be included in the summation." Die hier besprochene Preambel (#$FA) habe ich bei den Beispielen bereits weggelassen. Eine simple Aufaddierung mit
Delphi-Quellcode:
sum := 0;
if i := 0 to length(s)-1 then
inc(sum, ord(s[i])):
gibt leider nicht das gesuchte Resultat. Wie muss ich diese Quersumme berechnen?