Die Kommunikation mit dem ComClient der Firma Schlaps & Partner findet über das Socket Interface mit Hilfe eines festgelegten Protokolls statt. Dieses Protokoll wird über Datenstrukturen definiert, die im Projekt in der Datei DataTypes.h zu finden sind[34].
Nachdem eine Socketverbindung zum ComClient aufgebaut wurde, die das Protokoll UDP und den Port 1111 benutzt, kann mit der Kommunikation zwischen Host und ComClient begonnen werden.

Abb. 60: Schematischer Ablauf der Kommunikation.
Der oben gezeigte Ablauf der Kommunikation macht deutlich, welche Möglichkeiten der ComClient bietet, um mit ihm in Verbindung zu treten, Informationen auszutauschen oder auf eine EIB-Gruppen Einfluß zu nehmen.
* Login: Mit der Login-Sequenz wird dem ComClient mitgeteilt, daß ein Host mit ihm kommunizieren will. Der ComClient, der Auf 8 Logins beschränkt ist, teilt entsprechend seiner Loginzahl dem Host den Erfolg oder Mißerfolg seines Logins mit.
* Wert setzen: Mit dieser Sequenz können Gruppenwerte[35 ] auf dem EIB verändert werden.
* History lesen/auslesen: Mit dieser Sequenz ist es möglich den Daten Buffer des ComClients zu lesen oder auszulesen, was ein gleichzeitiges Löschen zur Folge hat.
* History löschen: Mit dieser Sequenz wird der Daten-Buffer des ComClient gelöscht.
* Logout: Dem ComClient wird mitgeteilt, daß die Kommunikation mit ihm beendet werden soll.
Bei allen Sequenzen antwortet der ComClient mit einem der Sequenz entsprechenden Datenpaket.
Abb. 61: Protokoll der Klasse ComClient.
Diese Sequenzen, die zur Kommunikation mit dem ComClient dienen, wurden in der gleichnamigen Klasse "ComClient" implementiert. Diese Klasse bietet mit dem Protokoll wiederum eine Schnittstelle[36], die eine Bündelung der Methoden vornimmt. Diese Schnittstelle steht der Außenwelt zur Verfügung.
Mit der folgenden Tabelle möchte ich auf die Funktionalität der Methoden der Klasse ComClient noch etwas näher eingehen.
|
Methode |
Funktionalität |
|
init |
Diese Methode dient zur Initialisierung des Objekts. Sie ist überlagert und schafft einen definierten Ausgangszustand. |
|
dealloc |
Hier werden die resistenten Objekte, die im Laufe des ComClient Lebenszyklus entstanden sind aus dem Speicher entfernt, sowie das ComClient Objekt selbst. |
|
CCLogin |
Veranlaßt das Senden eines Login-Datenpakets. |
|
CCLogout |
Veranlaßt das Senden eines Logout-Datenpakets. |
|
CCWriteGA |
Diese Methode verändert einen Gruppenwert auf dem EIB. ga: Gruppe ; len: Länge des Wertes; value: Wert |
|
CCFlush |
Löscht den History Buffer. |
|
CCRead |
List den History Buffer und löscht diesen. |
|
CCPeek |
Einfaches Lesen des History Buffers. |
|
CCRequestRead |
Fragt einen Gruppenwert ab ga: Gruppe |
|
interpretRcvData |
Interpretiert die empfangenen Daten und wertet diese aus. Die Methode benötigt zwei Speichereiche. Einen mit den Empfangen Roh-Daten und einen für das Interpretationsergebnis. |
|
getBufferData |
Gibt die interpretierten Empfangsdaten zurück. |
|
getAnswerBufferData |
Gibt die nicht interpretierten Empfangsdaten (Rohdaten) zurück. |
|
controlComClient |
Diese Methode ist die zentrale Steuereinheit für die Kommunikation mit dem ComClient. Sie bietet durch einen parametrierten Aufruf die Möglichkeit ganze Kommunikationssequenzen durch zu führen. OutBuffer: Angabe eines Speicherbereichs über den Daten ausgetauscht werden sollen, wenn notwendig. iGroupe: Gruppe mit der Kommuniziert werden soll. Ist in unserem Prototyp- Status nicht notwendig. StdinBuf: Angabe eines Zeigers auf ein Charakter (Buchstaben), der eine Kommunikationssequenz repräsentiert. Möglichkeiten: - e : Gebe Gruppe 1 den Wert 1, was mit einem Einschalten der Lampe am EIB gleich kommt. - a: Gebe Gruppe 1 den Wert 0, was mit einem Ausschalten der Lampe am EIB gleich kommt. - t: Negiere den momentanen Wert der Gruppe 1. - q: Gruppenwert der Gruppe iGroupe vom EIB ermitteln. - p: Lesen des Protokollwandler Daten Buffers. - r: Auslesen des Protokollwandler Daten Buffers (Lesen und Löschen). - |
Abb. 62: Beschreibung der Funktionalität der Methoden.
Mit dem funktionalen Umfang der Klasse ComClient ist die Möglichkeit geschaffen worden, einen Kommunikationsdienst als Objekt auf dem lokalen Netzwerk anzubieten, was uns zum letzten Schritt der Diplomarbeit führt.
Eine komplette Beschreibung der Protokoll-Schnittstelle des ComClients befindet sich im Anhang.
[35] Gruppen entsprechen logische Verknüpfungen auf dem EIB. (siehe Kapitel 2.1.6 "Adressierung").
[36] Das Schlüsselwort @protocol leitet eine Schnittstellendefinition ein, über die das spätere Objekt kommuniziert. (siehe Anhang 1).