Hallo Freunde Zur Zeit arbeite ich an einem Projekt mit serieller Kommunikation. Ein Master kommuniziet mit einem Slave. Dabei schickt der Master dem Slave die Zeit und das Datum in einem Telegramm wie in der angehängten Datei dargestellt. Ich nehme an, die letzten beiden Abschnitte sind die Checksumme bzw. Prüfsumme. Nun ist mein Problem, ich weiss nicht wie diese gebildet wird. Da kommt ihr ins Spiel, könnt ihr mir weiterhelfen? Ich habe schon mit online Checksummerechner versucht diese zu berechnen, aber bin nicht auf das gleiche Resultat gekommen Freundliche Grüsse Fabian
Fabian G. schrieb: > Da kommt ihr ins Spiel, könnt ihr mir weiterhelfen? WIR sind besonders gut wenn DU möglichst viel Kontext zu deiner Frage schreibst (Hersteller, Produkt, Baujahr, etc) Ein paar Zeilen als ASCII hex dump (nicht Pixel) währen auch nicht schlecht..
Tja, von der Länge her könnte es eine CRC16 sein, wenn deine Annahme mit den 2 Byte stimmt. Das Problem, welche Bytes gehen alle in die Berechnung der Checksumme ein? Wie lautet der Initialwert der CRC, sofern es eine ist? CRC16 gibt es in vielen Varianten. Hier ist ein online Rechner, mit dem du rumprobieren kannst. http://www.sunshine2k.de/coding/javascript/crc/crc_js.html
WIR schrieb: > WIR sind besonders gut wenn DU möglichst viel Kontext zu deiner > Frage schreibst (Hersteller, Produkt, Baujahr, etc) Hersteller: Bosch Sicherheitssysteme Produkt: AMC2 4R4 und Delta 1000 Baujahr: Nicht vorhanden Ich nehme an, diese Daten sind nicht Relevant. Ich füge aber noch 2 Ausschnitte ein, bei dem ich in Gelb das empfangen Telegramm markiert habe. Ich denke der 2. und 3. letzte HEX-Wert bilden die Checksumme, jedoch habe ich noch nicht herausgefunden wie. Freundliche Grüsse Fabian Gärtner
Es gibt verschiedene Methoden. Sinnvoll ist, 2 verschiedene zu benutzen, wenn Prüf-Fehler reduzieren möchte. z.B. CRC; LRC; MD5 usw. Beitrag "Einfache Prüfzeichen für Ascii-Tokens" https://de.wikipedia.org/wiki/Zyklische_Redundanzpr%C3%BCfung https://de.wikipedia.org/wiki/L%C3%A4ngsparit%C3%A4tspr%C3%BCfung https://de.wikipedia.org/wiki/Message-Digest_Algorithm_5
oszi40 schrieb: > Es gibt verschiedene Methoden. Sinnvoll ist, 2 verschiedene zu benutzen, > wenn Prüf-Fehler reduzieren möchte. z.B. CRC; LRC; MD5 usw. Hallo oszi40 Danke für deine Hilfe. Jedoch geht es nicht darum, wie ich selber eine Prüfsumme bilde, sondern wie sich die Prüfsumme in dem oben erwähnten Text bildet.
Fabian G. schrieb: > sondern wie sich die Prüfsumme in dem oben erwähnten Text bildet. Sorry, das habe ich aus dem 1. Post nicht erkannt. Kannst aber gerne mal nachrechen ob eins der Verfahren Anwendung fand.
Fabian G. schrieb: > Ich füge aber noch 2 Ausschnitte ein, Wenn Du möchtest, daß wir hier mit Dir zusammen am verwendeten Algorithmus herumrätseln, poste so etwas nicht als Bild, sondern als Text. Das kann dann nämlich jeder in seinen eigenen erdachten oder vermeintlich erkannten Algorithmus stopfen. Dein Bild aber müsste jeder für sich abtippen.
Rufus Τ. F. schrieb: > Wenn Du möchtest, daß wir hier mit Dir zusammen am verwendeten > Algorithmus herumrätseln, poste so etwas nicht als Bild, sondern als > Text. Das kann dann nämlich jeder in seinen eigenen erdachten oder > vermeintlich erkannten Algorithmus stopfen. > > Dein Bild aber müsste jeder für sich abtippen. Das ist eine gute Idee. :) 1. Telegramm: HEX: 10 02 1B 75 30 37 3A 31 32 3A 30 31 3B 31 37 3A 31 31 3A 32 30 31 37 3B 36 2A 10 03 0E 8D FF 2. Telegramm: HEX: 10 02 1B 75 31 35 3A 35 37 3A 30 32 3B 31 34 3A 31 31 3A 32 30 31 37 3B 33 2A 10 03 08 B3 FF Ich glaube die FF wird nicht in die Checksumme einbezogen
Vielleicht wäre es ganz sinnvoll zwei (oder mehr) Nachrichten in sehr dichter Folge zu provozieren. So kann man eher sehen, welchen Einfluss kleine Änderungen auf die Prüfsumme haben.
Fabian G. schrieb: > Rufus Τ. F. schrieb: >> Wenn Du möchtest, daß wir hier mit Dir zusammen am verwendeten >> Algorithmus herumrätseln, poste so etwas nicht als Bild, sondern als >> Text. Das kann dann nämlich jeder in seinen eigenen erdachten oder >> vermeintlich erkannten Algorithmus stopfen. >> >> Dein Bild aber müsste jeder für sich abtippen. > > Das ist eine gute Idee. :) > > 1. Telegramm: > > HEX: 10 02 1B 75 30 37 3A 31 32 3A 30 31 3B 31 37 3A 31 31 3A 32 30 31 > 37 3B 36 2A 10 03 0E 8D FF > > 2. Telegramm: > > HEX: 10 02 1B 75 31 35 3A 35 37 3A 30 32 3B 31 34 3A 31 31 3A 32 30 31 > 37 3B 33 2A 10 03 08 B3 FF Eine noch bessere Idee wäre es gewesen, auch die Telegramme aus dem ersten Screenshot als Text zu posten, da es bei nur zwei Beispielen i.Allg. mehrere passende Prüfsummenalgorithmen gibt, vor allem dann, wenn man auch vom jeweiligen Entwickler selbst ausgedachte Algorithmen in Betracht zieht. Ich habe mir mal die Mühe gemacht, diese Telegramme sowie zwei weitere aus deinen letzten Screenshots abzutippen. Hier sind alle sechs:
1 | 10 02 1B 75 30 37 3A 31 32 3A 30 31 3B 31 37 3A 31 31 3A 32 30 31 37 3B 36 2A 10 03 0E 8D |
2 | 10 02 1B 75 31 35 3A 35 37 3A 30 32 3B 31 34 3A 31 31 3A 32 30 31 37 3B 33 2A 10 03 08 B3 |
3 | 10 02 1B 75 30 37 3A 34 36 3A 30 32 3B 31 34 3A 31 31 3A 32 30 31 37 3B 33 2A 10 03 66 DB |
4 | 10 02 1B 75 30 37 3A 35 30 3A 34 33 3B 31 34 3A 31 31 3A 32 30 31 37 3B 33 2A 10 03 50 D3 |
5 | 10 02 1B 73 2A 10 03 A8 5E |
6 | 10 02 1B 74 31 3B 31 2A 10 03 DF FB |
Des Rätsels Lösung: Es handelt sich um einen CRC-16 mit dem Polynom 0x8005 und dem Startwert 0x4000 mit gespiegelten Bytes. Die DLE-Zeichen (Telegrammanfang und -ende sind durch DLE STX bzw. DLE ETX gekennzeichnet) gehen dabei nicht in die CRC-Berechnung mit ein. Du kannst das mit einem Online-CRC-Tool wie bspw. diesem hier http://www.sunshine2k.de/coding/javascript/crc/crc_js.html nachprüfen. Einen Screenshot (crc1.png) habe ich angehängt. Der Startwert könnte prinzipiell statt 0x4000 auch 0xc003 sein, wenn am Ende der CRC mit 0xC001 verXORt wird (crc2.png). Da beide Varianten für alle sechs Telegramme passen, vermute ich, dass sie äquivalent sind.
Beitrag #5722260 wurde von einem Moderator gelöscht.
Beitrag #7397946 wurde von einem Moderator gelöscht.
Beitrag #7399620 wurde von einem Moderator gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.