Ansteuerung von beschriftbaren Zugzielanzeigern mit LUA

Achte bitte darauf, dass Du mit deinem Thema bzw. mit deiner Frage im richtigen Bereich bist.
Die Bereiche sind: Einstellungen im Forum, EEP aktuell ab EEP7 , Splines, Rollmaterialien, Immobilien, Landschaftselemente, Signale und Schaltung, Anlagenvorstellungen, Schnappschüsse Konstrukteure, EEP Treffen , Laberecke, Online - Handbuch EEP Vielen Dank für die Unterstützung das Forum übersichtlich zu halten.
Bilder/Fotos aus dem Internet sind nur als Link gestattet. Eigene Fotos, also Fotos aus dem realen Leben, sind erstens mit Eigenes Bild als Quellenangabe zu kennzeichnen und zweitens nur als Dateianhang im Beitrag zulässig. Bilder ohne Quellenangaben und Bilder dessen Quelle das Internet wie z. B. Google ist, werden gelöscht.
  • es hat mit dem folgenden Skript Eintrag Funktioniert

    Das wird aber nur halb funktionieren. Lothar.

    Denn nun hast du zwei EInträge mit dem selben Adressnamen "#ICE3". Und Lua hat keine Möglichkeit bei dir, zu unterscheiden wann welcher der beiden gewünscht wird. Also nimmt es immer den letzten. Der hat nämlich alle vorherige Definitionen überschrieben.

    Deshalb kann dein ICE3 zwar jetzt die Anzeige löschen, aber nicht mehr beschriften.

    Das war ein guter erster Versuch, Lothar.

    Aber da wirst du noch ein wenig mehr knobeln müssen.

    Und nicht "rumprobieren bis es irgendwie funktioniert" - denn dabei lernst du nichts!

    Geh es logisch an.

  • Hallo Goetz,

    ich habe verstanden. habe z.Z nur das Set von DB2 deshalb kam es zur diesem Missvertändinis. Meine Entscheidung für das DB2-Set war das mir hier eine LUA Lösung mit geliefert wurde, ohne eine solche mitgelieferte Lösung sind die Sets für mich nicht zu gebrauchen. In Sachen LUA bin ich halt eine absolute Null. Meine Scriptanpassung von deinem Beispielscript funktioniert 1a mit den Anzeigen E+F von DB2. Die anderen ZZA werden noch getestet, ich sehe aber keinen Grund warum es zumindest mit den Anzeigen A-D nicht funktionieren soll. Es mussen nur die Tabellenplätze erweitert werden.

    Wenn ich das alles richtig verstehe wird das was hinter dem = zB. Neustadt Hbf in Tabellenplatz [1] geschrieben. Es sollte aber doch möglich sein es an Tabellenplatz [1]+[2] zuschreiben. Ich weis so einfach wie ich es hier angedeutet habe [1]+[2] = "Neustadt Hbf" ist es nicht. Wäre auch zu schön, denn dann könnte ich das auch.

    Viele Grüße aus der Kurpfalz (Ma)

    Jürgen


    PC Mainboard: ASUS Prime B550M-A, CPU: AMD Ryzen 7 5700G, Grafik: NVIDIA RTX 3050 8GB, Ram: 48GB DDR4 - Monitor: 2x Peaq 32" 2560x1440 1xHDMI, 1xDP.
    Laptop , MSI GL72M 7Rex, Intel Core i7-7700HQ 2.8Ghz, NVIDIA GTX1050ti 4GB GDDR5, Ram: 16GB DDR4, 512GB SSD, 1TB HDD, Win10x64

    Win10x64 Home (22H2)
    EEP15.1 Patch2, EEP17.1

    Für meine Modelle verwende ich unter anderem Texturen von https://www.textures.com



  • Danke Lutz,

    an alle anderen, habe mal etwas "rumgespielt".

    wollte auf jedem Bahnhof nicht den selben Text je Zug angezeigt bekommen, schon die Abfahrtszeit ändert sich ja.

    Auch die Folgeziele sind immer unterschiedlich.

    Deshalb habe ich den Vorschlag von Goetz etwas erweitert.

    Herausgekommen ist eine Demo-Anlage.

    Als Basis dienen mir die Zugrouten, von denen abhängig, definiere ich die Bahnsteige, welche von den Zügen angefahren werden.

    Ich habe die Tabelle Zug dazu erweitert.

    Hier mal die Tabelle als Auszug aus der Anlage:

    Da die Tabelle bei vielen Zügen/Routen irgendwann sehr lang wird könnte man sie ev. als eigenständige Lua-Datei auslagern und mit require einbinden.

    Vielleicht hat aber jemand eine andere Idee, wie man das kürzer machen kann, dann drauf los:ae_1:

    Video dazu lädt gerade hoch zu YT, Link stelle ich dann noch ein.

    Video jetzt verfügbar:

    Gruß

    Maik

    Für Interessierte

    EEP17.3 + PL1, PL2, Modellkatalog, ME, ZE, Konverter, HomeNos 15, 16,17

    Rechner: i7-9700K 32GB, RTX2080 8GB, Win10 Pro, Bildschirme: 2 x 4K, Notebook: MSI GS65 8SG-058 Stealth Gaming 15,6" W10Pro

    Mein YouTube-Kanal: https://www.youtube.com/channel/UCsn4pZ1Wmk7jecMZ1uYLTQQ

    Gruß

    Maik

    Einmal editiert, zuletzt von b_maik (2. Dezember 2018 um 15:59) aus folgendem Grund: Videolink hinzugefügt

  • Ich habe in der Zugtabelle eine "Abfahrt" Tabelle mit Leerzeichen eingeführt, die jeder Zug aufruft. So bringe ich alles auf Null.

    Code
    ["Ende"] = {
        [2] = "",
        [3] = "",
        [4] = "",
        [5] = "",
        [6] = "",
        [7] = "",
        [8] = "",
        [9] = "",
        },

    Das folgende Script löscht die Anzeige

    Code
    function Ausfahrt_Gleis_1(Zugname1)
    print ("Zug ",Zugname1,"verlässt Gleis 1 ")
        for Element, Modell in pairs(ZZA.Bahnsteig_1) do
            for Zeile, Text in pairs(Gleis1["Ende"]) do
                EEPStructureSetTextureText( Modell , Zeile , Text )
            end
        end
    end

    auch nach mehreren Versuchen klappt es.:aa_1:

    Peter

    Betriebsystemname: Microsoft Windows 11 Pro

    Prozessor:Prozessor AMD Ryzen 7 7700X 8-Core Processor, 4501 MHz, 8 Kern(e), 16 logische(r) Prozessor(en)

    PC:RAM 32 GB, Name NVIDIA GeForce RTX 4070 Ti

    EEP 17 mit allen Plug ins und Patches

    Modelkonverter, Home-Nostruktor 16.0, Modellkatalog, Bodentextur Tool

  • wassermann50

    Dazu habe ich in meiner Demo auch eine Lösung eingebaut, welche auch verschiedene "Löschtexte" zulässt.

    Gruß

    Maik

    Für Interessierte

    EEP17.3 + PL1, PL2, Modellkatalog, ME, ZE, Konverter, HomeNos 15, 16,17

    Rechner: i7-9700K 32GB, RTX2080 8GB, Win10 Pro, Bildschirme: 2 x 4K, Notebook: MSI GS65 8SG-058 Stealth Gaming 15,6" W10Pro

    Mein YouTube-Kanal: https://www.youtube.com/channel/UCsn4pZ1Wmk7jecMZ1uYLTQQ

    Gruß

    Maik

  • Hallo Maik,

    Habe gerade gesehen, das Du auch was eingebracht hast.

    Werde es natürlich auch probieren.

    Mit diesen neuen ZZA kann man sein Grips schön beschäftigen :aa_1:

    Gruß

    Peter

    Betriebsystemname: Microsoft Windows 11 Pro

    Prozessor:Prozessor AMD Ryzen 7 7700X 8-Core Processor, 4501 MHz, 8 Kern(e), 16 logische(r) Prozessor(en)

    PC:RAM 32 GB, Name NVIDIA GeForce RTX 4070 Ti

    EEP 17 mit allen Plug ins und Patches

    Modelkonverter, Home-Nostruktor 16.0, Modellkatalog, Bodentextur Tool

  • Hallo Goetz,

    ich wollte gerade mal die Zugzielanzeige Epoche 4 Groß einsetzen, kann sie aber weder im Shop noch auf meiner Platte finden, woher bekomme ich die denn?

    Gruß Frank

    Bin nur noch lesendes Mitglied... (meistens:aa_1:)

  • Es sollte aber doch möglich sein es an Tabellenplatz [1]+[2] zuschreiben.

    Ja, das geht:

    Lua
    function Einfahrt_Gleis_1(Zugname)
        for Element, Modell in pairs(ZZA.Bahnsteig_1) do
            for Zeile, Text in pairs(Zug[Zugname]) do
                EEPStructureSetTextureText( Modell , Zeile     , Text )
                EEPStructureSetTextureText( Modell , Zeile + 1 , Text )
            end
        end
    end

    Bei der Liste für den Zug musst du nun die Feldnummern von einer Seite eingeben. Denn die korrespondierenden Felder auf der Rückseite haben bei DB2 immer die nächst höhere Nummer.

  • Vielleicht hat aber jemand eine andere Idee, wie man das kürzer machen kann

    Naja ...
    Du kannst einfach für den einen Zug die Abfahrtzeit in seiner Tabelle mit einer neuen überschreiben, wenn er in einer späteren Runde mal wieder in den Bahnhof kommt (und vielleicht ein anderes Gleis nutzt)

    Du hast sehr viel Redundanz drin, wenn du alles dreimal kopierst nur um drei verschiedene Abfahrtzeiten einzutragen.

  • Hallo Goetz,

    Du hast sehr viel Redundanz drin, wenn du alles dreimal kopierst nur um drei verschiedene Abfahrtzeiten einzutragen

    es sind ja nicht nur die Abfahrtzeiten, sondern auch die Folgeziele, welche sich auf jedem Bahnsteig ändern,

    natürlich kann ich auch alle Änderungen im KP übergeben, habe aber festgestellt, das Platz im KP begrenzt ist, bei langen Texten gibt es Probleme.

    Auch müsste ich dann für jeden Zug einen KP anlegen, da die Folgeziele ja unterschiedlich sind. Die kleine Lösung nur für Zeiten hatte ich schon schnell.

    Korrigier mich ruhig, wenn ich was übersehe.:aa_1:

    Gruß

    Maik

    Für Interessierte

    EEP17.3 + PL1, PL2, Modellkatalog, ME, ZE, Konverter, HomeNos 15, 16,17

    Rechner: i7-9700K 32GB, RTX2080 8GB, Win10 Pro, Bildschirme: 2 x 4K, Notebook: MSI GS65 8SG-058 Stealth Gaming 15,6" W10Pro

    Mein YouTube-Kanal: https://www.youtube.com/channel/UCsn4pZ1Wmk7jecMZ1uYLTQQ

    Gruß

    Maik

  • Hallo Götz,

    das macht natürlich mein erstes Erfolgserlebnis zunichte. Werde überlegen, wie ich das ändern kann. Mal sehen was ich hierzu zustande bringe.Bleibe auf jeden Fall am Ball:aa_1:

    Viele Grüße

    lothar

    EEP6, EEP17.2 - PC: Win 11 Pro 64 bit , SSD 2,5 SA3 Samsung 850 EVO, MB Asus Z390-F Gaming , CPU Intel Core i9- 9900k Coffee Lake, ASP 64 GB RAM , GK GeForce RTX 2080Ti Gaming Pro

  • die Folgeziele, welche sich auf jedem Bahnsteig ändern

    Jetzt erkenne ich erst, dass es sich bei Bahnsteig 1, 2 und 3 bei dir um verschiedene Bahnhöfe handelt.

    Natürlich muss man die Tabelle eines Zuges noch erweitern. Aber dafür würde ich nicht den ganzen Zug vervielfachen. Das ist irgendwie die falsche Organisation, wenn du denselben Zug dreimal für drei Bahnhöfe einträgst. Es handelt sich ja nur um einen Zug, der aber in bestimmten Aspekten wie Abfahrtszeit und Folgeziel mehrere Daten kennt, die zu unterschiedlichen Bahnhöfen gehören. Diese Daten werden auch noch sequenziell benötigt.

    Code
    [Zug] = {
        Typ = "RE",
        Nummer = 12,
        Zeit = {"14:43", "15:38", "17:11"},
        Folgeziel = {Bahnhof1, Bahnhof2, Bahnhof3},
        Bahnsteig = {1, 3, 2}
    }

    Nun kannst du an jeder Station das erste verwenden und bei Abfahrt schmeißt du die erledigten Elemente aus den Arrays, damit der folgende Eintrag für den nächsten Bahnhof auf Platz 1 aufrückt.

    Diese Zugdaten stimmen jetzt nicht mehr 1:1 mit den ZZA überein. Dafür muss man sie etwas aufbereiten.

    Die 1:1 Zuordnung sollte nur Lothar helfen, besser zu verstehen was genau wo im Skript passiert und warum.

    Einmal editiert, zuletzt von Goetz (2. Dezember 2018 um 17:06)

  • Bleibe auf jeden Fall am Ball

    Das ist gut, Lothar.

    Und lass dich bitte nicht durch Diskussionen hier ablenken, wie man was am besten für 10 Bahnhöfe, 20 Züge und 40 Tage organisiert.

    Es ist ganz wichtig, dass du es im Kleinen komplett durchschaust.

    Genau in der Größenordnung, die du jetzt vor dir hast:

    Ein Bahnsteig mit mehreren identischen Anzeigern und zwei oder vielleicht drei Züge. Anmelden und Abmelden.

    Es geht nicht um die Lösung. Es geht ums Verstehen.

    Das muss man trennen. Probleme löst man erst, wenn man die Werkzeuge beherrscht. Nicht umgekehrt.

  • Hallo Goetz,

    einfach klasse. Nicht nur das es Schreibarbeit spart, es minimiert auch Fehlerquellen. Wie schnell hat man beim kopieren ein Zeichen zu viel oder wenig markiert. Das gleiche gilt fürs einfügen. Danke!

    Viele Grüße aus der Kurpfalz (Ma)

    Jürgen


    PC Mainboard: ASUS Prime B550M-A, CPU: AMD Ryzen 7 5700G, Grafik: NVIDIA RTX 3050 8GB, Ram: 48GB DDR4 - Monitor: 2x Peaq 32" 2560x1440 1xHDMI, 1xDP.
    Laptop , MSI GL72M 7Rex, Intel Core i7-7700HQ 2.8Ghz, NVIDIA GTX1050ti 4GB GDDR5, Ram: 16GB DDR4, 512GB SSD, 1TB HDD, Win10x64

    Win10x64 Home (22H2)
    EEP15.1 Patch2, EEP17.1

    Für meine Modelle verwende ich unter anderem Texturen von https://www.textures.com



  • es minimiert auch Fehlerquellen.

    Genau.

    Das ist ein ganz wichtiges Argument gegen die "Kopieren und Anpassen" Methode.

    Und im Idealfall hat man alle User-spezifischen Daten zentral zusammen und von den eigentlichen Funktionen getrennt. Das macht Anpassungen wesentlich leichter.

  • hallo, ich finde es toll das ihr hier eine schöne Anleitung für die neuen ZZA´s entwickelt.

    Hier ist ein kleiner Beitrag von mir wenn jemand eine aktuelle Zeit plus einen kleinen Minutenzuschlag

    anzeigen möchte.

    Ich hoffe der Code ist so weit selbsterklärend das ich mir den Rest sparen kann.

    viel Spaß Rote Pfeife

    HP Omen I7 9700k 32 GB Nvidia RTX 2080Ti(11GB) Windows 10 64Bit EEP 17.1 Patch1 Monitore
    Asus RoG I7 7700HQ 32GB Geforce 1060 EEP 64bit EEP 17.1Patch1 Laptop

    Konverter, Home-Nostruktor16.0 , TM, Hugo, Notepad++, Gimp

    Der Ton macht die Musik

  • Ich hoffe der Code ist so weit selbsterklärend

    Ja, das ist er.

    Du kannst die Funktion string.format() für deine Zwecke gut gebrauchen:

    Das erste Argument ist ein Pattern in Anführungszeichen, alle nachfolgenden Argumente werden für die Platzhalter im Pattern eingesetzt.

    Das d im Pattern steht für "decimal", erwartet also eine Dezimalzahl als Wert. Die 2 davor besagt: Im String auf mindestens 2 Zeichen auffüllen. Das Prozentzeichen ganz am Anfang deklariert das Ganze als einen Platzhalter.

    Es geht also auch alles in einem Rutsch, samt Doppelpunkt dazwischen:

    EEP_vorlauf_ZZA_zeit = string.format("%2d:%02d", stunde_ZZA, minute_ZZA)

    fertig!

    Zu Beginn ist es mühselig, sich die verschiedenen Pattern zu erarbeiten. Aber dann hat man ein sehr effizientes Tool um Strings zu bilden.

    Ich fange selbst gerade an zu entdecken, wie ungemein praktisch das ist …

    P.S.: Ich weiß, dass du auch vor der einstelligen Stunde eine Null haben möchtest. Ich wollte nur dieses Beispiel nutzen, um beide Varianten zu demonstrieren.

    Einmal editiert, zuletzt von Goetz (3. Dezember 2018 um 15:38)