====== Digilines Train Information System ======
===== Introduction =====
Passengers would like to know information about approaching trains. This system gives information using digilines.
This is useful for stations with different, untimetabled services on platforms. The passangers know the time left until the next service.
===== Explanation =====
This code waits for a train to roll over the rail, and then calculates various variables:
^ Variable ^ Calculation ^ Notes ^
| Time left | Distance/speed | Assumes a constant speed, which is often not the case when decelerating for a station |
| Time to minutes | time/60 | Only used when time left exceeds 59 seconds |
After all calculations are completed, the track then sends a digilines message with the information formatted:
Line
In(very approximately)
x seconds
100 metres away
Of 4 carriages
===== Code =====
-- Note: this code assumes a constant speed, which helps avoid complexity. The times will be shorter then the real time.
distance = 0 -- Whatever your distance is
stopping_lines = {} -- Give a list of lines that stop (empty for none)
channel = "1" -- Final channel for the message (defaults to 1)
prefix = "seconds"
-- DETECTION AND ACTING
if event.type == "train" then
-- CALCULATION
time = distance/atc_speed -- Use our delicate formula to get time, in seconds. Of course, on approach, we will be slowing down.
if time > 59 then
time = time/60
prefix = "minutes"
end
-- OUTPUT
message = get_line() .. "\n" .. "In (very approximately)\n" .. time .. " " .. prefix .. ",\n" .. distance .. " metres away" .. "\nOf " .. train_length() .. " carriages"
digiline_send(channel, message)
end