![]() |
Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)
Zitat:
es ist viel einfacher als du denkst: in Hex-Darstellung sind das die letzten beiden Digits, also von $883 wird nur $83 verwendet. Deshalb brauchst du beim Summieren die oberen Bits und Bytes garnicht mitrechnen, du kannst immer gleich nur das unterste Byte weiterverwenden:
Delphi-Quellcode:
Dann brauchst du dir keine Gedanken darüber machen, wie gross die Summe werden kann.
function TForm1.CreateCheckSum(InStr: String): String;
var rCount, Sum : Integer; begin Sum := 0; for rCount := 1 to Length(InStr) do begin Sum := (Sum + Ord(InStr[rCount])) and $FF; { oder Sum := (Sum + Ord(InStr[rCount])) Mod 256; } end; Result := IntToStr(Sum) + ' (' + IntToHex(Sum, 2) + ')'; end; WS1976: was soll er denn mit einem CCITT -Algorithmus, wenn das Gerät eine einfache Checksumme verwendet? Schreibst du die Geräte-Firmware für ihn um? Gruss Reinhard PS: wenn ich meine Geräte dokumentiere, rechne ich auch immer reale Prüfsummen aus, aber das ist mühsam; vielleicht hat sich der Autor einfach gedacht, 55 ist doch eine schöne Zahl, ohne das in Bezug zum Beispielstring zu setzen. Oder er hat sich einfach verrechnet. |
Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)
Ach herje, was für ein sch.. Thema,
da kann ich auch nur zur allgemeinen Verunsicherungen beitragen. Wie Reinhard schon schrieb: Zitat:
Zudem kann es auch von der entsprechenden Firmware-Version abhängen. Da ist fast alles Möglich. Genauso gut kann es auch immer die 55 sein! Ich kenne Beispiele, da wurde die Firmware und die Geräteeigene Prüfsumme von Lehrlingen implementiert und so ausgeliefert. Wohl ohne jegliche Kontrolle... Da hilft nur beim Hersteller fragen, fragen fragen. Gruß Jochen |
Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)
Juhu, das Thema entwickelt Eigendynamic^^
Hier mal der Link zur kompletten Schnittstellenbeschreibung: ![]() Auf Seite 11 ist die Berechnung der Checksumme beschrieben. Beispielframes gibt es in der Beschreibung auch in ausreichender Anzahl. lg, Andi |
Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)
Das Beispiel aus dem pdf widerspricht dem Protokoll:
Zitat:
Gammatester |
Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)
Hmmm, stimmt das mit der Länge ist eigenartig. Die beiden // sind aber richtig. An der Stelle wird ein nicht genutzer Parameter übergeben. Siehe Seite 19 4.4.1, N.A. Not Applied (but present)
Ich bin gerade dabei, mal mit ein paar anderen Beispielframes zu testen. Über weitere Anregungen würde ich mich freuen. lg, Andi |
Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)
Hallo zusammen,
danke an alle die sich beteiligt haben. Die Lösung des Problems ist ganz einfach. Ich war einfach nur der Pechvogel, der sich ein fehlerhaftes Frame-Beispiel für seine Versuche aus der Beschreibung gepickt hat. Mit den anderen Frames geht es einwandfrei. lg, Andi |
Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)
Hallo bug0815,
bitte probiers doch mal, obwohl da steht "nur Summe bilden" mit meinem Algorithmus. Ist ja ein Versuch wert. OK erledigt, vergiss es! Grüsse Rainer |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz