Hmm.., danke das du fragst !
FP= Fahrpult, wird als Client benutzt um die kommunikation zum
SVR herzustellen,
FP empfängt die Daten vom Server, der ja Kontakt hat mit Zusi2 und
FP sendet auch als erstes ein Protokoll zum
SVR.
Ein Client (
FP) der sendet und empfängt, bekomme ich mit den Event nicht auf die Reihe.
SRV= Server wird mitgeliefert und ist dann für den Empfand vom Zusi2 zuständig und den Empfang vom
FP bzw Daten senden zum
FP.
Es muss, wie unten im Protokoll ersichtlich ist , erst mal ein Gespräch zwischen Client (
FP) und Server (
SRV) stattfinden. Dann werden die Daten auch vom Clienten (FP) empfangen.
Daten für das Info-Fenster, (INFO) vergess erstmal.
Ganz unten erkennt man auch, wie der
SVR die Daten von Zusi2 abholt und weiterschickt an den Clienten (
FP).
Danke.
Gruss
In diesem Beispiel gehen wir von zwei gedachten Anwendungen aus, die verschiedene Daten benötigen. Das Beispiel zeigt die komplette Kommunikation bis zum Empfangen der ersten Daten. Dies soll den Ablauf des Protokolls näher verdeutlichen.
Die gedachten Anwendungen sind ein Fahrpult (FP) und ein zusätzliches Infofenster (INFO) sowie der Server (SRV). Das Fahrpult benötigt im Beispiel die Geschwindigkeit und den Druck der Hauptlufteitung. Das Infofenster benötigt ebenfalls die Geschwindigkeit und die aktuelle Streckenkilometrierung. Der Einfachheit halber verwende ich die IDs 01 (Geschwindigkeit), 02 (HLL-Druck) und 03 (Kilometrierung). Die Paketlänge ergibt sich von selbst und wird im Beispiel ebenfalls weggelassen.
Anwendung Daten Beschreibung
FP > SRV 00 01 01 02 08 46 61 68 72 70 75 6C 74 HELLO-Befehl
Protokoll-Version "1"
Client-Typ "Fahrpult"
String "Fahrpult" mit führender Längenangabe (8 Bytes)
SRV > FP 00 02 00 ACK_HELLO-Befehl
Befehl akzeptiert
FP > SRV 00 03 00 0A 01 02 NEEDED_DATA-Befehl
Befehlsvorrat 00 0A
IDs 01 und 02
SRV > FP 00 04 00 ACK_NEEDED_DATA-Befehl
Befehl akzeptiert
FP > SRV 00 03 00 00 NEEDED_DATA-Befehl
Befehlsvorrat 00 00: Letzter Befehl
SRV > FP 00 04 00 ACK_NEEDED_DATA-Befehl
Befehl akzeptiert
INFO > SRV 00 01 01 02 04 49 6E 66 6F HELLO-Befehl
Protokoll-Version "1"
Client-Typ "Fahrpult"
String "Info" mit führender Längenangabe (4 Bytes)
SRV > INFO 00 02 00 ACK_HELLO-Befehl
Befehl akzeptiert
INFO > SRV 00 03 00 0A 01 03 NEEDED_DATA-Befehl
Befehlsvorrat 00 0A
IDs 01 und 03
SRV > INFO 00 04 00 ACK_NEEDED_DATA-Befehl
Befehl akzeptiert
INFO > SRV 00 03 00 00 NEEDED_DATA-Befehl
Befehlsvorrat 00 00: Letzter Befehl
SRV > INFO 00 04 00 ACK_NEEDED_DATA-Befehl
Befehl akzeptiert
ZUSI > SRV 00 01 01 01 04 5A 75 73 69 HELLO-Befehl
Protokoll-Version "1"
Client-Typ "Zusi"
String "Zusi" mit führender Längenangabe (4 Bytes) [zur Vereinfachung gekürzt, normalerweise meldet sich Zusi mit der Versionsnummer "Zusi Zugsimulator 2.4.3.0"]
SRV > ZUSI 00 02 00 ACK_HELLO-Befehl
Befehl akzeptiert
SRV > ZUSI 00 03 00 0A 01 02 03 NEEDED_DATA-Befehl
Befehlsvorrat 00 0A
IDs 01, 02 und 03
ZUSI > SRV 00 04 00 ACK_NEEDED_DATA-Befehl
Befehl akzeptiert
SRV > ZUSI 00 03 00 00 NEEDED_DATA-Befehl
Befehlsvorrat 00 00: Letzter Befehl
ZUSI > SRV 00 04 00 ACK_NEEDED_DATA-Befehl
Befehl akzeptiert
ZUSI > SRV 00 0A 01 04 6B 74 81
02 A2 4E 67 91
03 02 12 01 00
DATA-Befehl
Daten-IDs 01-03 Daten (konvertierter Single-Datentyp)
SRV > FP 00 0A 01 04 6B 74 81
02 A2 4E 67 91
DATA-Befehl
Daten-IDs 01 und 02 Daten (konvertierter Single-Datentyp)
SRV > INFO 00 0A 01 04 6B 74 81
03 02 12 01 00
DATA-Befehl
Daten-IDs 01 und 03 Daten (konvertierter Single-Datentyp)