![]() |
Das Komplette Wissen des Servers wird einem Programm durch diese
Client-Komponente zur Verfügung gestellt. Dabei beruht das Wissen der Komponente
auf allen Daten, die der Server über den Info-Kanal sendet.
Um auf die Daten des Servers zugreifen zu können, muß über die Eigenschaft
Busses auf die Inhalte der einzelnen Busse zugegriffen
werden. Die Anzahl der zur Verfügung stehenden Busse hängt vom verwendeten
Server ab. Über BusCount kann die Anzahl der vom Server
unterstützen und aktiven Busse ermittelt werden.
Bevor eine Verbindugn zum Server zustande kommen kann muß der Servername
(Host) und der zu verwendende TCP-Port
(Port) eingestellt werden. Anschließend kann über
Connect oder über Connected die
Verbindung zum Server aufgebaut werden.
Es werden immer zwei Verbindungen zum Server aufgebaut. Die erste Verbindung
ist die Kommando-Verbindung auf dem Kommando-Kanal des Servers. Über diesen
werden die SRCP-Kommandos an den Server gesendet. Die zweite Verbindung ist die
Info-Verbindung auf dem Info-Kanal. Auf diesem Kanal werden Info-Meldungen vom
Server empfangen.
Wird vom Server eine Info-Meldung empfangen und verarbeitet, so wird ein
Event ausgelöst. Durch eine vielzahl an unterschiedlichen Ereignissen, kann ein
Programm auf die Veränderungen reagieren.
Werden Daten der einzelnen Objekte, die über die Busse zur Verfügung gestellt
werden, verändert, so werden die entsprechenden SRCP-Kommandos generiert und an
den Server gesendet.
Die Events sind nach den einzelnen von SRCP unterstützten Gerätegruppen geordnet. Jede Gerätegruppe erzeut Ihre eigenen Events. Die Arten der Events läßt sich in fünf Grundevents zusammenfassen:
Init: | Ein neues Element wird dem Wissensstand des Servers hinzugefügt. |
Term: | Ein Element wird aus dem Wissensstand des Servers entfernt. |
Change: | Eigenschaften eines Elements im Wissenstands der Servers wurden verändert. |
Lock: | Ein Element wurde von einem Client für den alleinigen Schreibzugriff blockiert. |
Unlock: | Ein zuvor blockiertes Element wird für alle Clients wieder freigegeben. |
Die SRCP-Kommunikation zwischen dem Client und dem Server kann aufgezeichnet werden. Dazu muß LogEnabled auf True gesetzt werden. Somit werden bei jeder Kommunikation zwischen Client und Server einder der beiden Events OnCmdLog oder OnInfoLog ausgelöst.
Für die Kommunikation zwischen Client und Server werden innerhalb dieser Komponente je eine Instanz von TSRCPCommandClient und von TSRCPInfoClient erzeugt.
Gibt an, ob auf allen Bussen automatisch beim Verbinden die
Energieversogung eingeschaltet wird oder nicht.
|
Array mit den vom Servern unterstützten Bussen. Der Index des Arrays
läuft von 0 bis BusCount - 1.
|
Liefert die Anzahl an vorhandenen Bussen des Servers zurück.
|
Ein Lesezugriff zeigt den aktuellen Verbindungsstatus an. Ist eine
Verbindung zum Server vorhanden wird True zurückgegeben, ansonsten False.
Durch einen Schreibzugriff kann der Verbindungsstatus verändert werden. Es werden dazu bei True Connect und bei False Disconnect aufgerufen. |
Wird ein True auf diese Eigneschaft geschrieben, so wird für alle Busse
des Servers ein EmergencyStop ausgeführt.
|
Host-Name des SRCP-Servers. Der Name kann als Computername in der Form
"SRCP.domain.net" oder als IP-Adresse
"192.123.1.12" angegeben werden. Um einen Server auf
dem gleichen Rchner auf dem auch der Client läuft anzusprechen kann die
IP-Adresse "127.0.0.1" oder der Name
"localhost" verwendet werden.
|
Identifiziert den Server-Port, auf dem eine Verbindung aufgebaut wird.
In der SRCP-Version 0.8.2 ist dies standardmäßig der Port 12345.
|
Bei True versucht die Komponente beim Verbindungsaufbau Informationen
vom Server zu erfragen. Dies ist dann notwendig, wenn der Server den
Info-Kanal nicht oder nur unzureichend implementiert.
Diese Funktion ist derzeit nicht implementiert. |
Vom Server beim erfolgreichen Verbindungsaufbau übermittelte
Identifikationsnummer des Kommando-Kanals des SRCP-Clients. Mit dieser
Nummer kann der Kommando-Client eindeutig identifiziert werden. Diese
Nummer wird auch als LockID für Loks und Magnetartikel verwendet. Somit
kann ein Programm erkennen, ob ein aktiver Lock auf diesen Geräten vom
eigenen Client oder von einem fremden Client stammt.
|
Vom Server beim erfolgreichen Verbindungsaufbau übermittelte
Identifikationsnummer des Info-Kanals des SRCP-Clients. Mit dieser
Nummer kann der Info-Client eindeutig identifiziert werden.
|
Vom Server gesendeter Wilkommens-String. Es sind nur die nicht
interpretierbaren Inhalte des Wilkommensstring enthalten. Alle vom
Server gesendeten Semikolon (;) werden in Zeilenumbrüche umgewandelt.
|
Versucht eine Verbindung mit dem in Host angegebenen
SRCP-Server aufzubauen.
|
Beendet eine bestehende Verbindung mit einem SRCP-Server.
|
Der in Cmd angegebene String wird auf dem Kommando-Kanal gesendet. Es
findet keine Syntaxüberprüfung statt. Ein CRLF wird an den String
angehängt. Die direkte Antwort des Servers wird von der Funktion
zurückgegeben.
|
property OnCmdLog: TLogEvent;
Ereigniss Tritt immer auf, wenn auf dem Kommandokanal Daten gesendet oder
empfangen werden. Zur Unterscheidung ob es sich um gesendete oder
empfangene Daten Handelt wird dem String ein "Snd: "
oder ein "Rec: " vorrangestellt.
|
property OnInfoLog: TLogEvent;
Ereigniss Tritt immer auf, wenn auf dem Infokanal Daten gesendet oder
empfangen werden. Zur Unterscheidung ob es sich um gesendete oder
empfangene Daten Handelt wird dem String ein "Snd: "
oder ein "Rec: " vorrangestellt.
Auf dem Infokanal werden nur während der Handshake-Phase Daten gesendet. |
property OnBusInit: TMoBaSRCPBusEvent;
Ereignis tritt ein, wenn ein
100 INFO "busnummer" DESCRIPTION ...
empfangen wird.
Durch diese SRCP-Info wird ein neues Busobjekt für den Bus "busnumer" im Client angelegt. Das neu angelegte Objekt wird als Parameter dem Event mitgegeben. |
property OnBusPowerChange: TMoBaSRCPBusEvent;
Ereignis tritt ein, wenn ein
100 INFO "busnummer" POWER ON|OFF
empfangen wird.
Das Objekt, das den Bus "busnummer" repräsentiert wird als Parameter dem Event mitgegeben. Über Power kann der aktuelle Zustand bestimmt werden. |
property OnBusConfigChange: TMoBaSRCPBusEvent;
Ereignis wird derzeit nicht unterstützt.
|
property OnLocoInit: TMoBaSRCPLocoEvent;
Ereignis tritt ein, wenn ein
101 INFO "busnummer" GL "addr" ...
empfangen wird.
Durch diese SRCP-Info wird ein neues Lokobjekt für die Lok mit der Adresse "addr" auf dem Bus "busnummer" im Client angelegt. Aus den weiteren Angaben wird versucht über die Funktion SRCPToMoBaLocoProtocol aus der Liste der bekannten Protokolle in MoBaLocoProtocols das verwendete Protokoll zu identifizieren. Der Ereignisbehandlungsroutine wird als Parameter das neu angelegte Lokobjekt übergeben. |
property OnLocoTerm: TMoBaSRCPLocoEvent;
Ereignis tritt ein, wenn ein
102 INFO "busnummer" GL "addr"
empfangen wird.
Durch diese SRCP-Info wird das vorhandene Lokobjekt mit der Adresse "addr" auf dem Bus "busnummer" gelöscht. Vor dem Löschen wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird die zu löschende Lok übergebehn. |
property OnLocoChange: TMoBaSRCPLocoEvent;
Ereignis tritt ein, wenn ein
100 INFO "busnummer" GL "addr" ...
empfangen wird.
Durch diese SRCP-Info wird das vorhandene Lokobjekt mit der Adresse "addr" auf dem Bus "busnummer" verändert. Nach der Änderung wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird das veränderte Lokobjekt übergebehn. |
property OnLocoLock: TMoBaSRCPLocoEvent;
Ereignis tritt ein, wenn ein
101 INFO "busnummer" LOCK GL "addr" ...
empfangen wird.
Durch diese SRCP-Info wird das vorhandene Lokobjekt mit der Adresse "addr" auf dem Bus "busnummer" gesperrt. Dazu wird Locked auf True gesetzt. Ist LockID auf 0 so wurde der Lock-Befehl von einem anderen Client abgesetzt. Weitere Veränderungen an den Eigenschaften werden vom Server ignoriert. Ist der Wert aber auf SessionID, so wurde das Lokobjekt von diesem Client gesperrt. Der Server reagiert weiterhin auf Veränderungen die der Client an den Server sendet. Nach der Änderung wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird das veränderte Lokobjekt übergebehn. |
property OnLocoUnlock: TMoBaSRCPLocoEvent;
Ereignis tritt ein, wenn ein
102 INFO "busnummer" LOCK GL "addr"
empfangen wird.
Durch diese SRCP-Info wird eine Sperrung des vorhandene Lokobjekts mit der Adresse "addr" auf dem Bus "busnummer" aufgehoben. Dazu wird Locked auf False gesetzt. Nach der Änderung wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird das veränderte Lokobjekt übergebehn. |
property OnAccessoireInit: TMoBaSRCPAccessoireEvent;
Ereignis tritt ein, wenn ein
101 INFO "busnummer" GA "addr" ...
empfangen wird.
Durch diese SRCP-Info wird ein neues Magnetartikelobjekt für den Magnetartikel mit der Adresse "addr" auf dem Bus "busnummer" im Client angelegt. Aus den weiteren Angaben wird versucht über die Funktion SRCPToMoBaSolenoidProtocol aus der Liste der bekannten Protokolle in MoBaSolenoidProtocols das verwendete Protokoll zu identifizieren. Der Ereignisbehandlungsroutine wird als Parameter das neu angelegte Magnetartikelobjekt übergeben. |
property OnAccessoireTerm: TMoBaSRCPAccessoireEvent;
Ereignis tritt ein, wenn ein
102 INFO "busnummer" GA "addr"
empfangen wird.
Durch diese SRCP-Info wird das vorhandene Magnetartikelobjekt mit der Adresse "addr" auf dem Bus "busnummer" gelöscht. Vor dem Löschen wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird der zu löschende Magnetartikel übergebehn. |
property OnAccessoireChange: TMoBaSRCPAccessoireEvent;
Ereignis tritt ein, wenn ein
100 INFO "busnummer" GA "addr" ...
empfangen wird.
Durch diese SRCP-Info wird das vorhandene Magnetartikelobjekt mit der Adresse "addr" auf dem Bus "busnummer" verändert. Nach der Änderung wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird das veränderte Magnetartikelobjekt übergebehn. |
property OnAccessoireLock: TMoBaSRCPAccessoireEvent;
Ereignis tritt ein, wenn ein
101 INFO "busnummer" LOCK GA "addr" ...
empfangen wird.
Durch diese SRCP-Info wird das vorhandene Magnetartikelobjekt mit der Adresse "addr" auf dem Bus "busnummer" gesperrt. Dazu wird Locked auf True gesetzt. Ist LockID auf 0 so wurde der Lock-Befehl von einem anderen Client abgesetzt. Weitere Veränderungen an den Eigenschaften werden vom Server ignoriert. Ist der Wert aber auf SessionID, so wurde das Magnetartikelobjekt von diesem Client gesperrt. Der Server reagiert weiterhin auf Veränderungen die der Client an den Server sendet. Nach der Änderung wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird das veränderte Magnetartikelobjekt übergebehn. |
property OnAccessoireUnlock: TMoBaSRCPAccessoireEvent;
Ereignis tritt ein, wenn ein
102 INFO "busnummer" LOCK GA "addr"
empfangen wird.
Durch diese SRCP-Info wird eine Sperrung des vorhandene Magnetartikelobjekts mit der Adresse "addr" auf dem Bus "busnummer" aufgehoben. Dazu wird Locked auf False gesetzt. Nach der Änderung wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird das veränderte Magnetartikelobjekt übergebehn. |
property OnFeedbackInit: TMoBaSRCPFeedbackEvent;
Ereignis tritt ein, wenn ein
101 INFO "busnummer" FB
empfangen wird.
Durch diese SRCP-Info wird noch kein Rückmeldeobjekt angelegt. Der Ereignisbehandlungsroutine wird als Parameter ein Dummy- Rückmeldeobjekt angegeben, aus dem die notwendigen Informationen über den zugehörigen Bus entnommen werden können. |
property OnFeedbackTerm: TMoBaSRCPFeedbackEvent;
Ereignis tritt ein, wenn ein
102 INFO "busnummer" FB
empfangen wird.
Durch diese SRCP-Info werden alle Rückmeldeobjekte des durch "busnummer" adressierten Busses gelöscht. Der Ereignisbehandlungsroutine wird als Parameter ein Dummy- Rückmeldeobjekt angegeben, aus dem die notwendigen Informationen über den zugehörigen Bus entnommen werden können. |
property OnFeedbackChange: TMoBaSRCPFeedbackEvent;
Ereignis tritt ein, wenn ein
100 INFO "busnummer" FB "addr" ...
empfangen wird.
Durch diese SRCP-Info wird das vorhandene Rückmeldeobjekt mit der Adresse "addr" auf dem Bus "busnummer" verändert. Nach der Änderung wird die Ereignisbehandlungsroutine aufgerufen und als Parameter wird das veränderte Rückmeldeobjekt übergebehn. Ist zum Zeitpunkt der Info-Meldung noch kein Rückmeldeobjekt mit der entsprechenden Adresse vorhanden, so wird die Liste der Rückmeldeobjekte bis zur angegebenen Adresse aufgefüllt. Die neu angelegten Rückmeldeobjekte erhalten den Status "deaktiv". |
Ereignis tritt ein, wenn ein
101 INFO 0 TIME "fx" "fy"
empfangen wird.
Durch diese SRCP-Info wird die im Server eingestellte Zeit-Verzerrung übernommen. Dieser Event kann nur von einem Objekt für den Bus 0 ausgelöst werden. |
Ereignis tritt ein, wenn ein
102 INFO 0 TIME
empfangen wird.
Durch diese SRCP-Info wird die Zeit angehalten und glilt im Client als ausgeschalten. Dieser Event kann nur von einem Objekt für den Bus 0 ausgelöst werden. |
Ereignis tritt ein, wenn ein
100 INFO 0 TIME "server time"
empfangen wird.
Durch diese SRCP-Info wird die im Client gespeicherte Zeit überschrieben. Die Ereignisbehandlungsroutine kann dazu genutzt werden die Anzeige einer Uhr zu aktualisieren. Dieser Event kann nur von einem Objekt für den Bus 0 ausgelöst werden. |