EEPOnSignal - EEPOnSwitch "attempt to call a nil value"

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.
  • Fragestellung zu EEPOnSignal und EEPOnSwitch !!!

    Ich bekomme sehr viele Meldungen im Ereignis-Fenster "attempt to call a nil value" zu registrierten OnSignalen und OnWeichen.

    Der im Anhang beigefügte SnapShot zeigt das Signal(50) und die Weiche(47) als extremes Beispiel. Die Mitteilungen von Errors stören bisher nur beim lesen, Der Fahrbetrieb

    wird meines Erachtens dadurch nicht oder nur gering beeinflusst - sofern ich das überhaupt beurteilen kann "darf".

    Die Weichen,Signale hatte sie zu Beginn der Anlage Registriert als sie noch auf den Hauptfahrstraßen lagen und von LUA-Script direkt angesprochen wurden.

    Mittlerweile, da ich sehr viel in der Anlage Umgebaut habe und sich auch die ID's der Weichen,Signale verändert haben werden sie im LUA-Skript nicht mehr angesprochen "verarbeitet".

    Kann es sein das die Fehler von daher kommen? Oder anders herum gefragt, ab wann sollte man Signale und Weichen Registrieren.

    Zur Enträtselung: wie könnte ich vorgehen um die Error Meldungen zu reduzieren "aufzuheben".

    P.S. - Bitte zu entschuldigen das ich meine Frage an ein anderes Thema angeheftet hatte das mir mir über die Tags mitgeteilt wurde.

    Gruß klaus-s

  • Bei näherem betrachten des SnapShot erkennt man auch mein Problem, es werden Weich,Signale geschalten - im Ereigniss Fenster ausgegeben, die mit den Error Meldungen nicht zusammenhängen.

    Gruß klaus-s

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

  • Hallo klaus-s

    mein User-Kollege aus dem anderen Tröd hatte recht.

    Wenn für die registrierten Signale keine OnSignal-function existiert, kommt diese Fehlermeldung.

    Hilft also nur, die Registrierungen zu löschen oder auszukommentieren.

    :aq_1:

    eep_gogo ( RG3 )

    -------------------------

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-17.0, HN13+15/16+15/16DEV, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

    Einmal editiert, zuletzt von eep_gogo (RG3) (8. Juni 2021 um 18:12)

  • Das ist doch schon sehr schön und hilft enorm. Die Arbeit mache ich mir sehr gerne. Dennoch eine Frage: Ich habe gelesen das man Weichen,Signale selbst beim gebrauch von Tabellen nicht in jedem Fall registrieren muss.

    Worin liegt den eine Voraussetzung der Weichen,Signale um sie zu registrieren. Wäre prima zu erfahren, aus den Anleitungen über LUA konnte ich das bisher nicht erfahren.

    Gruß klaus-s

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

  • Hallo klaus-s
    eines von mehreren Beispielen:

    Lua
    EEPRegisterSignal(xyz)  --- ist die Voraussetzung, damit die "On-Signal-Geschichte" funktioniert

    D.h. für das oben registrierte Signal gibt es eine "On-Signal-Funktion", die so aussieht:

    Lua
    function EEPOnSignal_xyz(status)  -- die Schreibweise muss genau eingehalten werden
    
    ---  tue irgendwas, evtl. abhängig vom "status", das ist der jetzige Zustand des Signals
    
    end

    Der Vorteil dieser Vorgehensweise ist, dass das, was in der function passiert,

    immer automatisch im Hintergrund abläuft, wenn das Signal umgeschaltet wird.

    Erkärungen dazu gibt es sehr wohl im Lua-Handbuch,

    ab Seite 20 -

    Beschreibung der Anlage „Tutorial_34_LUA_2” :bn_1::ae_1:

    :aq_1:

    eep_gogo ( RG3 )

    -------------------------

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-17.0, HN13+15/16+15/16DEV, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

  • Erkärungen dazu gibt es sehr wohl im Lua-Handbuch,


    ab Seite 20 -

    Beschreibung der Anlage „Tutorial_34_LUA_2

    vielen Dank für den Hinweis - die Beschreibung hatte ich nicht mehr in Erinnerung.

    sobald du eine sog. "Callbackfunktion" benötigst, ist eine Registrierung des Objekts unumgänglich.

    Das genau ist was ich erfahren wollte, Danke dir Ray.

    Ich war mir nicht ganz sicher ob allein für die Anweisung oder für das Callback eine Registrierung benötigt wird.

    So... damit sollte ich alle Error Meldungen in Hinsicht der OnSignale,OnWeichen lösen können. Besten Dank für eure Hilfe Leistungen damit musste ich nicht in den Tiefen von EEP stöbern und kann zu arbeiten beginnen. :aq_1::bm_1:

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

    Einmal editiert, zuletzt von klaus-s (8. Juni 2021 um 19:46)

  • function EEPOnSignal_xyz(status) ist die Callback-Funktion

    :aq_1:

    eep_gogo ( RG3 )

    -------------------------

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-17.0, HN13+15/16+15/16DEV, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

  • super einfach wirklich sehr gut für mich ein Danke schön.

    Nach einem Jahr Abstinenz und reiner Windows config, läuft das Denken mit LUA schon wieder viel einfacher.

    Hier dennoch ein Schnipsel: Eventuell das jemand helfen kann. Das Script sollte

    Inhaltlich "man Verzeihe die vielen prints" Inhaltlich so bleiben.

    Die Züge werden zuerst geprüft am Vorsignal und erhalten darauf Einfahrt oder eben nicht.

    Was ich verbessern wollte ist die zweite function function GUE_03_Einfahrt_r_Gue1()Ich wollte sie als Tabelle im Block schreiben. Beispiel:

    Mein Versuch die Weichen in eine Tabelle zu setzen funktioniert leider noch nicht. sprich die function wird nicht abgearbeitet kann jemand helfen ???

    Lua
    Meine_Signale = {
                    {22,2},{23,4},{44,4},{45,4},{46,4},{47,1},{66,4},{117,4},
                    --{91,2},{34,2},{50,2},{67,1},{349,1},{635,1},{641,2},{645,2},{646,2},{647,1},{648,1},{649,1},{652,1},{653,2},{654,1},{655,1},{658,1},{712,1},{713,1},
                    }
    --Den Funktionsname: Funktionsname_Kp nach deinen Wünschen abändern!
    function GUE_Durchfahrt()    --im Kontaktpunkt steht: Funktionsname_Kp
        for Tabellenposition = 1, #Meine_Signale do
            EEPSetSignal (Meine_Signale [Tabellenposition][1], Meine_Signale [Tabellenposition][2])
        end
    end
    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

    Einmal editiert, zuletzt von icke (LP1) (9. Juni 2021 um 11:56) aus folgendem Grund: Quellcode auf Lua umgestellt

  • Hallo klaus-s

    die function GUE_Durchfahrt() müsste funktionieren.

    Setze mal zwischen Zeile 9 und 10

    print("GUE_Durchfahrt() done"), evtl. stimmt mit deinem Aufruf etwas nicht.


    Mein Versuch die Weichen

    dann musst du auch den Befehl EEPSetSwitch nehmen!

    :aq_1:

    eep_gogo ( RG3 )

    -------------------------

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-17.0, HN13+15/16+15/16DEV, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

  • Wenn Du es dann noch schaffen würdest einen Lua Code auch als Lua Code einzustellen, erleichtert es dem Interessierten diesen zu lesen

    Sorry - wie machst du das. Mein Code habe ich von Scite kopiert und eingefügt

    leider wie man sieht ohne farbliche Darstellung. Eventuell das ich Notepad++

    nehmen sollte ??

    Gruß klaus-

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

  • Lua
    function LUA_Buton()
        print("Ach so geht das")
    end

    Dank van Icke für das schnelle erlernen

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

  • icke (LP1)

    Das mit dem Lua-Code einfügen war ein guter Tipp.

    Muss ich mir merken.

    Viele Grüße

    Karl Heinz

    Benutzte Programme und Hardware

    Programme:

    EEP 17.3 Expert [x64], PlugIn 1, 2

    HomeNos 17.0

    Tauschmanager, Model Multiplier, Modell Explorer


    Hardware:

    Acer Nitro 5 AN517-41

    AMD Ryzen 7 5800H with Radeon Graphics

    64 GB RAM, nVidia Geforce RTX3080 Laptop GPU7552

    Windows 11 Home, Version 23H2, Betriebssystembuild 22631.3296

    Windows Defender

  • print("GUE_Durchfahrt() done"), evtl. stimmt mit deinem Aufruf etwas nicht

    dann musst du auch den Befehl EEPSetSwitch nehmen!

    Habe beide Befehle eingetragen, wobei Meine Signale den selben wErt zurückgaben als auch Meine_Weichen.

    Ergebnis eben genau die print anweisung nämlich

    8 mal GUE_Durchfahrt() done

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

  • 8 mal GUE_Durchfahrt() done

    ... wieso 8x ?

    Ich habe bei meinem Test noch zwischen Zeile 8 und 9 folgenden "print" eingefügt:

    print("Signal/Weiche ",Meine_Signale [Tabellenposition][1]," ist ",Meine_Signale [Tabellenposition][2])


    das ergibt nach einmaligem Funktionsaufruf folgenden einmaligen Ausdruck:

    ---

    und wenn keine Fehlermeldung kommt, "müssten" die Signale und Weichen auch schalten!

    :aq_1:

    eep_gogo ( RG3 )

    -------------------------

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-17.0, HN13+15/16+15/16DEV, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

  • ---


    und wenn keine Fehlermeldung kommt, "müssten" die Signale und Weichen auch schalten!

    das passt,

    Ich bekomme nun den selben Ausdruck. Weichen wurden gestellt...:aa_1:

    Nun habe ich eine Tabelle erstellt, einen print("") Befehl dazu.

    Nun nur noch die Signale dazu fügen. Und fertig ist die Fahrstraße.

    Kann ich dazu den Befehl function GUE_Durchafahrt() nur mit Signal Zuweisung nehmen?? Hier wurden nun ja Weichen mit EEPSetSwitch gestellt.

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

  • nun merkert er.

    Die Zeile mit , umbenannt zu,

    EEPSetSignale (Meine_Signale [Tabellenposition][1], Meine_Signale [Tabellenposition][2])

    wird nun nicht mehr verarbeitet.

    Ich habe nun also 2 mal function GUE_Durchfahrt()

    einmal für die Weichen, das passt!! und für Signale das passt nicht mehr.

    Schwierig...

    eep_gogo: Gratulation übrigens zu deiner ersten Spline im Februar, würde sagen geglückt oder noch besser perfekt.

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1

    3 Mal editiert, zuletzt von klaus-s (9. Juni 2021 um 20:44)

  • Hallo klaus-s

    würde es denn so für dich passen:

    ---

    :aq_1:

    eep_gogo ( RG3 )

    -------------------------

    Intel i3-540 3,2GHz 8GB, RAID10, HD 6570 1GB, W7/64 Prof., EEP 6-6.1, 10-17.0, HN13+15/16+15/16DEV, TM, "Schiefe Ebene 6 + 8", "Bahn2000", "Faszination der St. Gotthard-Nordrampe"

  • Das ist so unglaublich und perfekt!!!...:af_1:

    Was ich nun in ein paar 4-Zeilern gelernt habe. Ich kanns nicht fassen.

    Also die Fahrstraße ist einsatzbereit kein Thema.... das ich aber dazu noch lerne mit

    "for und end" ein oder die selbe function zu durchlaufen.

    darüber hinaus noch in der print("") Methode ein "ist" und "soll" mitbekomme

    ist heftig ...:aa_1::ap_1::co_k:

    Bitte entschuldige wenn ich dich Reinhold nenne, aber die Erklärung ist so etwas von perfekt besser geht es kaum.

    Vielen lieben Dank und allerbeste Grüße klaus-s

    Spoiler anzeigen

    Windows 10 Home - 64 Bit; Google Chrome - AMD Phenom(tm) II CPU @ 3,6 GHZ - 6-Core,_32 GB Ram - ASUS/Nvidia GTX960 -

    "EEEC bis EEP6.1_EEP7.0 bis 15.2 - Modelkonverter - HN8 - diverse Grafik Programme - SciTE - LUA 5.1