Fahrstrassen werden nicht geschaltet

!!! 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,


    ich suche Hilfe bei einem versierten Techniker.

    Ich arbeite mich so langsam in Lua ein.


    Habe eine Gleisharfe (x3) und dazu die Fahrstraßen angelegt - 1 Startpunkt, 3 Zielpunkte.

    Steuere die Auswahl der freien Fahrstrasse über Soundpunkte um das Lua-Script zu aktivieren.


    Bei dreistelligen ID's wird die jeweilige Fahrstrasse erkannt - z.B. EEPSaveData(793, true).


    Bei vierstelligen jedoch nicht - z.B. EEPSaveData(1024, true).


    Woran liegt das?

    Die ID wird ja vom System autom. vergeben, so dass ich diese nicht ändern kann.


    Würde mich über einen Tipp freuen.

    mfg


    Martin


    Hier mein Script:


    clearlog()


    print("Hey let's start, EEP Version is: ", EEPVer)

    setmetatable(_ENV,{__index=function(s,k) local n=k:gsub("%.",","); local p=load(n);if p then local f=function(z) local s=Zugname;Zugname=z;p();Zugname=s end;_ENV[k]=f;_ENV[n]=f;return f end;return nil end})
    function EEPMain()


    if EEPLoadData(707) then EEPSetSignal(707, 2) end

    if EEPLoadData(707) then EEPSetSignal(707, 3) end

    if EEPLoadData(707) then EEPSetSignal(707, 4) end

    if EEPLoadData(707) then EEPSetSignal(707, 5) end

    if EEPLoadData(707) then EEPSetSignal(707, 6) end


    if EEPLoadData(745) then EEPSetSignal(745, 2) end

    if EEPLoadData(708) then EEPSetSignal(708, 2) end

    if EEPLoadData(709) then EEPSetSignal(709, 2) end

    if EEPLoadData(710) then EEPSetSignal(710, 2) end

    if EEPLoadData(711) then EEPSetSignal(711, 2) end
    if EEPLoadData(444) then EEPSetSignal(444, 2) end

    if EEPLoadData(444) then EEPSetSignal(444, 3) end


    if EEPLoadData(774) then EEPSetSignal(774, 2) end

    if EEPLoadData(776) then EEPSetSignal(776, 2) end


    if EEPLoadData(684) then EEPSetSignal(684, 2) end

    if EEPLoadData(778) then EEPSetSignal(778, 2) end


    if EEPLoadData(1017) then EEPSetSignal(1017, 2) end

    if EEPLoadData(1017) then EEPSetSignal(1017, 3) end

    if EEPLoadData(772) then EEPSetSignal(772, 2) end
    if EEPLoadData(198) then EEPSetSignal(198, 2) end

    if EEPLoadData(658) then EEPSetSignal(658, 2) end
    if EEPLoadData(1019) then EEPSetSignal(1019, 2) end

    if EEPLoadData(1019) then EEPSetSignal(1019, 3) end
    if EEPLoadData(1020) then EEPSetSignal(1020, 2) end

    if EEPLoadData(1021) then EEPSetSignal(1021, 3) end

    -- Bahnhof2

    if EEPLoadData(961) then EEPSetSignal(961, 2) end

    if EEPLoadData(961) then EEPSetSignal(961, 3) end

    if EEPLoadData(961) then EEPSetSignal(961, 4) end
    if EEPLoadData(517) then EEPSetSignal(517, 2) end

    if EEPLoadData(697) then EEPSetSignal(697, 2) end

    if EEPLoadData(1033) then EEPSetSignal(1033, 2) end

    -- Bahnhof3

    if EEPLoadData(1037) then EEPSetSignal(1037, 2) end

    if EEPLoadData(1099) then EEPSetSignal(1099, 2) end

    -- Großer Gueterbahnhof

    if EEPLoadData(1042) then EEPSetSignal(1042, 2) end

    if EEPLoadData(1042) then EEPSetSignal(1042, 3) end

    if EEPLoadData(1042) then EEPSetSignal(1042, 4) end


    return 1


    end

  • Woran liegt das?

    Das liegt daran, dass man in EEP mit EEPSaveData() nur Daten in den Speicherplätzen 1 bis 999 speichern kann. Mehr Speicherplätze gibt es nicht.


    Du musst also dein Nummernsystem ändern oder generell eine etwas andere Taktik wählen.

    I implores you to go back and tell them to send someone just a little bit more impressive next time.

    - Bill Williamson -

  • Das einfachste wäre, du würdest in die Kontakte andere Zahlen schreiben und genauso an entsprechenden Stellen im Skript. Dazu müsstest du die Nummern der Signale nicht ändern.


    Wenn zum Beispiel im KP steht EEPSaveData(1,true) und im Skript steht if EEPLoadData(1) then EEPSetSignal(1033, 2) end
    dann schaltet die Fahrtsraße mit dem Startsignal 1033 wie gewünscht, wenn eine Anmeldung vorliegt.


    Entsprechend musst du auch die Nummer des Speicherplatzes ändern, der bei erfolgreicher Schaltung zurück gesetzt wird: Wo immer bei dir EEPSaveData(1033,nil) steht, muss stattdessen EEPSaveData(1,nil) stehen.


    Wenn du das soweit verstanden hast und durchschaust, warum das so ist, dann hast du gerade einiges über Lua gelernt.



    Die Schwierigkeit bei der Geschichte ist folgende: Du kannst jeden der nummerierten Speicherplätze nur für eine Fahrstraße benutzen. Die Signalnummern können nicht doppelt vorkommen. Deshalb war die Variante mit den Signalnummern sicher. Wenn du aber jetzt andere Nummern für die Speicherplätze verwendest, dann musst du selbst darauf achten keine Nummer doppelt zu vergeben. Und das ist nicht ohne Risiko.



    Wenn du EEP 14 und dazu das Plug-In 1 besitzt, dann kannst du auch unter "Extras" die Signalnummern ändern. Dabei achtet EEP selbständig darauf, dass keine Nummer doppelt vergeben wird.



    Der richtige Weg wäre eine Zuordnungstabelle. Aber ich kann nicht einschätzen, wie weit fortgeschritten deine Lua Kenntnisse inzwischen schon sind.

    I implores you to go back and tell them to send someone just a little bit more impressive next time.

    - Bill Williamson -

    The post was edited 3 times, last by Goetz ().

  • Hallo,


    danke.

    Werde das jetzt testen und vielleicht bis eep15 warten, um es zu kaufen.

    Dann müsste das mit dem Umbenennen ja klappen, denn ganz so versiert bin ich noch nicht.


    Danke für die Hilfe.


    Martin

  • Dann müsste das mit dem Umbenennen ja klappen

    Ja, in EEP 15 Expert ist die Funktion enthalten.

    Aber experimentiere bis dahin ruhig mal ein wenig. Wenn du versierter werden möchtest, dann musst du Dinge ausprobieren und Fehlschaltungen in Kauf nehmen. Das ist dann zwar nicht mehr "ganz einfach", aber dafür sehr lehrreich :ae_1:

    I implores you to go back and tell them to send someone just a little bit more impressive next time.

    - Bill Williamson -

  • Gibt es eine Möglichkeit, diese ID's zu ändern?

    Hallo Martin :)


    Du machst einen ganz einfachen Denkfehler. Du vermischst nämlich offenbar die Signal-IDs mit den Slotnummern. Das sind aber völlig verschiedene Nummernkreise, die in keiner Weise verknüpft sind. Signal-/Weichen-IDs gehen von 1 bis 9999 und die Slots von 1 bis 999. Beide haben aber nichts miteinander zu tun. Du kannst (und musst) den Status der Signale (z.B. Signal 1033) in einem beliebigen Slot im Bereich von 1 bis 999 speichern und von dort auslesen, z.B.

    Code
    1. if EEPLoadData(357) then EEPSetSignal(1033, 2) end

    Gruß Ingo

    Win 7x64 Professional SP1, Intel Core i5-3570, 16GB RAM, nVIDIA GeForce GT630, 2GB, 1920x1200 auf 26" TFT

    Windows Firewall und Defender (MSE)

    EEP6 Patch 1; EEP8.3 Expert; EEP9 Expert Patch 1; EEP10.2 Expert Patch 3 Plugin 1; EEP11.3 Patch 1; EEP12.1 Expert Patch 1; EEP13.2 Patch 2 Plugins 1,2; EEP14.1 Expert Patch 2 Plugin 1

  • Du kannst jeden der nummerierten Speicherplätze nur für eine Fahrstraße benutzen

    oder für eine Funktion (function)

    in der z. B. mehrere Fahrstraßen zur Auswahl stehen.

    viele Grüße aus Köln

    Peter


    Win 7/64; INTEL i7 - 4770 , 3,40 GHz ; 16 GB RAM ; NVIDEA GeForce GTX 770/2 GB ; EEP 2,43 bis 14 Expert

  • Du machst einen ganz einfachen Denkfehler. Du vermischst nämlich offenbar die Signal-IDs mit den Slotnummern

    Das war kein Denkfehler.

    Damit wollte er immer wissen wohin , bzw. wofür dieser Slot ist.

    Weil dieser Slot dann immer auf das betreffende Signal verwiesen hätte.

    viele Grüße aus Köln

    Peter


    Win 7/64; INTEL i7 - 4770 , 3,40 GHz ; 16 GB RAM ; NVIDEA GeForce GTX 770/2 GB ; EEP 2,43 bis 14 Expert

  • Das war kein Denkfehler.

    Hallo Peter :)


    jein.

    Damit wollte er immer wissen wohin , bzw. wofür dieser Slot ist.

    Weil dieser Slot dann immer auf das betreffende Signal verwiesen hätte.

    Richtig. Genau das funktioniert (so) aber wegen der unterschiedlichen Wertebereiche leider nicht bzw. nur teilweise.


    Gruß Ingo

    Win 7x64 Professional SP1, Intel Core i5-3570, 16GB RAM, nVIDIA GeForce GT630, 2GB, 1920x1200 auf 26" TFT

    Windows Firewall und Defender (MSE)

    EEP6 Patch 1; EEP8.3 Expert; EEP9 Expert Patch 1; EEP10.2 Expert Patch 3 Plugin 1; EEP11.3 Patch 1; EEP12.1 Expert Patch 1; EEP13.2 Patch 2 Plugins 1,2; EEP14.1 Expert Patch 2 Plugin 1

  • Hallo Romamtius ,

    wie es geht hast Du ja nun aus den vorherigen Beiträgen schon erfahren.

    Ich würde unabhängig von der Möglichkeit, die Signal-IDs zu ändern, dennoch den Vorschlag von Götz beherzigen.

    Das einfachste wäre, du würdest in die Kontakte andere Zahlen schreiben und genauso an entsprechenden Stellen im Skript. Dazu müsstest du die Nummern der Signale nicht ändern.

    Um die Übersicht zu behalten habe ich mir angewöhnt, in einen auskommentierten Bereich am Anfang des Scripts die Zuordnung zu hinterlegen.

    sieht dann so aus...

    So kannst Du auch viel später noch ergründen, was in welchem Slot abgelegt wird.

    Die Tabelle oben ist zwar jetzt nicht für Fahrstraßensignale, aber ich denke Du erkennst den Sinn dahinter.


    Der folgende Hinweis kommt eigentlich von einem der Moderatoren,

    Schreib doch bitte deine relevanten Systemdaten in deine Signatur. Das hilft den Lesern, dir auf deine Fragen genauere Hilfen zu geben.


    Gruß

    Dieter

    Schalten und walten ist mein Hobby, aber nur in EEP ;)
    __________________________________________
    EEP alle ab EEP6 mit allen Plugins,
    Homenos5, Homenos8,HomeNos11 DEV...
    Intel I7 4790k 4x 4Ghz,16 GB RAM, NVidia GTX 970 4GB, Direct x V11, Windows 7 64 Bit,
    Laptop Medion Erazer, 8GB RAM, GT 850 von Nvidia, Windows 10 Home 64bit

  • Um die Übersicht zu behalten habe ich mir angewöhnt, in einen auskommentierten Bereich am Anfang des Scripts die Zuordnung zu hinterlegen.

    Kann man machen.

    Aber in einer Tabelle ist sie viel besser aufgehoben als im Kommentar, weil man sie dann gleich nutzen kann.


    Im Kontaktpunkt muss der Eintrag dazu dann so aussehen:



    Die 5 in diesem Beispiel bedeutet, dass dieses Startsignal 5 mögliche Ziele hat.

    I implores you to go back and tell them to send someone just a little bit more impressive next time.

    - Bill Williamson -

    The post was edited 11 times, last by Goetz: mehrere Fehler im Skript korrigiert und Bild hinzugefügt ().

  • Hallo Götz,
    das setzt aber schon einige Kenntnisse voraus ;)


    Gruß

    Dieter

    Schalten und walten ist mein Hobby, aber nur in EEP ;)
    __________________________________________
    EEP alle ab EEP6 mit allen Plugins,
    Homenos5, Homenos8,HomeNos11 DEV...
    Intel I7 4790k 4x 4Ghz,16 GB RAM, NVidia GTX 970 4GB, Direct x V11, Windows 7 64 Bit,
    Laptop Medion Erazer, 8GB RAM, GT 850 von Nvidia, Windows 10 Home 64bit

  • das setzt aber schon einige Kenntnisse voraus ;)

    Kommt drauf an, wie du es betrachtest, Dieter.

    Die Anwendung ist einfach, denn der Nutzer muss nur die Startsignale in die Tabelle eintragen. Den Rest kann er genauso "verwenden ohne zu verstehen" wie Bennys Codezeile auch.


    Und die erste Fassung, welche Romamtius benutzt hat, war ja letztlich auch nur "abgeschrieben und angepasst". Aber die Anpassung dürfte ihm mehr Mühe bereitet haben.

    I implores you to go back and tell them to send someone just a little bit more impressive next time.

    - Bill Williamson -

  • Hallo User,


    ne dumme Frage von mir, da ich keine Ahnung von Lua habe. :ay_1: Muß man für jede Fahrstraße einen eigenen Speicherslot benutzen? :as_1:

    Eine Tabelle als String speichern, sollte vielleicht reichen, wenn man eh nur true oder false abfragt? Anlagen könnten mit Lua ziemlich groß werden. :ad_1:

    Das sind nur Fragen und Vermutungen, da ich es noch nicht getestet habe! :ae_1:

    MfG. Jörg
    Notebook: i7-6700K, 4[8]x4.0 GHz, 32GB RAM DDR4, NVIDIA GTX 980M 8GB, Windows 10, 64-Bit
    installiert: EEP6.1; EEP14.1 expert Patch2 mit Plugin 1; EEP15.0 Patch1

    Zusatzprogramme: EEP Zug-Explorer, EEP Modell-Explorer, JWGleisEditor

  • Ich hatte vor einiger Zeit mir mal eine einfache Methode in Lua

    geschrieben, mit der es sehr einfach möglich ist, in einem beliebigen Slot

    bis zu etwa 150 boolesche Werte "Ja/Nein" unter zu bringen.

    Für alle die Fälle einsetzbar, wo keine Speicherung des Zugnamens nötig ist.

    Gruß Dieter

    1.MSI 17,3" Intel® i7-8750H 16GB SSD + HDD GeForce® GTX 1060 »GV72 8RE-013DE (00179E-013)

    2. PC:Win10/64, i7-7700K, 4.2 GHz, GPU GTX 1070/8 GB, 16 GB RAM(DDR4), SSD 960 Evo 500GB, Ilyama PL2490
    EEP 6.1 - EEP 15 E


    Ich wünsche mir eine freizügige Script-Sprache und eine leistungsfähige Grafik Engine für EEP.
    Ein Leben ohne EEP ist möglich, aber sinnlos, so ganz sicher bin ich mir nicht mehr.


    http://www.parry-36.jimdo.com
    https://www.twitch.tv/parry_36/

    The post was edited 3 times, last by Parry36 ().

  • Für alle die dieses Modul in ihren Anlagen einsetzen möchten, muß

    ich noch ein paar Worte sagen.


    Zunächst habe ich auf Anregung von Götz, eine kleine Änderung im Code

    gemacht, die das Ganze etwas schlanker macht.

    Wer das Modul einsetzen möchte, sollte den Code kopieren und als Datei

    in das LUA Verzeichnis kopieren.

    Der Datei einen Namen geben, z.B. "Memo_150.lua".

    Jetzt kann man diesen Code mit requiere("Memo_150") in das Anlagenscript

    übernehmen, es muß nur noch mit

    DatenSlot_einlesen() das Modul im Script initialisiert werden.


    Nun kann mit den Funktionen im KP ---->FS_anmelden(2391)---> FS_abmelden(2391)

    ---> if FS_gesetzt(2391) then EEPSetSignal(2391, 2)

    gearbeitet werden.


    Viel Spaß, wenn Fragen aufkommen, bitte fragen.


    Gruß Dieter

    1.MSI 17,3" Intel® i7-8750H 16GB SSD + HDD GeForce® GTX 1060 »GV72 8RE-013DE (00179E-013)

    2. PC:Win10/64, i7-7700K, 4.2 GHz, GPU GTX 1070/8 GB, 16 GB RAM(DDR4), SSD 960 Evo 500GB, Ilyama PL2490
    EEP 6.1 - EEP 15 E


    Ich wünsche mir eine freizügige Script-Sprache und eine leistungsfähige Grafik Engine für EEP.
    Ein Leben ohne EEP ist möglich, aber sinnlos, so ganz sicher bin ich mir nicht mehr.


    http://www.parry-36.jimdo.com
    https://www.twitch.tv/parry_36/