Compare commits
No commits in common. "5a4e5402c925b9252d6402f1793a3655ff04a343" and "eec84009406902c9118790a5b94b4d7f83546bdd" have entirely different histories.
5a4e5402c9
...
eec8400940
2 changed files with 17 additions and 40 deletions
|
@ -1,8 +1,3 @@
|
||||||
function ZuggreiferMelden(...)
|
|
||||||
local Zeitstempel = string.format("%02d:%02d:%02d", EEPTimeH, EEPTimeM, EEPTimeS)
|
|
||||||
print(Zeitstempel," Zuggreifer: ",...)
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Erwartet im Anlagenscript definierte Zuggreifer-Tabelle:
|
-- Erwartet im Anlagenscript definierte Zuggreifer-Tabelle:
|
||||||
-- Schluessel ist die Signal-ID
|
-- Schluessel ist die Signal-ID
|
||||||
-- Wert ist eine Liste von Gleisen vor dem Signal
|
-- Wert ist eine Liste von Gleisen vor dem Signal
|
||||||
|
@ -23,13 +18,13 @@ function ZuggreiferInstallieren(Optionen)
|
||||||
if Optionen == nil then Optionen={} end
|
if Optionen == nil then Optionen={} end
|
||||||
for Signal, Schienen in pairs(Zuggreifer) do
|
for Signal, Schienen in pairs(Zuggreifer) do
|
||||||
if EEPGetSignal(Signal) == 0 then
|
if EEPGetSignal(Signal) == 0 then
|
||||||
ZuggreiferMelden("finde Signal "..Signal.." nicht")
|
print("Zuggreifer findet Signal "..Signal.." nicht")
|
||||||
end
|
end
|
||||||
-- Schienen fuer die Gleisbesetztabfrage registrieren
|
-- Schienen fuer die Gleisbesetztabfrage registrieren
|
||||||
for i=1,#Schienen do
|
for i=1,#Schienen do
|
||||||
local SchienenID = math.abs(Schienen[i])
|
local SchienenID = math.abs(Schienen[i])
|
||||||
if not EEPRegisterRailTrack(SchienenID) then
|
if not EEPRegisterRailTrack(SchienenID) then
|
||||||
ZuggreiferMelden("Signal "..Signal.." findet Gleis "..SchienenID.." nicht")
|
print("Zuggreifer "..Signal.." findet Gleis "..SchienenID.." nicht")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
-- Vorherigen Callback retten
|
-- Vorherigen Callback retten
|
||||||
|
@ -49,13 +44,12 @@ function ZuggreiferInstallieren(Optionen)
|
||||||
-- Nix tun, wenn das Signal auf Halt gestellt wurde
|
-- Nix tun, wenn das Signal auf Halt gestellt wurde
|
||||||
local Fahrt, V_max = leseSignal(Signal)
|
local Fahrt, V_max = leseSignal(Signal)
|
||||||
if not Fahrt then return end
|
if not Fahrt then return end
|
||||||
if type(V_max) ~= "number" then V_max = Optionen.V end
|
|
||||||
if type(V_max) ~= "number" then V_max = 40 end
|
if type(V_max) ~= "number" then V_max = 40 end
|
||||||
-- Zug ermitteln
|
-- Zug ermitteln
|
||||||
local Zugname, Richtung = ZuggreiferAbfragen(Zuggreifer[Signal])
|
local Zugname, Richtung = ZuggreiferAbfragen(Zuggreifer[Signal])
|
||||||
-- Erfolg melden
|
-- Erfolg melden
|
||||||
if Optionen.Melden then
|
if Optionen.Melden then
|
||||||
ZuggreiferMelden("Signal ",Signal," hat ",Zugname and Zugname or "ins Leere"," gegriffen")
|
print("Signal ",Signal," hat ",Zugname and Zugname or "ins Leere"," gegriffen")
|
||||||
end
|
end
|
||||||
-- Abfahrbefehl erteilen
|
-- Abfahrbefehl erteilen
|
||||||
if Zugname then
|
if Zugname then
|
||||||
|
@ -101,7 +95,7 @@ function ZuggreiferAbfragen(Schienen)
|
||||||
-- Richtung des Fahrzeugs im Zug ermitteln, benoetigt EEP 15 Plugin 1
|
-- Richtung des Fahrzeugs im Zug ermitteln, benoetigt EEP 15 Plugin 1
|
||||||
local FahrzeugVorwaerts = true
|
local FahrzeugVorwaerts = true
|
||||||
if type(EEPRollingstockGetOrientation) == "function" then
|
if type(EEPRollingstockGetOrientation) == "function" then
|
||||||
_, FahrzeugVorwaerts = EEPRollingstockGetOrientation(FahrzeugName)
|
local ok, FahrzeugVorwaerts = EEPRollingstockGetOrientation(FahrzeugName)
|
||||||
end
|
end
|
||||||
-- Richtung zusammenmultiplizieren und mit Zugnamen zurueckgeben
|
-- Richtung zusammenmultiplizieren und mit Zugnamen zurueckgeben
|
||||||
return Zugname, SchienenMap[Gleis] * ( FahrzeugRichtung > 0 and 1 or -1) * (FahrzeugVorwaerts and 1 or -1)
|
return Zugname, SchienenMap[Gleis] * ( FahrzeugRichtung > 0 and 1 or -1) * (FahrzeugVorwaerts and 1 or -1)
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
require("Serializer")
|
require("Serializer")
|
||||||
|
|
||||||
Zuglenkung_Slot = Zuglenkung_Slot or 991
|
Zuglenkung_Slot = 991
|
||||||
Zuglenkung_Auftreage = ladeTabelle(Zuglenkung_Slot)
|
Zuglenkung_Auftreage = ladeTabelle(Zuglenkung_Slot)
|
||||||
|
|
||||||
-- Extrafunktion, damit der User das ueberschreiben kann
|
|
||||||
function ZuglenkungMelden(...)
|
|
||||||
local Zeitstempel = string.format("%02d:%02d:%02d", EEPTimeH, EEPTimeM, EEPTimeS)
|
|
||||||
print(Zeitstempel," Zuglenkung: ",...)
|
|
||||||
end
|
|
||||||
|
|
||||||
function Zuglenkung(...)
|
function Zuglenkung(...)
|
||||||
local Weg = {...}
|
local Weg = {...}
|
||||||
if #Weg % 2 == 1 then
|
if #Weg % 2 == 1 then
|
||||||
|
@ -17,49 +11,38 @@ function Zuglenkung(...)
|
||||||
end
|
end
|
||||||
local Auftrag=nil
|
local Auftrag=nil
|
||||||
for i=#Weg-1,1,-2 do
|
for i=#Weg-1,1,-2 do
|
||||||
Auftrag={Weg[i],Weg[i+1],0,Auftrag}
|
Auftrag={Weg[i],Weg[i+1],Auftrag,0}
|
||||||
end
|
end
|
||||||
ZuglenkungAuftrag(Auftrag)
|
Zuglenkung_Auftreage[Auftrag[1]]=Auftrag
|
||||||
speicherTabelle(Zuglenkung_Slot, Zuglenkung_Auftreage)
|
speicherTabelle(Zuglenkung_Slot, Zuglenkung_Auftreage)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ZuglenkungAuftrag(Auftrag)
|
function Zuglenkung_Main(Optionen)
|
||||||
if Zuglenkung_Auftreage[Auftrag[1]] ~= nil then
|
|
||||||
ZuglenkungMelden("Stellauftrag ", Auftrag[1], " verworfen")
|
|
||||||
end
|
|
||||||
Zuglenkung_Auftreage[Auftrag[1]]=Auftrag
|
|
||||||
if type(Auftrag[2]) == "number" then
|
|
||||||
ZuglenkungMelden("Anmeldung ",string.format("FS %04d-%02d",Auftrag[1],Auftrag[2]))
|
|
||||||
else
|
|
||||||
ZuglenkungMelden("Anmeldung ",string.format("FS %04d",Auftrag[1])," zu ",__tostring(Auftrag[2]))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function ZuglenkungMain()
|
|
||||||
local ZuStellen={}
|
local ZuStellen={}
|
||||||
for k, Auftrag in pairs(Zuglenkung_Auftreage) do
|
for k, Auftrag in pairs(Zuglenkung_Auftreage) do
|
||||||
local Stellung = EEPGetSignal(Auftrag[1])
|
local Stellung = EEPGetSignal(Auftrag[1])
|
||||||
|
|
||||||
-- Rumheulen, falls es unser FSignal nicht gibt
|
-- Rumheulen, falls es unser FSignal nicht gibt
|
||||||
if Stellung == 0 then
|
if Stellung == 0 then
|
||||||
ZuglenkungMelden("FSignal ", Auftrag[1], " nicht gefunden")
|
print("Zuglenkung verworfen: FSignal ",Auftrag[1]," nicht gefunden")
|
||||||
Zuglenkung_Auftreage[k]=nil
|
Zuglenkung_Auftreage[k]=nil
|
||||||
|
|
||||||
-- Merken, das wir das FS-Signal schonmal aufgeloest gesehen haben
|
-- Merken, das wir das FS-Signal schonmal aufgeloest gesehen haben
|
||||||
elseif Stellung == 1 then
|
elseif Stellung == 1 then
|
||||||
Auftrag[3]=1
|
Auftrag[4]=1
|
||||||
local Ziel = Auftrag[2]
|
local Ziel = Auftrag[2]
|
||||||
if type(Ziel) == "number" then Ziel={Ziel} end
|
if type(Ziel) == "number" then Ziel={Ziel} end
|
||||||
table.insert(ZuStellen, {Auftrag[1], Ziel[math.random(#Ziel)]})
|
table.insert(ZuStellen, {Auftrag[1], Ziel[math.random(#Ziel)]})
|
||||||
|
|
||||||
-- Stellung > 1 und wir haben es vorher auf 1 gesehen -> wir waren das
|
-- Stellung > 1 und wir haben es vorher auf 1 gesehen -> wir waren das
|
||||||
elseif Auftrag[3] == 1 then
|
elseif Auftrag[4] == 1 then
|
||||||
ZuglenkungMelden(string.format("FS %04d-%02d",Auftrag[1],Stellung-1)," geschaltet")
|
if Optionen.Meldung=true then
|
||||||
Auftrag = Auftrag[4]
|
print("Zuglenkung: ", Auftrag[1], " auf ", Stellung, " gestellt")
|
||||||
|
end
|
||||||
|
Auftrag = Auftrag[3]
|
||||||
Zuglenkung_Auftreage[k]=nil
|
Zuglenkung_Auftreage[k]=nil
|
||||||
if Auftrag then
|
if Auftrag then
|
||||||
ZuglenkungAuftrag(Auftrag)
|
Zuglenkung_Auftreage[Auftrag[1]]=Auftrag
|
||||||
return
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -72,7 +55,7 @@ function ZuglenkungMain()
|
||||||
|
|
||||||
-- Stellversuche durchfuehren
|
-- Stellversuche durchfuehren
|
||||||
for i=1, #ZuStellen do
|
for i=1, #ZuStellen do
|
||||||
EEPSetSignal(ZuStellen[i][1], ZuStellen[i][2]+1, 1)
|
EEPSetSignal(ZuStellen[i][1], ZuStellen[i][2])
|
||||||
end
|
end
|
||||||
|
|
||||||
speicherTabelle(Zuglenkung_Slot, Zuglenkung_Auftreage)
|
speicherTabelle(Zuglenkung_Slot, Zuglenkung_Auftreage)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue