Beiträge von MacG

    Dann versuche es mal mit meinem TS-Fireman. Nach der Installation und Inbetriebnahme von TS-Bridge und TS-Fireman kannst Du die eine Achse vom Schubregler in der setting.ini zuweisen (ThrottleAx, es dürfte 5, 4 oder 3 sein). Bei den anderen Achsen löscht Du einfach die voreingestellten Werte. Danach noch vom Flirt 3 die ControllerID für "Throttle and Brake" mit der Anzahl der Schritte (Steps) hinzufügen (Add a new locomitve). Die kenne ich für den Flirt 3 leider nicht.

    @TCO Wenn ich hier von einem Joystick schreibe, meine ich einen ohne automatische Rückstellung oder Mittenzentrierung. Mit einem Xbox-Controller oder ähnlichem hat man eine genauso unrealistische Steuerung wie mit der Tastatur. Ich möchte es gern halt nah am Vorbild. Sorry, für die Verwirrung.


    Bei mir reagiert der TS auch ab und zu nicht auf eine Tastatureingabe. Dabei handelt es sich meist um einen einzelnen Tastendruck bei mehrfacher Eingabe (z.Bsp. Bremsleistung von 0 auf 50%) und der TS ist natürlich mit Focus im Vordergrund.

    @TCO Mit "Dann passt die Hebelstellung nicht mehr zu den Werten im TS" meine ich, dass die Stellung vom Joystick dann nicht mehr mit den Werten im TS übereinstimmt. Also mit dessen Hebelstellung. Das habe ich selbst mehrfach nachstellen können. Auch mit der Tastatur direkt tritt dieses Problem ab und zu auf.


    Als ich hier im Forum die Möglichkeit entdeckte, via TCP-Server mit dem TS zu kommunizieren, habe ich habe das Programm geschrieben. Das übermittelt die Stellung der Joystickachsen direkt an den TS. Ein netter Nebeneffekt ist, dass es auch funktioniert, wenn das Fenster vom TS mal den Focus verloren hat.


    @nobsi beim RailDriver geht es wohl hauptsächlich um die Nutzung der Hebel und nicht um dessen Tasten. Nur wegen der Tasten wird sich keiner den RailDriver kaufen. ;) Ein Nachteil des RD ist wohl auch, dass er amerikanischen Lokomotiven nachempfunden ist. Schalträder oder PZB haben sie dort nicht.

    Auf die Dauer hat man mit JoyToKey und ähnlichen Tastatur-Emulatoren auf lange Sicht keine Freude. Da der TS gerne mal Tastatureingaben verschluckt. Dann passt die Hebelstellung nicht mehr zu den Werten im TS. Entweder man nimmt das von @holzroller vorgeschlagene Programm oder meinen TS-Fireman. Der Raildriver wird meines Wissens ja von Windows als Joystick erkannt.

    Der Shop ist wieder Online. Er war ja eine Weile nicht erreichbar.


    Es stimmt schon, dass die Lok recht teuer ist. Doch mit den ganzen Features und den Freeware Freight Cars relativiert sich das Ganze. Klar muss man schon ein wenig ins Vorbild verliebt sein, dass man sich daran erfreut, was alles simuliert ist und dass die Anzeige vom EOT (End Of Train Device) in der Lok funktioniert. ;)

    A started scenario in TS is necessary if you are willing to assign a locomotive to the loco config. If the scenario running then click start at TS-MFD and assign the current loco to a config (under "Tools"). Have a look at the penultimate screenshot in the linked tutorial. Choose at the left side a vR101 config and hit the button "aktuelle Lok zuweisen" for assigning the current loco. The click on "Save". The locomotive configuration is found (last screenshot) and you can open the MFD screen (toolbar).


    I wrote it without my gaming PC, from my memory. Sorry if there are small mistakes in it.


    I'm too late with my further explanations. Fine that it now works. :D

    Mir sind keine direkten Ausgaben dafür bekannt, aber man könnte es teils wohl wie folgt lösen:

    • Streckenwechsel - sollte mit der Veränderung der GPS-Koordinaten erkennbar sein
    • Neustart des Szenarios - das sollte ebenfalls mit GPS und der Uhrzeit im Spiel auswertbar sein
    • Zurück ins Hauptmenü - die Geschwindigkeit sollte da eingefroren sein (keine Änderungen weit nach dem Komma, auch nicht bei Stillstand)
    • Verlassen des Spiel (zurück zum Desktop) - hier dürfte es keinen Unterschied zum Hauptmenü geben, evtl. keine Rückmeldung von der DLL *ka*


    Meine Rückschlüsse habe ich aus der Verwendung eines TS-TCP-Servers gezogen. Mit der DLL habe ich mich noch nicht direkt befasst.
    Eventuell kannst Du mit dem Dependency Walker noch einen weiteren Einstiegspunkt, außer den bekannten, in der DLL finden.

    My program is just a pretty simple version. Only one variable can be sent. Please be patient with publishing a program with more variables.


    The only workaround is: Choose your preferred ID, write it behind Speed and see what the Arduino gets. I think it's possible to run multiple instances of TS-TCP-COM. But only with different COM ports.



    Mein Programm ist nur eine ziemlich einfache Version. Es kann nur eine Variable gesendet werden. Bitte habt etwas Geduld mit der Veröffentlichung eines Programms mit mehr Variablen.


    Die einzige Möglichkeit wäre: wähle deine bevorzugte ID, trage sie bei Speed ein und sieh, was der Arduino erhält. Ich denke, es ist möglich, mehrere Instanzen von TS-TCP-COM auszuführen. Aber nur mit unterschiedlichen COM-Ports.

    I haven't found a way to get more data from the TS. Only those which the locomotive provides and the fixed IDs. That's why I calculate some data. Different locomotives have an indicator for the next signal. The controller IDs have corresponding names.


    fixed ID - Purpose
    400 - Latitude of Train
    401 - Longitude of Train
    402 - Fuel Level
    403 - Is in a Tunnel?
    404 - Gradient
    405 - Heading
    406 - Time of day hours
    407 - Time of day minutes
    408 - Time of day seconds



    Ich habe keine Möglichkeit gefunden, mehr Daten vom TS zu erhalten. Nur die, welche eine Lokomotive bereit stellt und die festen IDs. Deshalb berechne ich einige Daten. Verschiedene Lokomotiven haben eine Anzeige für das nächste Signal. Die Controller-IDs haben entsprechende Namen.


    Feste ID - Zweck
    400 - Breitengrad des Zuges
    401 - Längengrad des Zuges
    402 - Kraftstoffstand
    403 - Ist in einem Tunnel?
    404 - Gefälle/Steigung
    405 - Steuerkurs
    406 - Tageszeit Stunden
    407 - Tageszeit Minuten
    408 - Tageszeit Sekunden

    With the right library, every Ethernet shield should work. The shield only has to fit at the Arduino board.


    I have an Arduino Mega with a W5100 Ethernet shield. Both are cheap China versions.


    At posting #8 is a way for the COM-port. It's a project at the beginning. It can only transfer the data for speed over COM. I'm writing a program for Windows, that can handle up to 10 TS controller Ids and communicate with the TCP-server. Be patient.



    Mit der richtigen Bibliothek sollte jeder Ethernet-Shield funktionieren. Das Shield muss nur zum Arduino Board passen.


    Ich habe einen Arduino Mega mit einem W5100 Ethernet Shield. Beides sind billige China-Versionen.


    Im Posting Nr. 8 steht ein Weg für den COM-Port. Es ist ein Projekt am Anfang. Es können nur die Daten für die Geschwindigkeit über COM übertragen werden. Ich schreibe ein Programm für Windows, das bis zu 10 TS-Controller-IDs verarbeiten und mit dem TCP-Server kommunizieren kann. Seid geduldig.

    Der Einbau eines direkten Starts sollte bei beiden möglich sein.


    Mit meinem Testtool kannst Du auch andere Controllerwerte übertragen. Einfach anstatt der Speed eine andere ControllerID nehmen. Das sollte funktionieren. Nur bei einem negativen Wert bin ich mir da nicht sicher. Der einzige Nachteil ist, es zeigt im eigenen Fenster dann nicht die Geschwindigkeit an und die daraus berechneten Werte sind auch Quatsch.

    Schön, dass es funktioniert! Ich kann mir zwar nicht vorstellen, dass Du den TSConductor verwendest. Denn der kann eigentlich auf meine Multi-Abfrage nicht antworten.


    Ich werde ein Programm für COM zusammenstellen. Fast alle notwendigen Unterprogramme sind im TS-Fireman und in meinem Testtool vorhanden. Das kann aber noch etwas dauern. Die Ferienzeit ist zu Ende und auf Arbeit brummt es gerade wieder.

    Hallo Sebastian,


    so ist es gedacht. Nimm Dir hier, was Du benötigst oder ergänze, was Du schon programmiert hast. ;)


    Ja, meine letzten beiden Postings beziehen sich auf eine Kommunikation via COM. Noch schickt mein kleines Programm nur einen Wert an den Arduino, aber das werde ich weiter ausbauen. Wie man aber jetzt schon sieht, hängt mein Programm mit der Anzeige dem TS etwas hinterher. Bei der Uhr ist es gut eine Sekunde. Deshalb denke ich, ist es nicht ratsam, diesen Weg auch für die Weitergabe von Werten an den TS zu nutzen. Da wäre die von Dir angesprochene Lösung mit dem Joystick schneller. Ich kann jedenfalls keine Verzögerung feststellen. Gut, ich habe einen Arcaze anstelle vom Arduino für die Eingaben, aber dies sollte kein Unterschied machen. Zwei Arduinos unterstützen ja HID. Werden also mit dem entsprechenden Sketch als Joystick erkannt.


    Es gibt auch noch die Möglichkeit via TCP. Dann wäre neben der TS-Bridge kein weiteres Programm unter Windows notwendig. Mit mehreren Clients läuft die TS-Bridge auch ohne Probleme. Für eine Hand voll Loks wären die ControllerIDs auch überschaubar und im Arduino speicherbar. Die Auswahl der zu verwendeten ControllerIDs könnte dann anhand der Antwort auf GetLocoName() erfolgen.

    Problem gelöst. :D Ich bin dazu übergegangen einen vorhandenen Sketch anzupassen. Dieser sucht nun nach Start- und End-Markern im Datenpaket.
    Der Sketch zeigt auf meinen Drehspulinstrument die Geschwindigkeit bis 50 an.

    Anbei noch mein Programm welches mit 115200 Baud nur die Geschwindigkeit über USB überträgt. Als IP ist für die TS-Bridge fest 127.0.0.1 eingestellt. Der Port ist 47811. Ihr müsst nur noch Euren COMPort vom Arduino eintragen. Die Voreinstellung ist COM5. Darunter werden die ControllerIDs von der gewünschten Lokomotive eingetragen. Die Werte von Throttle und Dynamische Bremse sind nicht unbedingt notwendig. Das sind nur Überbleibsel, da ich das Programm ursprünglich für Versuche zur Berechnung von Beschleunigung und Wegstrecke geschrieben habe. Die Tasten funktionieren, bei laufender TCP-Verbindung, nicht immer sofort. Ihr könnt mit "Connect to server" die Controller-Liste der aktiven Lok abrufen und dann mit "Stop connection" die Verbindung trennen. Danach kann man die IDs raus suchen und eintragen. Ein erneuter Klick auf "Connect to server" nutzt dann Eure Werte. Viel Spaß damit!


    Bei Gelegenheit werde ich es anpassen, dass eine kleine Liste von Daten übertragen werden kann. Ich weiß noch nicht, ob ich die COM-Verbindung in den TS-Fireman einbaue oder ein extra Programm dafür schreibe.

    Ich habe mir ein kleines Programm geschrieben, welches den Wert vom TS für die Geschwindigkeit einer bestimmten Lokomotive überträgt. Die gesendeten Daten haben eine Länge von 6 Bytes. Leider bekomme ich sie nicht richtig verarbeitet. Auch nach Stunden finde ich den Fehler nicht.


    Hier sind meine Zeilen für den Arduino:


    Edit: gelöscht, da fehlerhaft


    Vielleicht hat einer von Euch einen Tipp. Der Sketch kontrolliert nicht die Länge der Nachricht, muss er das? Die serielle Ausgabe vom Arduino des verarbeiteten Wertes zeigt auch manchmal zwei Punkte (gleich dem Komma in der Maschinensprache), also z.Bsp. .0049. bei einem gesendeten Wert von 39.139 ?(


    Mein Programm mit einstellbaren COM-Port und wählbarer TS-ControllerID kann ich dafür zur Verfügung stellen. Diese beide Funktionen muss ich aber noch einbauen. ;)