Programmieren für die Modelleisenbahn

  • Hallo Miteinander


    (So nach einigen technischen Problemen habe ich es endlich geschafft den Thread zu eröffnen.)



    Wie ich in diesem Thread bereits geschrieben habe, habe ich mal probiert ein Programm für die Eisenbahn zu programmieren.


    Angefangen hat alles Anfang Jahr als ein Kollege angefangen hat zu programmieren. Ich war immer begeistert von seinen Fortschritten, da dachte ich, dass ich auch etwas für meine Eisenbahn programmieren könnte. Ich war auch begeistert von der Software die Röbi geschrieben hat. Ich erkundigte mich im Internet was es alles für Programmiersprachen gibt, irgendwie kam ich dann auf Python und erfuhr auch durch das Internet das es relativ eine einfache Sprache ist, perfekt für Anfänger und so auch für mich.
    Ich lud mir Python auf den Computer und probierte anhand von Turtorials auf Youtube die Sprache etwas zu lernen und zu verstehen. So kam ich schnell zu Erfolgen und machte mir auch riesig Spass.
    So machte ich mich eines Tages an das Eisenbahn-Programm. Schon kam das erste Problem wie kann dann die 6021 nun die Sprache von Python verstehen? Mit Hilfe von meinem Stiefvater gelang es mir dann mit der 6021, über die RS 232 Schnittstelle und USB-Adapter, zu kommunizieren. Dafür brachte ich aber auch noch das Protokoll vom Märklin, was ich auf dieser Seite gefunden habe: Märklin Digital Interface Commands
    Danach fing ich an zu schreiben, verschiedene Adressen in Hexadezimalen um zu rechnen und probierte, bis sich die erst Lok bewegte. Das gleiche Spiel passierte auch bis ich die erst Weichen stellen konnte.
    Bis dahin ging das eigentlich erstaunlich gut aber ab da an stiess ich an die Grenze meines Wissens. Momentan kann ich also eine Lok fahren lassen und Magnetartikel schalten.



    (Leider hat es mir vor etwa 3 Monaten die Festplatte auf dem Computer gelöscht und muss mit einem Programm nochmals nachschauen, ob ich die Datei doch noch irgendwo auf der Festplatte finden kann.) :cursing:


    Ihr sieht jetzt wie weit ich ungefähr bin, doch die Funktionen (F1-F4) bereiten mir Kopfzerbrechen, ich habe sie zwar programmieren können und funktionieren auch so weit, dich ich kann nur jede Funktion einzeln abrufen und nicht zusammen. :dash: (z.B. Lokgeräusch + Lokpfiff) Das ist meine nächste Herausforderung die Funktionen zusammen abrufen zu können.


    Allen noch einen schönen Tag.

    Gruss Rico

  • Alle Achtung, Rico. Ich wusste gar nicht, dass das Märklin-Protokoll offengelegt ist. Wenn du bereits Loks bewegen und Weichen stellen kannst, hast du schon eine grosse Hürde geschafft. Die nächste grosse Hürde wird dann sein, die richtigen Befehle genau zur richtigen Zeit, also nicht zu früh und nicht zu spät, zu senden. Das nennt man Real-Time- oder auf gut deutsch Echt-Zeit-Programmierung. Ich bin sicher, dass du auch diese Herausforderung schaffen wirst.


    Mach' weiter so! :thumbsup:

  • Hallo Rico


    Bin begeistert von deinem programieren.


    Was sollte das Endziel sein? Hast du dir einen speziellen Plan gemacht oder soll die 6021 vom PC aus gesteuert werden?


    Gruss


    Bruno

  • Hallo Bruno


    Ich habe mir eigentlich nie konkrete Ziele gesetzt (ich dachte auch nicht, dass ich überhaupt so weit komme), aber klar war es irgendwo das Ziel mal mit dem Programm die ganze Anlage zu steuern. Von diesem Ziel bin ich aber noch sehr weit weg.


    Ich habe meine Versuche nur immer auch einem kleinen Gleisabschnitt mit einer Weiche gemacht.

    Gruss Rico

  • über die RS 232 Schnittstelle und USB-Adapter, zu kommunizieren


    Lieber Rico
    findest du nochmals heraus, wie dir das gelang? Genau an dieser Stelle stecke ich im Moment.
    Herzliche Grüsse
    Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • findest du nochmals heraus, wie dir das gelang? Genau an dieser Stelle stecke ich im Moment.


    Oski, ich glaube nicht, dass dir das etwas nützen würde. Rico verwendet ja Python und nicht Java. Dort wo du (wir) im Moment steckengeblieben bist (sind), ist die Integration des Java Communication Package, das den Treiber ansteuern soll, ins Eclipse. Der Treiber selber hat ja eigentlich gut ausgesehen.

  • Hallo Oski


    Ja, ich bin gerade dabei nochmals auf meiner Festplatte nach gelösten Dateien zu suche.


    Ich kann dir aber nicht sagen, wie lange das Programm noch hat und auch ob diese Datei überhaupt noch existiert, doch wäre das der Fall werde ich mich natürlich bei dir melden.

    Gruss Rico

  • Das nennt man Real-Time- oder auf gut deutsch Echt-Zeit-Programmierung. Ich bin sicher, dass du auch diese Herausforderung schaffen wirst.

    Windows und real-time, das musst du mir bei Gelegenheit dann mal genauer erklären :pillepalle:

    Dort wo du (wir) im Moment steckengeblieben bist (sind), ist die Integration des Java Communication Package, das den Treiber ansteuern soll, ins Eclipse.

    Ich weiss zwar nicht genau, welche Library ihr verwendet (ich selber habe jeweils RXTX verwendet), aber es müsste ausreichen, wenn ihr in den Project Properties beim Java Build Path unter Libraries das JAR-File, welches die javax.comm Klassen enthält, aufklappt und dann dort unter Native library location das Verzeichnis einträgt, welches die entsprechende JNI-DLL enthält, einträgt.


    Gruss
    Mario

  • habe jeweils RXTX verwendet


    Lieber Mario
    Wir versuchen es auch mit RXTX. Bei Röbi läuft die Sache schön auf dem Apfel, bei mir ist aber eine Fenster-Kiste, die noch ein wenig bockt. Selber bin ich ein blutiger Java-Anfänger, ohne Hilfe von Röbi läuft das wahrscheinlich nicht. Besten Dank für deinen Tipp. Ich versuche mal deine Ratschläge umzusetzen.
    Herzliche Grüsse
    Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!

  • Ich glaube Röbi hat einen angeketscheten Apfel. Aber wahrscheinlich ist das Hans was Heiri.

    Das ist mir natürlich bekannt. Du hast aber recht: Weder Windows (von den Embedded-Varianten mal abgesehen) noch Mac OS X sind RTOS. Ist aber auch nicht nötig... Für eine Modellbahnsteuerung ist auch kein RTOS erforderlich — es ist kein Unglück, wenn eine Lok im schlimmsten Fall mal 1 cm weiter vorne stehen bleibt. Bei einer Steuerung für einen Airbag ist es ganz ein anderes Thema, wenn der bei einem Unfall mal 500 ms später aufgeblasen wird ;)


    Gruss
    Mario

  • Hallo


    Ich habe, wie ich geschrieben habe, meine Festplatte nochmals nach Python-Dateien durchsucht und hatte mässigen Erfolg.
    Die schlechte Nachricht: Ich habe die Datei, die ich zuletzt gespeichert habe nicht mehr gefunden :supersad:, doch die gute Nachricht: Ich habe eine Datei wiederherstellen können, auf der die Verbindung zum Interface und einige Grunddefinitionen für eine Lok vorhanden ist.


    Wenn ich wieder einmal Zeit finden zum Programmieren, werde ich mit den Angaben, die ich jetzt habe und meinem erlernet Wissen, nochmals probieren das hin zu bekommen was ich bis anhin hatte und dies noch zu verbessern respektive zu erweitern.


    Ich habe auch noch etwas sehr wichtiges gelernt! Speichert nie Daten nur auf einem Datenträger ab!! Einer meiner grössten Fehler. :dash:


    Allen ein schöne Wochenende

    Gruss Rico

  • Speichert nie Daten nur auf einem Datenträger ab!! Einer meiner grössten Fehler.

    Das Grundgebot jedes Computer-Nutzers welcher ein klein wenig was von Technik versteht. Backups hat ja nicht irgendeiner mal aus Spass erfunden ;) (Wenn man es streng nimmt muss man gewisses Zeugs noch in einigen km-Entfernung im Tresor lagern...)


    Martin

  • Backups sind nur und ausschliesslich für Memmen. :phat: Ich bin eine bekennende Memme und mache einigermassen regelmässig Backups.

    Gruss Erwin



    Wer rast, der verpasst das Leben.


    Kein Platz für weitere Sammelstücke ist nur eine faule Ausrede. ;) Es gibt für alles eine Lösung.

  • Ich weiss zwar nicht genau, welche Library ihr verwendet (ich selber habe jeweils RXTX verwendet), aber es müsste ausreichen, wenn ihr in den Project Properties beim Java Build Path unter Libraries das JAR-File, welches die javax.comm Klassen enthält, aufklappt und dann dort unter Native library location das Verzeichnis einträgt, welches die entsprechende JNI-DLL enthält, einträgt.


    Lieber Mario
    Heute war Röbi bei mir. Gemeinsam (merkt ihr, wie hochgestochen ich das formuliere?) versuchten wir, deinen Tipp in die Tat umzusetzen. Es ist immer der gleiche Vorgang: einer sagt, das ist doch kein Problem, du musst ja nur...! Wir (eben: Röbi!) haben also alles so gemacht, wie verlangt. Nur die Fehleranzeigen sind nicht verschwunden. Nach mehreren Stunden, alles wurde gelöscht und neu aufgebaut, waren wir dann wieder gleich weit. Immer noch die doofen Fehleranzeigen :cursing: Dann aber, Röbi sei dank, hatte er die entscheidende Idee. Vorher hatten wir von Hand die Dateien am befohlenen Ort platziert, der Interpreter wusste nur nichts davon. Es gab (und gibt) allerdings eine Schaltfläche, die den Link so herstellt, dass es klappt. Und wie es klappt :love: Nach sechs Stunden intensiver Arbeit (abzüglich einer kleinen Mittagspause mit vorzüglichem Essen, Dauer etwa 2 Stunden) konnte die Digital-Zentraleinheit gezielt ein- oder ausgeschaltet werden. Uns ist ein Riesenstein vom Herzen gefallen. Dein Anteil war wirklich von Bedeutung, so danke ich dir, lieber Mario, für deinen Tipp. Ich muss diesen Dank noch an anderer Stelle wiederholen. Die Referenzierung war dann doch nicht so einfach.
    Herzliche Grüsse
    Oski

    signatur_egos.jpg

    ...auch Nichtraucher können süchtig sein nach Zündhölzern!