Jump to content

Eisbär

Mitglieder
  • Gesamte Inhalte

    54
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von Eisbär

  1. Hallo gmd. Bei meinem Projekt für die externe Steuerung nutze ich XML-Kommentare an den Klassen, Aufzählungen, etc. Das mache ich grundsätzlich so und grundsätzlich auf Englisch. Wenn ich mir bei einer Formulierung nicht sicher bin nutze ich eine hervoragende Übersetzungsmaschine (Deepl, einfach mal googlen). Leider ist aber auch die nicht immer perfekt, bietet aber für jedes Wort der Übersetzung auswählbare Alternativen an. Bei einem Enum für die verschiedenen Kommandos bin ich mir da unsicher. "Anlage" (also die Eisenbahnanlage) wird mit "plant" übersetzt. Es gibt viele Alternativen, z.B. "layout". Wie würdest Du das Wort übersetzen? VG Christian
  2. Hallo EASY. Ah ja jetzt. Ich habe bisher für jedes Kommando eine neue Verbidnung aufgebaut. Deshalb hat es nicht geklappt. Vielen Dank für die Hilfe. VG Christian
  3. Hallo zusammen. Den Rat von gmd habe ich befolgt, aber den Beitrag mit dem Skript habe ich leider nicht gefunden. Also habe ich es einfach mal versucht. Das ist das Ergebnis: Ich sende Kommando10. Bleibt erartungsgemäß hängen, wenn ich versuche eine Antwort abzufragen. Ohne Anytwortabfrage geht es, also soweit alles fein. Ich sende irgendwelche Kommandos, die Rückgabewerte haben. Laut Beschreibung werden sie nicht ausgeführt, sondern bis zum Schließen der Gruppe nur eingereiht. Ist aber nicht der Fall. Wenn ich nach dem Senden eine Antwort abfrage kriege ich sie auch. Ich sende das Kommando 11. Es sollte nichts zurückliefern, tut es aber. Es liefert "0;Invalid command" Mmmhh, ich bin verwirrt. Kann jemand helfen? VG Christian
  4. Danke für die hilfreich Antworten!
  5. Hallo zusammen. Die Anleitung "Steuerung über externe Schnittstelle" beschreibt die Möglichkeit Befehle in Gruppen zu übertragen. Wenn ich eine einzelnes Kommand sende erhalte ich sofort eine Antwort. Bei den Gruppen sollen die Antorten beim Schließen der Gruppe nacheinander kommen. Ich kann mir aber nicht recht vorstellen wie das geht, denn beim Einzelbefehl sende ich ja das Kommand und frage danach den Stream ab um die Antwort zu kreiegen. Wie kriege ich denn die nachgelieferten Antworten aus einer Gruppe abgefragt? Leider kann ich das aus der Anleitung nicht so recht rauslesen und wäre für eine Erläuterung dankbar. VG Christian
  6. Hi gmd. Bitte nicht missverstehen, meine Abneigung gegen LUA ist keine Kritik am MBS. LUA erlaubt es auch Leuten, die mit Softwareentwicklung nichts am Hut haben, Automatisierungen zu realisieren. Und das ist toll! Nur für mich persönlich ist LUA ein Krampf und ich entwickle lieber mit einer richtigen Programmiersprache. Zudem belasten extern ablaufende Aktionen das MBS nicht. Ich habe es in LUA schon geschaftt die Züge ordentlich zum Ruckeln zu bringen. Das Modellbahnstudio ist klasse und die Gemeinschaft ebenso! Ich arbeite übrigens gerade an etwas was für alle, die mit C# externe Lösungen schaffen wollen, eine wertvolle Hilfe sein wird. Noch ist es zu früh, darüber Näheres zu berichten und es ist noch nicht vorzeigbar, aber ich werde es wenn es fertig ist der Gemeinschaft zur Verfügung stellen. VG Christian
  7. Super, das freut mich. Mach Dir Deinen eigen Mix aus manueller und automatischer Bedienung und hab einfach Spaß dabei!
  8. Hallo streit_ross. Das ist einfach eine Frage der persönlichen Vorlieben. Dir hat es wahrscheinlich schon immer Spaß gemacht selbst alles zu schalten und mit dem Fahrregler den Zug zu steuern. Ich (übrigens 53 Jahre alt) hatte als Jugendlicher eine Minitrix-Anlage, die große Teile meines Taschengeldes gefressen hat. Die habe ich auch schon voll automatisiert, mit Gleiskontakten und Relais. Als alles fertig war wurde es langweilig, der Weg war das Ziel, die technische Herausforderung. Das Schöne an der Modellbahn ist doch, dass beides geht und im Fall des Modellbaustudios für kleines Geld. Wenn Du Dich mal in Ruhe und schön langsam mit LUA vertraut machst und einen simplen Ansatz verfolgst, kannst Du vielleicht mit der Zeit beides verbinden. Schalte zum Beispiel Weichen und Signale selbst, und lass LUA dafür sorgen dass die Züge am roten Signal anhalten oder abbremsen, wenn ein Streckensignal Langsamfahrt signalisiert. Du findest hier Anleitungen und jede Menge Unterstützung. Und wenn Du keine Lust drauf hast, dann pfeif einfach auf Automation! VG Christian
  9. Hi gmd. Danke für den Einblick in Deine Überlegungen. Ich finde LUA einfach nur schrecklich und werde wohl eher den externen Ansatz bervorzugenb. Für das was ich vorhabe ist es aber noch ein langer Weg, also bleibt es erst mal bei LUA. VG Christian
  10. Hi gmd. LUA? Wozu brauchst Du die denn noch, die Schnittstelle ermöglicht doch eigentlich alles von außen zu realisieren. Wo liegt mein Denkfehler? VG Christian
  11. Hi gmd. Kannst Du mir bitte auch mal Deine Methode zum Senden der Kommandos schicken? Meine Funktioniert zwar, ich fürchte aber beim Senden von Gruppen könnte die Probleme bereiten. Danke vorab. VG Christian
  12. Nun klappt es! Danke an alle, die geholgen haben!
  13. "T Traveling in a fried-out Kombi, on a hippie trail, head full of zombie ..." Bin Fan von "Men at Work" wie Du siehst. Schöne Grüße an die Kangurus!
  14. I already thought that you might probably be an English native speaker. So where are from actually?
  15. Auch Dir vielen Dank. Und es wäre ein guter Catch, wenn ich die Texte nicht vertauscht hätte...
  16. Danke für die Hilfe natürlich. Was für ein Deutsch! :-)
  17. Hallo Neo. Danke für Hilfe. Ich hatte das auch so verstanden, dass das Modellbahnstudio auf den angegebenen Port Nachrichten sendet, die dann von einem Listener empfangen werden. Nun ist das aber ja aufgeklärt und ich freue mich auf die Möglichkeiten, die mir diese Schnittstelle ermöglicht. Wenn ich einen Vorschlag machen dürfte, möchte ich anregen, dass in dem Wikiartikel "Steuerung über externe Schnittstelle" auf ein weiteres PDF verlinkt wird, in dem Code-Schnipsel enthalten sind. Das würde den Einstieg in das Thema erleichtern. VG Christian
  18. Hi Neo. Natürlich gerne. Nachstehend findest Du meinen Code für das Senden und Empfangen. Beides ist basierend auf den Beispielen aus der Microsoft MSDN aufgebaut und kommuniziert einwandfrei miteinander. Beim Versuch Nachrichten vom Modellbaustudio zu kriegen bleibt der Code auf der Aweisung TcpClient client = server.AcceptTcpClient(); stehen. Sendet eine Anwendung mit einem Senderaufbau wie meinem, dann funktioniert der Listener einwandfrei. /// <summary> /// Runs the TCP/IP listener. /// </summary> private void runListener() { IPAddress ipAddress = null; TcpListener server = null; Byte[] data = new Byte[256]; int bytesReceived = default(int); string message = null; try { ipAddress = IPAddress.Parse("127.0.0.1"); server = new TcpListener(ipAddress, 31286); server.Start(); while (true) { TcpClient client = server.AcceptTcpClient(); message = string.Empty; using (NetworkStream stream = client.GetStream()) { while ((bytesReceived = stream.Read(data, 0, data.Length)) != 0) { message += Encoding.ASCII.GetString(data, 0, bytesReceived); } } MessageFromModellTrain?.Invoke(this, new ModelTrainEventArgs(message)); client.Close(); } } catch (SocketException ex) { MessageFromModellTrain?.Invoke(this, new ModelTrainEventArgs($"SocketException: {ex.Message}")); } catch (Exception ex) { MessageFromModellTrain?.Invoke(this, new ModelTrainEventArgs($"Exception: {ex.Message}")); } finally { if (server != null) { server.Stop(); } } } /// <summary> /// Sends a TCP/IP message. /// </summary> /// <param name="message">The message.</param> /// <returns><see cref="System.String"/>.</returns> public string SendMessage(String message) { string result = null; Byte[] data = null; Int32 bytesReceived = default(Int32); try { data = System.Text.Encoding.ASCII.GetBytes(message); using (TcpClient client = new TcpClient("127.0.0.1", 31285)) using (NetworkStream stream = client.GetStream()) { stream.Write(data, 0, data.Length); data = new Byte[256]; bytesReceived = stream.Read(data, 0, data.Length); result = System.Text.Encoding.ASCII.GetString(data, 0, bytesReceived); } } catch (SocketException ex) { result = $"Fehler: '{ex.Message}'"; } catch (Exception ex) { result = $"Socket-Fehler: '{ex.Message}'"; } return result; }
  19. Hallo Andy. Vielen Dank für den Versuch zu helfen. Das habe ich aber alles berücksichtigt und geprüft. Der Dialog heute Morgen mit gmd hat mich aber auf eine ID gebracht, ich probiere das heute Abend mal aus. Ich denke das Modellbahnstudio geht beim Versenden über TCP/IP nicht ganz sauber vor. Mein Listener ist so aufbebaut wie das üblich ist und stellt eine Akzeptanzanfrage an das Modellbaustudio. Die wird offenbar aber nicht beanwortet und deswegen wartet der Listener bis zum Sankt-Nimmerleins-Tag auf eine Antwort. Der Code, den gmd heute gepostet hat macht das nicht und funktioniert bei ihm. Wenn meine Vermutung stimmt wird es bei mir mit seinem Code auch klappen. VG Christian
  20. Vielen Dank für Deine Hilfe. ich baue heute Abend mal Deinen Code ein und schaue ob es damit klappt. Würde mich aber wundern, weill ich ja miot einem anderen Programm getestet habe ob der Listener auf dem Port lauscht. VG Christian
  21. Habs gestet, macht keinen Unterschied. Eigentlich müsste bereits der Wechsel zwischen Anlagen Ereignisse auslösen.
  22. Ich habe es immer mit dem Schalten einer Weiche versucht. Aber auch ein fahrender Zug schaltende Signale, etc. bewirken nichts. Dabei fällt mir aber was ein. Könnte es sein, dass wenn Ereigenisse mit Lua behandelt werden, diese gar nicht mehr an extern ausgelöst werden? Die Anlage mit der ich testen ist nämlich hoch automatisiert. VG Christian
  23. So sollte es dann richtig sein, korrekt? VG Eisbär
  24. Ich habe erst vor Kurzem mit dem MBS angefangen. Diese Einstellung finde ich nicht. Wo stellt man das denn ein? VG Eisbär
×
×
  • Neu erstellen...