TS-Fireman -TCP Client für den TS (0.9.9.5 - 19.05.2019)

  • TS-Fireman - Ist ein TCP Client welcher einen TCP Server benötigt. Zur Auswahl stehen die TS-Bridge in den Versionen für 64bit und 32bit und der TSConductor nur 32bit (Bitte separat downloaden und installieren!).


    Deshalb auch meine Namenswahl (Heizer), die Engineers (Lokführer) sind ja wir ;) Vielen Dank an @Sillo und @Dayjay für die tollen TCP Server. *dhoch*


    Es setzt die Bewegungen von maximal sechs Joystickachsen in TCP-Befehle um, welche über den TCP Server an den Train Simulator gesendet werden. Ein Empfang von Daten ist auch möglich. Vorerst nutze ich diesen nur für das Auslesen der Controller der aktiven Lokomotive, um eine neue Lok der Auswahlliste hinzuzufügen oder zu modifizieren. Seit dem Update auf 0.9.9.0 ist auch das parallele Ausführen von mehreren Instanzen des TS-Fireman möglich. Wodurch man mehr als nur einen Joystick (auch Arcaze o.ä.) nutzen kann. Dazu können, vom Programm, zusätzliche Verknüpfungen auf dem Desktop angelegt werden.


    Für diejenigen unter Euch, welche gerne eine Anleitung als Video hätten, hat @OMSIJakob LP freundlicherweise ein Video-Tutorial erstellt.


    Für die Verbindung mit dem TCP Server müssen die Einstellungen bearbeitet werden. Die erreicht ihr, wenn ihr TS-Fireman startet und auf "Open settings folder" klickt. Dort müssen in die settings.ini die Werte für den Server (IP und Port) hinterlegt werden und die Joystickachsen werden den jeweiligen Controllern, wie Fahrtregler und Fahrtrichtungswahlhebel zugewiesen. Die Zuordnung der Achsen zu 0 bis 5 steht in der settings.ini. Welche Achse (X-Y-Z etc.) welcher Hebel ist, könnt ihr mit einem Klick auf "Open Gamecontroller" (ab Version 0.9.9.5) aufrufen. Unter "Eigenschaften" >> "Testen" werden die Bewegungen der jeweiligen Achsen angezeigt.
    Für eine invertierte Achse-X muss zum Beispiel ein InvertAx0 = 1 eingetragen werden. Das ist für alle Achsen möglich, bis hoch zu InvertAx5. Ein Eintrag für "normale" Achsen mit dem Wert 0 ist nicht notwendig.
    Die DeviceID vom Joystick kann während des Programmablaufs geändert werden (wohl notwendig bei Windows 10). Falls die Joystick DeviceID immer eine bestimmte ist, kann diese mit "Save DeviceID" permanent in der settings.ini gespeichert werden. Für das Anlernen der Joysticktasten wird diese ID auch benötigt. Vielen Dank @TheLion092 für diesen Hinweis.

    Code: settings.ini
    [Joystick-Axis]
        InvertAx0 = 1
        InvertAx2 = 1
    
    
        [Joystick-ID]
        JoyID =


    Wenn der TCP Server läuft, also auch gestartet wurde, kann eine Lok ausgewählt werden. Eine kleine Auswahl an Lokomotiven habe ich beigefügt. Anders als beim TrainSimHelper müssen hier keine Dateien vom Train Simulator editiert werden. Der Train Simulator kann je nach belieben gestartet werden. Zwischen den Programmen kann an mit ALT-TAB hin und her springen. Ein wechseln der Lok ist im TS-Fireman einfach möglich. Nur eine andere Lok auswählen "Change locomotive" drücken. Schon kann es mit der anderen Lokomotive im TS weitergehen.



    Die Auswertung aller sechs Joystickachsen ist einzeln getestet. Da ich zurzeit an meinem Arcaze-USB-Interface nur drei nutze, kann ich behaupten, dass die X-, Y- und Z-Achse für die drei Hauptcontroller in TS funktionieren. Beim Anlegen neuer Lokomotiven ("Add a new locomotive") muss man aus der empfangenen Liste nur die ID vom jeweiligen Controller suchen. Ab Version 0.9.9.5 ist die Liste der ControllerIDs nach Spalten sortierbar. VirtualThrottle bzw. Regulator, Reverser und VirtualBrake bzw. TrainBrake haben sich bei mir als Controller bewährt. Manchmal muss man ausprobieren, welche ID funktioniert. Bei vR-Loks wählt man am besten die Controller VirtualThrottle und -Brake aus.


    Die "Steps" sind die Fahrstufen, bei einer BR101 z.Bsp. 100, weil es ein stufenloser Fahrtregler ist und bei amerikanischen Lokomotiven meist 8. Die "Steps" kann man auch im TS zählen, wenn man mit der Maus oder der Tastatur den jeweiligen Regler bewegt. Des weiteren kann bei allen Controllern ein freier Min- und Max-Wert gewählt werden. Bei Standard Controllern die einen Bereich von 0 bis 1 haben, muss nichts eingetragen werden. Der Standard für den Reverser (Fahrrichtungswahlhebel) ist weiterhin -1 bis 1. Auch dafür muss nichts eingetragen werden. Für einen anderen Bereich trägt man bei Min und Max den entsprechenden Wert ein. Ein negativer Min-Wert ist nun bei allen Controllern möglich. Wählt man in der Liste eine Zeile aus (ab Version 0.9.9.5) und klickt auf die Achse (z.Bsp. "Throttle and Brake"), werden die nötigen Werte übernommen. Die "Steps" müsst ihr eintragen.


    Teilweise haben die Lokomotiven eine "Playable Airhorn". Wer also eine Joystickachse frei hat, kann die ControllerID für das "Horn" dem OtherCtrl zuweisen und 10 Steps oder mehr einstellen. Dann kann man das Signalhorn, wie ein Instrument, spielen. ;)


    Das Anlernen der 32 möglichen Joysticktasten habe ich möglichst einfach gestaltet. Was recht viel Arbeit gemacht hat. Für das Hinzufügen einer ControllerID zu einer Taste, betätigt ihr nur kurz selbige Taste an eurem Fahrpult und die entsprechende Joysticktaste (eine von 1 bis 32) wird dann hervorgehoben. Dann tragt ihr die dazu passende ID aus der empfangen Liste ein oder klickt für ein Auslesen der gewählten Zeile (ab 0.9.9.5) auf "ID for selected button". Falls gewünscht, ist auch ein Offset möglich, damit z.Bsp. für das Licht der Wert 2 gesendet wird, ist ein Offset 1 notwendig. Zusätzlich kann ein Kommentar darunter angegeben werden, für was die Taste dient. Dieser wird in der settings.ini für zukünftige Lokomotiven gespeichert. Mit "OK" bestätigt ihr die Übernahme der Variablen für diese eine Joysticktaste. Für jede weitere Taste wieder genauso vorgehen. An den TS wird, ohne eingestellten Offset, dann eine 1 für Taste geschlossen und eine 0 für Taste offen übertragen. Ist es am Fahrpult ein Schalter, wird eine Statusänderung erst an TS übertragen, wenn der Schalter in seiner Position verändert wird.



    Über "Modify a locomotive" können die Werte einer vorhandenen Lokomotive editiert werden. Dazu wählt man die Lok aus und klickt auf "Modify a locomotive". Bei den Joysticktasten erscheinen nach kurzem Betätigen der gewünschten Taste die hinterlegten Werte. Nur geänderte Tasten müssen dort mit "OK" bestätigt werden. Das Löschen eines beliebigen Wertes ist möglich.


    Kommentare in den INI-Dateien können mit einem führenden Semikolon in der Zeile über oder unter der Variablen eingetragen werden. Nicht dahinter!


    Es gibt noch so einige kleine Baustellen. Erstens, weil Programmieren mit AutoIt nur ein kleines Hobby von mir ist und zweitens weil sich mit dem wachsenden Umfang des Programms immer wieder neue Fehler einschleichen. Viel Spaß bei den ersten Testfahrten! Ich hoffe, ich habe es recht selbsterklärend programmiert.



    Update auf 0.9.0.0 vom 24.10.2016


    Changelog

    • alle 6 ControllerIDs und die zugehörigen Steps werden nun bei einer neuen Lokomotive in die locomotives.ini geschrieben
    • nach dem Hinzufügen einer neuen Lok ist kein Neustart vom TS-Fireman mehr erforderlich
    • die DeviceID vom Joystick kann während des Programmablaufs geändert werden (notwendig bei Windows 10)
    • falls immer eine andere DeviceID als die 0 genutzt wird, kann sie in die settings.ini unter "[Joystick-ID] JoyID = " eingetragen werden
    • kleinere Fehler behoben
    • der Joystick-Button 1 wird nun ausgewertet (als Taster), die zuzuweisende TS ControllerID schreibt man in die locomotives.ini bei der Lok unter "Button1Id = "
    • "Modify a Locomotive" kommt erst in einer der folgenden Versionen

    Vielen Dank @FabiaLP für das Testen und das Feedback zur Joystick DeviceID!


    Update auf 0.9.6.0 vom 05.02.2017


    Changelog

    • alle 6 Achsen können nun in der settings.ini invertiert werden
    • für alle 6 Controller kann man jetzt den zu verwendenden Sendebereich einstellen, bei Standard Controllern mit einem Bereich von 0 bis 1 muss nichts eingetragen werden. Der Standard für den Reverser (Fahrrichtungswahlhebel) ist weiterhin -1 bis 1. Für einen anderen Bereich trägt man bei Min und Max den entsprechenden Wert ein. Ein negativer Min-Wert ist nun bei allen Controllern möglich
    • Bugfix: bei schnellen Achsbewegungen wurde nicht der maximale TCP-Wert erreicht (bei invertiert der minimale). Danke an @BigBenjy für die Meldung.
    • Codeoptimierungen, z.Bsp. beim Speichern in die locomotives.ini
    • "Modify a Locomotive" wurde hinzugefügt - eine in der ini vorhandene Lok kann ausgewählt und editiert werden. Leere Felder führen nicht zur Löschung des Eintrages in der locomotives.ini

    Vielen Dank @Taurus0815 und @BigBenjy für das Testen Joystick-Invertierung und des erweiterten Sendebereiches!


    Update auf 0.9.7.0 vom 12.03.2017


    Changelog

    • für alle 32 möglichen Joystick-Buttons kann nun der Status 0 (für offen) oder 1 (für geschlossen) an eine einstellbare ControllerID gesendet werden
    • dafür wurde recht umfangreich der Bereich für das Hinterlegen der Werte erweitert. Ihr drückt am Fahrpult kurz die gewünschte Taste und sie wird dann hervorgehoben. Dann tragt ihr die dazu passende ID aus der empfangen Liste ein. Zusätzlich kann ein Kommentar darunter angegeben werden, für was die Taste dient. Dieser wird in der settings.ini für zukünftige Lokomotiven gespeichert. Mit "OK" bestätigt ihr die Übernahme der Variablen für diese eine Taste. Für jede weitere Taste wieder genauso vorgehen. Beim Modifizieren drückt ihr kurz die gewünschte Taste und die hinterlegten Werte werden angezeigt. Nur geänderte Tasten müssen dort mit "OK" bestätigt werden.
    • Bugfix: empfangene Liste war nicht vollständig - jetzt werden 12.000 Zeichen akzeptiert

    Vielen Dank @FabiaLP und @BigBenjy für das Beta-Testen der Joystick-Buttons-Auswertung und @marvinbart429 für die zu kurze ControllerID-Liste!


    Update auf 0.9.9.0 vom 31.12.2017


    Es gibt diese Version wie gewohnt als Setup. Dieses erkennt, ob schon ini-Dateien vorhanden sind und überschreibt sie nicht.


    Changelog

    • Wishlist: nach dem Ändern der JoystickID mit "Increase DeviceID" kann diese nun mit "Save DeviceID" in der settings.ini abgespeichert werden
    • bei den Joystick-Buttons kann nun ein Offset eingestellt werden (z.Bsp. beim Licht eine Offset 1 für die Ausgabe einer 2)
    • das Ausführen des TS-Fireman ist nun parallel möglich und mit verschiedenen Einstellungen. Dem entsprechend ist das Limit an Achsen und Buttons auf das 9-fache angestiegen w00t.png
    • zum Starten der weiteren Instanzen kann das Programm nummerierte Verknüpfungen auf dem Desktop anlegen. Beim Start der zweiten Instanz werden die zweiten Einstellungen anhand der ersten erstellt. Es ist eine Kopie ohne den Bereich [Main], dieser ist nur der settings.ini vorbehalten. Nur die zweite Instanz kann die Verknüpfung für eine dritte anlegen, die dritte für die vierte und so weiter ... Ist die folgende Verknüpfung schon auf dem Desktop vorhanden, kann diese nicht erneut erstellt werden.
    • es bleibt bei einer locomotives.ini. Sollen zwei Instanzen an eine Lok senden, so muss man diese Lok nun zweimal mit verschiedenen Namen anlegen und dann entsprechend auswählen
    • ein Programm-Icon hinzugefügt und kleinere Änderungen vorgenommen, z-Bsp. wird nach dem Ausgewählten einer Lok die "Select"-Taste zu einer "Change"-Taste
    • Bugfix: ein Gebietsschema mit Punkt als Dezimaltrenner wird nun automatisch erkannt und die Ausgabe entsprechend angepasst

    Wishlist

    • Daten an "Irregular Notched Lever" senden, also mit unregelmäßig verteilten Raststufen
    • bei "Modify a Locomotive" das Löschen von Einträgen in der locomotive.ini ermöglichen, beim einfachen Weg würde die modifizierte Lok ans Ende der locomotives.ini rutschen - find ich nicht gut
    • Tacho- und Druckluftanzeige auf zweiten Bildschirm - gestrichen, @Sillo hat mit seinem TS-MFD-Modulares-Führerraumdisplay-MFD-inkl-EbuLa-für-Train-Sim gut Fortschritte gemacht smile.png

    Vielen Dank an @BigBenjy, @marvinbart429 und @Lorhat für das Beta-Testen der neuen Funktionen!


    Update auf 0.9.9.1 vom 25.03.2018


    Changelog

    • Bugfix: die Joystick-Button Auswertung bei "Add/Modify a locomotive" funktioniert nun auch mit Drehschaltern und ein Dauerimpuls von einem Schalter blockiert nun nicht mehr die Eingabe von ID, Beschreibung und Offset
    • kleinere Anpassungen vom Layout bei "Add/Modify a locomotive"

    Update auf 0.9.9.2 vom 13.05.2018

    Changelog

    • die Liste der Controller vom TS ist nun formatiert und somit etwas übersichtlicher smile.png
    • kleinere Anpassungen, falls mal einer von "Modify a locomotive" über das Hauptfenster zu "Add a new locomotive" wechselt

    Update auf 0.9.9.5 vom 19.05.2019


    Wieder nur die exe-Datei, weil es nur kleinere Veränderungen sind. Wer will kann damit die Version 0.9.9.0 bzw. die vorherige exe-Datei im Programmverzeichnis ersetzen. Ebenfalls kann auch die TS-Fireman.exe an jeden anderen Ort ausgeführt werden. Solange im LocalApp-Verzeichnis die Konfigurationsdateien liegen.


    Changelog

    • Unterstützung für TS 64bit, mit der TS-Bridge x64 von @Sillo <== Dafür vielen Dank!
    • direktes Öffnen der Windows-Einstellungen Gamecontroller
    • die Liste der ControllerIDs vom TS bei "Add a new locomotive" oder "Modify a locomotive" kann nach Spalten sortiert werden
    • wählt man eine Zeile in der Liste aus, werden mit Klick auf die Achse (z.Bsp. "Throttle and Brake") die nötigen Werte übernommen
    • Felder mit Standardwerten bleiben leer, diese sind im TS-Fireman verankert
    • bei "Modify a locomotive" werden nun Standardwerte aus der locomotives.ini entfernt und die Einträge sortiert
    • kleinere Anpassungen

    Wishlist (Stand 03.04.2021)

    • die Auswertung der Achsen anpassen, damit das "Zittern" der Potentiometer abgefangen wird
    • Daten an "Irregular Notched Lever" senden, also mit unregelmäßig verteilten Raststufen, siehe dazu mein Beitrag #148
    • Anpassungen des Schaltbereiches zum nächsten bzw. vorherigen Wert bei den Achsen
    • ein automatischer Verbindungsaufbau nach dem Start
    • automatische Erkennung der Lok im TS und Umschalten zu deren Konfiguration, wenn vorhanden

    Vielen Dank an @OMSIJakob LP für das Beta-Testen der neuen Funktionen!

  • Ich habe ein neues Setup erstellt und dieses im ersten Posting hochgeladen. Jetzt sollte die Installation die ini-Dateien an die richtige Stelle kopieren. Falls ihr TS-Fireman schon installiert hattet und die ini-Dateien nicht verschoben habt, dann würde ich eine Deinstallation über das Starmenü > TS-Fireman > Uninstall empfehlen. Danach dann das neue Setup ausführen.

  • Kann man in Zukunft auch Tasten zuweisen, z.B. PZB und Sifa, ist ja auch nur ein Control Value.
    mfg
    FabiaLP


    PS. Die Achsen am Fahrpult funktionieren.
    AFB, Fahrschalter, FbV, ZBr und Lokbremse funktionieren ohne Anstände!
    Fahrtrichtungswender ist halt auch eine Kontaktreihe, daher........ (hab ich auch noch nicht im Pult verbaut)


    PPS. Danke für dein Programm, solche Erweiterungen braucht der TS! Vielleicht setze ich mich mal mit dem TCP Protokoll von ZUSI aus einander.... Aber hab schon ewig kein C / C# mehr geschrieben.....

  • FabiaLP: Ja, man wird auch Tasten zuweisen können. So ist zumindest der Plan, aber das dauert noch etwas. Die wären auch eine Alternative für den Fahrtrichtungswahlhebel (Reverser). Mit maximal 32 Stück stehen genügend Joystick-Buttons zur Verfügung. ;) Wie ich lese, hast Du ohne Probleme 5 Achsen in Betrieb?! :thumbsup: Vielen Dank für die Rückmeldung!

  • also gestern hab ich eine Runde mit der 101 El gedreht, jedoch will heute TS-Fireman nicht mal mehr irgendwas machen, im TS kommt nix an.........
    habe das Gefühl, als würde das Programm den Controller des Pultes nicht erkennen, kann man irgendwo TS.Fireman auf eine Controller ID (nicht die im TS, sondern die von Windows) festnageln? oder ist es dem Glück überlassen, ob es geht? habe zwar nur das Pult am Rechner, trotzdem erkennt dein Programm es nicht.
    mfg
    FabiaLP


    PS. Selbst bei der Academy 189 passiert nix.

  • Die Schieberegler der Achsen bewegen sich also nicht, wenn eine Lok ausgewählt ist. Das hatte ich noch nicht. Was sagt Windows zum Pult-Controller? Zu finden unter Systemsteuerung > Geräte und Drucker > Pult-Controller > Gamecontrollereinstellungen. Bewegen sich dort die Achsen?


    Ich habe in den letzten Tagen festgestellt, dass sich TS-Fireman nicht immer mit dem TSConductor verbindet. Nachdem ich den Server gestoppt und gestartet hatte, klappte es wieder mit dem Verbinden.

  • Ich finde das einfach Klasse! Super gemacht.


    Ich werde es heut Abend oder am Wochenende auch installieren.
    Funktioniert das auch mit dem Saitek Throttle Quadrant? Ich habe da schon einiges getestet und mit dem TrainSimHelper hat das dann auch ein bisschen geklappt. Zwar nicht perfekt aber es hat gereicht.


    MfG,


    Johnny

  • So, Hier mal alles, was von Interesse sein könnte:


    Ja, ich verwende den Chipsatz von einem Logitech Gamepad, da die Chips einfach und günstig zu bekommen sind. Er ist der einzige angeschlossene "Controller".
    Sollte somit die ID "0" haben, jedoch erkennt, wie zu sehen ist, Fireman die Hebel nicht (alle bewegt, nachdem Fireman gestartet war, trotzdem nix).
    mfg
    FabiaLP

  • @TrainSimTutorials das sollte auch mit dem Saitek Throttle Quadrant funktionieren. Es ist ja auch ein Joystick.


    @FabiaLP Die Z-Achse ist der DynBrake zugewiesen, hat aber keine Controller ID! Kannst Du bitte die ID nachtragen oder die Zuordnung der Z-Achse aus der settings.ini löschen. Es würde mich interessieren, ob es dann nach dem Neustart von TS-Fireman funktioniert.

  • Hab mich gerade noch mal in die Doku von Microsoft eingelesen, scheint so, als würde Windows ab der Version 6.2.9216 die Device ID bei jedem Neustart neu vergeben, da dies angeblich Eine Zeitersparnis darstellt.
    D.H. ab Windows 8 wird es mit der Aktuellen Version immer ein Glücksspiel sein, ob es geht. Falls möglich würde ich mich über eine Auswahl des Gerätes in einem Dropdownmenue freuen, wenn nicht, dann muss ein User mit Windows 8 oder neuer nach jedem Neustart die ID tauschen, bis der Joystick die ID0 hat.
    mfg
    FabiaLP

  • Ich hatte mit dem TS schon viele Probleme, aber ein Programm nicht mal starten können, hatte ich noch nie :P


    Immer wenn ich es starten will, kommt das:


    In welchem Ordner soll das denn installiert werden?


    Soll das ins Railworksverzeichnis?

  • Habe ich ja. Das ist die neuste Version. Ich probiere es noch mal. Wo soll ich es aber installieren? Destop, RW Verzeichnix,...?

  • Da ich weder von dem hier jetzt noch vom TSConductor irgendeine Ahnung habe, frage ich nochmal ganz doof nach, wie das geht. Ich habe noch nie mit dem TSConductor gearbeitet und fände es cool, wenn mir einer per PN oder hier für die Laien wie mich alles mal erklären könnte. Ich hab jetzt tausend Sachen installiert und aufeinmal soll ich irgendwelche .ini Datein irgendwo haben obwohl da keine sind und was auch immer....