Programmierung » ClassPad 300 » Kommunikation über 3Pol
Kommunikation über 3Pol
UNVOLLSTÄNDIGDer ClassPad hat 4 Möglichkeiten/Protokolle, um über den 3Pol-Anschluß zu kommunizieren. Die Befehle dazu lauten:
Send, Receive, Send38k/Receive38k, SendVar38k/GetVar38k. Das ist kein Tippfehler: Send und Receive sind nicht
dokumentiert und verwenden (jeweils) ein anderes Protokoll.
Die Protokolle lönnen leicht mit einem FA122 Link-Kabel und einem einfachen, schnell geschriebenen Programm (am einfachsten
mit Visual Basic) selbst nachvollzogen werden.
Allgemein
Der ClassPad sendet Bytes um mit seinem Partner zu kommunizieren. Hier sind jeweils das erste Byte und seine Bedeutung aufgelistet.
| Byte | Bedeutung |
| 0x00 | wird bei OpenComPort38k und CloseComPort38k gesendet. (Keine Reaktion nötig) |
| 0x05 | Fehler beim Empfang. Die letzte Sendung sollte wiederholt werden. |
| 0x06 | allgemeine Bestätigung für den Empfang. (Weiter nach Protokoll) |
| 0x13 | Antwort auf 0x15. (Wenn bereit für Empfang) |
| 0x15 | Bereit zum Empfang? Als Antwort (wenn bereit) folgt 0x13. |
| 0x21 | Allgemeiner Fehler, Abbruch der Kommunikation. |
| 0x24 | Unzureichender Speicher, Abbruch der Kommunikation. |
| 0x3A | Anfang eines Paketes. Es folgt ein Paket (entweder ein Header oder Daten). |
Nach 0x3A kommen die Daten des Paketes und ein Byte für die Prüfsumme. Prüfsumme ist die Differenz der Summe der eizelnen Bytes zu 256 (0x0100): 256 - (s % 256).
In dem Beispiel-Strömen handelt es sich um Hex-Zahlen.
Send
Das ist das selbe Protokoll wie für den CFX (Send-Befehl). Der ClassPad führt "Send a" aus. Folgende Daten sind ein Beispiel-Strom zwischen dem ClassPad und einem externen Gerät.
Einstellungen: 9600,n,8,2 (Baud, Parität, Daten-, Stopp-Bits).
r: - das externe Gerät (PC, EA, ...) empfängt die Daten, s: - das externe Gerät (PC, EA, ...) sendet die Daten
r: 15 Bereit?
s: 13 Ja, Bereit!
r: 3A 56 41 4C 56 4D 1 1 41 FF FF FF FF FF FF FF 56 61 72 69 61 62 6C 65 52 A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF D0 Variablen-Kopf (:VAR VM)
s: 6 Empfangen
r: 3A 1 1 1 23 45 60 1 5 2F Variablen-Daten (haben eine veränderliche Länge)
s: 3A 45 4E 44 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 56 End-Paket (:END)
Receive
Das ist das selbe Protokoll wie für den CFX (Receive-Befehl). Der ClassPad führt "Receive a" aus. Folgende Daten sind ein Beispiel-Strom zwischen dem ClassPad und einem externen Gerät.
Einstellungen: 9600,n,8,2 (Baud, Parität, Daten-, Stopp-Bits).
r: - das externe Gerät (PC, EA, ...) empfängt die Daten, s: - das externe Gerät (PC, EA, ...) sendet die Daten
r: 15 Bereit?
s: 13 Ja, Bereit!
r: 3A 52 45 51 56 4D FF FF FF FF 41 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 5D Request für Variable "A" (:REQVM)
s: 6 OK, Verstanden, Bereit für Empfang?
r: 6 Ja, Bereit für Empfang!
s: 3A 56 41 4C 0 56 4D 0 1 0 1 41 FF FF FF FF FF FF FF 56 61 72 69 61 62 6C 65 52 A FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF D0 Variablen-Kopf (:VAR VM)
r: 6 Empfangen
s: 3A 0 1 0 1 1 23 45 67 89 0 0 0 1 9 9B Variablen-Daten (haben eine veränderliche Länge)
r: 6 Empfangen
s: 3A 45 4E 44 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 56 End-Paket (:END)
Send38k/Receive38k
Einstellungen: 38400,n,8,2 (Baud, Parität, Daten-, Stopp-Bits).
r: - das externe Gerät (PC, EA, ...) empfängt die Daten, s: - das externe Gerät (PC, EA, ...) sendet die Daten
r: 0 OpenComPort38k
r: 15 Bereit?
s: 13 Ja, Bereit!
r: 3A 4E 41 56 0 1 0 0 0 1 0 8 FF 41 D1 NAV-Header (:NAV)
s: 6 OK, Verstanden, Bereit für Empfang
r: 3A 35 35 35 35 35 35 35 35 58 Daten (55555555)
s: 6 OK, Verstanden, Ende
r: 0 CloseComPort38k
SendVar38k/GetVar38k
Einstellungen: 38400,n,8,2 (Baud, Parität, Daten-, Stopp-Bits).
r: - das externe Gerät (PC, EA, ...) empfängt die Daten, s: - das externe Gerät (PC, EA, ...) sendet die Daten
r: 0 OpenComPort38k
r: 15 Bereit?
s: 13 Ja, Bereit!
r: 3A 4E 44 64 0 1 0 1 0 12 0 12 12 FF D3 NDd-Header (:NDd)
s: 6 OK, Verstanden, Bereit für Empfang
r: 3A 0 1 0 10 1 0 3 0 3 40 E2 1 0 0 0 0 0 0 C5 Daten (123456)(Intel-Format)
s: 6 OK, Verstanden, Ende
r: 0 CloseComPort38k
NDd-Header
| Bytes | Name | Bedeutung |
| 7 (0x07) | NDd | Ist immer: 0x4E446400010001 |
| 2 (0x02) | Data-Length | Länge des Daten-Paketes (ohne 0x34 und Prüf-Summe) (Motorola-Format) |
| 2 (0x02) | Data-Length | Länge des Daten-Paketes (ohne 0x34 und Prüf-Summe) (Motorola-Format) |
| 1 (0x01) | DataType | Daten-Typ (entspricht dem Daten-Typ im MCS-Image) |
| 1 (0x01) | Reserved | immer: 0xFF |
Data-Type kann dabei sein (siehe MCS-Spezifikation unter MCS_Mem_Image_FileList->DataType):
| Data-Type | Bedeutung |
| 0x05 | Strings (Variablen-Typ STR) |
| 0x12 | Formeln (Variablen-Typ EXPR) |
Strings
In den folgenden Beispielen ist als erstes der Wert der Variable, in der nächsten Zeile das Header-Paket und dann das Daten-Paket angegeben. Bei den Paketen handelt es sich um Hex-Zahlen.
3A 00 01 & Daten (Byte für Byte (bei Byte > 127: 2 Byte-Zeichen) Länge d. Daten muss durch 4 teilbar sein (wird mit 0x00 aufgefüllt), das Zeichen vor der Prüfsumme muss ein 0x00 sein (evtl. mit 4 * 0x00 auffüllen) & 1 Byte: Prüfsumme "a" 3A 4E 44 64 0 1 0 1 0 6 0 6 5 FF F8 3A 0 1 61 0 0 0 9E "aa" 3A 4E 44 64 0 1 0 1 0 6 0 6 5 FF F8 3A 0 1 61 61 0 0 3D "1234" 3A 4E 44 64 0 1 0 1 0 A 0 A 5 FF F0 3A 0 1 31 32 33 34 0 0 0 0 35 "12345" 3A 4E 44 64 0 1 0 1 0 A 0 A 5 FF F0 3A 0 1 31 32 33 34 35 0 0 0 0 "123456" 3A 4E 44 64 0 1 0 1 0 A 0 A 5 FF F0 3A 0 1 31 32 33 34 35 36 0 0 CA
Formeln
In den folgenden Beispielen ist als erstes der Wert der Variable, in der nächsten Zeile das Header-Paket und dann das Daten-Paket angegeben. Bei den Paketen handelt es sich um Hex-Zahlen.
3A 00 01 & 2 Bytes: Anzahl folgende Bytes + 2 (diese Anzahl ist also mitgezählt) & 0x01 & 2 Bytes: Länge/Anzahl der Bytes mit Daten (die in der Anzeige verwendet werden) & 2 Bytes: Länge/Anzahl der Bytes mit Daten (erstes Byte ist für negative Zahlen 0x80) & Daten: Intel-Notation & 1 Byte: Prüfsumme (Bei einer Differenz der Längen/Anzahlen (letztes Byte), dann ist die Zahl mit E [1 + Differenz] gespeichert.) 1 3A 4E 44 64 0 1 0 1 0 E 0 E 12 FF DB 3A 00 01 00 0C 01 00 01 00 01 01 00 00 00 00 EF 123 3A 4E 44 64 00 01 00 01 00 0E 00 0E 12 FF DB 3A 00 01 00 0C 01 00 01 00 01 7B 00 00 00 00 75 254 3A 4E 44 64 00 01 00 01 00 0E 00 0E 12 FF DB 3A 00 01 00 0C 01 00 01 00 01 FE 00 00 00 00 F2 256 3A 4E 44 64 00 01 00 01 00 12 00 12 12 FF D3 3A 00 01 00 10 01 00 02 00 02 00 01 00 00 00 00 00 00 00 E9 65535 3A 4E 44 64 00 01 00 01 00 12 00 12 12 FF D3 3A 00 01 00 10 01 00 02 00 02 FF FF 00 00 00 00 00 00 00 EC 65536 3A 4E 44 64 00 01 00 01 00 12 00 12 12 FF D3 3A 00 01 00 10 01 00 03 00 03 00 00 01 00 00 00 00 00 00 E7 16777215 3A 4E 44 64 00 01 00 01 00 12 00 12 12 FF D3 3A 00 01 00 10 01 00 03 00 03 FF FF FF 00 00 00 00 00 00 EB 16777216 3A 4E 44 64 00 01 00 01 00 12 00 12 12 FF D3 3A 00 01 00 10 01 00 04 00 04 00 00 00 01 00 00 00 00 00 E5 4294967296 3A 4E 44 64 00 01 00 01 00 12 00 12 12 FF D3 3A 00 01 00 10 01 00 05 00 05 00 00 00 00 01 00 00 00 00 E3 1099511627775 3A 4E 44 64 00 01 00 01 00 12 00 12 12 FF D3 3A 00 01 00 10 01 00 05 00 05 FF FF FF FF FF 00 00 00 00 E9 1099511627776 3A 4E 44 64 00 01 00 01 00 16 00 16 12 FF CB 3A 00 01 00 14 01 00 06 00 06 00 00 00 00 00 01 00 00 00 00 00 00 00 DD -1 3A 4E 44 64 00 01 00 01 00 0E 00 0E 12 FF DB 3A 00 01 00 0C 01 00 01 80 01 01 00 00 00 00 6F -255 3A 4E 44 64 00 01 00 01 00 0E 00 0E 12 FF DB 3A 00 01 00 0C 01 00 01 80 01 FF 00 00 00 00 71 -256 3A 4E 44 64 00 01 00 01 00 12 00 12 12 FF D3 3A 00 01 00 10 01 00 02 80 02 00 01 00 00 00 00 00 00 00 69 1/2 3A 4E 44 64 00 01 00 01 00 1E 00 1E 12 FF BB 3A 00 01 00 1C 05 00 02 01 00 01 00 01 01 00 00 00 00 01 00 01 00 01 02 00 00 00 00 00 00 00 D3 3/2 3A 4E 44 64 00 01 00 01 00 1E 00 1E 12 FF BB 3A 00 01 00 1C 05 00 02 01 00 01 00 01 03 00 00 00 00 01 00 01 00 01 02 00 00 00 00 00 00 00 D1 256/15 3A 4E 44 64 00 01 00 01 00 1E 00 1E 12 FF BB 3A 00 01 00 1C 05 00 02 01 00 02 00 02 00 01 00 00 00 00 01 00 01 00 01 0F 00 00 00 00 00 00 C4 -256/15 3A 4E 44 64 00 01 00 01 00 1E 00 1E 12 FF BB 3A 00 01 00 1C 05 00 02 01 00 02 80 02 00 01 00 00 00 00 01 00 01 00 01 0F 00 00 00 00 00 00 44