Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Sendestring LED-Steuerung per RS232

  Alt 6. Jun 2008, 23:28
Die Checksumme bezieht sich auf Bytes, somit wird bei der Addition mit einem Überlauf gerechnet.

Delphi-Quellcode:
function CheckSum(const AData: array of byte): byte;
var
  lChecksum: byte;
  i: integer;
begin
  lChecksum := 0;

  for i := low(AData) to high(AData) do
    lChecksum := (integer(lChecksum) + AData[i]) mod 256;

  result := lChechsum xor $ff;
end;
/EDIT: Integer-Typecast wohl nicht nötig, aber zur Sicherheit...

Ansonsten erweitert für unendlich viele Daten anstatt nur einem Datenbyte...

Aufruf z.B.: letztesByte := CheckSum([$04, $fe, $ff]); Alternativ könnte man es noch umschreiben auf einen typenlosen Parameter und Größenangabe...
  Mit Zitat antworten Zitat