Das Kommunikationsprotokoll basiert auf UDP/IP über Port 50023. Es handelt sich um ein Client/Server-Protokoll, bei dem der DTR als Server agiert und nur dann Daten sendet, wenn der Client (Ihr Computer) diese anfordert. Der Server beantwortet Anforderungen innerhalb von 5 s (5000 ms), in der Regel sogar in weniger als 100 ms.
Anforderungsformat
Die Client/Server-Kommunikation (die vom Computer an den DTR gesendeten Anforderungen) erfolgt im Binärformat. Die Anforderungspakete enthalten die folgenden Binärdaten (alle Integer in der Reihenfolge des Netzwerks, MSB zuerst):
- 32-Bit-Integer: Paketnummer
- 32-Bit-Integer: Anforderungs-ID
- (beliebig): Anforderungsdaten (abhängig von der Anforderung)
- (beliebig): Auffülldaten
| Die maximale Größe der Meldung beträgt 1472 Oktette (Byte). |
Die Paketnummer wird vom DTR zurückgesendet, aber in keiner Weise verarbeitet. Die Paketnummern müssen nicht sequenziell sein, jeder 32-Bit-Wert ist gültig.
Die Anforderungs-ID ist ein 32-Bit-Wert, der die angeforderte Funktion (beispielsweise Sensordaten) identifiziert. Siehe Spezifikation des Anforderung/Antwort-Paars zu Anforderungs-IDs.
Die Anforderungsdaten bestehen aus 0 bis 1464 Oktetten zusätzlicher Daten, die der Anforderung zugeordnet sind.
Mit den Auffülldaten kann die Anzahl der Oktette in einer Meldung erhöht werden. Am Ende der Anforderung kann eine beliebige Anzahl NULL-Zeichen (0x00) hinzugefügt werden. Die Gesamtgröße der Meldung darf aber das Maximum von 1472 Oktetten nicht überschreiten. Dies kann beispielsweise hilfreich sein, wenn die Clientimplementierung Pakete fester Länge vorsieht.
Antwortformat
Das DTR sendet Antwortdaten im ASCII-Format. Mit Ausnahme der Paketnummer sind die Daten für Menschen lesbar. Die Datenstruktur besteht aus:
- Paketnummer (32-Bit-Integer)
- Keine oder mehr Zeilen mit ASCII-Schlüsseln (Text) und Werten, die diesen Schlüsseln zugeordnet sind (z. B. Temperaturschlüssel und Prozesstemperatur in Celsius)
Die Paketnummer wird unverändert zurückgesendet. Der Client (Software auf dem Computer) kann die Paketnummer der Antwort verwenden, um sie der Anforderung mit der entsprechenden Paketnummer zuzuordnen.
Das Meldungstext besteht aus Textzeilen, die jeweils einen aus einem Wort bestehenden Schlüssel und den zugehörigen Wert bzw. die zugehörigen Werte enthält. Die Werte werden durch ein Gleichheitszeichen (=) vom Schlüssel, mehrere Werte voneinander durch ein Komma getrennt. Leerräume (Leerzeichen oder Tabulatoren) sind außer in einem einzelnen Wert und im Schlüsselnamen jederzeit zulässig.
Wenn die Antwort aus einer Zeichenfolge besteht, wird sie in doppelte Anführungszeichen (") eingeschlossen. Beispiele für gültige Meldungstextzeilen:
ok temp=23.45
headhum = 13.32
LEDcnt = 8341
ChemCurve = 1.234, 3.21, 0.00, 4.37, 1.11, 0.00002, 2.1345
StatusMessage = "Normal Operation"
| In den Schlüssel-IDs wird die Groß-/Kleinschreibung nicht berücksichtigt (siehe Spezifikation des Anforderung/Antwort-Paars). Es wird jedoch empfohlen, die IDs wie in dieser Spezifikation zu schreiben. |
Der Server (DTR) kann die Antwortschlüssel in beliebiger Reihenfolge senden. Er sendet die obligatorischen Schlüssel der betreffenden Anforderung, kann aber alle anderen Schlüssel auslassen. Der Server sendet gelegentlich Schlüssel, die in diesem Dokument nicht angegeben sind. Diese ignoriert der Client (Computer) möglicherweise.
| Obligatorische Schlüssel sind in Spezifikation des Anforderung/Antwort-Paars mit einem Sternchen gekennzeichnet. |
Anforderungs- und Antwortfehler
Wenn der Server (DTR) einen Fehler erkennt, antwortet er mit einer Fehlermeldung. Für weitere Informationen siehe Spezifikation der Fehlermeldung. Fehlermeldungen können durch eine unbekannte Anforderung oder die Unfähigkeit verursacht werden, Daten für die obligatorischen Schlüssel einer Antwort zu erfassen.