Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Frank Haas
Anmeldungsdatum: 10.09.2004 Beiträge: 10 Wohnort: Hamburg
|
Verfasst am: 06.10.2005, 10:11 Titel: Genie's und Mathematiker sind gefragt. HEX rechnen->Check |
|
|
Moin,
folgende Hexzahlen:
&H_02 | &H_02 | &H_10 | &H_01
ergeben die Checksumme &H_EF
Durch einfaches addieren kommt der Wert "EF" nicht zu stande..
Der englische Originaltext sagt folgendes:
the 2's complement of the least significant byte of the sum of all command and data bytes from the first command byte to immediately before the checksum
Die technische Übersetzung:
Die Checksumme berechnet sich aus dem zweiten Komplement des ersten Bytes der Summe über alle Data- und Command-Bytes
Die 4 Hexzahlen gehören zu den Data- und CMD-Bytes.
Was ist "das erste Byte" ? (&H_02 ? )
Was war noch das "Komplement" ?
Wer kann weiterhelfen ?
THX
Frank |
|
Nach oben |
|
 |
OdinX

Anmeldungsdatum: 29.07.2005 Beiträge: 253 Wohnort: SG Schweiz
|
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 06.10.2005, 14:40 Titel: |
|
|
Hallo
Das Zweierkomplement des niederwertigsten Bytes wäre wohl etwas genauer übersetzt. Das niederwertigste Byte erhälst du, wenn du die Summe aller vorhergehenden Bytes über AND mit 255 verknüpfst. Das Zweierkomplement dazu bekommst du, wenn du dieses Byte nocheinmal über XOR mit 255 vernüpfst und 1 dazuaddierst. Also so ungefähr:
Code: | ...
lsb% = summe& AND 255
cks% = (lsb% XOR 255) + 1
cks% = cks% AND 255
... |
Gruss
Skilltronic
EDIT: Das Zweierkomplement von Null ergibt durch den Überlauf des Bytes nicht 256 sondern wieder null. Diesen Überlauf von 255 zu 0 gibt es bei den 16-Bit Integervariablen nicht. Durch eine zweite AND-Verknüpfung der Variablen cks% mit 255 wird das ausgeglichen. _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Frank Haas
Anmeldungsdatum: 10.09.2004 Beiträge: 10 Wohnort: Hamburg
|
Verfasst am: 06.10.2005, 19:03 Titel: |
|
|
Ich Danke Euch beiden für die Infos..
scheint so als wäre ich nah dran.. aber eben nur nah...
wird jetzt schon n bischn peinlich aber @Skilltronic (jeder andere gerne auch) magst Du das mal testen ob Du "EF" als Ergebnis herausbekommst ?
Bei mir kommt "EB" als Ergebnis raus.. das ist falsch !
Kann aber auch am Quellcode liegen..
der sieht in etwa so aus:
Code: | summe=&h2 + &h2 + &h10 + &h1
lsb = (summe AND 255) 'hier scheint sich schon mal gar nichts zu verändern
cks = (lsb XOR 255) + 1
cks = (cks AND 255)
print hex$(cks) |
|
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 06.10.2005, 19:10 Titel: |
|
|
Hallo
Solange der Wert von summe unter 256 bleibt, ändert eine UND-Verknüpfung mit 255 natürlich nichts. Und ich habe in meinem Beispiel nicht umsonst Ganzahlvariable (% und &) anstelle von Fliesskommazahlen benutzt.
Gruss
Skilltronic
EDIT: Die vier HEX-Zahlen zusammen ergeben 21. Das ist in binärer Schreibweise 00010101. Das Zweierkomplement dazu ist 11101011. Das enstspricht 235 bzw &hEB. Also eigentlich alles in Ordnung. Bezieht das Originalprogramm vielleicht ein weiteres Byte ein? _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
Frank Haas
Anmeldungsdatum: 10.09.2004 Beiträge: 10 Wohnort: Hamburg
|
Verfasst am: 07.10.2005, 09:08 Titel: YES!! |
|
|
Ich hab's !!
hier dann auch die Lösung:
Habe dem Hersteller eine Email geschickt.. die wurde bisher noch nicht beantwortet, aber dann kam halt der Ehrgeiz...
Zitat: | Die 4 Hexzahlen gehören zu den Data- und CMD-Bytes. |
Die Aussage war leider falsch, denn das erste Byte ist ein Start-Byte, das 2. Byte ein Byte-Count-Byte.. die nächsten 2 Bytes sind Data bzw. CMD-Bytes.. also &h01 und &h10 !
Wenn ich jetzt Skilltronics "Logik" anwende.. dann habe ich endlich mein "&hEF" als richtige Checksumme..
puh..
sehr sehr geil.. das hilft mir ungemein weiter..
THX nochmal
Frank |
|
Nach oben |
|
 |
Skilltronic

Anmeldungsdatum: 10.09.2004 Beiträge: 1148 Wohnort: Köln
|
Verfasst am: 07.10.2005, 12:33 Titel: |
|
|
Na also! _________________ Elektronik und QB? www.skilltronics.de ! |
|
Nach oben |
|
 |
|