Standardisiertes Schema beim Umgang mit Sonderansagen

  • Ein kleines Tutorial zur Implementierung von Sonderansagen in der ANNOUCEMENT-Klasse.

    Es wurde gemeinsam ein Konzept entwickelt, um die Sonderansagen mit in der 'ANNOUNCEMENT' - Klasse auszuliefern. Dies soll primär dazu dienen, dass alle IBIS Geräte mit der gleichen FIS-Datei die gleichen Sonderansagen abspielen können, ohne dass für jedes IBIS eine neue spezielle FIS angelegt werden muss. Diese Informationen werden innerhalb der Zusatz-Strings vermerkt.



    Hierfür gilt folgendes:


    Variable Typ Beschreibung
    EventID integer LOTUS-Interne ID, um Fahrgastinteraktionen zu triggern.
    z.B. Fahrgäste treten nach Ansage aus der Tür.
    Text string Text, welcher den Inhalt der Sonderansage beschreibt. Sollte kurz gehalten werden.
    Kann im IBIS-Gerät angezeigt werden. Dieser Text ist immer in Anführungszeichen "" zu setzen.
    ContentUserID integer Die Content-User-ID der erstellten Sonderansage.
    ContentSubID integer Die Content-Sub-ID der erstellten Sonderansage.
    Code integer Numerischer Code, der bei einem IBIS mit Ziffernblock eingegeben werden kann.
    z.B. 753
    Target integer Zielbestimmung der Audio-Ausgabe. Hierbei wird zwischen Innen (0), Außen (1)
    oder beide (2) unterschieden. Diese Liste kann auch erweitert werden um
    individuelle Ausgabequellen anzusprechen.


    Das ganze wird im INI-Format verfasst. Hierbei werden Blöcke mit den jeweiligen Daten gebildet. Dieser startet immer mit

    [SpecialAnnouncement]. Darauf folgt dann der Aufbau, der im unten stehenden Spoiler zu erkennen ist. Anschließend folgt eine Leerzeile und der nächste Block beginnt.

    Du kannst auch Kommentare in jeder Zeile einleiten. Dies funktioniert wie folgt:

    ; Kommentar


    Zudem existiert ebenfalls die Möglichkeit eine Sektion als [SpecialAnnouncementDefaults] zu deklarieren. Hier kann man generell geltende Werte der oben stehenden Tabelle festlegen.


    Hier nochmal ein konkretes Beispiel vom Aufbau von 2 Blöcken und dem Default-Block:


    Freundlicherweise wurde von Teneberus ein fertiges Script zur Verfügung gestellt, um die Elemente der Liste auszulesen und in einem Array zu speichern (Skript ist im Anhang zu finden). Dieses Script sollte 1:1 in den Code eingelesen werden. Anschließend sind die Inhalte eines SpecialAnnouncement-Elements mit folgenden Variabeln aufrufbar:


    Variabelname

    Typ

    Zu erwartender Inhalt

    SpecialAnnouncement[0].EventID integer
    7
    SpecialAnnouncement[0].Text string Aus Lichtschranke treten
    SpecialAnnouncement[0].ContentUserID integer 0 (Weil nicht definiert, stattdessen sollte die Default abgefragt werden)
    SpecialAnnouncementDefaults.ContentUserID integer 5750029
    SpecialAnnouncement[0].ContentSubID integer 13001
    SpecialAnnouncement[0].Code integer 753
    SpecialAnnouncement[0].Target integer 0
    SpecialAnnouncement[1].EventID integer 9
    SpecialAnnouncement[1].Text string Ausbildungsfahrt, nicht einsteigen
    SpecialAnnouncement[1].ContentUserID integer 5750030
    SpecialAnnouncement[1].ContentSubID integer 13002
    SpecialAnnouncement[1].Code integer 42
    SpecialAnnouncement[1].Target integer 1


    Vergiss nicht: der Array-Index fängt immer bei 0 an. Also der erste Eintrag ist immer mit [0] aufrufbar, der zweite mit [1], usw.


    Was passiert, wenn ich was falsch mache?


    Prinzipiell ist der Parser von Teneberus gut geschrieben. Also wenn du nach einem Element vergisst ihm einen Wert zuzuweisen, z.B. EventID= schreibst, wird der nicht vorhandene Wert durch -1 ersetzt. Wenn du beim Text die Anführungsstriche "" weglässt, wird der Text trotzdem richtig zugewiesen.

    Falls du ein ganzes Element weglassen solltest, ist beim Aufruf von diesem einfach kein Inhalt vorhanden oder eine 0 (bei Integer).





    Mögliche kommende Änderungen:

    Hinzufügen eines weiteren Strings, der an Innenanzeigen gebroadcastet werden kann.