Nach einer ganzen Menge Arbeit präsentiere ich hiermit die erste öffizielle Betaversion der neuen Zusi-TCP-Schnittstelle für .Net: Version 0.9 Beta
Features
Komplett von null auf neu geschrieben, unterstützt die Bibliothek fast alle Führerstandsdaten, die Zusi 3 anbietet. Neben den Klassikern wie Geschwindigkeit, Sifa-LM etc gibt's auch die eher esoterischen Daten wie LZB-Rechnerausfall, alle einfach zugänglich und schön typsicher frei Haus.
Wie schon bei der Vorgängerversion von anno dunnemals liegt der Schwerpunkt der Entwicklung auf einer möglichst simplen aber trotzdem mächtigen API.
In der Komfortvariante für GUI-Anwendungen bekommt jede Größe (Geschwindigkeit, HLL-Druck, ...) ein eigenes typsicheres Callback, das auf dem GUI-Thread aufgerufen wird, sobald ein Update für die betreffende Größe emfpfangen wird. Damit muss der Nutzer im Gegensatz zu früher nicht mehr bei jedem empfangenen Datensatz überprüfen, was er denn da gerade empfangen hat - ein großer Fortschritt!
Wer kein GUI verwendet, aber trotzdem gerne Callbacks haben moechte, für den gibt es ein Polling-basiertes Frontend, das genauso mächtig ist wie die GUI-Variante, jedoch regelmäßig "von Hand" angestoßen werden muss.
Und für Puristen ist die Schnittstelle zum Backend frei zugänglich: Es handelt sich schlicht um eine threadsichere Queue, aus der die fertig verarbeiteten Datensätze (bestehend aus einer Adresse, die die Größe eindeutig identifiziert und den eigentlichen Nutzdaten) zu entnehmen sind. Wie und wie oft das geschieht ist völlig frei zu gestalten.
Beta?
Dank umfangreicher automatisierter Tests bin ich ziemlich sicher, dass Version 0.9 stabil ist. Allerdings stellt die schiere Menge an Größen, die Zusi ausspuckt, mich vor das Problem, dass ich nicht alle einzeln mit vertretbarem Aufwand testen kann. Ich möchte daher jeden Nutzer bitten, auftretende Fehler an mich zu melden, sodass ich sie fixen kann.
Es steht auch noch eine kleinere Änderung der API an, die ich (sofern überhaupt benötigt) gern durchführen möchte, bevor Millionen von Zusi-Bastlern ihre Enterprise-Anwendung darauf aufbauen.
Ich bin grenzenlos begeistert, wo krieg ich das Teil???
Hier!
Einfach rechts halb-oben den grünen "Clone or Download"-Knopf drücken und abtelefonieren. Installationsanleitung und weitere Informationen finden sich auf Github - einfach ein bisschen runterscrollen.
Weitere Pläne
- Unterstützung für Daten der Türsteuerung
- Unterstützung für Bediendaten vom Simulator zum Client (Schalter, Tastaturkommandos, ...)
- Unterstützung für Eingaben vom Client zum Simulator (Tastaturkommandos, ...)
- Unterstützung für Programmdaten vom Simulator zum Client (Pause, Zugnummer, Buchfahrplan)
- Unterstützung für den GRAPHIC-Befehl, mit dem beliebige Grafiken in den Führerstand eingeblendet werden können
Wer selber Hand anlegen möchte, der sei dazu herzlich eingeladen. Ich freue mich über Pull Requests auf Github und werde sie lesen und konstruktive Rückmeldung geben. Ich nehme sie auch gerne in die Haupt-Bibliothek auf, muss dabei aber darauf bestehen, dass die Beiträge mindestens den Qualitätsstandard der vorhandenen Codebasis erhalten - vorzugsweise verbessern. Hauptkriterien sind dabei: Lesbarkeit, Wartbarkeit, vernünftige Gliederung und automatisierte Tests wo immer möglich.
Danksagung
Mein Dank gilt neben den üblichen Verdächtigen in der Community vor allem F. Schn., der/die Feedback und Code beigesteuert und aus der alten Bibliothek als Übergangslösung einen Adapter für Zusi 3 geschraubt hat. Cheers!