Einzelnen Beitrag anzeigen

GPR-Man

Registriert seit: 28. Okt 2008
Ort: Zürich
14 Beiträge
 
RAD-Studio 2009 Pro
 
#10

AW: checksum eines RS232-strings erstellen

  Alt 15. Dez 2010, 07:55
Der Code sieht nun so aus:
Delphi-Quellcode:
  function CalculateChecksum(s: string): Longint;
  var
    i, sum: integer;
    checkchar : Char;
  begin
    sum := 0;
    for i := 0 to length(s)-1 do
      inc(sum, ord(s[i]));
    checkchar := char((- sum) and $FF);

    Result := Ord(checkchar);
  end;
und liefert bei 3 bytes den korrekten Wert, also FF1000 -> F1 oder FF3000 -> D1. Sobald der String jedoch länger wird, stimmt es nicht mehr:
- FF64020006 ergibt 9B, sollte 95 sein
- FF900200FF ergibt 6F, sollte 70 sein
- FFD20400000005 ergibt 2B, sollte 26 sein
Was muss man noch ändern?
  Mit Zitat antworten Zitat