AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Checksumme in einem Übertragungsprotokoll bilden (LSB)

Checksumme in einem Übertragungsprotokoll bilden (LSB)

Ein Thema von bug0815 · begonnen am 16. Feb 2009 · letzter Beitrag vom 17. Feb 2009
Antwort Antwort
Seite 2 von 2     12
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#11

Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)

  Alt 16. Feb 2009, 10:34
Zitat von bug0815:
...
Kann mir wer plausibel erklären, oder einen hilfreichen Link posten, was die 8 LSB meiner Summe 2179 (Dezimal), oder 0883 (Hex) sind. Wenn ich das mal Verstanden habe, kann ich etwas leichter nach weiteren Lösungsansätzen suchen.
Hallo,

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:
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;
Dann brauchst du dir keine Gedanken darüber machen, wie gross die Summe werden kann.

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.
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#12

Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)

  Alt 16. Feb 2009, 10:51
Ach herje, was für ein sch.. Thema,
da kann ich auch nur zur allgemeinen Verunsicherungen beitragen.

Wie Reinhard schon schrieb:
Zitat:
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.
Bei der von mir gewarteten DEZ9000 muß ich an den auszuwertenden String ein ETX anhängen, damit die Prüfsumme mit der des Gerätes übereinstimmt. Obwohl es laut Beschreibung nicht sein darf!
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
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
bug0815

Registriert seit: 17. Jan 2004
14 Beiträge
 
Delphi 2006 Enterprise
 
#13

Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)

  Alt 16. Feb 2009, 10:59
Juhu, das Thema entwickelt Eigendynamic^^

Hier mal der Link zur kompletten Schnittstellenbeschreibung:
http://www.vodafone.de/downloadarea/EmiSpec_43c.pdf

Auf Seite 11 ist die Berechnung der Checksumme beschrieben. Beispielframes gibt es in der Beschreibung auch in ausreichender Anzahl.

lg,
Andi
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#14

Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)

  Alt 16. Feb 2009, 11:23
Das Beispiel aus dem pdf widerspricht dem Protokoll:
Zitat:
Of a call input operation, the alphanumeric message is: ´Test´: stx01/00044/O/01/01720123445/2323//3/54657374/55etx
Es sollten 44 Zeichen incl. Checksum sein, es sind aber 45. Wenn man aus '//' vor der 3 ein '/' macht, kommt man auf CS = 54; noch nicht ganz richtig, aber näher :)

Gammatester
  Mit Zitat antworten Zitat
bug0815

Registriert seit: 17. Jan 2004
14 Beiträge
 
Delphi 2006 Enterprise
 
#15

Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)

  Alt 16. Feb 2009, 11:38
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
  Mit Zitat antworten Zitat
bug0815

Registriert seit: 17. Jan 2004
14 Beiträge
 
Delphi 2006 Enterprise
 
#16

Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)

  Alt 16. Feb 2009, 12:52
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
  Mit Zitat antworten Zitat
WS1976
(Gast)

n/a Beiträge
 
#17

Re: Checksumme in einem Übertragungsprotokoll bilden (LSB)

  Alt 17. Feb 2009, 06:34
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
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz