Saturday, September 15, 2007

CPT711

Kommunikationsprotokoll des Programms
DATA_READ.EXE
Zeichen in eckigen Klammern sind dezimale ASCII-Werte.
Com-Port-Parameter
Baud: (eingestellt in Utilities)
Parity: keine
Datenbits: 8
Stopbits: 1
Der Anstoß der Übertragung beginnt mit dem Senden eines „READ[13]“ zum Terminal.
Das Terminal antwortet bei bestehender Verbindung mit „ACK[13]“.
Danach sendet das Terminal den ersten Record.
Struktur: Nddd...dddHL[13]
N = rotierende Nummer von 0 bis 9, aufsteigend (Wert wird als ASCII(0) bis ASCII(9) besetzt)
ddd...ddd = Daten
H = High-Byte check digit (Wert wird als einzelnes ASCII-Zeichen gesetzt)
L = Low-Byte check digit (Wert wird als einzelnes ASCII-Zeichen gesetzt)
Kalkulation der Checkdigits
Beispielhaft gehen wir von folgendem Record aus:
[0]1234567895[18][2][CR]
Die Summe aller ASCII-Werte von N und der Datenzeichen wird berechnet
[0]+[49]+[50]+[51]+[52]+[53]+[54]+[55]+[56]+[57]+[53] = 530
und quasi in folgende Tabelle eingetragen:
16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1
  
Die Spalten „1“ bis „128“ stellen dann den High-Byte Checkdigit dar (in diesem Fall also „18“), die
Reihen „256“ bis „16384“ werden nochmals auf den normalen Binärcode zurückverwandelt.
(16384) (8192) (4096) (2048) (1024) (512) (256)
64 32 16 8 4 2 1

Somit ergibt sich jetzt für den Low-Byte Checkdigit „2“.
Ausnahme: Wenn einer der beiden Checkdigits ASCII 13 ist, wird er auf ASCII 14 gesetzt.
Nach Eingang eines Records vom Terminal zum PC kann man jetzt eine Gegenkalkulation
durchführen und sendet ggfs. ein „NAK[13]“, wenn die Kalkulation nicht das gleiche Ergebnis gebracht
hat. Das Terminal sendet dann den Record nochmals.
Bei korrekter Übertragung sendet man vom PC ein „ACK[13]“ um das Senden des nächsten Records
zu veranlassen.
Nachdem alle Records gesendet worden sind, sendet das Terminal ein „OVER[13]“.
Natürlich kann man die Records auch ohne Checkdigitkalkulation empfangen, man schneidet lediglich
das erste und die letzten beiden Zeichen eines Records weg.
Zur Sicherstellung eines korrekten Datenempfanges empfehlen wir aber eine Gegenprüfung.
DOC-066-02