Wie kann ich den Wert einer Variablen in eine Variable umwandeln?

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

    Seit einem Monat befasse ich mich mit EEP und muß, da ich noch kein PlanEX besitze, mich mit Lua beschäftigen.

    Wie hier im Beitrag [1] beschrieben wurde, bekommt der Zug auch bei mir eine Geschwindigkeit bei Hp2 vorgegeben, Der Zug fährt bis zum Ausfahrsignal richtig.


    Nun mein Problem:


    Nach dem nächsten Hp1 soll wieder richtig beschleunigen werden.

    Mit dem Zugnamen kann ich die Geschwindigkeit anpassen, aber nicht passend für jeden Zug. Über eine if-then-else-Schleife, ist der Aufwand zu groß.

    Ich möchte aus dem Wert der Variablen Zugname, z.B. Gueterzug, eine Variable mit dem Namen Gueterzug abfragen, in der dann die Max-Geschwindigkeit z.B. 80 steht.

    Mit der Anweisung ---- EEPSetTrainSpeed(Zugname,Gueterzug)--- soll dann die Geschwindigkeit zugewiesen werden.

    Wie kann ich den Wert einer Variablen in eine Variable umwandeln, oder kann das Problem auch anders gelöst werden.


    Grüße Myrdal


    Anmerkung Mod. schlingo:

    [1] abgetrennt aus Fahrstrassen und Güterbahnhof ohne Slots (EEP14)

    The post was edited 1 time, last by schlingo: Hinweis auf Abtrennung ().

  • Da hat Goetz ,


    den besagten Nagel auf den Kopf getroffen, mit einer Tabelle geht es besser,

    vielleicht so:


    Viel Spaß beim Programmieren,


    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.

    "mal was ganz Einfaches"

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

  • Hallo,


    ja, Tabelle! Hatte ich noch nie verwendet. Es geht damit, so wie ich es mir vorgestellt habe, Danke Goetz.

    Mit Geschwindigkeit merken/wieder herstellen ging es bei mir nicht.

  • Mit Geschwindigkeit merken/wiederherstellen ging es bei mir nicht.

    Dann ist dir vermutlich nicht klar, was du da machen musst.


    Die Checkbox hat drei mögliche Zustände: Aus, X und Haken

    • Aus - ignorieren
    • Haken - aktuelle Soll-Geschwindigkeit (für den auslösenden Zug!) merken
    • X - die Soll-Geschwindigkeit wiederherstellen, welche für diesen Zug vorher per KP gespeichert wurde.

    Klappt wunderbar. Und die einmal gemerkte Geschwindigkeit behält der Zug "im Gedächtnis". Sie kann also an beliebig vielen Stellen wiederhergestellt werden. Und das individuell für jeden Zug.


    Bei der Tabelle könntest du übrigens ähnlich verfahren:

    Keine Tabelle mit Geschwindigkeiten anlgene, sondern an einer Stelle die aktuele Geschwindigkeit auslesen und in einer Tabelle unter dem Namen dieses Zuges speichern um sie dann zu einem anderen Zeitpunkt per KP auszuzlesen und wiederherzustellen.


    Der Zugname ist damit nicht der Variablenname, aber der Name der Zelle in deiner Tabele, was ersterem schon recht nahe kommt bzw. genau das ist, wonach du gefragt hattest.


    LUA Source Code
    1. Geschwindigkeit = {}
    2. function Merken(Zugname)
    3. ok, Geschwindigkeit[Zugname] = EEPGetTrainSpeed(Zugname)
    4. end
    5. function Wiederherstellen(Zugname)
    6. EEPSetTrainSpeed(Zugname, Geschwindigkeit[Zugname])
    7. end


    Vorsicht!

    Das Skript oben zeigt nur das Prinzip. Es versagt, wenn ein Zug eine Geschwindigkeit wiederherstellen soll, die nicht zuvor gespeichert wurde.


    Erst die Basics verstehen, dann die Feinheiten hinzufügen. Nicht alles auf einmal machen!

    "You remind me of a man" - "What man?" - "The man with the power"

    - Richard Nugent -

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

  • Quote

    Dann ist dir vermutlich nicht klar, was du da machen musst.

    Mir ist nicht klar wo ich es machen muß. Unter KP Fahrzeugen finde ich es nicht. Den Vorschlag "aktuelle Gewindigkeit auslesen" werde ich morgen probieren. Danke

  • Ich halte die Lua-Lösung Parry36 für optimal. So etwas Ahnliches werde ich auch auf meiner Anlage verwenden. So ist es nämlich möglich, dem Zug beliebige Geschwidigkeiten mitzugeben.


    Wenn man realistisch "fahren" will, muss man sich an die Kurven- bzw. Weichenradien halten, und bei einem Bahnhof können deshalb Ein- und Ausfahrgeschwindigkeiten variieren, je nachdem, welchen Weg die Züge im Gleisvorfeld nehmen. Das sind typischerweise 40, 60 oder 80 km/h, manchmal auch 50.


    Bei der Ausfahrt muss man allerdings den Zug zuerst in Bewegung setzen und dann kurz danach die Geschwindigkeit per Kontaktpunkt einstellen. Sonst kann es bei zusammengestzten Zugverbänden kompliziert werden, die Ausrichtung zu ermitteln, damit die Geschwindigkeit das korrekte Vorzeichen bekommt.


    Eine andere Lösung sind Geschwidigkeitsregler als Signale, die man mit dem Hauptsignal koppelt.

  • Hallo und guten Morgen, (wann schlaft Ihr eigentlich mal ?)


    Bei dem Punkt Vormerken/Wiederherstellen sollte man aber beachten:

    Es wird Geschwindigkeit und Richtung des Zuges gespeichert und das für jeden Wagen im Zug.

    Das heißt bei einer Zugtrennung behalten auch die einzelnen Waggons diese Geschwindigkeit und Richtung. (wirkt sich natürlich nur bei Modllen mit Antrieb aus).

    Auch wird nicht die ist-Geschwindigkeit gespeichert, sondern die soll-Geschwindigkeit.


    Und wenn ein Wendezug z.B. aus Richtung A eingefahren ist und bei der Ausfahrt Richtung A den Wiederherstellungspunkt überfährt, wird er wieder zurück in den Bahnhof geschickt.


    Gruß

    Michael

    EEP 6.1
    EEP 13.2 Expert(x64) Patch 2, EEP 14.1 Expert(x64), EEP 15.0 Expert(x64), Patch 3
    PC: AMD Phenom(tm) II X4 955 Processor 3.20 GHz 16,00 GB 64-Bit WIN10 Pro,1803.17134,472, Grafikkarte: AMD Radeon HD 6700
    Laptop: Intel(R) Core(TM) i7-6700HQ CPU 2.6GHz 2.59GHz 16,00 GB 64-Bit WIN10 Pro,1803.17134,472, Grafikkarte: Intel(R) HD Graphics 530, NVIDIA GeForce GTX 960M

    The post was edited 1 time, last by EmKo ().

  • klioli , Oliver,

    hat mich auf die Idee gebracht, die Geschwindigkeits- Tabellen, je nach
    Notwendigkeit auszugliedern, und in benötigter Vielzahl anzulegen.

    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.

    "mal was ganz Einfaches"

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

  • Hallo,

    habe mir "die Ohren gebrochen", es geht mit der Tabelle, aber nicht so wie ich es will.

    Der Zugname wird übergeben. durch Sound-KP mit Lua Funktion

    Speed(Zugname)

    Der Befehl

    hResult, Geschwindigkeit=EEPGetTrainSpeed(Zugname) --wird richtig ausgeführt als #103 101

    der nächte Befehl

    hResult, ID,Position,Richtung,System=EEPRollingstockGetTrack(Zugname) --- geht nicht, es erscheinen für alle Positionen 0 nicht nil

    setze ich den Namen ein , ohne #, wie unten
    hResult, ID,Position,Richtung,System=EEPRollingstockGetTrack("103 101") -- erhalte ich ture, und alle anderen Werte


    Ich finde den Fehler nicht


    Quote

    Hallo und guten Morgen, (wann schlaft Ihr eigentlich mal ?)

    Naturlich am Tag, denn nachts stört niemand


    Gute Nacht

    Myrdal

  • hResult, ID,Position,Richtung,System=EEPRollingstockGetTrack(Zugname) --- geht nicht ...

    ... weil diese Funktion die Position eines einzelnen Rollmaterials abfragt und nicht die eines Zuges.

    Du erkennst das an Rollingstock im Funktionsnamen.

    Funktionen, die einen Zugnamen haben wollen, haben stattdessen ein Train im Namen.


    Du musst also als Argument den Namen eines einzelnen Waggons oder einer Lok angeben. Der Waggon bzw. die Lok steht auf einem Gleisstück an einer exakten Stelle. Es zählt die Position des vorderen Radsatzes. Ein Zug kann über viele Gleisstücke ausgebreitet sein.


    "103 101" ist nicht der Name deiner Lok oder deines Waggons. Deshalb funktioniert der Name auch nicht.


    Mit EEPGetRollingstockItemName("Zugname", Nummer) kannst du die Namen der einzelnen Elemente im Zugverband ermitteln. Das erste Fahrzeug - für gewöhnlich die Lok - hat die Nummer 0


    P.S.:

    Ja, die letztgenannte Funktion hat Rollingstock im Namen, benötigt aber als Argument einen Zugnamen.

    "You remind me of a man" - "What man?" - "The man with the power"

    - Richard Nugent -

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

  • Hallo Michael,

    Und wenn ein Wendezug z.B. aus Richtung A eingefahren ist und bei der Ausfahrt Richtung A den Wiederherstellungspunkt überfährt, wird er wieder zurück in den Bahnhof geschickt.

    ja, das habe ich leider auch feststellen müssen. Jetzt muss ich halt die Geschwindigkeit auch über LUA regeln.


    Gruß Michael

    163-katalog-banner-jpg

    Hardwarekonfiguration:
    Laptop: Intel Core i3-3110M 2,4 GHz, 4GB RAM, Win7 64 bit, EEP 6.1/EEP 14.1 Expert Plugin 1

  • Guten Abend

    Dank Goetz!

    Der Zug mach was er soll.

    Jetzt muß ich mir nur noch etwas einfallen lassen, daß die Werte nicht beim Auschalten verlohren gehen ohne zu viele Slots zu verbrauchen.
    Mit KP- Fahrzeugfunktion hat EmKo recht, der Zug wird bei jedem Durchlauf langsamer,

    Gruß Myrdal

  • Hallo,


    ich hätte 2 Fragen an Parry36 zu seiner Function SetTrainSpeed in #10:

    1. Sowohl EEPGetTrainSpeed als auch EEPGetTrainRoute geben als ersten Rückgabewert an, ob der Zug exitiert und EEPSetTrainSpeed als einzigen.

    Warum fängst du das erst in der 2. Funktion ab und nicht schon bei der Speed-Bestimmung. Der Zugname kann sich dazwischen nicht mehr ändern und falls er falsch ist, dann benötigt man die Routenbestimmung auch nicht mehr.

    2. Warum gibst du als Rückgabewert deiner Funktion die Zugexistenz an bzw. warum gibst du überhaupt einen Rückgabewert an? Der KP kann doch damit nichts anfangen oder?


    ich hätte die Funktion folgendermaßen geschrieben:

    Bitte versteh mich nicht falsch. Ich möchte dich nicht kritisieren. Ich möchte es nur verstehen, falls ich Tomaten auf den Augen habe oder auf dem Schlauch stehe. :as_1:

    Fried-liche Grüße:aq_1:


    Laptop: i7-4710HQ 2,5GHz, 8GB RAM, Intel HDGraphics 4600, NVIDIA GeForce GTX860M, Windows 10 Pro 1803 64bit

    EEP: (7, 10, 12 alle Basic), 14.1 Expert Plugin1, 15 Expert Patch 3, ModellKatalog, TauschManager, Modell-Explorer


    Rentner sein ist wie Urlaub, nur 365 Tage im Jahr!