Anzahl der Züge im Depot und die Funktion EEPGetTrainyardItemsCount

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.
  • Ich denke das Fried mir das verzeiht.

    Hab heute meinen großzügigen Tag. :an_1:

    Hallo Holger,

    ich glaube nicht, dass EEPGetTrainyardItemsCount fehlerhaft arbeitet. Der Fehler liegt meiner Meinung nach darin, dass sich Zugnamen auch bei der Einstellung "Zugname nicht ändern" manchmal ändern. Oder ich hab die Logik darin noch nicht wirklich verinnerlicht.

    Es sind 3 Züge im Depot: Zug1, Zug2 und Zug3. Angenommen Zug1 fährt aus und wird damit im Depot auf "in Fahrt" gestellt. Unterwegs ändert der Zug seinen Namen in Zug1;001. Wenn nun nicht, wie Botho vorschlägt, wieder in Zug1 umbenannt wird (hierzu später noch eine Anmerkung), dann fährt jetzt ein Zug1;001 ins Depot, der vorher noch nie im Depot war. Also kann sich auch nicht "abmelden". Ihn gab's ja noch nicht. Damit müsste es jetzt 4 Züge im Depot geben, wobei Zug1 weiter an 1.Stelle auf "in Fahrt" gelistet ist und Zug1;001 wartend an 4. Stelle stehen müsste. Ausfahren tut ein Zug erst dann, wenn der Zufallsgenerator eine 2, 3 oder 4 würfelt.

    Das wäre für mich logisch.

    Jetzt kommt Radio Eriwan ins Spiel. Ich weiß, dass EEP die Züge nicht nach ihrem Namen sondern (zumindest teilweise) nach einer internen ID handelt, mit der der nach außen sichtbare Name irgendwie verbandelt ist.

    ABER ich weiß nicht, ob sich bei der Namensumbenennung trotz "Zugname nicht ändern" auch die interne Zug_ID ändert? Und ob für die Abmeldung der Name oder die ID herangezogen wird?

    Um etwas Licht ins Dunkle zu bringen, möchte ich dir 2 Sachen vorschlagen:

    Lass dir vor der Zufallszugauswahl mal alle Züge und ihren Status ausgeben.

    Lua
    function AusfahrtDepot1()
        local AnzZuegeDepot = EEPGetTrainyardItemsCount(1)
        print("Zuege im Depot ", AnzZuegeDepot)
        for n = 1, AnzZuegeDepot do
            local Name = EEPGetTrainyardItemName(1, n)
            local Status = EEPGetTrainyardItemStatus(1, "", n)
            print(Name, ": ",Status)
        end
        Ausfahrt = false
        -- weiter wie oben

    10 Sekunden als Verzögerungszeit im KP zur Zugausfahrt sind für einen Computer eine lange Zeit. Aber je nach Geschwindigkeit und Länge eventuell nicht für einen Zug. um beim Start der Funktion auch vollständig im Depot zu sein. Nur um das mit Sicherheit auszuschließen, setze bitte den KP auf "Zugschluss", wenn du das nicht eh schon getan hast.

    Für das Ziel einen zufälligen Zug aus einem Depot zu holen, dürfte es letztlich egal sein, wieviel Züge im Depot gelistet sind. Hauptsache es ist mindestens 1 "wartend" im Depot.

    Diese Absicherung fehlt noch in deinem Skript in #19. repeat kann leicht bis in alle Ewiigkeit laufen.

    Ich persönlich würde in der Funktion AusfahrtDepot erst eine leere Tabelle wartendeZüge{} anlegen. Darin dann in einer Schleife über gelisteten die Position der "wartenden" Züge eintragen. Wenn Anzahl > 0, würde ich dann daraus einen per Zufall auswählen.

    Fried-liche Grüße:aq_1:

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

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Gute

    setze bitte den KP auf "Zugschluss", wenn du das nicht eh schon getan hast.

    wobei dann aber auch sichergestellt sein muss, dass der Zugschluss auch noch über den KP fährt. Denn wenn ein Zug am Depot-Einfahrt-KP mit der Zugspitze ankommt dann verschwindet er in diesem Augenblick von der Strecke und der Zugschluss würde nie den KP auslösen. Also wenn Zugschluss dann so weit vor dem Einfahrt-KP dass der Zug den KP noch komplett überfahren kann.

    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

  • Danke Dieter DH1 ,

    hab ich in dem Moment nicht dran gedacht.

    Holger Mover (HG3)

    ich ziehe meinen 2. Vorschlag zurück. Der bringt nichts. Im Gegenteil, er kann in die Hose gehen.

    Fried-liche Grüße:aq_1:

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

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Hallo,

    ich würde nach dem Ankuppeln im Bahnhof dem Zug auch wieder den ursprünglichen Namen (dieser könnte bei der Einfahrt im ImmoTag oder Dataslot gespeichert werden, damit der auch bei einem Anlagen-Neustart nicht verloren geht), geben.

    Und über die "Namens-Prüfschleife" von Fried kann man prima sehen welche Züge im Depot angemeldet sind und welchen Status die haben.

    Ein Problem bei KP mit Zeitverzögerung, was bei den aktuellen Tests sicherlich noch keines ist, ist, dass während der Wartezeit der KP nicht erneut durch einen weiteren Zug ausgelöst wird.

    Denn sonst geht die vorhergehende Auslösung verloren.

    Jürgen

    EEP: 12.1, 13.2, 14.1, 15.1, 16.4 (z.Zt. installiert aber nur für Tests im Einsatz)

    keinerlei externe Zusatztools und manuell manipulierte Anlagendateien

    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

    2 Mal editiert, zuletzt von JuergenSchm (12. Februar 2023 um 21:10)

  • Man könnte, auch den Zugname vor der Einfahrt in den Endbahnhof in einen Slot oder als Tag speichern und bei der Rückfahrt wieder ersetzten.

    schrieb ich doch :ae_1::af_1:

    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

  • Sorry Dieter ( DH1 ),

    aber gute Sachen kann man auch nochmal wiederholen. :ae_1: :af_1:

    Jürgen

    EEP: 12.1, 13.2, 14.1, 15.1, 16.4 (z.Zt. installiert aber nur für Tests im Einsatz)

    keinerlei externe Zusatztools und manuell manipulierte Anlagendateien

    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 Fried , DH1 , JuergenSchm ,

    erst mal Danke für die Hilfe.

    Also jetzt muss ich erst mal alle Punkte, welche ihr angeführt habt nach und nach abarbeiten. Hoffentlich vergesse ich keinen.

    Ich hatte nach dem ersten Wirrwarr die Testanlage noch mal neu erstellt. Da Zugname beibehalten irgendwann eh nicht klappt, hatte ich es bei der neuen Anlage weggelassen. Dabei habe ich Dieters Vorschlag aus Beitrag #4 (das Zitat hat er ja kurz vorher noch mal wiederholt:aa_1:) gleich mit umgesetzt. Der alte Name wird also vor Einfahrt in den Bahnhof gespeichert und bei der Ausfahrt dem Zug wieder zugewiesen. Funktioniert zuverlässig.

    ich glaube nicht, dass EEPGetTrainyardItemsCount fehlerhaft arbeitet.

    Ich mittlerweile auch nicht mehr. Es ist die Depotverwaltung, welche da etwas macht was ich mir nicht erklären kann. Ich habe deine "Namens-Prüfschleife" so wie du es angeführt hast reingenommen. Ich zeige mal das Ereignisfenster.


    Der 4. Zug ist der nil:-Zug mit dem Status 0 (also in Fahrt ). Das ist das Glück. Da der Befehl der den Zug rausschickt nur dann ausgeführt wird, wenn der Status wartend ist, kommt es auch zu keiner Fehlermeldung und dadurch funktioniert es trotzdem. Wenn der einmal drin ist ändert sich dann auch nichts mehr. Es kommt dann auch nichts mehr dazu (zumindest so wie die Anlage im Moment ist). Da ist es egal wie oft ein Zug rausgeschickt wird und am Bahnhof Kopf macht.

    Fried

    Du hast recht. Ich muss noch eine Absicherung machen, falls kein Zug wartend im Depot ist. Im Moment kann das zwar nicht passieren, aber für zukünftiges wäre es wichtig.

    Gruß Holger (HG3)

    Desktop: EEP 6 - 16 (installiert 14 bis 17) aktuell 17.2 + Plugin 1 u. 2, HN14 und 16, Intel i7 3770 3,5 GHz, 24 GB RAM, NVIDIA GeForce GTX 1060 6GB Grafikspeicher, Windows 10

  • Ich habe gerade mal rumprobiert und kann bestätigen, "dass da was faul ist".

    Wenn ein Zug, der im Depot gelistet ist, "verloren geht", weil ein anderer Zug daran ankuppelt, wird er bei EEPGetTrainyardItemsCount weiterhin mitgezählt, aber EEPGetTrainyardItemName gibt an dieser Stelle (die nicht die letzte sein muss!) nil zurück. Meldet sich nun der neu zusammengekuppelte Zug im Depot an, hat man einen zusätzlichen Zug im Depot.

    Ich spekuliere mal, dass im Depot die Zug-ID gespeichert bleibt, dann aber keinen dazu passenden Zug mehr "findet". Wenn man später nochmal einen Zug auseinanderkuppelt, kann es gut sein, dass der abgekuppelte Zugteil die nun "freie" Zug-ID wieder bekommt und somit automatisch wieder im Depot gelistet ist. Deshalb bleibt es auch bei wiederholten Umsetzvorgängen bei einem einzigen "Phantomzug" im Depot.

    Übrigens kann auch ein neu eingesetztes Fahrzeug die freie Zug-ID bekommen. Dann wird es ohne weiteres Zutun ebenfalls dem virtuellen Depot zugeordnet.

    Ich weiß nicht, ob diese Erkenntnis Holger weiterbringt. Aber in meinen Augen ist das auf jeden Fall ein Programmfehler.

    Viele Grüße

    Benny

  • Benny (BH2)

    Ich weiß nicht, ob diese Erkenntnis Holger weiterbringt. Aber in meinen Augen ist das auf jeden Fall ein Programmfehler.

    Ich denke auch, dass da ein Programmfehler vorliegt. Solange der Geisterzug mir nicht die Ausführung der Lua-Steuerung lahmlegt kann ich eigentlich damit leben (wäre der Fall wenn er den Status wartend hätte). Interessant wird die Geschichte eigentlich erst wenn noch ein 2. Depot ins Spiel kommt und die Züge von einem ins andere Depot fahren. Das Szenario werde ich demnächst mit einbauen. Im Moment habe ich das Szenario Lager -oder Werksanschluss in Arbeit. Danach soll noch ein weiterer Abzweig dazukommen, der über einen kleinen Durchgangsbahnhof zu einem 2. Depot führt. Mal sehen wie es dann aussieht.

    Es hat mir zumindest geholfen, dass Ganze etwas zu verstehen.

    Gruß Holger (HG3)

    Desktop: EEP 6 - 16 (installiert 14 bis 17) aktuell 17.2 + Plugin 1 u. 2, HN14 und 16, Intel i7 3770 3,5 GHz, 24 GB RAM, NVIDIA GeForce GTX 1060 6GB Grafikspeicher, Windows 10

    Einmal editiert, zuletzt von Mover (HG3) (12. Februar 2023 um 21:22)

  • Ich bin bei der Programmierung vom Depotinventar im Tauschmanager auch auf verwaiste Züge gestoßen und konnte mir nicht vorstellen, woher die kommen. Jetzt weiß ich es.

    Ich habe damals im Tauaschmanager unter Anlagendatei korrigieren auch die Möglichkeit implementiert, solche verwaisten Einträge zu löschen.

    Gruß Holger

    Spoiler anzeigen

    Mein Hauptrechner Marke Eigenbau:

    Hardware: Mainboard ASUS Crosshair Hero VI, CPU-Typ AMD Ryzen 9 5950X 16-Core Processor, Speicher 64 GB DDR4-RAM, Grafikkarte ASUS DUAL Geforce RTX 12GB GDDR6-RAM, 2 SSD, 4 Festplatten Gesamtkapazität 30 TB

    Betriebssystem: Windows 11 Pro Version 22H2

    EEP-Software: EEP 6, EEP 14 bis EEP 17.2 Plugin 1, 2, Modellkatalog, Hugo, Höhengenerator, Tauschmanager

    Mein Youtube-Kanal

    Hier erhaltet ihr die aktuelle Demoversion Tauschmanager:af_1:

  • Hallo Holger, HStoni54

    interessant zu wissen. Ich glaube auch die Stelle zu wissen, wo das in der Anlagendatei drin steht. Ich hatte nämlich aus versehen statt P für Pause auf speichern geklickt. Warum kann ich nicht sagen, es muss ein Reflex gewesen sein. Das war zu einem Moment, als da der 4. Zug da war. Ich hatte dann die Anlage neu geöffnet und es war dieser 4. Zug in der Anlagendatei mit gespeichert worden. Eigentlich wollte ich den Zug dann einfach in der Anlagendatei löschen, hab es aber dann sein lassen, da ich nicht wusste was die Einträge bewirken. Zumindest weiß ich jetzt womit ich das hinbekomme ohne Mist zu machen. :be_1:

    Gruß Holger (HG3)

    Desktop: EEP 6 - 16 (installiert 14 bis 17) aktuell 17.2 + Plugin 1 u. 2, HN14 und 16, Intel i7 3770 3,5 GHz, 24 GB RAM, NVIDIA GeForce GTX 1060 6GB Grafikspeicher, Windows 10

  • Hallo an alle hier Teilnehmenden!

    Ich habe das mal in dem internen Fehlermeldungsbereich weitergegeben.

    Da Benny (BH2) den Fehler in #28 so schön zusammengefasst hat, habe ich ihn dazu zitiert. Ich hätte es natürlich auch mit eigenen Worten beschreiben können, aber so war es einfacher für mich. Benny, ich hoffe, du bist mir deswegen nicht böse.

    Fried-liche Grüße:aq_1:

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

    Wen es interessiert ...

    PC: AMD Ryzen 5 5600X 6x3,7GHz; 32GB RAM; GeForce RTX3060XC 12GB; 2x 1TB SSD; Windows10Pro 64bit;

    Monitore: 2560x1440 (ASUS) + 1920x1080 (alt)

    Laptop: i7-4710HQ 2,5GHz; 8GB RAM; NVIDIA GeForce GTX860M; 125GB SSD + 1TB HDD; W10Pro64bit

    EEP: Aktuell 15.1.2 Plug-in 1, 17.3.0 Plug-in 1, 2, 3; HN17; AnlVerb17; MK; ME; ZE; TM; ...

  • Fried

    Besser hättest du es auch nicht machen können. Benny (BH2) war nur etwas schneller beim Thema erstellen. :bd_1: Den Ruhm kannst du aber selbst einstreichen, du hast die erkenntnisreichen Programmzeilen gestellt. :be_1:

    Gruß Holger (HG3)

    Desktop: EEP 6 - 16 (installiert 14 bis 17) aktuell 17.2 + Plugin 1 u. 2, HN14 und 16, Intel i7 3770 3,5 GHz, 24 GB RAM, NVIDIA GeForce GTX 1060 6GB Grafikspeicher, Windows 10