Jump to content

Einknopf-Steuerung von Depots


Empfohlene Beiträge

Hallo Derrick,

meine Beispielanlage "Zug per Namen finden" hat Ähnlichkeit mit dem, was du dir wünscht.

2030502506_ZugaufKnopfdruck.jpg.20b2592080be8d4a7dc3c451d577ae3e.jpg

Content-ID: A197B196-0219-4B99-A9E5-064A6B285503

Die Züge sind auf zwei Depots verteilt. Per Knopfdruck kannst du jeden der aufgeführten Züge aus seinem Depot holen.

Hilft dir das weiter?
Götz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Goetz,

ich wollte mir die zu diesem Bild gehörenden Einstellungen in der EV mal ansehen. Mit der ID-Nr. konnte ich mir leider nichts aufrufen. Bitte kurze Anleitung, wie ich vorzugehen habe. Danke.

Es ist nicht ganz das, was ich mir vorstelle. Ich habe meine Anlage möglichst unabhängig von bestimmten Zügen gesteuert. Wie Du weißt, arbeite ich auch mit zugartabhängigen Befehlen. Das könnte also ein Ansatz sein.

Mein Wunsch ist allerdings eher folgender: Eines meiner Depots liegt am Ende einer Tunnelstrecke im Tunnel. Wenn ich Züge dorthin verschieben oder herausholen will, ist das recht mühsam, weil ich das Depot schwer mit der Maus antippen kann. Daher stelle ich mir vor, daß ich die Funktion, mit der ich alle Komponenten der Anlage, auch die Depots, per Gizmo anzeigen lassen kann, mit einem Klick auf einen Taster/Schalter ausüben kann. Dann kann ich mir den Inhalt des Depots anschauen und gezielt einen bestimmten Zug herausholen.

Hast Du dazu noch eine Idee?

Gruß

Derrick

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 4 Minuten schrieb Derrick:

Bitte kurze Anleitung, wie ich vorzugehen habe.

Auf der Startseite wählst du bitte den Online Katalog und überträgst dann die Nummer aus dem Forum in das markierte Feld.

2058759033_AnlageperIDfinden.thumb.jpg.c634120bf158e74d79fd3a4605368049.jpg

 

Die weiteren Fragen besprechen wir, wenn du die Anlage und die EV darin genauer untersucht hast.

Viele Grüße
Götz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Goetz,

da es sich in meinem speziellen Bedarfsfall um ein Depot mit geringem Umsatz handelt, wäre eine Deinem Beispiel folgende Lösung vielleicht hilfreich. Allerdings müßtest Du dafür preisgeben, was sich hinter "Script ausführen" unter der Aktion "Schalter wird betätigt" im einzelnen verbirgt. Ich  verstehe wohl richtig, daß es sich hier um Befehle in der LUA-Sprache handelt, die ich nicht beherrsche und die ich wohl auch nicht mehr unbedingt erlernen will. Sicher läßt sich das aber auch über entsprechende Anweisungen in der Befehlssprache der EV darstellen. Damit wäre mir dann sicher gedient.

Für meinen näher beschriebenen Wunsch (OneKlick-Aufruf des Depots) siehst Du also keinen Weg?

Viele Grüße

Derrick

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Derrick:

Sicher läßt sich das aber auch über entsprechende Anweisungen in der Befehlssprache der EV darstellen.

Dann hätte ich für diesen Zweck kein Lua gewählt, Derrick.
Weil mir bewusst ist, dass Lua für viele eine Hürde ist, verwende ich wo möglich die grafische EV.

So bleibt mir leider nur, die Befehle in diesem kleinen Script ausführlich zu dokumentieren:

local Zugname = controller.link.text     -- lies den Zugnamen vom Textfeld, das mit dem Knopf verlinkt ist
local DepotTable1 = $("Depot 1").getEntriesByName(Zugname) -- erstelle eine Liste aller Plätze in Depot 1 mit dem Zug vom Textfeld
local DepotTable2 = $("Depot 2").getEntriesByName(Zugname) -- erstelle eine Liste aller Plätze in Depot 2 mit dem Zug vom Textfeld

if #DepotTable1 > 0 then                 -- falls die Liste DepotTable1 mindestens einen Eintrag enthält
  local number = DepotTable1[1]              -- nimm die Platznummer, die du an erster Stelle findest
  $("Depot 1"):release(number)               -- und entlasse den Zug auf diesem Platz aus dem Depot
elseif #DepotTable2 > 0 then             -- falls andernfalls die Liste DepotTable2 mindestens einen Eintrag enthält
  local number = DepotTable2[1]              -- nimm die Platznummer, die du an erster Stelle findest
  $("Depot 2"):release(number)               -- und entlasse den Zug auf diesem Platz aus dem Depot
end                                      -- feddich!

 

Viele Grüße
Götz

Bearbeitet von Goetz
Link zu diesem Kommentar
Auf anderen Seiten teilen

O je,

in welches Minenfeld bin ich da geraten!

Wenn ich also nur für eine bestimmte Zugart einen Knopf einsetzen wollte, müßte ich dieses "Latein" verwenden. Ich habe wenig Ahnung von Programmiersprachen. Ich kann mich zwar in einige der Befehle hineindenken, aber damit das - hoffentlich - funktioniert, müßte ich wohl den gesamten Script (natürlich ohne die roten Erläuterungen) kopieren und einsetzen.

Es ist nicht mein Ding, etwas nur abzukupfern, ohne es zu verstehen oder nachvollziehen zu können. Also lass ich das mit meinem Wunschknopf.

Trotzdem vielen Dank für Deine Mühe, Goetz, und viele Grüße

Derrick

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo @Derrick ,

Ich finde es ebenfalls gut, wie Du an die Sache herangehst. Trotzdem hier ein Vorschlag, wie man das "LUA-Zeug" minimieren und überwiegend mit der grafischen EV arbeiten kann. Schauen wir uns das Skript von @Goetz nochmal im Detail an:

Code_von_Goetz.thumb.JPG.ed17f6e3e95bac298c4e034329f96081.JPG

Götz hat das als LUA-Skript erstellt, weil einige Sachen in der Grafischen EV nicht gehen. Hier ist zunächst einmal die Nutzung lokaler Variablen (local ...), die nur innerhalb des Ereignisses "leben"(Im Skript rot unterstrichen). Hier könnte man statt dessen diese lokale Variablen an ein Objekt (Objektvariable) hängen. In meinem Beispiel habe ich diese beim Taster untergebracht:

VariableTaster.JPG.0bc4e1910d71a58d43df25511abfeb3f.JPG

Dann gibt es Methoden, die nur in LUA zur Verfügung stehen (blau unterstrichen): getEntriesByName und release(number). Um nicht das ganze Ereignis in LUA erstellen zu müssen, erstelle ich statt dessen Benutzerdefinierte Ereignisse, die genau nur den einen LUA-Befehl beinhalten. Die variablen Elemente für den Befehl werden als Parameter an die Funktion übergeben:

1642257521_Zugnummerabfragen.thumb.JPG.fe298e41df25bb3a3f947e1bc561fde2.JPG

1621149700_ZugausDepotstarten.thumb.JPG.9134e12a9aea8fcedadb4bf06a8cdd2a.JPG

Der letzte Punkt sind implizite Funktionen wie das Hashtag (schwarz unterstrichen), welches hier die Anzahl der Einträge in einer Tabelle liefert. Auch dies kann nicht in der grafischen EV genutzt werden. Aber hier hilft eine Alternative für die Bedingung: Wenn Einträge in der Tabelle vorhanden sind, dann muss es ein erstes Objekt geben. Ist die Tabelle leer, gibt es das nicht:

Hashtag-Alternative.JPG.93e2e9f8c4a3bd8309a05f679dda03b7.JPG

So, jetzt kann man das Tastenereignis komplett mit der grafischen EV gestalten:

2099671352_Depotschalterschaltet.thumb.JPG.19e3d963d418062a8bd19281aa3ab3e3.JPG

Die Nutzung der Benuterdefinierten Ereignisse fügt sich harmonisch ein. Wichtig dabei ist, dass diese Ereignisse "sprechende" Namen erhalten, damit man auch nach einem Jahr noch weiß, wozu diese dienen. Alternativ wäre es auch möglich, statt der Benutzerdefinierten Ereignisse eine Skript-Position einzufügen. Ich persönlich mache das nicht gerne, da es etwas mühsamer ist, den Inhalt der einzelnen Skriptpositionen einzusehen. Außerdem kann ich die Benutzerdefinierten Ereignisse auch bei anderen Ereignissen nutzen.

So, viel erzählt. Ich wollte Dir einfach nur zeigen, wie man LUA in der EV auf das allernötigste beschränken kann. Vielleicht hilft es Dir etwas.

Grüße, Wolfgang

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Wolfgang,

das sieht ja alles sehr interessant aus. Du wirst aber verstehen, daß ich darüber erst einmal ein Weilchen "brüten" muß. Dann Experimente und dann ... vielleicht das gewünschte oder annäherndes Resultat.

Erst einmal schönen Dank für Deine Bemühungen. Und ich melde mich sicher, wenn ich mit meinen "Denkprozessen" durch bin.

Viele Grüße

Derrick

Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...