Zusi 3 TCP Interface für .Net - Version 0.9 (beta)

Alles, was nicht in die anderen Kategorien passt.
Antworten
Nachricht
Autor
Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

Zusi 3 TCP Interface für .Net - Version 0.9 (beta)

#1 Beitrag von Andreas Karg »

Servus miteinander!

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
Die Liste ist grob in der Reihenfolge, in der ich die Features abarbeiten würde. Je nach Zeitbudget kann das bald sein, oder auch nie. Sollte jemand eine bestimmte Funktion benötigen, stehe ich einer anderen Reihenfolge offen gegenüber.

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!

Benutzeravatar
Max Senft
Administrator
Beiträge: 3004
Registriert: 04.11.2001 14:01:40
Aktuelle Projekte: Dies und das
Wohnort: Blieskastel, Saarland, Deutschland
Kontaktdaten:

Re: Zusi 3 TCP Interface für .Net - Version 0.9 (beta)

#2 Beitrag von Max Senft »

Hui,

hübsch. Sieht gut aus, aaaber (es gibt immer ein Aber :rolleyes: ) ich muss doch etwas "bemängeln", was mir eigentlich noch nie gefallen hat: Warum muss man die CabInfoAddress mit den Hex-Werten initialisieren? Ein wenig Komfort mit passenden Klassen oder static Initialisierern wäre was schönes. Dann muss sich der geneigte Programmierer nämlich nicht mit den Adressen rumärgern. Just sayin' ... ?(

Man muss aber auch sagen: Man merkt, dass du in ner Software-Schmiede arbeitest! ;)

Gruß
Max
Administrator, Programmierer, Ansprechpartner bei Problemen mit dem Board

Andreas Karg
Beiträge: 4718
Registriert: 28.04.2002 12:56:00
Kontaktdaten:

Re: Zusi 3 TCP Interface für .Net - Version 0.9 (beta)

#3 Beitrag von Andreas Karg »

Menno, ich hatte gehofft, es dauert laenger, bis es jemandem auffaellt. :D
Das Gefummel mit der Adressierung zu verbessern ist die "kleine API-Aenderung", die ich im ersten Post angedeutet hab. Ich hab schon etwas damit herumgespielt, es dann allerdings doch vorgezogen, die Beta veroeffentlichungsfaehig zu kriegen. Funktionieren tut's ja auch so, ist halt frickelig - und ich gehe davon aus, dass die meisten Nutzer sich ihre Verkabelung einmal einrichten und dann nicht mehr viel dran aendern muessen.

Ich schau trotzdem mal, was sich machen laesst.

Antworten