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)
All’avvio della programmazione oraria il display rimane in attesa della prima invocazione, cioè del primo convoglio in partenza.
Non appena il primo convoglio parte il display mostra una lista di treni in partenza originata tramite la tabella.
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 abbiamo inserito un testo per gli annunci TPTrainDisplay li eseguirà nei tempi indicati in tabella (vedi sotto)
Se la programmazione oraria viene interrotta il display ci indicherà che il prossimo convoglio è in 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.
Quando il treno è giunto a destinazione TrainController inviare il comando di itinerario concluso e nel display comparirà la scritta “ARRIVATO”.
Vediamo ora come viene popolata la tabella:
Cliccando su una delle righe il software mette a disposizione due opzioni: la modifica o l’inserimento di una nuova voce. I campi da popolare sono l’orario definito in TrainController, il progressivo di esecuzione, il tipo di treno, la locomotiva titolare, i binari di partenza e di arrivo, il numero del treno e l’amministrazione. A disposizione due altri campi per inserire il testo dell’annuncio di partenza/arrivo e del ritardo. Se popolati il programma genererà un file audio che verrà eseguito dagli altoparlanti di sistema quando verrà invocata l’esecuzione; il file utilizza tutti i dati inseriti precedentemente.
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 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.
In questa tabella abbiamo inserito i nostri itinerari per ognuno dei quali abbiamo definito un orario di partenza.
Per poter inviare l’informazione a TPTrainDisplay , dobbiamo far ricorso ad una macro:
Inseriamo una nuova macro, nominandola esattamente come l’itinerario per il quale vogliamo creare l’istruzione che attiverà la riga corrispondente nel nostro display con la seguente sintassi:
[appdir]\ start.bat [sort]
Es. [appdir]\ start.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.
Da qui in avanti ogni modifica all’orario di Traincontroller seguirà questa regola.
Ogni itinerario contiene anche l’istruzione, da eseguire al termine, che segnalerà che il treno è arrivato a destinazione. L’istruzione ha la seguente sintassi:
[appdir]\ end.bat [sort]
Es. [appdir]\ end.bat 1
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.
Qui sotto il video dimostrativo
Buongiorno Giulio,
sono Luigi Cesana fermodellista e plasticista da sempre.
Lo scorso anno a causa della ristrutturazione di casa ho smantellato il mio ultimo plastico “Canterana & Loghetto” che era gestito in digitale con TrainController 7 Gold e nel quale facevo uso degli annunci di stazione gestiti dallo stesso TC.
Ho letto con vivo interesse quanto hai fatto per il tuo display orario e mi piacerebbe farmelo per conto mio utilizzando come database SQL e come linguaggio C#.
E’ per questo che ti chiedo se ti fosse possibile darmi qualche info supplementare soprattutto per quanto riguarda il contenuto delle tabelle del DB e se credi di quant’altro possa essermi utile.
La mia richiesta è volta solo allo scopo di cimentarmi con questa nuova sfida e senza alcun risvolto commerciale, nel pieno rispetto della riservatezza dei contenuti.
Ti ringrazio fin d’ora per quanto vorrai condividere con me.
Cordialmente
Luigi
Buongiorno
La questione è complessa, ti invito a chiamarmi al numero che ti invio via email.