Display orario

Un display orario sincronizzato

L’ idea ci è arrivata quando un nostro amico, in visita, ci ha ripetutamente chiesto quale treno stesse per transitare durante una sessione di marcia. Non era stato l’unico a porre la domanda, anzi, la domanda è ricorrente fra amici e visitatori, partendo spesso i convogli dalle stazioni nascoste.

Il pannello di controllo di Traincontroller è scarsamente visibile se non si è in postazione davanti ai monitor e, inoltre, non è semplice capire quale treno sta per partire o dove sia diretto.

Per permettere all’osservatore di sapere cosa sta per transitare, da dove parte e dove si fermerà, ci serve un display orario simile a quello in uso nelle stazioni ferroviarie.

La cosa è realizzabile scrivendo un apposito software che sia in qualche modo collegato all’orario in esecuzione in Traincontroller e che mostri un elenco di partenze più comprensibile all’osservatore.

Da qui in poi la descrizione è decisamente tecnica e ci scusiamo se non sarà immediatamente comprensibile, restando a disposizione per qualunque chiarimento.

IL SOFTWARE

Con scarsa fantasia esso è stato denominato TPTrainDisplay

Si appoggia su un DB Sqlite che contiene più tabelle:
1) la tabella degli orari
2) la tabella dei tipi di treno (merci, intercity, ecc.)
3) la tabella delle locomotive (E.656, E.464) in esercizio nel plastico
4) la tabella delle partenze e delle destinazioni (Stazione+binario)

Tabelle del DB
Tabelle del DB

La tabella degli orari viene popolata automaticamente da Traincontroller e ne parliamo più sotto.

All’avvio della programmazione oraria il display rimane in attesa della prima invocazione, cioè del primo convoglio in partenza.

Schermata inziale display orario
Schermata inziale display orario

Non appena il primo convoglio parte il display mostra una lista di treni in partenza originata tramite la tabella.

Display orario inizializzato
Display orario inizializzato

Sono evidenziati i treni partiti e quelli in partenza, mentre un timer indica il tempo per la prossima esecuzione. Da notare che, sebbene in Traincontroller l’orario sia definito in maniera statica e il tempo sia, per nostra scelta più veloce di 4 volte, TPTrainDisplay converte questi valori in tempi reali. Per esigenze pratiche un minuto corrisponde a 15 secondi, questo ci permette di avere frazioni minime di tempo pari a 1/4 di minuto, più facili da gestire in quanto in Traincontroller non è possibile gestire i secondi. Il display ci mostra, come detto, il tempo reale di esecuzione.

Se la programmazione oraria viene interrotta il display ci indicherà che il prossimo convoglio è in ritardo.

Evidenziazione del ritardo
Evidenziazione del ritardo

Se un itinerario non viene automaticamente invocato o se eseguito manualmente al di fuori dell’orario di Traincontroller, il display lo indicherà come soppresso.

Cancellazione dell'itinerario
Cancellazione dell’itinerario

Ma vediamo ora come Traincontroller interagisce con il nostro software…

Premesso che Traincontroller offre la possibilità di invocare qualsiasi programma esterno, sia questo un .exe o un file batch, dobbiamo trovare un punto dal quale sia possibile eseguire due tipi di operazioni:

1) popolare la tabella degli orari
2) inviare al nostro programma l’informazione che attivi l’orario corrispondente a quello inserito nella programmazione

Il punto più ovvio per entrambe le operazioni è la tabella degli orari di Traincontroller.

Tabella orario TrainController
Tabella orario TrainController

In questa tabella abbiamo inserito i nostri itinerari per ognuno dei quali abbiamo definito un orario di partenza.
Per poter eseguire la prima operazione, cioè popolare in maniera simmetrica la tabella degli orari di TPTrainDisplay , dobbiamo far ricorso ad una macro:

Tabella Macro TrainController
Tabella Macro TrainController

Inseriamo una nuova macro nominandola esattamente come l’itinerario per il quale vogliamo, da un lato creare il record per la tabella orari di TPTrainDisplay , dall’altro creare l’istruzione che attiverà la riga corrispondente nel nostro display.
La macro conterrà quindi due istruzioni + l’itinerario da eseguire:
l’istruzione che popola la tabella ha questa sintassi:

[appdir]\updatett.exe [flag] [index] [sort] [TCtime] [train] [loco] [departure] [arrival]
Es. [appdir]\ updatett.exe 0 1 1 06:00 4 7 5 2

dove [appdir] è la cartella di installazione del software e:
flag=0 -> esegue l’update ed inserisce una riga con i seguenti valori:
index=indice univoco del record
sort=indice progressivo di esecuzione
TCtime= orario di Traincontroller
train=tipologia di treno (Regionale, Intercity, ecc.)
loco= sigla della locomotiva
departure=binario di partenza
arrival=binario di arrivo

L’istruzione che attiva la riga ha questa sintassi:

[appdir]\ orario.bat [sort]
Es. [appdir]\ orario.bat 1

dove [appdir] è la cartella di installazione del software e:
sort è il progressivo da invocare per evidenziare la riga della partenza.

Creata la macro la sostituiamo nell’orario di Traincontroller all’itinerario e così via per tutte le voci.

Sostituzione Itinerario con Macro
Sostituzione Itinerario con Macro

Da qui in avanti ogni modifica all’orario di Traincontroller seguirà questa regola.

L’inserimento dei record nella tabella di TPTrainDisplay avviene su specifico comando, per il quale abbiamo a disposizione tre pulsanti:

Pulsanti di Traincontroller per il display

Cliccando su Memorizza orario Start viene attivata la memorizzazione di tutte le voci che popoleranno la tabella degli orari in TPTrainDisplay ; l’operazione viene eseguita durante la programmazione oraria. Alla fine della sessione, cioè quando verrà attivato l’ultimo itinerario in Traincontroller, fermeremo la memorizzazione con Memorizza orario Stop e, cliccando su Aggiorna display tutti gli orari saranno disponibili nel nostro display.
L’operazione non sarà più eseguita dalle nostre macro, le quali si limiteranno ad attivare la riga di orario corrispondente all’itinerario in esecuzione. Nel caso che l’orario di Traincontroller fosse modificato, basterà rilanciare la procedura.

Per modifiche minori TPTrainDisplay mette a disposizione una apposita finestra che si attiva cliccando sulla riga di orario che vogliamo modificare:

Modifica orario da display
Modifica orario da display

Per favorire la visibilità del display abbiamo installato un nuovo monitor ad altezza osservatore nel quale si trovano la griglia delle Cam di controllo, la finestra dell’itinerario in esecuzione e il nostro display.

Display orario
Display orario

Qui sotto il video dimostrativo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *