Geschrieben Montag um 16:11 Uhr5 Ta Hallo Freunde, mein Ziel ist, meine Anlage "zum Teil" automatisch durch Fahrpläne zu steuern. D.h. zu bestimmten Zeiten werden bestimmte Fahrstrassen geschaltet. Wie das im einzelnen geht, habe ich harausgefunden. Was ich nicht verstehe, wie das mit Hilfe von Listen geht. Die Liste sollte so aussehen. Spalte 1 Uhrzeit, Spalte 2 Fahrstrasse(n). Kann mir da jemand helfen?
Geschrieben Dienstag um 20:29 Uhr3 Ta Hallo, Am 21.7.2025 um 18:11 schrieb galuschka.karl: Wie das im einzelnen geht, habe ich harausgefunden. Was ich nicht verstehe, wie das mit Hilfe von Listen geht. Die Liste sollte so aussehen. Spalte 1 Uhrzeit, Spalte 2 Fahrstrasse(n). Kann mir da jemand helfen? ... ich habe ein Beispiel gebaut... Der Fahrplan ist folgendermaßen aufgebaut... ... der Fahrplan ist eine Liste... ... jedes Element ist wiederum eine Liste... ... das erste Element dieser Liste ist die Abfahrtszeit... ... das 2. Element dieser Liste sind die Fahrstraße(n) als Liste... ... mit einer Fahrstraße... ... mit zwei Fahrstraßen... Mit dem Ereignis "Zeitpunkt erreicht" -> "jede Minute" wird abgefragt, ob eine Fahrplanzeit erreicht wurde... ... das ganze ist in lua, da die grafische EV nur die Bedingung "Zeitpunkt überschritten" kennt und ich nicht weiß, wie man damit einen einen genauen Vergleich auf nur eine bestimmte Zeit machen kann... --[[ Ungenauigkeiten von Zeitsekunden eliminieren --]] $("Textfeld 1").text=layout.time for i,v in ipairs($("Ereignisse").variables.Fahrplan) do local t=toTime(v[1]) -- Abfahrtszeit if layout.time >= t and layout.time < (t+toTime("00:01")) then --* local text="" for k,w in ipairs(v[2]) do -- Fahrstraßen text=text .. w.name .. " aktiviert " .. tostring(layout.time).."\n" w.active=true end $("Textfeld 2").text=text end end Hier noch die Demoanlage... Zeitsteuerung 02a.mbp Da der Fahrplan zwischen 12:00 und 13:00 abläuft, kann mit dem Taster die Zeit auf 12:00 zurückgesetzt werden (Simulationszeit auf "Virtuell" auf 20 Minuten / 24 Stunden gesetzt) Gruß EASY Bearbeitet Dienstag um 20:31 Uhr3 Ta von EASY
Geschrieben vor 7 Stunden7 Std Hallo,da mir das Ausfüllen der Fahrplan - Variablen etwas aufwendig erschien (viele Klicks für einen Eintrag) habe ich für die Vereinfachung der Eingabe eine Ereignisauswertung geschrieben, die den Fahrplan aus einem Textfeld ("TF Fahrplan") ausliest... (betätigen des Tasters "FP auslesen")P.S. die Modulvariable "Fahrplan" für den Fahrplan wird automatisch angelegt.-[[ - Fahrplan in ein Textfeld eintragen Formatierung Textzeile: HH:MM; Auflistung Fahrstraße(n mit , getrennt) z.B. 08:45; Fahrstraße 1 10:03; Fahrstraße 2, Fahrstraße 3 11:56; Fahrstraße 4 (Führende 0 in der Zeit kann auch weggelassen werden)) --* ={""} Einträge sind eine Liste (nicht ={} -> wird zu Tabelle! -> Adressierung über Name ["x"] ungünstig!) --* -> z.B.print($("Ereignisse").variables.Fahrplan[2]["2"][1]) --* [Liste][Tabelle][Liste] --* einfacher -> z.B.print($("Ereignisse").variables.Fahrplan[2][2][1]) --* [Liste][Liste][Liste] --** Fahrstraßen mit gleichem Namen werden einzeln aufgenommen --*** Schreibweise $("Ereignisse").variables.Fahrplan geht nur, wenn Name ohne Leerzeichen! --*** -> sonst z.B. $("Ereignisse").variables["Fahrplan 01"] --]] $("Ereignisse").variables.Fahrplan={""} --*** Liste anlegen (--*) local text = $("TF Fahrplan").text local lines = {} -- Zeilen text:gsub("[^\n]+",function(c) table.insert(lines,c) end) -- Text in Zeilen auflösen local zeit="" -- Abfahrtszeit local fs="" -- Fahrstraße(n) aus Text local n=0 -- Hilfsvariable local tf={} -- Hilfsliste Fahrstraßennamen local te={} -- Hilfsliste Fahrstraßen for i, line in ipairs(lines) do line:gsub("[^;]+",function(c) zeit=c end,1) -- Zeit extrahieren fs,n=line:gsub(zeit..";","") -- Zeit in Linie Löschen tf={} -- Hilfsliste leeren te={} -- Fahrstraßen extrahieren, Leerstellen vor dem Namen löschen fs:gsub("[^,]+",function(c,a,b) a,b=string.gsub(c, "^%s+", "") table.insert(tf,a) end) $("Ereignisse").variables.Fahrplan[i]={""} --* for i,v in ipairs(tf) do -- Liste Fahrstraßennamen umwandeln in... for k,w in ipairs(layout:getRoutesByName(v)) do --** Liste mit Fahrstraßen table.insert(te,w) end end $("Ereignisse").variables.Fahrplan[i][1]=zeit --*** Abfahrtszeit eintragen $("Ereignisse").variables.Fahrplan[i][2]=te --*** Fahrstraßen eintragen end... in dem Beispiel ist (zu Demonstrationszwecken) noch der Fall mit berücksichtigt, daß 2 Fahrstraßen den gleichen Namen haben.Zur prinzipiellen Funktionsweise hat sich sonst nichts gegenüber dem vorherigen Beispiel geändert.... zum Ausprobieren und Spielen noch das Projekt...Zeitsteuerung 02b.mbpGrußEASY Bearbeitet vor 7 Stunden7 Std von EASY
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren