Mehrere Instanzen von Rocview

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

Hinweis:
Auch hier wird <PfadZumArbeitsbereich> durch den entsprechenden Pfad-Hinweis ersetzt.

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.
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:


Mac OS X

Das Start-Skript könnte unter Mac OS X 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 Mac OS-X mit 1 Rocrail-Server realisiert werden

Anlass:

  1. Der Gleisplan enthält mehr als eine Ebene oder ist so groß, das er nicht gut in ein Fenster passt.
  2. In eine Modul-Plan-Darstellung zu wechseln, ist keine Option
  3. 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:

  1. Die zwei Rocview.ini-Dateien müssen im Rocrail/Rocdaten-Ordner sein.
  2. Der Gleisplan ist in einem separaten Verzeichnis (Um Löschen durch eine Update zu vermeiden)
  3. 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

1) Start im definierten Arbeitsbereich auf der gleichen Hardware

Personal Tools