Visualisierung und Simulation

Für viele Anwendungen ist es sinnvoll, den Zustand der Modellbahn grafisch auf dem Bildschirm eines Rechners darstellen zu können. Ein Grundgerüst für diese Aufgabe stellt das Modul visual der Library zur Verfügung. Ein von diesem gestarteter Thread überwacht laufend den Zustand der Bahn auf Veränderungen. Dabei verhält er sich wie ein normales Anwendungsprogramm und nutzt das von railway angebotene Interface. Sobald ein Sensor oder Aktor seinen Zustand ändert, ruft der Thread eine Callback-Funktion auf, welche die Bildschirmdarstellung ändern soll. Das Grundgerüst gibt die Veränderung auf stdout aus und muß von dem Programmierer entsprechend erweitert werden.

Das Interface besteht nur aus zwei einfachen Funktionen. Die erste soll die Oberfläche erzeugen und an das laufende Bahninterface binden, die zweite hingegen terminiert die Visualisierung.

  struct railway_visual *railway_initvis(struct railway_system *railway);
  int railway_donevis(struct railway_visual *vis);

Ähnlich nützlich wie die Visualisierung ist ein Simulator, der die gesamte Bahnanlage mit den fahrenden Zügen realistisch nachbilden kann. Er ist ein Clone der librailway, welcher die originale Library ersetzen kann. So müssen die Anwendungen nicht neu compiliert oder angepaßt werden, es reicht aus, sie zur Laufzeit an die neue Library zu binden.


Fahrbetrieb auf der Anlage

Auch für diese Aufgabe bietet diese Arbeit ein Grundgerüst an, das von einem Programmierer erweitert oder mit einem existierenden Simulator verbunden werden muß. Der Code besteht zum größten Teil aus den Modulen der Bahnsteuerung, lediglich railway wurde gegen eine neue Version ausgetauscht. Diese implementiert alle nötigen Kontrollstrukturen und muß vom Programmierer mit der gewünschten Funktionalität ausgestattet werden. Es fehlt hauptsächlich Code, der die fahrenden Züge simuliert und die von ihnen produzierten Sensorwerte erzeugt.

Simulator und Visualisierung arbeiten problemlos zusammen, da die Visualisierung auch nur auf das normale API der Bahn zugreift. Sie können damit gleichzeitig in einem Programm eingesetzt werden.