La versione 3.9 di Train Director introduce la funzionalità di eseguire comandi da scritti remoti, in modo che altri programmi possano comunicare con il simulatore. Questa funzionalità è utile per interfacciare dispositivi esterni o per comunicare con programmi ausiliari per rendere ancora più realistica la simulazione. La funzione di scritti remoti è la stessa usata internamente dalla interfaccia utente via browser. Il server mette a disposizione di clienti remoti una API tramite il protocollo HTTP, con la possibilità di interrogare lo stato della simulazione, dei segnali, dei treni ecc.

È possibile sia interagire direttamente sul tracciato simulando i click del mouse, o agire a livello dei treni e degli itinerari, con gli stessi comandi che sono accessibili dagli scritti.

Poichè la API usa HTTP, è possibile usare qualunque linguaggio di scripting remoto, come per esempio python, C#, JavaScript, ecc.

Esempi

Per illustrare come usare questa funzione, è utile utilizzare uno dei semplici scenari inclusi nel pacchetto di Train Director.

Si apra quindi lo scenario chiamato "interm.trk", nella cartella "Examples". Lo scenario mostra il seguente tracciato:

Dopo aver aperto lo scenario, si ritorni alla pagina iniziale di Train Director, e si apra l'interfaccia web cliccando sull'apposito collegamento:

seguito dalla selezione dell'interfaccia desiderata. In questo esempio, useremo l'interfaccia a finestra singola. Il browser mostrerà l'orario dei treni. Poichè a noi interessa controllare la simulazione, si apra la pagina del tracciato.

Per dimostrare quanto sia semplice usare l'interfaccia HTTP, si apra una nuova finestra del browser, in modo da poter inviare comandi direttamente dall'area dell'indirizzo HTTP del browser. Nella seguente immagine viene usata la richiesta "/war/do?" per inviare un comando a Train Director:

Si ricarichi più volte la pagina per vedere come ogni volta la disposizione dello scambio alla coordinata 20,11 cambi da diritto a deviato.

Con il comando "/war/do" è possibile accedere a tutti i comandi disponibili agli scritti interni, come descritto alla pagina degli scritti, il che significa poter agire sui treni, sui segnali o sugli itinerari. Per esempio si provi a inserire la seguente URL nel browser per abilitare l'itinerario E2:

http://localhost:8080/war/do?itinerary%20E2

Il server web consente anche di interrogare lo stato della simulazione. Per esempio, è possibile richiedere l'orario dei treni. Si inserisca l'indirizzo seguente nel browser per ottenere l'orario in formato JSON:

Questa è probabilmente l'utilizzo più comune: richiedere informazioni dal simulatore, e utilizzare i dati ritornati in formato JSON.

Esistono molte altre richieste implementate tramite il protocollo HTTP. Col tempo provvederò a documentarle. Nel frattempo, i comandi descritti quì sopra consentono già un avanzato controllo del simulatore.


Con questa nuova funzione sono possibili nuovi tipi di utilizzo, come:

  • controllare Train Director da un banco ACEI fisico. Infatti questa è stata la ragione principale per cui ho implementato questa funzione, dato che alcuni utenti avevano espresso interesse nel costruirsi il proprio banco di controllo (chiaramente in versione casereccia).
  • collegare 2 o più simulatori per controllare uno scenario da più di una persona. Sebbene questo richieda l'uso di un programma aggiuntivo per far rimbalzare i vari eventi ai vari programmi collegati, almeno adesso è possibile fare ciò senza dover cambiare i sorgenti di Train Director.
  • potrebbe diventare possibile automatizzare una simulazione semplicemente registrando tutti gli eventi man mano che il giocatore procede nella simulazione e quindi inviarli nuovamente a Train Director tramite l'interfaccia server.
  • diventa possibile usare diversi linguaggi di programmazione per interagire con Train Director, come per esempio python, perl, Visual Basic o C#. Non c'è più bisogno di imparare il C o il C++ e di conoscere i meandri dei sorgenti di Train Director (parte dei quali sono stati scritti quasi 20 anni fà!).

Si noti che non è necessario avere l'interfaccia utente aperta in un browser. Il server HTTP è attivo anche durante l'utilizzo normale di Train Director.


Questa pagina è mantenuta da g_caprino@gmail.com
(Togliere il _ prima di inviare la mail.)
Data di creazione: 31 Luglio 2019