Forum: PC-Programmierung Hexcode Interpretation


von finalcu (Gast)


Lesenswert?

Hallo Zusammen,

ich habe mehrere Hexcodes unterschiedlicher Länge und weiss welche 
Informationen die beinhalten, ein paar davon sind z.b:

1000570010000000d00703d007000000
1000570020000000d00703d007000000
0d003e0001d00700d00703d007
0d003e0000d00700d00703d007
10005e001c000000d00728000000d007
10005e001b000000d00728000000d007
10006400a4194800d00700470001d007
1000560020000000d00703d007000000
16006400A4194800660028000000d007002700002900
160064008c194800660028000000d007002700002900

alle Informationen sind in den Bytes vor dem Byte "d0" enthalten. Die 
letzten acht Bytes (inlusive "d0) weiss ich nicht wofür sie stehen. Kann 
es sein, dass dies eine Art checksum ist oder sowas? Hat jemand damit 
Erfahrung oder vielleicht eine Idee?

Gruss,
finalcu

von Magnetus (Gast)


Lesenswert?

Woher hast du das Zeuch? (wozu gehört es?)

von Falk W. (dl3daz) Benutzerseite


Lesenswert?

finalcu schrieb:
> Hallo Zusammen,
>
> ich habe mehrere Hexcodes

Woher?

> 1000570010000000d00703d007000000
...
> 0d003e0001d00700d00703d007
...
> 16006400A4194800660028000000d007002700002900

Das erste Byte könnte die Länge sein.

> alle Informationen sind in den Bytes vor dem Byte "d0" enthalten. Die
> letzten acht Bytes (inlusive "d0) weiss ich nicht wofür sie stehen. Kann
> es sein, dass dies eine Art checksum ist oder sowas? Hat jemand damit

Addiere doch mal die Datenbytes, ob das letzte Byte herauskommt..

> Erfahrung oder vielleicht eine Idee?

Sieht aus wie verkrüppelter Intel Hex-code.

Falk

von finalcu (Gast)


Lesenswert?

Ja das erste Byte ist die Länge - wie bereits gesagt, bis zum Byte "d0" 
weiss ich was die Bytes darstellen.

Die Hexcodes werden von einer russischen Simulationssoftware für die 
Steuerung verwendet.

Ein Beispiel:

10005e001c000000d00728000000d007 beinhaltet folgende Informationen:

- 10 00 ist die Länge (Bytes sind in umgekehrter Reihenfolge), also 16 
Bytes
- 5e 00 ist der Steuerungsbefehl, also Befehl-Nr. 94
- 1c 00 00 00 ist ein Parameter, also 28

mit diesem Befehl setzt man eine Spannung auf 28 V. Die Frage ist nun 
was die anderen Bytes an Informationen beinhalten könnte. Meiner Meinung 
nach beinhalten sie keine weitere Informationen und müssten demnach 
irgend eine Redundanz oder änliches darstellen...

von finalcu (Gast)


Lesenswert?

eine kleine Anmerkung: da es sich um eine russische Software handelt, 
dachte ich dass die restlichen Bytes vielleicht sowas wie eine 
Beschreibung des Befehls auf russisch beinhalten könnte. Da aber das 
Byte 00 relativ häufig vorkommt glaube ich nicht, dass es sich um 
irgendeinen Unicode handelt da 00 z.b in KOI-8 keine Bedeutung hat...

von Der Russe (Gast)


Lesenswert?

... Ja klar, um den Hacker zu verwirren, werden sinnlose Bytefolgen 
gesendet... :-))))

ähm, ich habe auch eine Frage: was bedeutet das: 0x2A

von DerAlbi (Gast)


Lesenswert?

Klingt zwar nach ironie, aber: die antowrt wäre: 42.

von Der Russe (Gast)


Lesenswert?

... wie kommst du auf 42 und was bedeutet das? ... ;-)

von Magnetus (Gast)


Lesenswert?

Der Russe schrieb:
> ... wie kommst du auf 42 und was bedeutet das? ... ;-)

Hier gibts ne Lektüre zur Antwort "42":

http://de.wikipedia.org/wiki/42_(Antwort)

Gruß,
Magnetus

von Der Russe (Gast)


Lesenswert?

... hmmm, dann frage ich mich, warum 42 nicht in obiger Fragestellung 
auftaucht! Oder habe ich etwas übersehen?

von finalcu (Gast)


Lesenswert?

wahrscheinlich bin ich einfach zu dumm um den Scherz zu erkennen aber 
was hat das alles mit meinem Problem zu tun?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das ist wie bei Onkel Heisenberg:
Du kennst entweder die Frage oder die Antwort, nie aber beides 
zugleich.

von Der Russe (Gast)


Lesenswert?

... super rufus, ich hätte es nicht besser ausdrücken können...!

von Der Russe (Gast)


Lesenswert?

... achso, was mir gerade noch zu der Frage oben einfällt: die Russen 
waren doch auch mal mit den Chinesen befreundet --> vielleicht handet es 
sich ja auch um eine chinesische Beschreibung der Befehle, oder liege 
ich da ganz falsch?

von finalcu (Gast)


Lesenswert?

"00" macht auch im chinesischen Unicode wenig Sinn. Es sieht doch eher 
nach einer Zahl oder mehreren Zahlen aus. Da die letzten acht Bytes aber 
hoechtswahrscheinlich keine weiteren Informationen bez. dem 
Steuerungsbefehl beinhalten tippe ich auf eine Art Checksum oder sowas. 
Komisch ist nur, dass es sich dabei um soviele Bytes handelt...

von Karl H. (kbuchegg)


Lesenswert?

finalcu schrieb:
> Ja das erste Byte ist die Länge - wie bereits gesagt, bis zum Byte "d0"
> weiss ich was die Bytes darstellen.

ich würde eher sagen, das sind mehere Parameter die, durch d007 getrennt 
sind. d007, umgeschrieben in die richtige Reihenfolge 07d0 ergibt 
dezimal genau 2000. Kann natürlich auch Zufall sein, aber diese Zahl ist 
mir zu 'glatt'. Meine Hypothese: diese 2000 sind eine Form eines 
Trennzeichens. Vor allen Dingen, weil diese 7d0 in jedem Datensatz auch 
mehrfach auftauchen und immer an derselben Stelle. Wie sinnvoll ein 
derartiges Trennzeichen in einer binären Übertragung ist, lass ich mal 
dahingestellt. Vielleicht ist es auch ein historisches Überbleibsel.

> Ein Beispiel:
>
> 10005e001c000000d00728000000d007 beinhaltet folgende Informationen:
>
> - 10 00 ist die Länge (Bytes sind in umgekehrter Reihenfolge), also 16
> Bytes
> - 5e 00 ist der Steuerungsbefehl, also Befehl-Nr. 94
> - 1c 00 00 00 ist ein Parameter, also 28
>
> mit diesem Befehl setzt man eine Spannung auf 28 V.

Welche Spannung?
Steckt das im Befehlscode (94) drinnen, oder kann es sein, dass die 
restlichen Bytes dies beschreiben?

Kannst du noch ein paar weitere Befehl in ihre Bedeutung aufdröseln?
1
10 00    57 00 10 00 00 00   d0 07   03    d0 07   00 00 00
2
10 00    57 00 20 00 00 00   d0 07   03    d0 07   00 00 00
3
0d 00    3e 00 01   d0 07   00   d0 07   03   d0 07
4
0d 00    3e 00 00   d0 07   00   d0 07   03   d0 07
5
10 00    5e 00 1c 00 00 00   d0 07  28 00 00 00    d0 07
6
10 00    5e 00 1b 00 00 00   d0 07  28 00 00 00    d0 07
7
10 00    64 00 a4 19 48 00   d0 07  00 47 00 01    d0 07
8
10 00    56 00 20 00 00 00   d0 07  03   d0 07  00 00 00
9
16 00    64 00 A4 19 48 00 66 00 28 00 00 00   d0 07   00 27 00 00 29 00
10
16 00    64 00 8c 19 48 00 66 00 28 00 00 00   d0 07   00 27 00 00 29 00


Diese beiden Datensätze
1
10 00    64 00 a4 19 48 00   d0 07  00 47 00 01    d0 07
2
16 00    64 00 A4 19 48 00 66 00 28 00 00 00   d0 07   00 27 00 00 29 00
sind interessant. Hast du dich da beim Abschreiben vertan oder ist das 
wirklich so: Gleicher Befehlscode, aber unterschiedliche Parameterlänge 
und Anzahl.

von finalcu (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Welche Spannung?
> Steckt das im Befehlscode (94) drinnen, oder kann es sein, dass die
> restlichen Bytes dies beschreiben?

Das steckt im Befehlscode drinnen...

Karl heinz Buchegger schrieb:
> Diese beiden Datensätze
> 10 00    64 00 a4 19 48 00   d0 07  00 47 00 01    d0 07
> 16 00    64 00 A4 19 48 00 66 00 28 00 00 00   d0 07   00 27 00 00 29 00
> sind interessant. Hast du dich da beim Abschreiben vertan oder ist das
> wirklich so: Gleicher Befehlscode, aber unterschiedliche Parameterlänge
> und Anzahl.

Das ist wirklich so. Beim zweiten Code handelt es sich um zwei Befehle 
die in einem Paket geschickt werden:

10 00    64 00 a4 19 48 00   d0 07  00 47 00 01    d0 07 bedeutet:
- 10 00 = 16 Bytes
- 64 00 = Befehl-Nr. 100
- a4 19 48 00 ist ein Parameter der in binär Schreibweise die Zustände 
von LEDs angibt (0 = aus, 1 = ein), also a4 19 48 00 = 
010010000001100110100100 => LED0=aus, LED1=ein, LED2=aus, LED3=aus etc.

16 00    64 00 A4 19 48 00 66 00 28 00 00 00   d0 07   00 27 00 00 29 00 
bedeutet:
- 16 00 = 22 Bytes
- 64 00 a4 19 48 = Befehl-Nr. 100 mit gleichem Parameter wie oben
- 66 00 zusätlicher Befehl = Befehl-Nr. 102
- 28 00 00 00 = 40, Parameter der zum Befehl 102 gehoert (ich weiss 
nicht genau was der macht, ich glaube es öffnet ein Ventil wobei 40 die 
Nr. des Ventils ist)

was ich soweit gesehen habe ist, dass es keine Rolle spielt wieviele 
Befehle aneinander gehängt werden, am Ende folgen immer 8 Bytes 
beginnend mit "d0"...

ich werde gleich nochmal an den Simulator gehen und überprüfen ob dies 
auch für ganze lange Befehlsreihen zutrifft (beispielsweise bei der 
Initialisierung bis zu 300 Bytes).

Gruss,
finalcu

von finalcu (Gast)


Lesenswert?

UPDATE: Folgendes habe ich in der Zwischenzeit herausgefunden:

- Auch bei einem langen Paket (Initialisierungspaket 373 Bytes) werden 
am Ende acht Bytes angehängt. Folgend ein Beispiel einer 
Initialisierung:
1
75010100000200000300000400000500000600000700000800000900000a00000b00000c00000d00000e00000f00001000001100001200001300001400001500001600001700001800001900001a00001b00001c00001d00001e00001f00002000002100002200002300002400002500012600002700002800002900002a00002b00012c00012d00002e00002f00003000003100003200003300003400003500003600003700003800003900003a00003b00003c00003d00003e00003f00004000004100004200004300004400004500004800004900004a00004b00004c00004d00004e00004f00005000005100005200005300005400005500005600005700015800015900015a00005b00005c00005e001c00000060000100000061000062000000000063000000000064008c29280065000000a2006600280000006700000000006800016900000000006a00006b00000000006c00bc0200006d00000000006e00000000006f0000000000d007000000000000

- 7501 ist wieder die Länge, also 373 Bytes
- dann folgen die Befehle: 0100 = Befehl-Nr. 1 mit Parameter 00 = 0, 
0200 = Befehl-Nr. 2 mit Parameter 00 = 0 (bei den Parametern handelt es 
sich um booleans, also entweder 0 (00) oder 1 (01) daher wird 
wahrscheinlich nur ein Byte verwendet, und so geht es weiter bis zum 
letzten Befehl 6f00 = Befehl-Nr. 111 mit Parameter 00000000 = 0
- am Ende steht wieder dieser komische 8 Byte Code, diesmal sieht er 
jedoch leicht ander aus: d007000000000000


Edit
Ich habe mir die Freiheit genommen, die abartig lange Zeile
in [ pre ][ /pre ] (ohne Leerzeichen) einzuschließen.
rufus

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
Noch kein Account? Hier anmelden.