Anleitung zu dtcltiny

# dtcltiny

## Einführung

dtcltiny ist ein Programm, mit dem man Loks auf einer Modellbahn steuern kann, die mit einem Digitaldecoder ausgerüstet sind. Es stellt für jede Lok einen Regler zur Verfügung, mit dem man die Geschwindigkeit, Fahrtrichtung und Sonderfunktionen einstellen kann. Nebenbei bietet es noch die Möglichkeit, Decoder nach dem NMRA-DCC Standard und Uhlenbrock-Decoder zu Programmieren. Natürlich gibt es auch ein paar Komfortmerkmale, diese werden bei den Bedienungshinweisen erläutert.

## Softwarevoraussetzungen

Neben einer funktionierenden Linux-Installation mit X Window System und Qt-Libraries (Version 3.x, bei allen halbwegs aktuellen Installationen dürften dies erfüllt sein) braucht man ausserdem noch das Gegenstück zu diesem Client, den Server. Er muss das Protokoll SRCP 0.7.0 oder höher unterstützen, allerdings nicht >= SRCP 0.8.0. SRCP steht für "Simple Railroad Command Protocol" und beschreibt einen Befehlssatz zur Steuerung von Modellbahnen. Mehr dazu siehe unter Der Moba. In den meisten Fällen wird wohl als Server das Programmpacket "DDL" zum Einsatz kommen, das die Aufgabe einer Digitalzentrale in Software übernimmt. Mehr dazu und Download siehe beim DDL-Projekt. Hinweis: Zum Ausprobieren kann man dtcltiny auch ohne Server starten.

## Hardwarevoraussetzungen

Abhängig vom Server.

Bild 1: Hauptfenster mit 3 Lokreglern

## Installation

### rpm

Als root installieren mit rpm -i <dateiname>

### source-rpm

Als root neues rpm erstellen mit rpm --rebuild <dateiname>. Das fertiggestellte Archiv wird im Verzeichnis `/usr/src/redhat/RPMS/i386` (bei anderen rpm-basierten Distributionen ähnlich, SuSE: `/usr/src/packages/RPMS/i586`, Mandrake: `/usr/src/RPM/RPMS/i586`) abgelegt. Dies können sie wie im Abschnitt zuvor beschrieben installieren.

### tarball (.tgz)

Archiv auspacken, z.B. mit tar xzf dtcltiny-0.3.6.tgz Die Sourcen befinden sich nun im Verzeichnis dtcltiny-0.3.6. Wechseln Sie dort hinein und erstellen sie das Programm mit ./configure && make Nun als root das Programm installieren mit make install
Hinweis: Die Umgebungsvariable QTDIR muss auf eine gültige Qt 3.x-Installation verweisen

## Starten

Zunächst sollte der Server gestartet werden. Die Anweisungen dazu entnehmen sie bitte dessen Dokumentation. Bei Probebetrieb kann dieser Schritt entfallen.

Dann folgendermassen starten

> `dtcltiny [<filename.dtcl>]`

Konkretes Beispiel:

> `dtcltiny loco.dtcl`

filename: Dieser optionale Parameter gibt eine Datei an, von dem eine gespeicherte Konfiguration gelesen werden soll. Diese Dateien haben normalerweise die Endung ".dtcl" (muss mit angegeben werden)

Ist der Rechner mit dem in den Voreinstellungen des Programms angegebenen Namen nicht vorhanden oder nicht erreichbar, bzw. läuft dort kein SRCP-Server, so bringt das Programm eine Fehlermeldung. Diese Einstellungen können unter dem Menüpunkt "Optionen/Einstellungen" vorgenommen werden. Sie werden in der Datei `~/.dtcltiny` gespeichert und stehen beim nächsten Programmstart wieder zur Verfügung.

Nach dem Start haben Sie entweder ein leeres Programmfenster, falls keine Konfigurationsdatei geladen wurde, oder ein Fenster mit den geladenen Controllern.

## Bedienung

### Anlegen/Ändern eines Controllers

Wählen Sie "File -> New Loco..." oder <CTRL>+N . Es erscheint ein Dialog, mit dem Sie die Eigenschaften des neuen Controllers festlegen. Der Dialog beinhaltet 3 Tabs:

Bild 2: Eigenschaftsdialog mit Tab "General"

Wie der Name "General" schon sagt werden hier die grundlegenden Eigenschaften eingestellt. Rechts in der Gruppe "logics" muss der Lokdekoder, das verwendete Protokoll und die Dekoderadresse ausgewählt werden. Zunächst wählen sie bitte den verwendeten Lokdekoder aus der Liste. Falls er nicht in der Liste existiert, wählen sie einen der beiden Generic-Dekoder aus, je nachdem, ob er mit dem Motorola (Märklin) oder dem NMRA DCC Protokoll arbeitet. Nun schauen sie in die Liste der angebotenen Protokolle, da haben sie im einfachsten Fall keine Wahlmöglichkeit. Wenn sich doch mehrere Protokolle in der Liste befinden, koennen sie entweder frei wählen oder muessen sich nach den vom Dekoder gebotenen Werten entscheiden, falls ein Generic-Dekoder ausgewält wurde. Eine Erklärung der Kennwerte des ausgewählten Protokolls finden sie direkt unter dem Adressfeld. Anschliessend müssen sie noch die Adresse einstellen.

Einen rein informativen Charakter haben die Felder Name (Loco) und Alias (Train). Dort können sie der Lok und dem Zug jeweils einen beliebigen Namen geben (nicht zu lang). Einer der beiden Namen kann jeweils im Controller angezeigt werden. Ebenfalls optional kann man ein kleines Icon für den Controller auswählen. Mit Klick auf das Ordnersymbol öffnet sich ein Filedialog, wo sie ein xpm-File auswählen können

Die Checkbox "Reverse Logic" kann beim Neuanlegen einer Lok erstmal inaktiv gelassen werden. Sollte sich herausstellen, daß die tatsächliche Fahrrichtung nicht mit der im Controller angezeigten Richtung übereinstimmen, so kann dies durch setzen dieser Einstellung korrigiert werden.

Bild 3: Eigenschaftsdialog mit Tab "Funcs"

Abhängig vom Protokoll stehen hier keine oder bis zu 5 Funktionen zur Konfiguration zu Verfügung. Ob alle einstellbaren Funktionen tatsächlich benutzt werden können, hängt vom Dekoder ab (siehe Bedienungsanleitung des Dekoders). In der Zeile "Available" kann man die jeweilige Funktion aktivieren, darunter kann man auswählen, was damit angesteuert wird, und im untersten Auswahlfeld kann man die Funktionsweise des Betätigungsknopfs einstellen. In der Einstellung switch arbeitet er wie ein Schalter, d.h. er rastet im Aus- und An-Zustand. Wenn "pushbutton" gewählt ist, funktioniert der Knopf als Taster, d.h. die Funktion ist nur solange an, wie man auf dem Knopf verweilt - sinnvoll z.B. bei einem Entkuppler oder Lokpfeife.

Bild 4: Eigenschaftsdialog mit Tab "Speed"

Eine kurze Beschreibung der Einstellungen im Tab Speed:

- Maximum: Die höchste Fahrstufe Fahrstufe, die vom Controller eingestellt werden kann. Bewirkt eine Begrenzung der Höchstgeschwindigkeit. Nicht auf maximal zu stellen ist nur sinnvoll bei Decodern, die keine einstellbare Höchstgeschwindigkeit haben.
- Average: Eine beliebige mittlere Geschwindigkeit, die durch drücken des gelben Streifens neben dem Geschwindigkeitsregler eingestellt wird.
- Minimum: Wie vorige, nur geringere Geschwindigkeit und grüner Streifen.
- Rechts kann noch die Vorbild-Höchstgeschwindigkeit eingestellt werden. Dies dient zur Anzeige der Momentan-Vorbild-Geschwindigkeit im Controller-Fenster.
- Accelaration: Die Wartezeit zwischen einzelnen Fahrstufen beim Beschleunigen. Alle Fahrstufen bis zur Endgeschwindigkeit werden durchlaufen. Bei Decodern mit 128 Fahrstufen sollte man auf jeden Fall einen geringeren Wert einstellen als die Default-Werte. Und wenn der Decoder eine einstellbare Beschleunigung bietet, sollte man hier null einstellen.
- Breaking: Es gilt das gleiche wie bei vorigem, jedoch für das Bremsen.

Hinweis: Die Software-Verzögerung beim Beschleunigen Bremsen tritt nur in Kraft, wenn man die Fahrgeschwindigkeit mit einem Klick auf den grünen, gelben oder roten Balken, sowie dem Bremssymbol wählt. Der Schieberegler folgt dabei der momentanen Geschwindigkeit. Wird während einer solchen Phase am Schieberegler gezogen, bricht der Beschleuigungs-/Bremsvorgang ab. Wird dieselbe Lok noch von einem anderen Regler (z.B. von einem Clubkollegen) gesteuert, unterbricht dessen Einflußnahme auf die Lokgeschwindkeit ebenfalls den Beschleuigungs-/Bremsvorgang.

Sobald Sie auf "OK" klicken erscheint der neue Controller im Hauptfenster. Nachträgliche Änderung der Einstellungen sind möglich, wenn Sie mit der rechten Maustaste auf einen Controller klicken und "Properties" auswählen. Dieses Menü bietet auch "Delete" zum löschen eines Controllers. Mit "File -> Save (As)" kann man die Einstellungen der Controller in eine Datei sichern, um sie später mit "File -> Load" wieder zu laden.

### Bedienung der Hauptfunktionen

Neben den normalen Menüeinträgen befinden sich im Menübalken noch drei Buttons, deren Funktion hier kurz erläutert werden:

1. Anschalten des Stroms
2. Abschalten des Stroms
3. Nothalt + Abschalten des Stroms

Diese Funktionen sind nur anwählbar,also farbig, wenn dies sinnvoll ist. Ansonsten sind sie grau.

### Bedienung eines Controllers

Starten Sie das Programm und legen Sie einen Controller an. Wenn Sie nun mit der Maus ein paar Sekunden auf ein Element zeigen (nicht klicken), bekommen sie eine Erklärung (Tooltip). Deshalb und weil alles selbsterklärend sein sollte, verzichte ich hier auf eine nähere Beschreibung. Nur wenige kurz Punkte:

- Wenn sie auf den Button mit dem Name/Alias klicken, wird jeweils die jeweils andere Bezeichnung angezeigt.
- Auf die gleiche Weise kann man von Anzeige "Real Speed" auf "Speed Steps" umschalten.

### Verzögertes Beschleunigen und Bremsen

Wird auf den grünen, gelben oder roten Streifen neben dem Schieberegler oder auf den Bremsbutton geklickt, wandert der Schieberegler mit der eingestellten Brems-/Beschleunigungsverzögerung in Richtung Zielwert. Dieses wird aber vorzeitig beendet, wenn

- der Schieberegeler betätigt wurde(per Maus oder Tastatur),
- ein anderer Client die Geschwindigkeit der Lok verändert (siehe Synchronisation mit anderen Controllern),
- eine andere Zielgeschwindigkeit angefordert wurde oder
- ein Nothalt ausgelöst wurde.

### Bedienung per Tastatur

Leertaste | Richtungswechsel (aktueller Controller)
F1...F5 | Schaltet Sonderfunktionen 0...4 (aktueller Controller)
<Strg>-x | Nothalt (aktueller Controller)
<Strg>-b | Bremsen (aktueller Controller)
Pfeiltaste nach oben / nach unten | Geschwindigkeit um 1 Stufe erhöhen / verringern (aktueller Controller)
Bild hoch/runter | Geschwindigkeit um 1/10 der Maximalgeschwindigkeit erhöhen/verringern (aktueller Controller)
Tab | Wechseln auf nächsten Controller
<Strg>-n | Neuen Lokcontroller anlegen
<Strg>-o | Controllerfeld aus Datei laden
<Strg>-q | Programm beenden
<Strg>-s | Digitalstrom ein-/ausschalten

### Programmierung von Decodern

Beschreibung folgt später, dürfte aber auch ohne Beschreibung zu Bewältigen sein.

## Synchronisation mit anderen Controllern

Da ein SRCP-Server in der Regel die Kommunikation mit mehreren Clients unterstützt, ist es möglich, daß dieselbe Lok von mehreren Benutzern gleichzeitig bedient wird. Um die Controlleranzeige synchron mit den tatsächlich eingestellten Fahrwerten zu halten, unterstützt dtcltiny die Auswertung des Infoports. Diese Funktion ist automatisch aktiv, wenn der Server mit eingeschaltetem Infoport (bei erddcd: Option "-i") gestartet wurde, brauch also nicht explizit eingeschaltet werden. Automatische Beschleunigungs- und Bremsvorgänge werden bei Beeinflussung vom Infoport abgebrochen.

## Hinzufügen weiterer Lokdekoder und Protokolle

Im Gegensatz zu frühen Versionen von dtcltiny sind die Informationen über Lokdekoder und Protokolle nicht mehr im Source-Code enthalten, sondern werden aus Dateien geladen, jeweils eine mit dem Namen "decoders" und "protocols". Sie befinden sich im Verzeichnis resourcen und können mit einem beliebigen Texteditor bearbeitet werden. Es können beliebig neue Einträge hinzugefügt werden und bestehende gelöscht oder verändert werden. Neue Einstellungen stehen zur Verfügung, sobald der Konfigurationsdialog geladen wird ("New Loco" oder "Properties"). Weitere Hinweise finden sie in den Kommentarzeilen der Dateien selbst.

## Haftung

Ich übernehme keinerlei Haftung für Schäden, die mit diesem Programm entstehen.

## Lizenz

Die Sourcen dieser Software unterliegen der GPL. Näheres ist auf http://www.gnu.org/ zu erfahren.

## Danke an

- Stefan Preis, dessen Programm dtcl als Basis für diese Weiterentwicklung diente.
- Torsten Vogt, der mit DDL die Entwicklung von Modellbahnsteuerungs-Software auf Linux erst in Schwung gebracht hat.
- Alle Benutzer von denen ich konstuktive Rückmeldung bekommen habe.
- Alle Entwickler von SRCP.

Markus Pfeiffer, 01.12.2001; Überarbeitung: Guido Scholz