API Smartphone
Railware Smartphone IP-Protokoll
Verwendet wird UDP Port 11083. Er kann per Railware Systemoptionen (Bereich: Profi Parameter / Netzwerk) geändert werden; sollte also parametrierbar sein.
Port 11080 ist für Programmierbefehle fest reserviert und nicht dokumentiert.
Es wird im Halb-Duplex? Mode gearbeitet. Bis zum nächsten Befehl muss eine Antwort abgewartet werden.
Als Antworten werden 2 Byte Datagramme mit '!' (Ack) oder '?' ( Nack) gesendet.
Einige OpCodes? initiieren ein Antwort Datagramm.
Nicht beschriebene OpCodes? sind zur internen Nutzung oder für andere Controllertypen reserviert!
Initialisierungssequenz ist zwingend.
Antworten auf Befehle
Es wird immer eine Antwort mit mindestens 2 Byte gegeben.In Op wird der zuvor gesendete OpCode? zurückgegeben.
Soweit nicht anders angegeben, werden diese Antworten gesendet:
Befehl ausgeführt | |||||||||||||||||
Ack | Op | ||||||||||||||||
0x21 |
Antwort auf Befehl mit angehängten Nutzdaten | |||||||||||||||||
Ack | Op | Byte1 | Byte2 | ByteN | |||||||||||||
0x21 |
Befehl unbekannt | |||||||||||||||||
Nack | Padding | ||||||||||||||||
0x3F | 0x00 |
Die Befehle:
SendTurnout | |||||||||||||||||
Sendet Einzelbefehl an eine Weiche | |||||||||||||||||
Op | AddrHi | AddrLo | State | ||||||||||||||
0x01 | |||||||||||||||||
AddrLo?, AddrHi: Adressbereich 1 bis 4096 State: 1=Abzweig 0=Gerade |
GetTurnout | |||||||||||||||||
Liest Status einer Weiche | |||||||||||||||||
Op | AddrHi | AddrLo | |||||||||||||||
0x02 |
Antwort:
Ack | Op | State | |||||||||||||||
0x21 | 0x02 | ||||||||||||||||
State: 1=Abzweig 0=Gerade |
SendTrain | |||||||||||||||||
Sendet Befehl an Zug oder Lok | |||||||||||||||||
Op | Handle | Cmd | Speed | Direction | F0 | F1F8 | F9F16 | ||||||||||
0x03 | |||||||||||||||||
Handle: Aktuelle Nummer des Zuges Cmd: 0=Nothalt, 1=Abfahren, 2=Vorwärts, 3=Rückwärts 4=Bremsvorgang, 5=Fahren auf Sicht, 6=Zugsteuerung (Speed, Direction, F0, F1F8?, unbenutzt) Cmd: 9=Lok Kommando mit Speed, F0, F1F16 Direction: 1=Vorwärts 0=Rückwärts F0: Lichtfunktion 1=Ein 0=Aus F1F8: Lokfunktionen Einzelbits 1=Ein 0=Aus |
GetTrainStatus | |||||||||||||||||
Holt Status des Zuges und Speedsteps der Lok | |||||||||||||||||
Op | Handle | ||||||||||||||||
0x03 | |||||||||||||||||
Handle: Aktuelle Nummer des Zuges |
Antwort:
Ack | Op | Status | Speed | Steps | Direction | F0 | F1F8 | F9F16 | |||||||||
0x21 | 0x03 | ||||||||||||||||
Status: 0=Halt, 1=Fährt, 2=Bremst, 3=Wartet Steps: Anzahl Fahrstufen (14,15,27,28,126) Direction: 1=Vorwärts 0=Rückwärts F0: Lichtfunktion 1=Ein 0=Aus F1F16: Lokfunktionen Eizelbits 1=Ein 0=Aus |
GetTrainList | |||||||||||||||||
Liste aller Zugnamen | |||||||||||||||||
Op | |||||||||||||||||
0x04 |
Antwort:
Ack | Op | Count | Handle1 | Name1 | ... | Delimiter | Handle n | Name n | ... | Delimiter n | |||||||
0x21 | 0x04 | ||||||||||||||||
Count: Anzahl der aktiven Züge Handle: Nummer des Zuges Name: Zugname bis zu 10 Zeichen Delimiter ist Zeichen: @ (0x40) |
Status | |||||||||||||||||
Abfrage Controllertyp und Version | |||||||||||||||||
Op | |||||||||||||||||
0x0F |
Antwort:
Ack | Op | Typ | MajorVer | MinorVer | |||||||||||||
0x21 | 0x0F | 7 | 0 | 9 | |||||||||||||
Typ=7 für rwFahrpult ertsmals vor einem Kommando zu prüfen! |
Verbindungsaufbau:
1. UDP Broadcast über Port 11083 senden
Op | |||||||||||||||||
0xF5 | |||||||||||||||||
Wird Railware gefunden, kommen 18 Bytes zurück. Es kann mehrere aktive Railware PC im Netz geben. |
Antwort:
Ack | Op | IP1 | IP2 | IP3 | IP4 | Mask1 | Mask2 | Mask3 | Mask4 | MAC1 | MAC2 | MAC3 | MAC4 | MAC5 | MAC6 | PortHi | PortLo |
0x21 | 0xF5 | ||||||||||||||||
IP1..4: IP1..IP4: IP Adresse Railware PC Mask1..4: Netzwerkmaske MAC1..6: MAC Adresse Port: Tatsächlich verwendeter Port (kann abweichen) |
2. Typ erfragen
Ist es Railware Software oder irgendein Railware Hardware Controller?
Op | |||||||||||||||||
0x0F | |||||||||||||||||
Ack | Op | Typ | MajorVer | MinorVer | |||||||||||||
0x21 | 0x0F | 7 | 0 | 9 | |||||||||||||
Typ: Muss 7 sein! |
3. Mit GetTrainList? Liste der momentan aktiven Züge holen
4. Eventuell Status erfragen, wenn schon ein Zug aktiv
Nach Step 2 (Status) können folgende Events ungefragt gesendet werden.
Events können am gesetzten MSB von Op erkannt werden.
TurnoutEvent | |||||||||||||||||
Kann als ungefragtes Event empfangen werden, wenn die Adresse vorher benutzt wurde | |||||||||||||||||
Ack Op | AddrHi | AddrLo | State | ||||||||||||||
0x21 | 0x82 | ||||||||||||||||
Beschreibung siehe: GetTurnout |
TrainStatusEvent | |||||||||||||||||
Kann als ungefragtes Event kommen, wenn das Handle schon mal benutzt wurde. | |||||||||||||||||
Ack | Op | Handle | Status | Speed | Steps | Direction | F0 | F1F8 | F9F16 | ||||||||
0x21 | 0x83 | ||||||||||||||||
Beschreibung siehe: GetTrainStatus |
ListChangeEvent | |||||||||||||||||
Wurden Züge im PC ein- oder ausgesetzt, dann wird ungefragt dieses Event gesendet. Danach sollte mit GetTrainList? aktuelle Liste geholt werden | |||||||||||||||||
Ack | Op | ||||||||||||||||
0x21 | 0x85 |
MainEvent | |||||||||||||||||
Wird bei Nothalt oder Ende gesendet | |||||||||||||||||
Ack | Op | State | |||||||||||||||
0x21 | 0x86 | ||||||||||||||||
State: 0=Digital Ok, 1=Digital Stop, 2=Digital Lokhalt, 3=Railware Terminate |
Kategorie: API
Zu dieser Seite haben beigesteuert: Railware Team
.
Page last modified on Mittwoch 02 Juni, 2010 22:11CEST by Railware Team .
Der Inhalt dieser Seite unterliegt folgenden Lizenzbestimmungen: Copyright.