Tutorial:Namen von Klassen
Zur Navigation springen
Zur Suche springen
Hilfsfunktionen
- void print(int value); Gibt den Wert je nach config.xml auf die Standardausgabe und/oder eine Log-Datei aus.
- void print(string value); Gibt den Wert je nach config.xml auf die Standardausgabe und/oder eine Log-Datei aus.
- void printStack(); Gibt alle derzeit aufgerufenen Methoden auf die Standardausgabe und/oder eine Log-Datei aus.
- int min(int a, int b); Gibt den kleineren der Werte zurück.
- int max(int a, int b); Gibt den größeren der Werte zurück.
Konstanten
- const int VERSCHLUSSLEVEL_MAX; Maximal mögliches Verschlusslevel (= keine Einschränkungen)
- const int CONNECTION_STATE_CONNECTING; Die Schnittstelle wird gerade mit der Relaisgruppe verbunden.
- const int CONNECTION_STATE_DISCONNECTING; Die Schnittstelle wird gerade von der Relaisgruppe getrennt.
- Wenn ein Wert hereinkommt, während connectionState auf CONNECTION_STATE_(DIS)CONNECTING steht, ist das ein Hinweis darauf, dass diese Werte im Rahmen des Verbindungsauf-/abbaus zu Stande kommen. In allen anderen Fällen ist der empfangene Wert Folge des Regelbetriebs. In der Regel sind diese Werte nur für Spezialfälle interessant. Im Bestand ist das z.B. der Fall, dass Hebel umgestellt werden, wenn man ihnen eine Weiche verbindet, die anderst herum steht als der Hebel.
- enum SpeedBinding; Gibt an, an welchen Zeitraffer der Timer gebunden werden soll
- const int Speed_None; Zeitrafferunabhängige Zeitmessung. Sollte nur verwendet werden, wenn eine Interaktion mit Sounds unbedingt erforderlich ist.
- const int Speed_Stelltisch; Bindung an den Stelltisch-Zeitraffer. Sollte nur verwendet werden, wenn eine Interaktion mit Animationen unbedingt erforderlich ist.
- const int Speed_Relaisanlage; Bindung an den Relaisanlagen-Zeitraffer. Sollte für die meisten Fälle passend sein.
- const int Speed_Aussenanlage; Bindung an den Außenanlagen-Zeitraffer. Sollte für alles, was von der Umlaufdauer von Signalen und Weichen abhängig ist verwendet werden (z.B. Weichenwecker).
- const int Speed_Bewegung; Bindung an den Bewegungs-Zeitraffer. Sollte für alles, was Zzgabhängig ist verwendet werden (z.B. Zeitschalter für Ersatzsignal).
- const int Speed_Fahrplan; Bindung an den Fahrplan-Zeitraffer. Sollte im Regelfall nicht sinnvoll nutzbar sein.
- Weitere Konstanten der Außenanlage gemäß Tutorial:Ansteuerung von Außenanlagen-Komponenten#Weichen und Riegel
Datentypen
- bool Warheitswert, true oder false
- int Ganzzahl, vorzeichenbehaftet, 32 Bit. Weitere Ganzzahltypen sind int8, int16, int64, uint8, uint16, uint, uint64
- float Gleitkommazahl vorzeichenbehaftet. Weitere Gleitkommazahl ist double.
String
- string Zeichenfolge.
- Operatoren:
- [string] + [string]; Kombiniert zwei Zeichenfolgen.
- Methoden:
- string arg(string arg); Ersetzt die Zeichenfolge %1 im String durch den angegebenen Text, und die Zeichenfolge %2 durch %1 usw.
- string arg(int arg, optional int base = 10);
- string arg(float arg);
- string layOver(string destination, optional bool alignLeft = false, optional int cutOverflow = -1, optional bool out cutRequired = false); Legt den akutellen String über den angegebenen String. Ist der aktuelle String kleiner als der angegebene String wird er rechtsbündig (Standard) oder linksbündig (Optional) ausgerichtet. Ist er größer als der angegebene String wird er Links (-1, Standard), Rechts (+1, optional) oder nicht (0, optional) abgeschnitten. Ein optionaler bool-Wert gibt true zurück, wenn der String abgeschnitten werden musste oder müsste, sonst false.
- Beispiel "17".layOver("·······") = "·····17"
- Beispiel "abc".layOver(".......", true) = "abc...."
- List<string> split(string sperator); Teilt die Zeichenfolge an jedem Vorkommen von sperator auf und speichert die Teilbereiche in einer Liste. Wenn seperator ein leerer String ist, wird hinter jedem Zeichen gesplittet. Der Text kann über die Join-Methode vollständig wieder hergestellt werden. Die Liste hat garantiert mindestens einen Eintrag. Bitte den leeren Seperator vermeiden und prüfen, ob es da nicht eine bessere Methode gibt.
- List<string> split(string sperator, bool skipEmptySections, bool caseSensitive);
- List<string> splitWildcard(string sperator, bool skipEmptySections, bool caseSensitive); Platzhalter: * und ?. Platzhalter können mit \ escapet werden.
- List<string> splitPerlExpr(string sperator, bool skipEmptySections, bool caseSensitive); Platzhalter nach Perl-Doku
- string replace(string oldText, string newText, bool caseSensitive);
- string replaceWildcard(string oldText, string newText, bool caseSensitive);
- string replacePerlExpr(string oldText, string newText, bool caseSensitive);
- bool isEmpty(); Gibt an, ob der String ein leerer String ist.
- Verwandte globale Methoden:
- void parseIntFromString(string source, int out ergebnis, optional bool out success = false, optional int base = 10); Wandelt den angegebenen Text in eine Zahl um. War die Umwandlung nicht erfolgreich, wird 0 ausgegeben.
- string joinList(List<string>, string seperator); Vereinigt die angegebene Liste in dem zwischen jedem Eintrag seperator eingefügt wird. Umkehrfunktion zu string.split
- Funktionsdefinitionen, die derzeit als undokumentierte Technologiedemo gelten
- funcdef void DataBoolChangedMethod(bool newData);
- funcdef void DataIntChangedMethod(int newData);
- funcdef void DataStringChangedMethod(string newData);
- Erweiterte Eigenschaften:
- bool hasDigitCharacter (readonly); Enthält ein Zeichen der Unicode-Klasse "DecimalDigit"
- bool hasLetterCharacter (readonly); ..Buchstaben (egal ob klein, groß oder Überschrift)
- bool hasLowerCharacter (readonly); ..Kleinbuchstabe
- bool hasMarkCharacter (readonly);
- bool hasNonCharacter (readonly); ..Unicode-Gruppe für interne Verwendung in Programmen
- bool hasNullCharacter (readonly); ..Null-Zeichen
- bool hasNumberCharacter (readonly); Geht über "DecimalDigit" hinaus (mehr als 0-9)
- bool hasPrintCharacter (readonly); ..Druckbares Zeichen
- bool hasPunctCharacter (readonly);
- bool hasSpaceCharacter (readonly); ..Leerzeichenoiden (nicht nur Leerzeichen, sondern auch z.B. "\t", "\n", "\v", "\f" und "\r")
- bool hasSymbolCharacter (readonly);
- bool hasTitleCharacter (readonly); ..Buchstabe für Titel
- bool hasUpperCharacter (readonly); ..Großbuchstabe
- Zu allen: siehe zugehörige Member in der QT-Dokumentation von QChar.
- Erweiterte Methoden:
- string toCaseFolded(); ..für die meisten Zeichen das selbe wie toLower
- string toLowerCase();
- string toTitleCase();
- string toUpperCase();
- Zu allen: siehe zugehörige Member in der QT-Dokumentation von QChar bzw. QString.
- string toSimplified(); Löscht alle Leerzeichenoiden am Start und Ende und ersetzt alle mehrfachen Leerzeichenoiden durch ein echtes Leerzeichen.
- string toTrimmed(); Löscht alle Leerzeichenoiden am Start und Ende.
- int compareLocalized(string); Vergleicht die Zeichenfolge (<0: Kleiner, =0: Gleich, >0: Größer) mit der angegebenen, ..unter Berücksichtigung der Systemabhängigen Spracheinstellung
- int compareCaseSensitive(string); ..unter Berüchksichtigung der Groß/Kleinschreibung
- int compareInsensitive(string); ..ohne Groß/Kleinschreibung zu berücksichtigen
- Methoden, die derzeit als undokumentierte Technologiedemo gelten: (sie können sich ändern und wieder entfallen)
- string argTimeStamp(string arg); Nur für Punktuell auftretende Zeitstempel, und nur zur Weitergabe an Tischfelder!
- Operatoren:
List
- List<T> Stellt eine Liste dar.
- Allgemeine Hinweise:
- Der Typ der Einträge ist beliebig, die Liste kann also als List<string>, List<int> oder jeden anderen Typs verwendet werden.
- Die Liste verhält sich ähnlich wie QT-Listen: Wenn man Liste1 = Liste2; macht und dann Liste1 ändert, hat dies keine Auswirkungne auf Liste2.
- Die Implentierung kann unter Umständen noch Fehler enthalten.
- Methoden:
- int count(); Gibt die Anzahl der Einträge aus.
- bool isEmpty(); Gibt an, ob die Liste leer ist.
- void append(T neuerEintrag); Fügt an letzter Stelle einen neuen Eintrag ein.
- void appendRange(List<T> listeVonNeuenEintraegen);
- void insert(int loc, T neuerEintrag); Fügt an angegebener Stelle einen neuen Eintrag ein. (Bei zu großen Zahlen wird an letzter Stelle eingefügt. => Muss noch Getestet werden.)
- void insertRange(int loc, List<T> listeVonNeuenEintraegen);
- T removeAt(int loc); Entfernt den Eintrag aus der angegebenen Stelle und gibt ihn zurück. Bei zu großen Zahlen wird eine Ausnahme ausgelöst, vor Benutzung also count oder isEmpty prüfen!
- T replace(int loc, T neuerEintrag); Ersetzt den Eintrag an der angegebenen Stelle und gibt den bisherigen Eintrag zurück. Bei zu großen Zahlen wird eine Ausnahme ausgelöst, vor Benutzung also count oder isEmpty prüfen!
- T at(int loc); Gibt den Eintrag an der angegebenen Stelle zurück. Bei zu großen Zahlen wird eine Ausnahme ausgelöst, vor Benutzung also count oder isEmpty prüfen!
- void clear(); Entfernt alle Einträge aus der Liste.
- List<T> getRange(int start = -1, int end = -1); Gibt die Einträge aus dem angegebenen Bereich zurück. Start- und Zielangabe als incl.-Index. (-1: ohne Start/Endbegrenzung)
- Allgemeine Hinweise:
Schnittstelle
- Schnittstelle Passt zu dem StellSi-Typ Schnittstelle.
- Methoden:
- void sendSignal(string signalname, string wert); Einmaliges Ereignis (z.B. Zählwerk)
- void sendSignal(string signalname, int wert);
- void setWert(string signalname, string wert); Dauerhafteter Zustand (z.B. Lampe an/aus)
- void setWert(string signalname, int wert);
- void setWert(string signalname, string wert, Blinker blinker);
- void setWert(string signalname, List<int> wert, Blinker blinker);
- int sendSignalSynchron(string signalname, string wert); Geht an eine Schnitstelle und gibt den Wert zurück, den diese Schnittstelle zurückgibt.
- int sendSignalSynchron(string signalname, int wert);
- Ruft auf:
- void on_%Name der Schnittstellenvariable%_%Name des Signals%(string wert); Wird aufgerufen, wenn ein Signal oder ein Wert gesendet wurde (Name des Signals darf _ enthalten, Name der Schnittstellenvariable nicht).
- void on_%Name der Schnittstellenvariable%_%Name des Signals%(int wert);
- int on_%Name der Schnittstellenvariable%_%Name des Signals%(string wert);
- int on_%Name der Schnittstellenvariable%_%Name des Signals%(int wert);
- Besonderheiten:
- Schnittstelle freie; Übernimmt Eingangssignale der freien Eingangslogiken.
- Freie Ausgangslogiken funktionieren als Schnittstelle, die den Namen hat, den die freie Ausgangslogik in ihrem XML-Attribut hat. Schnittstellen, die als freie Ausgangslogik fungieren, ignorieren den signalname;
- Schnittstelle zustaende; Übernimmt die Auswahl von Zuständen auf Tischfeldern. (Zurückhaltend verwenden.)
- Signal connectionState; Wird vor und nach dem Verbinden und Trennen von Schnittstellen gesendet, und gibt an, ob die Werte Verbindungswerte, Trennungswerte oder normale Werte sind (siehe auch Konstanten).
- Methoden, die derzeit als undokumentierte Technologiedemo gelten: (sie können sich ändern und wieder entfallen)
- void registerSetWertCallback(string signalname, DataIntChangedMethod@ delegateMethod); Die alten Methoden bleiben jewails erhalten. Die Reihenfolge des Methodenaufrufes, wenn mehrere Methoden registriert sind, ist nicht definiert. Hinweis: Die alte on-Syntax bleibt erhalten und sollte (wenn sinnvoll) vorangig verwendet werden. Die on-Methoden gelten sowohl für Ereignisse als auch für SetWert.
- void registerSetWertCallback(string signalname, DataStringChangedMethod@ delegateMethod);
- void registerEreignisCallback(string signalname, DataIntChangedMethod@ delegateMethod);
- void registerEreignisCallback(string signalname, DataStringChangedMethod@ delegateMethod);
- void registerUnknownSetWertReceivedMethod(DataStringChangedMethod@ delegateMethod); Wird aufgerufen, wenn ein SetWert empfangen wurde, zu dessen Leitungsname keine Methode (egal ob setWert oder Ereignis oder string oder int) registriert ist. Nach dem Ausführen dieser Methode wird erneut nach passenden Methoden gesucht und diese ggf. ausgeführt. Wurden Methoden für diesen Leitungsnamen registriert, passen diese aber nicht zu den Eigenschaften (setWert/Ereignis int/string) wird diese Methode nicht aufgerufen.
- void registerUnknownEreignisReceivedMethod(DataStringChangedMethod@ delegateMethod);
- string getRecentStringWert(const string signal) und string get_recentStringWert(const string signal);
- int getRecentIntWert(const string signal) und int get_recentIntWert(const string signal);
- bool getRecentBlinkWert(const string signal) und bool get_recentBlinkWert(const string signal);
- Blinker@ getRecentBlinker(const string signal) und Blinker@ get_recentBlinker(const string signal);
- List<int> getRecentIntWerte(const string signal) und List<int> get_recentIntWerte(const string signal); Liefert auch dann Werte, wenn nur ein einzelner int gesendet wurde
- Methoden:
Timer
- Timer
- Methoden:
- void start(float dauer, int wert, optional bool autorepeat=false); (Neu-)Start eines Timers. Dauer ist in Sekunden anzugeben.
- void stop();
- Eigenschaften:
- float timeToNextShot (readonly); Gibt die Zeit in Sekunden bis zum nächsten Auslösen an. Ist der Timer nicht gestartet wird -1 zurückgegeben.
- SpeedBinding speedDependency; Gibt an, an welchen Zeitraffer der Timer gebunden werden soll. Standardwert: Speed_Relaisanlage.
- Ruft auf:
- void on_%Name der Timervariable%(int wert);
- Methoden, die derzeit als undokumentierte Technologiedemo gelten: (sie können sich ändern und wieder entfallen)
- DataIntChangedMethod@ replaceNotifyerDelegate(DataIntChangedMethod@ newDelegate); Rückgabewert: Die bisherige Delegate. Kann auch null sein.
- void initFromInitedTimer(Timer@ vorlage); Timer müssen, damit sie initialisiert sind, derzeit in der Hauptklasse stehen und eine on-Methode haben, auch wenn diese ggf. später ersetzt wird. Timer, die zwar in der Hauptklasse sind, aber keine Methode haben, lösen eine Kompilierwarnung aus. Alle anderen Timer (die sich in Hilfsklassen befinden) können mit dieser Methode hilfsweise initialisiert werden.
- Methoden:
Verschluss
- Allgemeines
- Derzeit in Überarbeitung
- Die Verschlussklassen können ein oder mehrere Antriebe bzw. Verschlusstücke enthalten.
- => Alle Klassen können (verdeckt) mehrere ihrer Zielobjekte kontrollieren.
- Mehrere können über die getter mit Listen oder über die unite-Methoden erstellt werden. Ein VerschlussSchubstangenVerschlussstueckElement kann z.B. stange1 plus, stang1 minus und stange2 plus enthalten, ohne stange2 minus zu enthalten. In diesem Fall liefert names nur plus und minus und parent liefert stange1 und stange2, die Methode parent.verschlussstuecke(names) ist also nicht immer mit this identisch.
- Der Zuweisungs-Operator wird für alle Klassen unterstützt.
- Die on-Methoden funktionieren aktuell nur mit der Anfangsvariable. (Hier steht die Überarbeitung noch aus.)
- Bis auf VerschlussSchubstangeAntrieb wird alles nach Name automatisch zugewiesen. Achtung: VerschlussAntrieb kann sein Ziel ändern, wenn der Parametereditor aktualisiert wird. Einmal aufgerufene getter dieser Klasse bekommen von einer Änderung nichts mit. Ein Aufruf jeglicher Methoden dieser Klasse in der init-Methode kann unter Umständen zu früh sein. (muss ich mir noch anschauen)
- Die nicht anders gekennzeichneten Methoden können bereits während ihres Aufrufes die on-Methode (syncron) aufrufen. Bei geöffnetem Debugger kann es Detailumstände geben, in denen sich der angeschaltete Debugger anders verhält, als der nicht geöffnete. Bis Version 0.0.9.79 sind diese Unterschiede der Regelfall.
- VerschlussAntrieb (Details)
- Umfasst: Eine (oder mehrere) ganze Zeilen
- Kann auch durch VerschlussFahrstrasse angesprochen werden (altlast), dabei sind jedoch nicht alle Methoden verfügbar.
- Enthält integrierte Verschlusstücke für den Fahrstraßenausschluss: ein + (Grundstellung) und ein - (Eingelegt). (Hier stehen Alternativvorschläge an.)
- Methoden:
- int pruefe(string typ_fahrstrasse, int level, optional out string fehlernachricht); Ruft für den angegebenen VerschlussSchubstangeAntrieb die pruefe-Methode auf.
- int verschliesse(string typ_fahrstrasse, int levelsoll, int levelmin, optional out string fehlernachricht); Ruft für den angegebenen VerschlussSchubstangeAntrieb die verschliesse-Methode auf.
- void stelle(string typ_fahrstrasse, int levelsoll, int levelmin); Ruft für den angegebenen VerschlussSchubstangeAntrieb die stelle-Methode auf.
- void verschliesseLater(string typ_fahrstrasse, int levelsoll, int levelmin); Ruft die verschliesse-Methode nach dem Abschluss der Methodenausführung auf. Diese Methode kann daher garantieren, nicht syncron on-Methoden aufzurufen.
- void stelleLater(string typ_fahrstrasse, int levelsoll, int levelmin); Ruft die verschliesse-Methode nach dem Abschluss der Methodenausführung auf. Diese Methode kann daher garantieren, nicht syncron on-Methoden aufzurufen.
- Methoden für die integrierten Verschlusstücke:
- void setLevelgrenzen(string typ_fahrstrasse, string stellung, int minlevel, int maxlevel, optional string msgMinlevel, optional string msgMaxlevel);
- VerschlussSchubstangenVerschlussstueckElement get_grundstellung(string typ_fahrstrasse);
- VerschlussSchubstangenVerschlussstueckElement get_grundstellungen(List<string> typ_verschlusstuecke);
- VerschlussSchubstangenVerschlussstueckElement get_eingelegt(string typ_fahrstrasse);
- VerschlussSchubstangenVerschlussstueckElement get_eingelegte(List<string> typ_verschlusstuecke);
- Methoden Teil 3:
- VerschlussSchubstangeAntrieb get_schubstange(string typ_fahrstrasse);
- VerschlussSchubstangeAntrieb get_schubstangen(List<string> typ_verschlusstuecke);
- VerschlussAntrieb unite(VerschlussAntrieb);
- Ruft auf: (Details)
- void on_%Name der Verschlussfahrstrassenvariable%_%Name der Schubstange%_verschlussstangechanged(int level); Rückmeldung zur Methode stelle.
- void on_%Name der Verschlussfahrstrassenvariable%_%Name der Schubstange%_datachanged(optional int festlegeLevelOld, optional int levelMoeglichMaxOld, optional int levelMoeglichMinOld); Wird aufgerufen, wenn sich die entsprechenden Eigenschaften der angegebenen VerschlussSchubstangeAntrieb ändern.
- void on_%Name der Verschlussfahrstrassenvariable%_%Name der Schubstange%_%Nummer des Zielzustandes%_festlegungchanged(int level); Entspricht VerschlussElement.%_%_festlegungchanged für die integreirten Verschlusstücke.
- VerschlussSchubstangeAntrieb
- Umfasst: Eine (oder mehrere) Schubstange einer (oder mehrerer) Zeile
- Methoden:
- int pruefe(int level, optional out string fehlernachricht); Prüft, ob die Schubstange in ein bestimmtes Level bewegt werden kann. Liefert das Level zurück, das dem gewünschten Level am nächsten ist. fehlernachricht liefert die entsprechenden Werte von VerschlussSchubstangenVerschlussstueckElement.setLevelgrenzen.
- int verschliesse(int levelsoll, int levelmin, optional out string fehlernachricht); Setzt Verschlusslevel auf den gegebenen Wert, allerdings nur, wenn dieser möglich ist. Eine Speicherung erfolgt nicht. Rückgabe: level bei Erfolg, -1 bei Scheitern.
- void stelle(int levelsoll, int levelmin); Gibt den Auftrag, die Schubstange in ein Level zu bewegen. Der Verschluß der einzelnen Elemente erfolgt sofort bis zu dem jeweils nächst möglichen Level. Der Stellauftrag wird in den einzelnen Elementen zwischengespeichert und später automatisch ausgeführt, sobald die Ausführung in dem jeweiligen Element (z.B. durch Wegfall eines anderen Verschlusses) möglich ist. Dieser Vorgang kann abgebrochen werden, indem ein erneuter Aufruf mit anderem Level erfolgt. levelmin gibt dabei ein Level vor, unter das die Elemente die Schubstange nicht mehr zurückdrücken können. Mit Vorgabe levelsoll=6000 und levelmin=4000 passiert folgendes: Reduziert eine Gruppe ihr maxlevel von 6000 auf 3000 (z.B. aufgefahrene Weiche), wird die Schubstange nur nach 4000 zurückgedrückt. levelmin greift nur bei Reduzierungen des Levels. Es wird Programmseitig dafür gesorgt dass levelmin <= levelsoll.
- void verschliesseLater(int levelsoll, int levelmin); Ruft die verschliesse-Methode nach dem Abschluss der Methodenausführung auf. Diese Methode kann daher garantieren, nicht syncron on-Methoden aufzurufen.
- void stelleLater(int levelsoll, int levelmin); Ruft die verschliesse-Methode nach dem Abschluss der Methodenausführung auf. Diese Methode kann daher garantieren, nicht syncron on-Methoden aufzurufen.
- VerschlussSchubstangeAntrieb unite(VerschlussSchubstangeAntrieb);
- Eigenschaften:
- int festlegeLevel (readonly);
- int levelMoeglichMax (readonly);
- int levelMoeglichMin (readonly);
- VerschlussAntrieb parent (readonly);
- string name (readonly);
- List<string> names (readonly);
- VerschlussElement (Details)
- Umfasst: Eine (oder mehrere) ganze Spalte
- Methoden:
- void setLevelgrenzen(string typ_fahrstrasse, string stellung, int minlevel, int maxlevel, optional string msgMinlevel, optional string msgMaxlevel); (Details) Ruft die setLevelgrenzen-Methode des entsprechenden VerschlussSchubstangenVerschlussstueckElement auf.
- VerschlussSchubstangenElement get_schubstange(string typ_fahrstrasse);
- VerschlussSchubstangenElement get_schubstangen(List<string> typ_fahrstrassen);
- VerschlussElement unite(VerschlussElement);
- Ruft auf: (Details)
- void on_%Name der Verschlusselementvariable%_%Name der Schubstange%_%Name des Verschlussstücks%_festlegungchanged(int level); Wird aufgerufen, wenn der Antrieb stelle oder verschliesse aufgerufen hat und dies das Verschlusslevel geändert hat. Dabei wird nicht das levelsoll übergeben, sondern das Level, das bei dem konkreten Element dem levelsoll am nächsten kommt. Diese Funktion ist also mit Bedacht einzusetzen, und nicht geeignet, um Elemente über den tatsächlichen Schubstangenzustand zu informieren - den tatsächlichen Zustand erfährt nur der Antrieb.
- VerschlussSchubstangenElement
- Umfasst: Eine (oder mehrere) Schubstange einer (oder mehrerer) Spalte
- Methoden:
- void setLevelgrenzen(string stellung, int minlevel, int maxlevel, optional string msgMinlevel, optional string msgMaxlevel); Ruft die setLevelgrenzen-Methode des entsprechenden VerschlussSchubstangenVerschlussstueckElement auf.
- VerschlussSchubstangenVerschlussstueckElement get_verschlussstueck(string typ_verschlusstueck);
- VerschlussSchubstangenVerschlussstueckElement get_verschlussstuecke(List<string> typ_verschlusstuecke);
- VerschlussSchubstangenElement unite(VerschlussSchubstangenElement);
- Eigenschaften:
- VerschlussElement parent (readonly);
- string name (readonly);
- List<string> names (readonly);
- VerschlussSchubstangenVerschlussstueckElement
- Umfasst: Eine (oder mehrere) Stellung (Pluslage/Minuslage) einer (oder mehrerer) Schubstange einer (oder mehrerer) Spalte
- Methoden:
- void setLevelgrenzen(int minlevel, int maxlevel, optional string msgMinlevel, optional string msgMaxlevel); Teilt dem Verschlußregister mit, was das maximale und was das minimale Verschlusslevel ist, in denen das Element verschlossen werden kann. Es beeinflusst damit den Wertebereich der prüfe, stelle und verschliesse-Methode des Antriebes. Minlevel kann z.B. von Hauptsignalen genutzt werden, um ein Zurücklegen des Fahrstraßenhebels zu verhindern. Maxlevel dagegen kann z.B. von Weichen genutzt werden, um ein Umlegen des Fahrstraßenhebels zu verhindern. msgMinlevel und msgMaxlevel können genutzt werden, um Nachrichten an den Benutzer zu hinterlegen, die angezeigt werden, wenn ein prüfe an einem Element scheitert. Hier können z.B. Hilfetexte darüber informieren, welches Element die Bewegung eines Hebels verhindert.
- VerschlussSchubstangenVerschlussstueckElement unite(VerschlussSchubstangenVerschlussstueckElement);
- Methoden, die derzeit als Technologiedemo gelten, vermutlich zwar beibehalten, aber durch leistungsstärkere Methoden ergänzt werden:
- VerschlussAntrieb peekCurrentAntriebe(int min, int max);
- VerschlussAntrieb peekCurrentAntriebeWithOnly(int min, int max, VerschlussAntrieb@);
- Eigenschaften:
- int minLevel (readonly);
- int maxLevel (readonly);
- string minMessage (readonly);
- string maxMessage (readonly);
- VerschlussSchubstangenElement parent (readonly);
- string name (readonly);
- List<string> names (readonly);
- Siehe auch: Konstante VERSCHLUSSLEVEL_MAX als möglicher Wert für die maxlevel-Parameter.
Ring- und Filterleitung und Blinker
- Ringleitungen
- Allgemeine Hinweise:
- Der Name des angelegten Objekts ist gleichzeitig der Name der Ringleitung, wobei alles hinter _Instance ignoriert wird (ring_test und ring_test_InstanceBlubb verweisen also auf die gleiche Ringleitung). Alle Namen sollen mit ring_ beginnen, eine Leitung für die wgt würde daher ring_wgt heißen.
- Jede Ringleitung kann einen Wert abrufen und einen Wert setzten. Der Wert, der abgerufen wird, berechnet sich je nach Art der Ringleitung aus verschiedenen Techniken. Dabei werden alle Ringleitungen aller Relaisgruppen der selben Relaisanlage zur Hilfe genommen, die den selben Namen und den selben Typ haben. Eine Ringleitung kann auch ihren Wert löschen, so dass sie keinen Wert hat und bei der Berechnung ignoriert wird (Standard bei Programmstart).
- Eine Gruppe kann über die Änderung des abzurufenden Wertes informiert werden, wenn sie sich aktiviert. Beim Programmstart sind Ringleitungen inaktiv / passiv.
- Ringleitungs-Objekte sollten im Grundzustand inaktiv sein und sich nur kurzzeitig (z.B. nach Drücken der WT) aktivieren, da die Ringleitungsbearbeitung je nach Art der Ringleitung Rechenaufwand bedeuten kann!
- RingleitungParallel
- Auf die Ringleitung kann durch jede Gruppe (auch Anschaltgruppe) zugegriffen werden, in der folgender Eintrag existiert: "RingleitungParallel ring_beispiel".
- Der Wert der Ringleitung ist das Maximum der Werte aller Gruppen, die einen Wert gesetzt haben. Hat keine Gruppe einen Wert gesetzt, wird 0 angenommen.
- RingleitungSumme
- Auf die Ringleitung kann durch jede Gruppe (auch Anschaltgruppe) zugegriffen werden, in der folgender Eintrag existiert: "RingleitungSumme ring_beispiel".
- Der Wert der Ringleitung ist die Summe der Werte aller Gruppen, die einen Wert gesetzt haben.
- RingleitungSeriell
- Auf die Ringleitung kann durch jede Gruppe (auch Anschaltgruppe) zugegriffen werden, in der folgender Eintrag existiert: "RingleitungSeriell ring_beispiel".
- Die Serielle Ringleitung kann man sich wie eine Liste vorstellen. Alle Relaisgruppen und Anschaltgruppen, die diese RingleitungSeriell nutzen, haben in der Liste einen Eintrag. Am Anfang der Liste stehen alle Relaisgruppen, am Ende stehen alle Anschaltgruppen. Die Reihenfolge zwischen den Relais/Anschaltgruppe kann nicht vorhergesagt werden.
- Jede Gruppe kann mit value() den Wert herausfinden, den ihr Vorgänger in der Liste gesetzt hat. Hat er keinen Wert gesetzt (siehe clear()), dann kann man mit value() den Wert bekommen, den eben dieser Vorgänger seinerseteits durch den Aufruf von value() bekommen würde.
- Gibt es keine Anschaltgruppen oder haben alle Anschaltgruppen keinen Wert gesetzt, bekommt die erste Gruppe den Wert 0. (offene Ringleitung)
- Hat mindestens eine Anschaltgruppe einen Wert gesetzt, so bekommt die erste Gruppe den Wert, den die letzte Anschaltgruppe in der Liste gesetzt hat. (geschlossener Ring)
- Enthält der Name _Instance_LikeAnschaltgruppe wird die Interpretation als Anschaltgruppe erzwungen, mit _Instance_LikeRelaisgruppe die Interpretation als Nicht-Anschaltgruppe.
- Methoden:
- void set(int wert); Setzt auf die Ringleitung einen Wert. Standardmäßig ist kein Wert gesetzt.
- void clear(); Löscht einen gesetzten Wert. Für die Berechnung des Wertes siehe Allgemeine Hinweise.
- int value(); Gibt den Wert zurück, den diese Ringleitung aktuell hat. Funktioniert auch wenn die Gruppe inaktiv ist (nicht benachrichtigt wird) oder die Gruppe keinen Wert gesetzt hat.
- void activate(); Sorgt dafür, dass ein Ringleitungs-Objekt künftig bei Änderungen des Wertes der Ringleitung benachrichtigt wird. Standardmäßig ist die Relaisgruppe inaktiv!
- void deactivate(); Sorgt dafür, dass ein Ringleitungs-Objekt künftig bei Änderungen des Wertes der Ringleitung nicht mehr benachrichtigt wird. Standardmäßig ist die Relaisgruppe inaktiv!
- Ruft auf:
- void on_%Name der Ringleitung%(int wert);
- void on_%Name der Ringleitung%(int alterWert, int neuerWert);
- Wird aufgerufen, wenn Wert der Ringleitung sich geändert hat, aber nur wenn Gruppe vorher mit activate() aktiviert wurde. Zum Zeitpunkt des Aufrufes gibt value() bereits den neuen Wert zurück. Die Ringleitungen werden sukzessive, eine nach der anderen, auf den neuen Wert umgestellt. Dabei wird die value()-Methode kurz vor dem Aufruf der Informationsmethode umgestellt. Nach dem Aufruf der Informationsmethode wird die nächste Ringleitung umgestellt. Ob Ringleitungen in anderen Klassen schon auf dem neuen oder noch auf dem alten Wert sind, kann nicht vorhergesagt werden.
- Methoden, die derzeit als undokumentierte Technologiedemo gelten: (sie können sich ändern und wieder entfallen)
- DataIntChangedMethod@ replaceNotifyerDelegate(DataIntChangedMethod@ newDelegate); Rückgabewert: Die bisherige Delegate. Kann auch null sein.
- Filterleitungen
- Allgemeine Hinweise:
- Das mit dem Namen gilt analog zur Ringleitung.
- Eine Gruppe kann einen oder mehrere Bezeichner in der Filterleitung registrieren. Andere Gruppen können Bezeichner der Filterleitung aktivieren und deaktivieren. Die Gruppe wird informiert, ob einer ihrer Bezeichner aktiviert ist.
- Klassen:
- FilterleitungInt: T:=int
- FilterleitungString: T:=string
- Methoden:
- void activate(T wert); Aktiviert alle Gruppen mit dem angegebenen Filter
- void deactivate(T wert); Deaktiviert die angegebenen Filter
- Eigenschaften:
- List<T> filters; Gibt an, auf welche Filter die Gruppe reagieren soll.
- bool isActivated (readOnly); true, wenn mindestens ein Filter aktiviert wurde.
- Ruft auf:
- void on_%Name der Filterleitung%(bool wert);
- Methoden, die derzeit als undokumentierte Technologiedemo gelten: (sie können sich ändern und wieder entfallen)
- DataBoolChangedMethod@ replaceNotifyerDelegate(DataBoolChangedMethod@ newDelegate); Rückgabewert: Die bisherige Delegate. Kann auch null sein.
- Blinker
- Allgemeine Hinweise:
- Blinker werden mit dem Namen ringblinker_%name angelegt.
- Der Blinker muss in der Relaisanlage im Tab Anschaltgruppen zugewiesen werden. Der Blinker wird automatisch nach Name zugewiesen. Er wird den Schnittstellen bei Bedarf übergeben.
- Klassen:
- Blinker
- Eigenschaften:
- bool isGestoert (readOnly);
- float takt (readOnly); In Sekunden
- int schritte (readOnly);
- Ruft auf:
- void on_%Name des Blinkers%(bool wert); Wenn sich der Name, Takt oder der isGestoert-Wert ändert, gibt den isGestoert als Parameter an
Zn-Anlage
- ZnFeld
- Methoden:
- void setZn(string newZn);
- void setZnWithMove(string newZn); Wenn ein ZN800-Bus installiert wird und es sich um ein Gleisfeld handelt, wird die ZN an der alten Stelle gelöscht. In allen anderen Fällen (ZN60 etc) identisch zu setZn.
- void clear(); Bei ZN800-Bussen: Wenn es sich um eine Zugnummer oder Fehlernummer und um ein Gleisfeld handelt handelt, werden alle gleichlautenden ZN gelöscht. Bei Verfügbarkeitshinweisen oder Anbiete/Vormeldefelder wird nur das aktuelle Feld gelöscht.
- void clearBecauseOfMoving(); Hat auf ZN800-Bussen kein Effekt.
- void setNewFehlernummer(); Ist das Feld auf einen ZN800-Bus angeschlossen, wird eine Fehlernummer mit der Bf-ID und einer Laufenden Nummer gesetzt. Sind Felder über Schnittstellen verbunden, wird 0 gesetzt. (Letzteres kann sich nach neuen Erkentnissen alter ZN-Anlagen noch ändern.)
- Eigenschaften:
- string currentZn
- Methoden Vorrüstung:
- void anbieten(string newZn);
- void annehmen(string newZn);
- void anbclear();
- void setSignalAsFahrtangabe(bool fahrt); Setzt das zum Feld gehörende Signal auf Halt oder Fahrt. Hinweis: setSignalAsFahrtangabe und setSignalAsZielangabe überschreiben sich gegenseitig!
- void setSignalAsZielangabe(int zielsignal, int umfahrstrasse); Setzt das angegebene Signal auf Fahrt (oder Halt bei Zielsignal -1) und markiert die angegebene Umfahrstraße als eingestellt.
- Eigenschaften Vorrüstung:
- int numberForSignalziel; (Readonly) Kann in anderen Feldern als Wert für setSignalAsZielangabe verwendet werden.
- bool currentSignalFahrt; (Readonly) Gibt an, ob das angegebene Signal Fahrt zeigt. Hinweis: Das ZN-Protokoll hat pro Gleis nur ein Signal!
- int currentSignalZiel; (Readonly) Gibt an, zu welchem Signal das angegebene Signal Fahrt zeigt. => numberForSignalziel
- int currentSignalUmfahrstr; (Readonly) Gibt die Umfahrstraßenkennung gemäß ZN-Protokoll an.
- bool zugAngenommen
- int recentZnTelegramType; (Readonly) Nur für Sonderfälle: Gibt die Telegramart des zuletzt auf die ZN dieses Feldes einwirkende ZN800-Telegram an, wenn eine ZN800 über Bus angebunden ist, sonnst 0. (Nur für Experten und nur für Sonderfälle, insbesondere den Sonderfall "blinkende Fehlernummer".)
- Methoden, die derzeit als undokumentierte Technologiedemo gelten: (sie können sich ändern und wieder entfallen)
- DataIntChangedMethod@ replaceNotifyerDelegate(DataIntChangedMethod@ newDelegate); Rückgabewert: Die bisherige Delegate. Kann auch null sein.
- Methoden:
- Zn800Bus
- Allgemeine Hinweise:
- bfId kann -1 sein, dann wird die bfId des ZN-Kabels verwendet.
- Methoden:
- void setZn(int bfId, int feldId, string newZn); Gleise.
- void setZnWithMove(int bfId, int feldId, string newZn); Gleise.
- string deleteZn(int bfId, int feldId); Gleise Rückgabe: Alte ZN
- void deleteZn(int bfId, int feldId, string oldZn); Gleise.
- int deleteZn(string oldZn, bool dontCareLenkziffer); Gleise. Rückgabe: Anzahl an gelöschten ZN. Bei Syncronisationsfehlern im Bus kann der Wert von der Anzahl tatsächlich gelöschter ZN abweichen und dontCareLenkziffer unter Umständen ignoriert werden.
- int replaceZn(string newZn, string oldZn, bool dontCareLenkziffer); Gleise. s. deleteZn
- int findZn(int out bfId, int out feldId, string oldZn, bool dontCareLenkziffer); Gleise. Rückgabe: Anzahl gefundener ZN.
- bool feldExists(int bfId, int feldId); Gleise
- string getZn(int bfId, int feldId); Nummer eines Gleises
- void vormelden(int bfId, int feldId, string newZn);
- void vormeldungloeschen(int bfId, int feldId, string newZn);
- bool vormeldefeldExists(int bfId, int feldId);
- string getVormeldung(int bfId, int feldId);
- Rückmeldungen:
- delegate void ZnDataChanged(bool myBf, int bfId, int feldId, string newZn, string oldZn, bool newSignalFahrtOrAnn, bool oldSignalFahrtOrAnn)
- Alternativ kann auch verwendet werden:
- delegate void ZnDataChangedWithSender(bool myBf, int bfId, int feldId, string newZn, string oldZn, bool newSignalFahrtOrAnn, bool oldSignalFahrtOrAnn, bool mySenderUnterstation, int senderUnterstation)
- void notifyOnNextGleis(ZnDataChanged@ newDelegate, string newZnOrEmpty, int bfIdOrMinusTwo, int feldIdOrMinusTwo, bool once);
- void notifyOnNextVormelden(ZnDataChanged@ newDelegate, string newZnOrEmpty, int bfIdOrMinusTwo, int feldIdOrMinusTwo, bool once);
- void notifyOnNextAnbieten(ZnDataChanged@ newDelegate, string newZnOrEmpty, int bfIdOrMinusTwo, int feldIdOrMinusTwo, bool once);
- void notifyOnNextClear();
- delegate void ZnDataChanged(bool myBf, int bfId, int feldId, string newZn, string oldZn, bool newSignalFahrtOrAnn, bool oldSignalFahrtOrAnn)
- Methoden Vorrüstung:
- void anbieten(int bfId, int feldId, string newZn)
- void annehmen(int bfId, int feldId, string newZn)
- void anbclear(int bfId, int feldId); Protokollmäßig sind Annahmeverweigerung und Anbieterücknahme gleich.
- bool anbietefeldExists(int bfId, int feldId)
- string getAnbietung(int bfId, int feldId, bool out angenommen)
Allgemeine Klassenmethoden
Die folgenden allgemeinen Methoden werden in folgender Reihenfolge aufgerufen:
- Konstruktoren
- init(), <zuweiseungen durch [param]>, parameterUpdate(string typ, int/string/float wert), parameterUpdated()
- Schnittstellen werden verbunden und Verschlussregister zugewiesen
- inited()
- Neue Werte von Schnittstellen trudeln ein.
Signaturen:
- void init();
- void parameterUpdate(string typ,int wert); Wenn eine Option im Parametereditor verstellt wird.
- Hinweis: Arrays lösen implizit ein %1_count-ParameterUpdate aus.
- void parameterUpdate(string typ,string wert);
- void parameterUpdate(string typ,float wert);
- void parameterUpdated();
- void inited();
Propertys, Erben und Handels:
- class Blubb : Inerhit, InheritMixinClass1, InheritMixinClass2 //für das Erben
- mixin class Blubb //ist Copy&Paste der dort definierten Mehtoden
- int get_blub() und void set_blub(int) sind propertys, die aussehen wie Varibalen.
- Es kann "Zeiger" auf Variablen geben über Blubb@ parent, genannt Handles.
Attribute:
- Definition über [attr] string blub; bzw. [attr] void blub();
- Derzeit gibt es folgendes gültiges Attribut:
- [param] oder [parameter] können bei Variablen dazu verwendet werden, dass sie automatisch zugewiesen werden. Ist der Parameter nicht in der Parameterlist, wird ein Standardwert zugewiesen, der für alle Objektinstanzen gleich seien muss. Der Name des Parameters kann über [param("test")] spezifiziert werden, ansonsten wird der Variablenname genommen. Zulässige Datentypen: bool (ist int != 0), int, float, string.