ich bekomme über die serielle ein SML-Datentelegramm mit 228 Byte. Die letzten beiden sind CRC nach CRC16 CITT Standard.
Zur Berechnung habe ich diese lib gefunden:
und entsprechend dem einfachen Beispiel etwas Code aufgesetzt.
Es gibt einen Wikipedia-Artikel zu CRC. Dort ist - ich hab's nur sehr kurz überflogen - wohl auch der Algorithmus so beschrieben, dass man ihn umsetzen kann.
Ich gehe Mal davon aus, daß eine CRC16-Lib durchaus die entsprechende Funktionalität aufweist und denke eher, daß der Datenstrom nicht so aussieht, wie Es erwartet wird.
Denke hier in die Richtung Endian.
Von wo komme ndie Daten?
Kann Es sein, daß die 'eine Seite' Little Endian und die Andere Big Endian benutzt?
postmaster-ino:
… denke eher, daß der Datenstrom nicht so aussieht, wie Es erwartet wird…
Ja, da hast du gar nicht unrecht.
Aber das Problem war nicht die Endian Geschichte.
Der Hersteller hat sich einfach nicht an die Protokolldefinition gehalten. Anstelle CCITT hat er x25 verwendet.
Da kann man lange suchen.
Habs auch erst rausgefunden, nachdem ich den Stream hier eingegeben und die CRC berechnen habe.
→ https://crccalc.com/ . Coole Seite…
Da berechnet er alle möglichen CRC-Varianten. Und eine davon hat dann zu meiner Checksumme gepasst.
Da x25 auch mit der lib aus dem ersten Post möglich ist, klappt es jetzt.