Zuggreifer: Fixes und Melden-Funktion

This commit is contained in:
Nero 2022-07-03 12:59:27 +00:00
parent 365da6cd9b
commit 5a4e5402c9

View File

@ -1,3 +1,8 @@
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
@ -18,13 +23,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
print("Zuggreifer findet Signal "..Signal.." nicht") ZuggreiferMelden("finde 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
print("Zuggreifer "..Signal.." findet Gleis "..SchienenID.." nicht") ZuggreiferMelden("Signal "..Signal.." findet Gleis "..SchienenID.." nicht")
end end
end end
-- Vorherigen Callback retten -- Vorherigen Callback retten
@ -44,12 +49,13 @@ 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
print("Signal ",Signal," hat ",Zugname and Zugname or "ins Leere"," gegriffen") ZuggreiferMelden("Signal ",Signal," hat ",Zugname and Zugname or "ins Leere"," gegriffen")
end end
-- Abfahrbefehl erteilen -- Abfahrbefehl erteilen
if Zugname then if Zugname then
@ -95,7 +101,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
local ok, FahrzeugVorwaerts = EEPRollingstockGetOrientation(FahrzeugName) _, 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)