Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Nächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision | ||
embedded_systems:robi2:remote [2011-11-16 13:12] – angelegt niederer | embedded_systems:robi2:remote [2011-12-13 13:10] – niederer | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
<box red 80% | **Actung**> | <box red 80% | **Actung**> | ||
+ | |||
======Robi2 Remote Interface====== | ======Robi2 Remote Interface====== | ||
Es besteht die Möglichkeit, | Es besteht die Möglichkeit, | ||
+ | |||
+ | ===== Das Objektmodell ===== | ||
+ | ====Client Implementation==== | ||
+ | TODO | ||
+ | |||
+ | ====Server Implementation==== | ||
+ | TODO | ||
+ | |||
+ | =====Funktionsumfang===== | ||
+ | ====Robi Remote Version 0==== | ||
+ | Diese Remote-Procedure-Call Ausbaustufe wird durch // | ||
+ | |||
+ | ==Methodenliste== | ||
+ | TODO | ||
===== Das Kommunikationsprotokoll ===== | ===== Das Kommunikationsprotokoll ===== | ||
- | Das Protokoll funktioniert nach dem Request-Response Prinzip wobei jeweils der Client die Requests stellt. Das Protokoll ist als Textformat entworfen. Dies ermöglicht die Überquerung von Plattformen, | + | Das Protokoll funktioniert nach dem Request-Response Prinzip wobei jeweils der Client die Requests stellt. Das Protokoll ist als Textformat entworfen. Dies ermöglicht die Überquerung von Plattformen, |
+ | |||
+ | ====Framing==== | ||
+ | Request und Response werden jeweils durch ein Startzeichen identifiziert und durch einen Zeilenumbruch abgeschlossen. Das erste Datenfeld in der Nutzlast entspricht der Protokollidentifikation. So können zum Beispiel verschiedene Protokollversionen unterschieden werden. Die eigentliche Nutzlast wird durch ein [[.: | ||
+ | |||
+ | ===Frameformat=== | ||
+ | < | ||
+ | Traffic | ||
+ | Request | ||
+ | Response = "<" | ||
+ | |||
+ | ProtID | ||
+ | ProtVersion = Number . | ||
+ | |||
+ | CommandID | ||
+ | Parameter | ||
+ | ReturnValue = SerializedData . | ||
+ | |||
+ | SerializedNumber = ? Number in serialisiert Form ? . | ||
+ | SerializedData | ||
+ | |||
+ | Number | ||
+ | Digit = " | ||
+ | FrameEnd = " | ||
+ | </ | ||
+ | |||
+ | ==== Das Serialisierungsformat ==== | ||
+ | Das Serialisierungsformat ist durch das PHP Serialisierungsformat inspiriert und erweitert das grösstenteils kompatibel. Im Gegensatz zur Standard Java-Serialisierung ist dieses Datenformat als ASCII-Text ausgelegt und ausserdem wesentlich kompakter als ein Java Object Stream nach Standard-Protokoll. | ||
+ | |||
+ | Leider ist das PHP Serialisierungsformat nirgendwo formal beschrieben. Es lässt sich jedoch aus dem {{http:// | ||
+ | |||
+ | ===Formatbeschreibung=== | ||
+ | < | ||
+ | SerializedData | ||
+ | SerializedObject = ( Null | Bool | Long | Double ) ";" | ||
+ | |||
+ | Null = " | ||
+ | Bool = " | ||
+ | Long = " | ||
+ | Double | ||
+ | |||
+ | DoubleNumber | ||
+ | Number | ||
+ | Digit = " | ||
+ | NonZeroDigit | ||
+ | AnyChar | ||
+ | </ | ||
+ | |||
+ | ===Beispiel=== | ||
+ | Das nachfolgende Beispiel illustriert die verkettete Serialisierung der Daten | ||
+ | ^ Typ ^ Wert ^ Serialisiert | ||
+ | ^ - | null | N; | | ||
+ | ^ boolean | ||
+ | ^ long | ||
+ | ^ double | ||
+ | ^ Alle verbunden | ||
- | Request und Response werden jeweils durch ein Startzeichen FIXME |