Hallo, gibt es eine Infoseite wo man HEX Formate usw. auch als Anfänger kapiert ? Ich kenn mich null aus damit. Welches Format oder Darstellung ist das zb.: 80 04 bf 11 01 2b und wie errechnet man dazu die checksumme ? Wie würde z.B. "Hallo" in diesem Format aussehen ? Gibt es dafür einen Umwandler ? Klar, für den einen oder anderen ist das logisch aber ich finde keinen Weg da mal was zu lernen. Vielen Dank schon mal ! M.f.G. Jürgen
ok, vielen Dank ! Die Tabelle ist optimal, aber wie man die checksumme errechnet hab ich noch nicht geschnallt ;-(
Hallo Jürgen, ich habe selbst auch ein bisschen Zeit gebraucht um mich mit dem berechnen der CRC anzufreunden. Also: Für jede CRC gibt es ein Generator-Polynom. Das von Ethernet ist sehr lang, es beginnt mit x^32 und hat viele weitere x hoch irgendwas. Das vom ISDN D-Kanal kann man noch hinschreiben: x^16 + x^12 + x^5 + 1 Nun wird jedes vorhandene "x hoch irgendwas" eine 1, bzw. für nicht vorhandene ein Null notiert. Daraus folgt bei dem ISDN Polynom vom Grad 16 (Grad = höchste Potenz): 10001000000100001. Nun werden an das Ausgangsdatenwort so viele Nullen angehängt, wie der Grad des Polynoms beträgt (sprich hier 16 Nullen anhängen, bei Ethernet 32). Als nächstes erfolgt die Berechnung. Dabei rechnet man im sogenannten Galois Körper. Was das ist, ist eigentlich egal... Fakt ist, man muss das Datenwort, mit den angehängten Nullen durch das Generatorpolynom teilen. Dabei wird beim subtrahieren ein XOR benutzt. Also mal eine komplette Bsp.-Rechnung mit einem kürzeren Polynom: Generatorpolynom: x^2+1 => 101 (Grad 2) Nutzdaten: 10101101 => wegen Grad 2, zwei Nullen dran: 1010110100 Nun wie in der Schule: 1010110100 : 101 = 10001110 101 --- 000 000 --- 001 000 --- 011 000 --- 110 101 --- 111 101 --- 100 101 --- 010 000 --- 10 Evtl. ist aufgefallen, das ich 100 - 101 (also biteise XOR) genommen habe. Das darf man aber tatsächlich machen. Wichtig ist hier, dass das erste Bit eine 1 ist. Als Rest bleibt schließlich eine 10! Diese 10 wird nun an die zu übertragenden Nutzdaten angehängt => 10101101 | 10 So... zur Übung kannst du jetzt 10101101 | 10 mal durch ds Generator Polynom teilen. Wenn du alles richtig machst kommt als Rest 00. Das heißt dann, das kein(e) Bit(s) unterwegs gekippt sind. Viel Spaß...
uiuiui da wird wird mein Kopf noch öfters rauchen :-) naja, werd ich schon noch checken... Gibt es für Bascom einen script wie man sowas auch ausrechnen lassen kann ? Wichtig ist für mich dieses 2-stellen HEX Format wie ich es oben schon erwähnt habe. M.f.G. Jürgen
Auf der Wikipedia Seite stehen einige Codebeispiele, evtl. helfen die weiter. Zum "zweitstelligen Hexformat": Normal denken und arbeiten alle Rechnersysteme binär, also nur mit 1 oder 0. Um Buchstaben binär zu codieren wird wie oben erwähnt meistens die ASCII Tabelle verwendet. Dein H,a,l,l,o wäre also ein: 01001000, 01100001, 01101100, 01101100, 01101111. Da binär nicht so kompakt zu schreiben ist, greift man auf die hexadezimale Schreibweise zurück. Hier gibt es 0-F (also 0,1,2,3,4,5,6,7,8,9, 10 (A), 11(B), 12 (C), 13 (D), 14 (E) und 15 (F)) als Symbol . Von binär nach hex (und umgekehrt) kann man einen einfachen Trick anwenden: Vier Binärstellen bilden immer eine Hexstelle. Also für das Hallo: 0100 1000, 0110 0001, 0110 1100, 0110 1100, 0110 1111 => 4 8 6 1 6 C 6 C 6 F => 48 61 6C 6C 6F Um deine Eingangsfrage voll zu beantworten: Man kann selbstverständlich für das ASCII/binärkodierte "Hallo" auch die CRC Prüfsumme berechnen. Ich habe den Rechner im vorherigen Post mit dem binären Hallo als Nutzdaten und dem Generatorpolynom vom Grad 16 aus dem vorherigen Post gefüttert. Das Nutzdatenwort war: 01001000, 01100001, 01101100, 01101100, 01101111 Nach der Division bleibt ein Rest von: 1010010001101001 Also: CRC Prüfsumme anhängen und nochmal in Hex hinschreiben: 0100,1000,0110,0001,0110,1100,0110,1100,0110,1111 | 1010,0100,0110,1001 48 61 6C 6C 6F | A4 69
hey super, jetzt bin ich um einiges schlauer. Vielen vielen dank für die ausführlich Erklärung (so das ich es auch verstehe). Jetzt muß ich nur doch die Sache mit der Prüfsumme "üben" Ich hab zu dem Thema noch was gefunden: http://www.goblack.de/desy/mc8051chip/ide8051/dos-ide/d51Tx_5.htm
1 | Bildung der Prüfsumme |
2 | Zur Bildung der Prüfsumme werden die uncodierten Bytes herangezogen. |
3 | Alle Bytes werden addiert, dann wird diese Summe von 0 abgezogen, |
4 | was bei mehren Bytes typischerweise eine grosse negative Zahl ergibt, |
5 | die ihrerseits mehrere Bytes füllt. Von dieser Zahl, bzw. ihren |
6 | Ablagebytes ist nur der Teil interessant, welcher sich in dem niedrigsten |
7 | Byte der Ablage befindet. Dieser Teil entspricht der gesuchten Prüfsumme. |
8 | |
9 | Beispiel: die 6 zu übertragenden Bytes mögen 8A | 4C | 39 | 56 | 9B | C3 |
10 | lauten. Dann ergibt sich die Prüfsumme aus der Rechnung ... |
11 | 0-( 8A+ 4C + 39 + 56 + 9B + C3) = 0- 8A - 4C - 39 - 56 - 9B - C2 = FD3C |
12 | |
13 | Ohne weitere Rechnung lässt sich die Prüfsumme als 3C ermitteln, denn FD3C |
14 | benötigt zwei Bytes in der Ablage und in dem niederwertigen Byte soll sich |
15 | die Prüfsumme befinden. Dies wäre dann 3C. |
16 | Die Moduloberechnung ergäbe das gleiche Ergebnis, denn die Restwertrechnung .. |
17 | FD3Ch mod 100h fragt nach dem Rest der Division von FD3Ch : 100h was |
18 | ebenfalls 3Ch ergibt. In FD3Ch ist 100h genau FDh mal enthalten, als Rest |
19 | bleibt 3Ch. |
was ist das dann ?
0fh wrote: > So... zur Übung kannst du jetzt 10101101 | 10 mal durch ds Generator > Polynom teilen. Wenn du alles richtig machst kommt als Rest 00. Das > heißt dann, das kein(e) Bit(s) unterwegs gekippt sind. Viel Spaß... Kannst du bitte die Formel zu Überprüfung der Daten genauer erklären? Ist es etwa 10101101 / (10 * Generatorpolynom)?
@Jürgen H. Ar(1) = 1 Ar(2) = 2 Ar(3) = 3 J = Crc8(ar(1) , 3) 'calculate value which is 216 W = Crc16(ar(1) , 3) '24881 L = Crc32(ar(1) , 3) '494976085
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.