Allgemeine Einführung

Beim Scripting gibt es einige vorgegebene Begriffe, die verwendet werden können. Jede Action enthält mindestens eine Aktion, welche wiederum mehrere Befehle kann.

Hinweis: Mit Scripting kann man viel erreichen, aber es lohnt sich, funktionierende Zwischenstände zu sichern, da schnell mal was nicht mehr so funktioniert, wie man es wollte. Sollte das so sein, lädt man einfach die Config (cfg.xml) die man gesichert hatte auf das Modul zurück.

Attribute und deren Bedeutung

  • value dient meist wie ein Operator
  • pinID: id eines Pins
  • ms: millisekunden Zeitangabe
  • intValue
  • msInterval
  • group: Gruppierung in der Oberfläche (Schaltpult)
  • type bestimmt, ob es eine Zahl, ein Zeichen oder eine Farbe ist
  • actionID: id (Name) einer Funktion, Trigger oder Timer
  • varID: Verwendung des Werts eines Parameters oder anderer Action

Gültige Operatoren für Value

Bei setIO:

  • größer >
  • kleiner <
  • gleich =
  • ungleich - random #
  • multiplizieren - setze rot grün blau R,G,B - random R,G,B r,g,b Bei set: - random # - Multiplizieren
  • größer >
  • kleiner <
  • gleich =
  • ungleich - zum Abziehen (kann verwendet werden, wenn man eine art for Schleife machen möchte) -
  • draufrechnen (kann verwendet werden, wenn man eine art for Schleife machen möchte) +

Jedes Script-Fenster hat seitlich 4 Buttons zum Bedienen:

ctc-app-doku-bild

Befehle

Die Befehle gelten für alle Aktionen und werden immer gleich eingestellt. Um einen neuen Befehl einzugeben, betätigt man den + Button im ScripFenster.

ctc-app-doku-bild

Hat man einen Pin gesetzt, ändern sich die Einstellungen Rechts wieder. Über ein dropdown Menue kann man einen der Pins wählen. Im nächsten Feld kann man eine erweiterte Option wählen. Danach kann man den Wert aus einer Variablen (Parameter), einem Color-Picker oder als geschriebenen intWert nehmen, um die Farbe anzugeben.

Vorsicht: Es werden nur Parameter angezeigt, die auch den passenden Datentyp besitzen.

ctc-app-doku-bild

Hat man einen Set gemacht, hat man über das Dropdown-Menue die Auswhl aller vorhandenen Parameter. Sollte keiner vorhanden sein, muss man einen neuen erstellen (siehe Neuen Parameter Anlegen ). Danach kann man die Optionen des Parameters angeben. Auch hier kann wie beim Pin ein Wert aus einer Variablen (Parameter) gelesen werden oder per Hand gegeben werden. Parameter werden auch hier nur angezeigt, wenn sie den richtigen Datentyp besitzen.

ctc-app-doku-bild

Bei einem Call wählt man über das Dropdown-Menue eine Aktion aus. Über das nächste Menue wird entschieden, auf welchen State der gewählten Action zugegriffen werden soll. Zuletzt kann man noch einen Wert an die gewünschte State übergeben. Beide beeinflussen die States auf bestimmte Weise.

TODO: Tabelle der unterschiedlichen States

ctc-app-doku-bild

Beim If wird eine auslösende Bedingung hier eine variable gewält. Danach wird die Operation gewält. Als Drittes wird der zu vergleichende Wert über einen Parameter oder über eine Zahl eingegeben. Der Trigger ist eine Ausnahme, denn dort wirt als Drittes ein Zeichen oder Buchstabe statt einer Zahl erwartet.

ctc-app-doku-bild

Beim else If wird eine auslösende Bedingung hier eine variable gewält. Danach wird die Operation gewält. Als Drittes wird der zu vergleichende Wert über einen Parameter oder über eine Zahl eingegeben. Der Trigger ist eine Ausnahme, denn dort wirt als Drittes ein Zeichen oder Buchstabe statt einer Zahl erwartet.

Hinweis:

  • Die Befehle "call" und "if" stellen eine Verschachtelung dar. Erreicht die Verschachtelung eines Skripts mehr als 10 Stufen , dann wird dieses ab CTC-App 4.40 und Firmware 20250627 mit einem Fehler abgebrochen .
  • Die Abarbeitung von Skripten und das Ändern von Zuständen wird ab CTC-App 4.40 in der Datei "4242Action-Log.csv4242" dokumentiert. Diese findet sich im Daten-Ordner der CTC-App und wird bei jedem Start der CTC-App neu angelegt (alter Inhalt überschrieben). Sie kann komfortabel mit LibreOffice Calc betrachtet werden (Excel kann funktionieren, muss aber nicht).

Hinweis:

  • delay ist deprecated zwar noch sichtbar beim verbinden mit einem altem Modul.

Neuen Parameter Anlegen

Um einen neuen Parameter anzulegen, muss man in die obere Tabelle un den Plus button betätigenParameter öffnen

Gebe den Namen des neuen Parameters an. Danach kann man noch eine wert festlegen und was für ein Typ er ist. Zum Schluss bestätigen mit ok und der neue Parameter kann benutzt werden

Parameter Erstellen

Funktionen

Eigentlich hat jedes Produkt mindestens eine Funktion voreingestellt, sonst würde es nichts machen. Allerdings haben Sie die Möglichkeit, diese durch Scripte zu ändern oder zu erweitern. Dazu muss man zuallererst in das Script Fenster.

Im oberen Teil des Fensters werden die grundlegenden Dinge festgehalten wie der Name der Funktion und zu welcher Gruppe sie gehört (default SignalTower). Zudem zu welchem Typ die Funktion gehört und ihr default State.

ctc-app-doku-bild

ctc-app-doku-bild

Darunter kommt dann das eigetliche Skriptfenster, wo auch wirklich programmiert wird. Über den Button Hinzufügen kann man, wenn die Funktion markiert ist, einen State hinzufügen. Markiert man einen schon vorhandenen State, dann kann man über denselben Button einen Befehl hinzufügen. Jetzt gibt es auch auf der rechten Seite Einstellungen für den State.

ctc-app-doku-bild

Zuerst kann man bestimmen, unter welchem Zeichen (Buchstabe) oder Zahl der State angesprochen wird. Als Nächstes kann man dem State noch einen Namen geben. Darunter kann man ihm ein Symbol geben, welches denselben Namen wie der State haben muss. Daneben gibt man die pos an. Diese beiden Angaben sind als Steuerelemente in der App in der richtigen Gruppe sichtbar. Ganz unten kann man dann noch DCC angeben, wenn man es über eine Digitalzentrale steuern will (getestet mit mc² zentrale)

Timer

Der Timer spielt immer dann eine Rolle, wenn etwas immer und immer wieder passieren soll.

Hinweis: Ein Timer läüft immer im angegebenen Zyklus. Allerdings kann man ihn auch als Single-Shot aufrufen, dann läuft er genau einmal durch.

ctc-app-doku-bild

ctc-app-doku-bild

Im oberen Teil des Fensters steht der Name des Produkts mit "-tim" zusatz. Die default Gruppe ist "hidden". Als nächstes ist der Typ angegeben, hier als default Script. Dann wird die Dauer des Timerzykluses in Millisekunden angegeben. Bei einem Single shot muss dieser Wert 0 sein.

Darunter kommt dann das eigentliche Skriptfenster wo auch wirklich programmiert wird. Über den Button Hinzufügen kann man, wenn der Timer markiert ist, ein Nichts hinzufügen. Markiert man die Zeit, dann kann man über denselben Button einen Befehl hinzufügen. Jetzt gibt es auch auf der rechten Seite Einstellungen für den State.

ctc-app-doku-bild

Zuerst kann man bestimmen, unter welchem Zeichen Buchstabe oder Zahl der State angesprochen wird. Als Nächstes kann man dem State noch einen Namen geben. Darunter kann man ihm ein Symbol geben, welches denselben Namen wie der State haben muss. Daneben gibt man die pos an. Diese beiden Angaben sind als Steuerelemente in der App in der richtigen Gruppe sichtbar. Ganz unten kann man dann noch DCC angeben, wenn man es über eine Digitalzentrale steuern will (getestet mit mc² zentrale).

Trigger

Der Trigger wird verwendet, wenn ein Produkt ein anderes beeinflussen oder auslösen soll wie z.B. eine Balise, ein Signal oder auch ein Vorsignal.

ctc-app-doku-bild

ctc-app-doku-bild

Im oberen Teil des Fensters steht der Name des Produkts mit "-trg" Zusatz. Die default Gruppe ist Trigger. Als Nächstes wird der Auslöser gewält. Hier eine Balise oder auch ein anderes Signal. In dem Fenster auf (MAC) kan man sich direkt auch eine Lok festlegen, die eine Balise auslöst. Ansonsten wird bei einer Balise immer ausgelöst, wenn etwas darüber fährt. Dann wird der Typ festgelegt, der Default ist charVal. Zum Schluss kann man noch eine Quelle und einen default Wert festlegen, beide sind aber defaultmäßig leer.

ctc-app-doku-bild

Hinweis: Die Trigger zünden nicht sofort, sondern in einer nicht bekannten Reihenfolge, also sollte man sicherstellen, dass dies keine Probleme bereitet.