LUA-Script in EEP einbinden

!!! Please ensure, that your contribution or question is placed into the relevant section !!!
Questions about rolling stock, for example, do not belong in "Questions about the Forum". Following is perhaps the right area where your question will be better looked after:
General questions to EEP , Splines, rolling stock, Structures in EEP, landscape elements, Signalling system and controlling, designers, Europe-wide EEP meetings , Gossip
Your cooperation to keep the forum clear is appreciated.
  • Hallo Feldabahner ,


    ein paar Tipps:


    - wenn eine Function keine Parameter hat, dann muss die Funktionsdefinition mit () abgeschlossen werden

    z.B.: function LOKSCHUPPEN_1()


    - Du willst nicht ein Signal steuern, sondern die Achse einer Immobilie.

    Darum ist EEPSetSignal die falsche Funktion


    - Zu beachten ist, dass die ID der Immobilie und die Bezeichnung der Achse eine Zeichenkette sein muss, also in " eingeschlossen

    z.B.: "#474_DK1_Lokschuppen2_1Gl" bzw. "Tor_links"


    bei der Immobilien-ID genügt auch

    z.B.: "#474"


    - die entsprechende EEP-Funktion zum Steuern der Immo-Achse findest Du im Lua-Handbuch

    Jürgen


    EEP: 12.1, 13.2, 14.1, 15.1, 16.2 (z.Zt. installiert, bezahlt, aber nur für Tests im Einsatz, da auf Fehlerbeseitigung gewartet wird)


    Prozessor: Intel(R) Core(TM) i5-4460S CPU @ 2.90 GHz 2.90 GHz
    PC: RAM 12 GB, Windows 10 Home, 64 Bit
    GK: NVIDIA Geforce GT 730, 4 GB

  • Hallo Kurt,

    bevor du bei den 'ersten Gehversuchen mit Lua' ins Stolpern kommst und den Spaß an EEP und Lua verlierst, empfehle ich dir - und das aus eigener Erfahrung - die zahlreichen Beiträge unter der Rubrik 'Hilfreiche Seiten' zu diesem Thema in Ruhe anzuschauen. Es braucht geraume Zeit bis man wie ein geübter Programmierer Scripte erstellen und deren Funktionieren dann auch genießen kann. Ein Programmierer sagte mal, nachdem er alle Fehler beseitigt hatte : "Kaum macht man alles richtig, schon geht's wie von selbst" .

    In diesem Sinne viel Erfolg ...

    mit 'nem bähnlesmäßigen Gruß,
    Michael



    EEP 16.2 , Plugin 1+2

  • Ok... Danke erst mal allen für ihre Tipps!


    Tufftuff

    Ja, natürlich sind noch Fehler drin, sonnst hätte das Ergebnis sicher meinen Erwartungen entsprochen. Und ich werde auch noch herausbekommen, welche! Hilfreich wäre gewesen, wenn ich erfahren hätte, was ich außer den Klammern noch falsch gemacht hätte.


    Goetz

    Ich beschäftige mich gerade mit dem "Lua rennt"-Tutorial. Dabei stelle ich fest, dass meine Versuche, die einzelnen Schritte nachzuvollziehen wohl ähnliche, aber mitunter nicht exakt die Ergebnisse bringt, die ich nach dem Tutorial erwartet hätte.

    Ist das unterschiedlichen EEP-Versionen und damit möglicherweise anderen Lua-Versionen geschuldet, oder an Fehlern von mir?

    Images

    >> Was wäre die Welt ohne Eisenbahn...? Wie einfach wäre die Welt ohne EEP...?<<

    :ma_1::bq_1::az_1:


    EEP 12.2; Computer: ACPI x64-basierter PC; OS: Microsoft Windows 10 Home; Motherboard Chipsatz: Intel Cannon Point HM370, Intel Coffee Lake-H; CPU Typ: HexaCore Intel Core i7-8750H, 4100 MHz (41 x 100); Speicher: DDR4 SDRAM 8 GB; Grafik: GeForce GTX 1050 Ti (4 GB)



  • Hallo Feldabahner

    EEP ruft immer die Funktion EEPMain auf. Die ist der Einstiegspunkt von EEP in das Luascript. Fehlt EEPMain führt das zu einer Fehlermeldung.

    Diese fehlt in Deinem Script.

    Am besten ist es, wenn Du mit dem Grundscript, das von EEP angelegt wird anfängst. Es enthält bereits eine EEPMain-Funktion.

    Deine Funktion druckmich sieht ganz gut aus. Die drei Zeilen bis "end" müssen außerhalb der EEPMain funktion stehen.

    Mit dem Aufruf dieser Funktion innerhalb der EEPMain-Funktion durch druckMich() wird diese Funktion dann 5 mal pro Sekunde ausgeführt.Alles, was außerhalb von EEPMain steht wird nur einmal ausgeführt, also z.B. eine Funktion definiert oder eine bereits definierte Funktion einmal ausgeführt.

    Der Aufruf von michgibtsNicht() führt zu einem schweren Fehler, da diese Funktion nirgens definiert ist.


    Gruß Holger

    Mein Hauptrechner Marke Eigenbau:

    Hardware: Mainboard ASUS Crosshair Hero VI, CPU-Typ AMD Ryzen 7 1800X Eight-Core Processor, Speicher 64 GB DDR4-RAM, Grafikkarte ASUS AREZ DUAL Radeon RX580 8GB GDDR5-RAM, 4 Festplatten Gesamtkapazität 13 TB

    Betriebssystem: Windows 10 Pro Version 1909

    EEP-Software: EEP 5 bis EEP 16 (aktiv in Nutzung z.Z. EEP 15.1), Modellkatalog, Anlagenverbinder zu EEP 15.1, HOME-Nostruktor 15.0 (noch nicht in Nutzung), Hugo, Höhengenerator

  • Hallo Feldabahner ,


    in Deiner Signatur steht, dass Du EEP 12.2 einsetzt.

    Da die älteste Version, die ich installiert habe die 14 ist und es sein könnte, dass EEP 12 noch anders reagiert hat, nur eine Vermutung und Bitte.

    Aber da alle Versionen bis EEP 16 das gleiche Ergebnis liefern, vermute ich, in EEP 12 ist das genauso.


    Am Anfang Deines Screen-Shots des Ereignis Fensters steht "Lua rennt". Das ist eine Zeile des standardmäßig von EEP 12 erzeugten Lua-Scriptes, wenn noch kein Script vorhanden ist.

    Diese Print-Zeile sollte sich eigentlich auch in Deinem bereitgestellten Script finden lassen, damit es zur Anzeige im Ereignis-Fenster passt. Tut sie aber nicht.


    Da mein Versuch mit Deinem Script nicht die Fehler bezüglich der EEPMain liefert, sondern nur den Fehler wegen der fehlenden Funktion michGibtsNicht() liefert, meine Bitte.

    Bitte stelle, vor allem am Anfang Deiner Tests, wenn die Scrips noch sehr klein sind, immer das komplette Script zur Verfügung, welches auch die Anzeigen und eventuellen Fehler im Ereignis Fenster verursacht haben.

    Das erleichtert uns die Hilfe.


    Davon abgesehen, ist natürlich, wie HStoni54 schrieb, die EEPMain-Funktion für den korrekten Ablauf der Lua-Scripte wichtig, und sollte auch vorhanden sein.

    Auch, wenn das Fehlen, zumindestens ab EEP 14, keinen Fehler verursacht.

    Ich vermute, beim ScreenShot des Ereignis Fensters, gab es die Funktion auch bei Dir, nur darin war halt ein Fehler enthalten, dessen Grund wir Dir nicht nennen können, weil die Funktion in dem bereitgestellten Script nun fehlt.


    Und noch eine Bitte.

    Bitte stelle den Quell-Code nicht als Screen-Shot in einer Grafik-Datei bereit. Daraus kann man den Text zum Testen nicht kopieren und die wenigsten möchten den Text nochmal eintippen.

    Verwende besser die entsprechende Quell-Code-Formatierung hier im Forum.

    Jürgen


    EEP: 12.1, 13.2, 14.1, 15.1, 16.2 (z.Zt. installiert, bezahlt, aber nur für Tests im Einsatz, da auf Fehlerbeseitigung gewartet wird)


    Prozessor: Intel(R) Core(TM) i5-4460S CPU @ 2.90 GHz 2.90 GHz
    PC: RAM 12 GB, Windows 10 Home, 64 Bit
    GK: NVIDIA Geforce GT 730, 4 GB

    The post was edited 4 times, last by JuergenSchm ().

  • Nun, ich bin hier einem Tutorial gefolgt (Lua rennt - ein Einsteiger Tutorial (nur Tutorial)), welches Goetz schon vor einiger Zeit ins Netz gestellt hat. Die Fehler waren hier gewollt, nur waren die produzierten Fehler nicht die erwarteten...

    >> Was wäre die Welt ohne Eisenbahn...? Wie einfach wäre die Welt ohne EEP...?<<

    :ma_1::bq_1::az_1:


    EEP 12.2; Computer: ACPI x64-basierter PC; OS: Microsoft Windows 10 Home; Motherboard Chipsatz: Intel Cannon Point HM370, Intel Coffee Lake-H; CPU Typ: HexaCore Intel Core i7-8750H, 4100 MHz (41 x 100); Speicher: DDR4 SDRAM 8 GB; Grafik: GeForce GTX 1050 Ti (4 GB)



  • Guten Morgen Kurt ,

    in deinem abgebildeten Script fehlt die sehr wichtige EEPMain - Funktion.

    Sie könnte ab Zeile 6 in deinem Script stehen. Es sind die 3 wichtigsten Zeilen in einem EEP-Script, sonst läuft bei EEP garnichts - außer den Fehlermeldungen.

    Vor den Aufruf der Main-Funktion schreibe ich normalerweise alle Funktions-Definitionen für die aktuelle Anlage.
    Innerhalb der Main-Funktion müssen alles Funktions-Aufrufe stehen, die von EEP 5 mal pro Sek aufgerufen werden sollen.
    Nach der Main-Funktion folgen dann die Funktions-Aufrufe, die nur einmal nach dem Start der Anlage aufgerufen werden sollen. Die Funktionen müssen aber vorher fehlerfrei definiert worden sein, was ich normalerweise im oberen Abschnitt vor der Main-Funktion mache.
    Das Ereignis-Fenster laß ich immer geöffnet, weil ich dort dann direkt was "auf die Finger bekomm", wenn ich einen Fehler gemacht hab. Das Lesen und Verstehen der Fehlermeldungen ist dann nochmal eine weitere Lektion, die gelernt werden muß. Zu der Zeit, als ich Programmieren über die Schultern sah, gab es noch keine "Fehlermeldungen", da wurde zum Teil noch mit Lochstreifen gearbeitet. Damals blieb dann das Programm einfach stehen und die Fragezeichen dampften aus den Köpfen... lang, lang ist's her.
    Meinen Text hab ich jetzt nicht auf Rechtschreibfehler und Zeichensetzung hin überprüft. Der Vorteil ist, ein freundicher Leser meckert meine Fehler nicht an, sonder ignoriert sie einfach.
    Von einem Script-Interpreter darf man das nicht erwarten. Er ist dafür nicht programmiert und das würde auch niemand bezahlen wollen.
    Hol dir jetzt die wichtigsten Worte aus dem Text und dann weiter viel Erfolg ...

    mit 'nem bähnlesmäßigen Gruß,
    Michael



    EEP 16.2 , Plugin 1+2

  • Wie gesagt, ich bin dem oben genannten Tutorial (für totale Anfänger) gefolgt und die Fehler waren besbsichtigt. Da ich das Tutorial noch nicht durchgearbeitet habe, ist mir noch nicht ganz klar, was damit beabsichtigt ist, aber sicher hat es seinen Sinn. Mich irritierte, dass die Fehlermeldungen bei mir andere waren, als nach dem Tutorial zu erwarten. Das muss ich noch mal überprüfen.

    >> Was wäre die Welt ohne Eisenbahn...? Wie einfach wäre die Welt ohne EEP...?<<

    :ma_1::bq_1::az_1:


    EEP 12.2; Computer: ACPI x64-basierter PC; OS: Microsoft Windows 10 Home; Motherboard Chipsatz: Intel Cannon Point HM370, Intel Coffee Lake-H; CPU Typ: HexaCore Intel Core i7-8750H, 4100 MHz (41 x 100); Speicher: DDR4 SDRAM 8 GB; Grafik: GeForce GTX 1050 Ti (4 GB)



  • [...] die Fehler waren besbsichtigt. Da ich das Tutorial noch nicht durchgearbeitet habe, ist mir noch nicht ganz klar, was damit beabsichtigt ist, aber sicher hat es seinen Sinn.

    Ich denke, der Sinn ist, dass du ein Verständnis entwickelst, was solche Fehlermeldungen bedeuten, bzw. wo sie herkommen.


    Warum die Fehlermeldung bei dir anders aussieht als in Götz' Tutorial (bei dir mit [string "EEP Script"]:9: davor), kann ich dir nicht genau sagen.

    Einen Fehler deinerseits kann ich nicht erkennen; vermutlich liegt es tatsächlich an der EEP-Version. Bei mir in EEP 16 sieht es genauso aus. Zu dem Zeitpunkt, als Götz das Tutorial geschrieben hat, gab es noch kein EEP12 (laut deiner Signatur und Icon in deinem Screenshot ist das die Version, die du verwendest).


    Viele Grüße

    Benny, der immer wieder erstaunt ist, wie viele Ratschläge völlig am beschriebenen Problem vorbei gehen (sich davon selbst aber auch nicht ausnehmen will)

  • Hallo Feldabahner ,


    die Fehlermeldungen in deinem Ereignisfenster beziehen sich nicht nur auf das gezeigte Skript. Als erste Zeile deines Lua-Scriptes sollte clearlog() stehen damit dich die vorhergehenden Ausgaben nicht verwirren. Dein gezeigtes Script gibt nur die letzten drei Meldungen aus:

    Lua verwirrt mich ist die Ausgabe der ersten Zeile : print("Lua verwirrt mich")

    Hier meldset sich die Funktion ist das Ergebnis des Funktionsaufrufs : druckMich()

    Die letzte Fehlermeldung besagt das der Funktionsaufruf : michGibtsNicht() ) : eine nicht definierte Funktion aufruft.


    MfG

    EEP 15.1 EEP 16
    MS Windows 10 Pro 64bit
    Prozessor: AMD FX-8370 Eight-Core Processor 4,0GHz // RAM: 32GB // SSD 256GB // Grafikkarte: GeForce GTX 950