Fahrstrassen werden nicht geschaltet

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.
  • 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.

  • Hallo und DANKE!

    Daran hab ich nicht gedacht.

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

    Grüsse!

    Martin

  • 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.

    3 Mal editiert, zuletzt von Goetz (14. September 2018 um 12:34)

  • 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:

  • 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
    if EEPLoadData(357) then EEPSetSignal(1033, 2) end

    Gruß Ingo

  • 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 10/64; INTEL i7 - 4770 , 3,40 GHz ; 16 GB RAM ; NVIDEA GeForce GTX 1070 Extreme 8 GB ; EEP 2,43 bis 16 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 10/64; INTEL i7 - 4770 , 3,40 GHz ; 16 GB RAM ; NVIDEA GeForce GTX 1070 Extreme 8 GB ; EEP 2,43 bis 16 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

  • Romamtius hat keinen Denkfehler gemacht,

    sondern die von Parry36 propagierte Methode aus der Serie "Mal was ganz einfaches" übernommen.

  • 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

    Gruß
    Dieter

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

    Sie haben Lua? :ad_1: Ist das ansteckend?

    Bleibt alle schön EEP-besessen :ae_1:

    Hardeware und Software

    __________________________________________
    EEP alle Versionen ab EEP6 mit allen Plugins,
    Homenos5, Homenos8,...,HomeNos17 DEV...
    Intel I7 4790k 4x 4Ghz, 32 GB RAM, NVidia GTX 1080 ti 11GB, Direct x V11, Windows 10 pro 64 Bit,
    Laptop Medion Erazer, 16GB RAM, 500GB SSD, 2 TB HDD, 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.

    11 Mal editiert, zuletzt von Goetz (14. September 2018 um 16:57) aus folgendem Grund: mehrere Fehler im Skript korrigiert und Bild hinzugefügt

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

    Gruß

    Dieter

    Gruß
    Dieter

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

    Sie haben Lua? :ad_1: Ist das ansteckend?

    Bleibt alle schön EEP-besessen :ae_1:

    Hardeware und Software

    __________________________________________
    EEP alle Versionen ab EEP6 mit allen Plugins,
    Homenos5, Homenos8,...,HomeNos17 DEV...
    Intel I7 4790k 4x 4Ghz, 32 GB RAM, NVidia GTX 1080 ti 11GB, Direct x V11, Windows 10 pro 64 Bit,
    Laptop Medion Erazer, 16GB RAM, 500GB SSD, 2 TB HDD, 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.

  • 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
    Ausstattung: Notebook: i7-6700K, 4[8]x4.0 GHz, 32GB RAM DDR4, NVIDIA GTX 980M 8GB, Windows 10, 64-Bit
    Installiert: EEP17.2 Plugin 1 + 2

    Zusatzprogramme: ResourcenSwitcher2 (BH2), EEP-Gleisplan (Frank Buchholz)

  • Eine Tabelle als String ...

    ist eine sehr gute Alternative!

    Aber dann muss man wissen, wie man den String zerlegt um wieder an die einzelnen Daten zu kommen. Oder ein weiteres fremdes Tool einbinden.

  • 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, HomeNos 15

    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.

    "mal was ganz Einfaches" "rundum sorglos Paket"

    Parrys YouTube Videos
    https://www.twitch.tv/parry_36/

    3 Mal editiert, zuletzt von Parry36 (16. September 2018 um 21:51)

  • 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, HomeNos 15

    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.

    "mal was ganz Einfaches" "rundum sorglos Paket"

    Parrys YouTube Videos
    https://www.twitch.tv/parry_36/