Table of Contents
Mehrere Instanzen von Rocview
Inhalt → Rocview → Allgemeine Funktionen
Aktivieren von mehreren Rocviews für einen besseren Überblick.
Windows / Linux
Größere Anlagen oder einzelne Module können in Rocrail zur besseren Übersicht auf mehrere Ebenen verteilt werden. Wenn Rocview nur einmal gestartet wird, ist hierbei jedoch erforderlich, dass häufig zwischen den einzelnen Ebenen umgeschaltet werden muss, damit der Überblick über das Geschehen auf der Anlage erhalten bleibt.
Die Client/Server-Architektur von Rocrail erlaubt jedoch noch eine andere, elegantere Vorgehensweise: Es werden mehrere Instanzen von Rocview gestartet, die sich alle mit dem gleichen Server verbinden. In den einzelnen Instanzen werden unterschiedliche Teile der Anlage bzw. von der Benutzeroberfläche angezeigt.
Dieses Kapitel beschreibt Schritt für Schritt, wie mehrere Instanzen von Rocview gezielt aufsetzt werden.
Als Beispeil dient die Konfiguration von vier verschiedenen frei verschiebbaren Fenstern:
- Fenster 1: Lokomotiven-Tabelle
- Fenster 2: Modul 1 (Buchrain)
- Fenster 3: Modul 2 (Grabtief)
- Fenster 4: Schalttafel (Ebene mit verschiedenen Ausgängen zum Schalten von Licht, etc.)
Die hier beschriebene Umsetzung erfolgt auf einem Rechner, kann aufgrund der Architektur aber problemlos auch auf verschiedenen (Client-) Rechnern umgesetzt werden.
Schritt 1: ini-Dateien erstellen
Da jedes Fenster unterschiedlich konfiguriert werden soll, wird für jedes Fenster eine eigene .ini
-Datei benötigt. Deshalb wird die standardmäßig vorhandene rocview.ini
viermal mit jeweils eigenem Dateinamen in das Arbeitsverzeichnis von Rocview kopiert.
Beispiel:
rocview_locos.ini
rocview_buchrain.ini
rocview_grabtief.ini
rocview_panel.ini
Unbedingt sicherstellen, dass in jeder einzelnen rocview_*.ini die Protokollierungen / "Traces" deaktiviert sind..
Schritt 2: Einstellungen der Fenster
In diesem Schritt werden die kopierten ini-Dateien an die jeweiligen Bedürfnisse angepasst. Hierzu wird ein Kommandozeilen-Fenster (DOS-Box oder Terminal) geöffnet und Rocview mit der entsprechenden ini-Datei aufgerufen:
Auf einem LINUX-System funktioniert das Kommando:
<PfadZumProgrammVerzeichniss>/rocview -i <PfadZumArbeitsbereich>/rocview_locos.ini
Hinweis:
<PfadZumProgrammVerzeichniss>
wird durch die entsprechende Pfadangabe ersetzt. Ein /opt/rocrail
sollte reichen.
<PfadZumArbeitsbereich>
wird durch den Pfad zum Arbeitsbereich ersetzt. Das könnte z.B. so aussehen: /home/<user>/rocrail
Auf einem WINDOWS-System funktioniert:
rocview -i <PfadZumArbeitsbereich>\rocview_locos.ini
Hinweise:
- Auch hier wird
<PfadZumArbeitsbereich>
durch den entsprechenden Pfad-Hinweis ersetzt. - Wenn mehrere Rocrail-Installationen vorhanden sind (z.B. 32bit und 64bit)
oder der Speicherort des Programms aus anderen Gründen nicht transparent ist,
muss dem Programm-Namen der Pfad des Programm-Verzeichnisses vorangestellt werden:
<PfadZumProgrammVerzeichniss>\rocview -i <PfadZumArbeitsbereich>\rocview_locos.ini
Dies muss unter den gleichen Umständen auch bei den noch folgenden Beispielen berücksichtigt werden.
In der erscheinenden Rocview-Oberfläche werden im Ansicht-Menü die jeweils nicht anzuzeigenden Bildschirm-Bereiche deaktiviert und die verbleibenden Fensterelemente durch Ziehen anpasst.
Im folgenden Screenshot wird z.B. nur noch die Lok-Tabelle angezeigt.
Das Fenster zur Anzeige der Schalttafel sieht folgendermaßen aus:
Wenn Rocview nun beendet wird, werden diese Fenster-Einstellungen in der speziellen ini-Datei gespeichert. Dies kann durch einen erneuten Aufruf schnell geprüft werden. Zur Darstellung einzelner Ebenen werden diese vorerst manuell aktiviert und das Fenster so zurecht gezogen, dass alle wichtigen Bestandteile der Ebene sichtbar sind.
Schritt 3: Verbindungsdaten und Fenster
Nach Abschluss der Arbeiten des vorherigen Schrittes war festzustellen, dass Rocview ohne weitere Angaben immer die erste Ebene eines Gleisplans anzeigt. Dieses Verhalten kann aber durch den Parameter s beim Aufruf von Rocview beeinflusst werden.
rocview -s 2 -i rocview_panel.ini
Mit dem Paramter s kann vorgegeben werden, welche Ebene im Fenster aktiv bzw. sichtbar sein soll. Hierbei ist zu beachten, dass als Argument der Index der Ebene angegeben werden muss. Diesen Index erkennt man aus der Reihenfolge der dargestellten Ebenen. Im Beispiel dieser Anleitung werden die Ebenen in der folgenden Reihenfolge angezeigt:
- Buchrain –> Index 0
- Grabtief –> Index 1
- Panel –> Index 2
Schritt 4: Erstellen eines Start-Skriptes für den großen Überblick
Server ist bereits gestartet
Der Server rocrail.exe
muss in diesem Fall bereits vor Start der Rocview-Instanzen auf der gleichen oder einer anderen Hardware gestartet sein und laufen.
Der Server muss dafür entweder aus dem Verzeichnis/Arbeitsbereich gestartet werden, in dem sich die zu verwendende plan.xml
-Datei befindet:
<Lfw:> cd <PfadZumArbeitsbereich> start <PfadZumRocrailprogrammVerzeichnis>rocrail
oder beim Start muss der Parameter für den Arbeitsbereich angegeben werden:
start rocrail -w <PfadZumArbeitsbereich>
Damit keine weitere Server-Instanz gestartet wird, muss unbedingt in allen speziellen rocview.ini
-Dateien die Option startdefaultworkspace="false" gesetzt sein.
Hinweis: Für den Fall, dass mit der ersten Rocview-Instanz auch der Server gestartet werden soll, siehe Server im Arbeitsbereich.
Damit nicht für jeden einzelnen Aufruf von Rocview mit den entsprechenden Parametern eine eigene Verknüpfung erstellt werden muss, empfiehlt sich die Verwendung eines kleinen Skriptes:
Windows:
start rocview -i rocview_locos.ini start rocview -s 2 -i rocview_panel.ini start rocview -s 0 -i rocview_buchrain.ini start rocview -s 1 -i rocview_grabtief.ini
Mit dem Aufruf dieses Skriptes wird Rocview viermal mit den entsprechenden Inhalten gestartet.
Windows: Falls es beim Starten Fehlermeldungen zum "clipboard" gibt, so kann jeweils zwischen den einzelnen Rocview-Aufrufen durch Einfügen folgender Zeile eine Pausen von 1-2 Sekunden eingelegt werden.
ping -n 2 127.0.0.1 >NUL
Damit sollten die Rocview-Instanzen wieder reibungslos starten.
Linux:
#!/bin/bash rocview -i rocview_locos.ini & rocview -s 2 -i rocview_panel.ini & rocview -s 0 -i rocview_buchrain.ini & rocview -s 1 -i rocview_grabtief.ini
Die Hinweise zu den einzufügenden Pausen beim Windows-Skript gelten gleichermaßen auch unter Linux.
Server im Arbeitsbereich
Soll mit der ersten Rocview-Instanz auch der Server gestartet werden1), darf die Option startdefaultworkspace="true" nur in der speziellen rocview.ini
-Datei für die erste Rocview-Instanz gesetzt sein.
In allen anderen speziellen "rocview.ini
"-Dateien muss unbedingt die Option startdefaultworkspace="false" gesetzt sein.
Bei dem oben aufgeführten Start-Skript sollte zwischen dem Start der ersten Rocview-Instanz (mit Start des Servers) und den Zeilen für den Start der weiteren Instanzen eine Pause eingefügt sein, die dem Server z.B. 5-6 Sekunden Zeit für den Start gibt.
ping -n 6 127.0.0.1 >NUL
Wenn das funktioniert, können verkürzte Zeiten probiert werden.
Bei langsamer Hardware und / oder großen Gleisplänen muss die Zeit ggf. verlängert werden.
Schritt 5: Feineinstellungen der Fenster-Positionen
Als letzter Schritt bleibt noch die Positionierung der einzelnen Fenster zueinander. Hierzu sind nach dem Starten aller Instanzen die einzelnen Fenster so zu verschieben, wie sie hinterher im Betrieb benötigt werden. Werden nach der Feineinstellung die Fenster nacheinander geschlossen, wird die jeweils eingestellte Position der Fenster in der entsprechenden ini-Datei gespeichert und beim erneuten Aufruf erscheint die gewünschte Darstellung:
macOS
Das Start-Skript könnte unter macOS so aussehen:
#!/bin/sh export DYLD_LIBRARY_PATH=./Rocrail.app/Contents/MacOS ./Rocrail.app/Contents/MacOS/rocview -i rocview1.ini& ./Rocrail.app/Contents/MacOS/rocview -i rocview2.ini&
Wie 2 Rocview-Fenster unter macOS mit 1 Rocrail-Server realisiert werden
Anlass:
- Der Gleisplan enthält mehr als eine Ebene oder ist so groß, das er nicht gut in ein Fenster passt.
- In eine Modul-Plan-Darstellung zu wechseln, ist keine Option
- Die Nutzung von 2 Computer-Monitoren ist wünschenswert
Schritt 1: Die Rocrail-Architektur verstehen
Für diesen besonderen Fall sieht die Architektur wie folgt aus:
Wichtig:
- Die zwei Rocview.ini-Dateien müssen im Rocrail/Rocdaten-Ordner sein.
- Der Gleisplan ist in einem separaten Verzeichnis (Um Löschen durch eine Update zu vermeiden)
- Das Start-Programm
Start Rocview.sh
ist im Rocrail/Rocdaten-Ordner
Schritt 2: In Rocrail einen Gleisplan erzeugen, der zunächst 2 Ebenen-Register enthält
Hinweis: Am Anfang bestand die falsche Annahme, dass zwei separate Gleispläne in separaten Arbeitsbereichen gelegt sein müssen. Dies sollte nicht gemacht werden. Es muss ein Gleisplan in einem Arbeitsbereich mit zwei Ebenen-Registern angelegt werden.
Später wird von beiden Rocview-Fenstern mit dem gleichen Gleisplan im Rocrail-Server kommuniziert.
Schritt 3: Die erste Rocview.ini erzeugen
Die erste Rocview.ini-Datei, die das erste Fenster öffnen soll, wird angelegt und in dieser Fall Rocview_-1.ini
genannt.
Es muss sichergestellt sein, dass die Datei den Pfad zum richtigen Gleisplan enthält:
<workspace path="/Users/<your name>/Documents/De Rangeerbaan" title="De Rangeerbaan Plan"/> </workspaces>
Hinweis:
/<your name>/
enthält den Namen der "Apple computer ID", meistens den Login-Namen bzw. Benutzernamen.
Schritt 4: Die zweite Rocview.ini erzeugen
Die zweite Rocview.ini-Datei, die das zweite Fenster öffnen soll, wird angelegt und in dieser FallRocview_-0.ini
genannt.
Es muss sichergestellt sein, dass die Datei den Pfad zum richtigen Gleisplan enthält:
<workspace path="/Users/<your name>/Documents/De Rangeerbaan" title="De Rangeerbaan Plan"/> </workspaces>
Hinweis:
/<your name>/
enthält den Namen der "Apple computer ID", meistens den Login-Namen bzw. Benutzernamen.
Schritt 5: Shell-Programm anlegen
Der Inhalt des Shell-Programms bestimmt, wie das Script arbeitet.
Es muss sichergestellt sein, dass das Script getestet wird, bis es korrekt arbeitet!
In diesem Beispiel hat das Script folgenden Inhalt:
#!/bin/sh export DYLD_LIBRARY_PATH=/Applications/Rocrail/Rocrail.app/Contents/MacOS /Applications/Rocrail/Rocrail.app/Contents/MacOS/rocrail& ping -c 2 127.0.0.1 >NUL /Applications/Rocrail/Rocrail.app/Contents/MacOS/rocview -i /Applications/Rocrail/rocdata/rocview_0.ini& ping -c 2 127.0.0.1 >NUL /Applications/Rocrail/Rocrail.app/Contents/MacOS/rocview -i /Applications/Rocrail/rocdata/rocview_-1.ini&
Hinweis:
Mit den ping
-Befehlen erhält der Computer einige Zeit, den Rocrail-Server und die 2 Rocview-Fenster nacheinander zu starten. Das mag langsam aussehen, aber mit dem Zeitablauf arbeitet es richtig.
Das Shell-Programm sollte mit einem wiedererkennbaren Namen gespeichert werden, wie: Start dual Rocview.sh
Schritt 6: Ausführen des Shell-Programm-Scripts
Nach einem Doppelclick startet das Script die Ausführung. Es können Fehlermeldungen erscheinen, falls die Pfade im Script nicht korrekt sind.
Das kann nur beseitigt werden, wenn die korrekten Pfade im Script stehen …und mit etwas Geduld…
Nach einigen Sekunden werden die beiden Rocview-Fenster geöffnet, wie:
Hinweis: Es kann der Fall sein, dass mit Click auf das Ebenen-Register in den Rocview-Fenstern manuell ausgewählt werden muss, welcher Gleisplan in welchem Fenster zu sehen sein soll. Ich war nicht in der Lage, das auch zu automatisieren.
Schritt 7: Create a shortcut form the Shell program to be placed in the Dock
Create a shortcut of the Shell program which enable you to put that in the Dock.
1. Start the Automator
2. Select in the Automator Library: execute Shellscript
3. Drag the Library script to the right panel
4. Empty the existing content in the script
5. Open in the Start Rocview.sh script (with Terminal)
6. Select the content in the script en copy
7. Past the content in the Automator empthy windown in the right panel
8. Test your Automator script with ‘push’ the execute button in the right uppercorner
9. If it correct works, save your automator script with a valid name
10. Drag the Automator script in the Dock
11. Click on the Automator icon and Rocrail will start with 2 Rocview windows.
12. Ready