Wie welche Regel? Ist immer die gleiche. Addieren (nicht die CheckSum!), Komplement bilden, Byte extrahieren, vergleichen.
Naja das problem ist, das ich die chksum generieren muss OHNE das ich weiß welche eigentlich rauskommen muss, d.h woher weiß ich nun ob ich 0xD2 schreiben muss und nicht 0x12?
Zitat von Tommix:
Bei Count ist in beiden Fällen 0x20 zuaddiert. Der Grund dafür ist ziehmlich offensichtlich:
Hmm irgendwie nicht so offensichtlich -- class God : public ChuckNorris { };Dieser Post wurde am 30.09.2005 um 13:02 Uhr von FloSoft editiert.
Wie gesamt, zum generieren der Checksum braucht man diese ja auch nicht. Höchsten zum vergleichen (beim Empfänger). Ich weiß einfach nicht, wo das Problem liegt. -- Wer früher stirbt ist länger tot.
@Unwissender, da die Länge in die Berechnung der Checksumme eingeht, muß zunächst klar sein wie sie (die Länge) berechnet wird, also +0x20 oder nicht. Was ich vorher schrieb ist Müll, da ja ganz offensichtlich die "falsche" Länge zum berechnen der Prüfsumme herangezogen wird.
- TommixDieser Post wurde am 30.09.2005 um 13:49 Uhr von Tommix editiert.
naja die übertragung hab ich mit nem serial port sniffer mitgeloggt. Die Chksum wird nach jeder "Zeile" überprüft, jedoch nicht von mir, ich muss die Chksum dem Gerät liefern.
d.h
0x20 + Size 16xData Chksum aus Size + Data
Warum er 0x20 dazuzählt versteh ich nicht, und wie er darauf kommt das er 0xD2 als chksum bei der einen Zeile da zu stehen hat obwohl die chksum ja eigentlich 0x12 ist? -- class God : public ChuckNorris { };
Das ist ja grad der Haken. Laut www.mcc-us.com/mots.htm ist es die "Number of bytes to follow", in dem, was Flo postet aber nicht, es sei den sein Sniffer verschluckt ab und zu Nullbytes. - Tommix
nein der verschluckt zum glück keine nullbytes, evtl "braucht" das das gerät. Ansonsten haste mit dem Komplement von 2D natürlich recht, da der nette Windowstaschenrechner natürlich die führenden Nullen schluckt hab ich die natürlich vergessen umzudrehen -- class God : public ChuckNorris { };