Hallo Leute,
ich habe mir ja das Xminilab von Gabotronics besorgt.
Nun würde ich ganz gerne dessen Bildschirminhalt auslesen.
Dies geht über USART mit dem Befehlszeichen 'C' und als Antwort bekomme
ich die Daten über das xmoden-Protokoll. (Manual Seite 27.)
http://de.wikipedia.org/wiki/XMODEM
Nun habe ich noch nie mit diesem Protokoll gearbeitet und ich verstehe
im konkreten Fall nicht, was ich falsch mache.
Wenn ich 'C' sende, bekomme ich folgende 133 Zeichen wieder:
1 | 00000000: 01 01 fe 42 4d 3e 04 00 00 00 00 00 00 3e 00 00
|
2 | 00000010: 00 28 00 00 00 80 00 00 00 40 00 00 00 01 00 01
|
3 | 00000020: 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00
|
4 | 00000030: 00 00 00 00 00 00 00 00 00 00 00 00 00 ff ff ff
|
5 | 00000040: 00 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
|
6 | 00000050: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
|
7 | 00000060: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
|
8 | 00000070: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
|
9 | 00000080: ff ff ff ab 86
|
Wenn ich das richt verstanden habe, kommt erst das Startbyte 0x01, was
auch stimmt, dann eine Blocknummer, für den ersten auch 0x01 und dann
das Einerkomplement von der Blocknummer. In diesem Fall 0xFE. Dann
kommen die 128 Bytes Payload und eine Prüfsumme.
Ich erhalte aber erstens 133 Bytes und zweitens dachte ich, ich müsste 8
Blöcke erhalten. Das Display hat eine Auflösung von 128x64. 128 Bytes
pro Block, 8 Bits (Punkte) pro Byte. So werden mit jedem Block 1024
Punkte übertragen.
Wenn ich aber 0x06 sende passiert nichts. Auch wenn ich den Empfang
ablehne 0x15, wird nicht wie vorgesehen, der Block wiederholt.
Ich nehme mal ganz stark an, dass 0xAB meine Prüfsumme ist (ich habe
es nicht nachgerechnet) und das 0x86 ein Fehlercode ist? Wie lange
habe ich denn eigentlich Zeit, um 0x06 zu senden? Ich mache das im
Moment über CuteCom (Terminalemulator).
Oder mache ich etwas anderes falsch?
Gruß und vielen Dank
Fabian