Ich will gerade für die Kommunikation mit einem GPS-Modul den
verwendeten Prüfsummenalgorithmus implementieren. Hier auf Seite 86
steht wie das ganze laufen soll:
https://www.u-blox.com/sites/default/files/products/documents/u-blox6_ReceiverDescrProtSpec_%28GPS.G6-SW-10018%29_Public.pdf
(Die Prüfsumme wird ab dem 3 byte berechnet)
Ich habe eine Nachricht von der Ich weiss dass sie funktioniert (Die
Prüfsumme stimmt) und versuche jetzt die Prüfsumme nachzurechnen. Leider
kommt etwas anderes raus als das was stimmt. Hier der Code:
"The two CK_ values are 8-Bit unsigned integers, only! If implementing
with larger-sized integer values, make sure to mask both CK_A and CK_B
with 0xFF after both operations in the loop."
versus
Alles gut.
Mein voriger Beitrag war ohne die Nullen gerechnet, aber auch bei Data=0
verändert sich _b.
Deswegen musste ich nachbessern.
Der Hauptfehler im ersten C-Code war x % 255. Das ist der Rest bei
Division durch 255. Das unterste Byte ist aber der Rest bei Division
durch 256 oder besser x & 255.
Waldo