gmd Geschrieben 10. März 2020 Teilen Geschrieben 10. März 2020 (bearbeitet) Hallo, loesungen fuer Python und VisualBasic hatte ich gefunden. Andy hat eine C++ version, die er mir nettwerweise zur verfuegung gesteltt hat. Hier ist eine Java version und dann mache ich noch einen test mit C# bevor ich mich entscheide ob C# oder Java verwende. package mbs_listener; import java.io.BufferedReader; import java.net.Socket; import java.net.UnknownHostException; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; /** * * @author gmd */ public class MBS_Listener { final static String ip = "127.0.0.1"; final static int port = 31286; /** * @param args the command line arguments */ public static void main(String[] args) { Socket socket = null; byte[] tempIn = new byte[1024]; InetAddress target = null; BufferedReader in = null; String inputLine; boolean connected = true; try { target = InetAddress.getByName(ip); socket = new Socket(ip, port); socket.setSoTimeout(1000); in = new BufferedReader(new InputStreamReader(socket.getInputStream())); } catch (UnknownHostException e) { System.out.println(e); } catch (IOException e2) { System.out.println(e2); } while (connected && in != null && socket != null) { try { inputLine = in.readLine(); System.out.println("Client said : " + inputLine); if (inputLine == null) { System.out.println("Client Disconnected!"); connected = false; } } catch (java.net.SocketTimeoutException e) { System.out.println("Timed out trying to read from socket"); } catch (IOException e2) { System.out.println(e2); } } } } Das ist nur ein einfacher listener. Wenn ich mich entschieden habe welchen weg ich gehe mache ich ein einfaches multithreaded bidirektionales beispiel bevor ich dann weiter ausbaue. Das wird ne weile dauern. Vielleicht is ja jemand interessiert. Obiges beispiel kann mit Netbeans geladen werden. gruss gmd Bearbeitet 10. März 2020 von gmd Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gmd Geschrieben 10. März 2020 Autor Teilen Geschrieben 10. März 2020 Und hier ist die C# version. Projekt initialisiert als WPF application und fuer test mal gerade in die window class eingebaut. Das wird natuerlich anders in einer richtigen app. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; using System.Net; using System.Net.Sockets; using System.Diagnostics; namespace MBS { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); Socket socket = null; TcpClient tcpClient = new TcpClient("127.0.0.1", 31286); NetworkStream networkStream = tcpClient.GetStream(); try { Debug.WriteLine("Waiting for connection"); while (tcpClient != null) { Byte[] data = new Byte[1024]; String responseData = String.Empty; // Read the event data Int32 bytes = networkStream.Read(data, 0, data.Length); //(**This receives the data using the byte method**) responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes); //(**This converts it to string**) Debug.WriteLine(responseData); } } catch (Exception e) { socket.Close(); } } } } gruss gmd Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Andy Geschrieben 10. März 2020 Teilen Geschrieben 10. März 2020 Hallo gmd, das ist für einen Kanal. Aber da die receive-Funktionen 'hängen', solange nichts reinkommt, muß da noch Multithreading rein, wenn der andere Kanal parallel genutzt werden soll. Da wird's schon aufwändiger. Gruß Andy Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gmd Geschrieben 10. März 2020 Autor Teilen Geschrieben 10. März 2020 Ja sicher aber multithreading und timeout handling ist weder in Java noch in C# ein problem. Werde das posten wenn es soweit ist. Derzeit gehe ich erst mal an die Weichensteuerung in der Blockverwaltung. gruss gmd Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HaNNoveraNer Geschrieben 10. März 2020 Teilen Geschrieben 10. März 2020 Für mich wäre es nur in VB interessant. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gmd Geschrieben 10. März 2020 Autor Teilen Geschrieben 10. März 2020 6 minutes ago, HaNNoveraNer said: Für mich wäre es nur in VB interessant. VB ist nicht meine sache (VB ist ein populaeres Bier hier in OZ) schmeckt aber nicht Das gibt es von Easy regards Gmd Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HaNNoveraNer Geschrieben 10. März 2020 Teilen Geschrieben 10. März 2020 Java ist nicht meine Sache. Das ist doch nur ne blöde Insel in Indonesien Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gmd Geschrieben 12. März 2020 Autor Teilen Geschrieben 12. März 2020 Hier ist die multi threaded version in C# mit dem event display in WPF. Die versionsnummer wird ausgelesen um das kommando senden zu demonstrieren. Es ist eine minimale version ohne viel schnickschnack. Die naechsten schritte sind erstmal ein vernuenftiges filter einzubauen um die events zu sortieren und verarbeitbar zu machen. Die einfache anzeige mit filter wird bleiben, auch mit dem stellpult, zum testen. In MBS kann man ja nur einen filterwert setzen, zumindest habe ich das so verstanden. Das reicht mir nicht. MBS_C#.zip gruss gmd Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
FeuerFighter Geschrieben 12. März 2020 Teilen Geschrieben 12. März 2020 Hallo gmd, gehört das eigentlich noch zum Programm oder bin ich hier im falschen Forum. Wir haben doch die EV und Lua oder nun auch noch C# oder sollen wir hier alle verfügbaren Programmiersprachen lernen? Gruß FeuerFighter Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gmd Geschrieben 12. März 2020 Autor Teilen Geschrieben 12. März 2020 Ignoriere doch einfach was du nicht brauchst. Keiner hat irgendetwas davon gesagt etwas zu lernen. Es kann ja sein, dass es andere gibt die es interessiert. gruss gmd Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
FeuerFighter Geschrieben 12. März 2020 Teilen Geschrieben 12. März 2020 ich antworte auch mal ohne Anrede. es geht hier aber nicht um eine Handvoll Leute sondern um die breite Masse die Eisenbahnanlagen bauen möchten. Das was Du hier vorstelltst verstehen die wenigsten der Mitglieder. Gruß FeuerFighter Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HaNNoveraNer Geschrieben 12. März 2020 Teilen Geschrieben 12. März 2020 (bearbeitet) Hallo gmd Danke für den Code! Schließlich gehört die Schnittstelle auch zum MBS. Und es haben alle was davon, wenn jemand Plugins entwickelt. Und je mehr sich damit auskennen, um so besser. Die Absicht der Mehrheit hier, das alles zu boykottieren verstehe ich irgendwie nicht. Man hat immer noch nicht verstanden, daß es unterschiedliche Interessen gibt. Und auch eine Minderheit hat ihre Berechtigung. Übrigens nicht nur beim MBS. Gruß Thomas P.S. Compilieren hat funktioniert. Läuft schonmal ganz gut: Bearbeitet 12. März 2020 von HaNNoveraNer Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
EASY Geschrieben 12. März 2020 Teilen Geschrieben 12. März 2020 Hallo, an dieser Stelle möchte ich nur anmerken, das das Themengebiet um was es geht schon sehr eindeutig umschrieben ist... Erweiterungen (Plugins) Erweitern Sie das 3D-Modellbahn Studio um eigene Funktionen durch Anbindung externer Programme. ... da kann wohl jeder für sich schon im Vorfeld entscheiden, ob es ihn anspricht oder nicht... und dass da auch mal ein Code-schnipsel in einer Programmiersprache auftaucht ist eigentlich (bei der Unterzeile des Themas) nicht weiter verwunderlich... Gruß EASY Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gmd Geschrieben 13. März 2020 Autor Teilen Geschrieben 13. März 2020 Ich bin dabei das programm taeglich zu erweitern (nehme mir 1-2 Stunden pro Tag) werde aber nicht mehr posten. Das ist mir einfach zu bloede mit diesen besserwissern. Falls interesse besteht dann sende PN und ich werde jeden persoenlich bedienen. Sind ja wahrscheinlich sowiso nicht viele. Das gleiche gilt in zukunft fuer meine LUA scripts und testanlagen. Ich sehe das als ob man jemandem 10 Euro schenkt. und man wird angemeckert wie man dazu kaeme oder warum es nicht 100 sind. gruss gmd Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
HaNNoveraNer Geschrieben 13. März 2020 Teilen Geschrieben 13. März 2020 Muss ja nicht über das Forum laufen, wenn das Forum das nicht möchte. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
EricD Geschrieben 13. März 2020 Teilen Geschrieben 13. März 2020 Hello fellow members Please do not discourage others from posting in this forum. I have learned a great deal from reading other peoples' posts. If you do not like the idea of coding in Lua (or C# or Java or even VB) then don't code in Lua etc and don't bother reading the posts which contain code. But please do not try to stop other people from discussing such things. I use the Pascal interface to control such things as locomotive routing. I have gained enormous pleasure from developing Delphi programs to control my layouts. I can, therefore, see the potential of an interface in a more frequently used language. When Lua was included in V5 I chose to learn that from scratch - nobody forced me to, but it gave me great pleasure. A lot of what I learnt came from reading posts in this forum. Programmers - please do continue to share your knowledge here in the forum. Please do not confine your knowledge to PN. Best wishes EricD Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
martin51 Geschrieben 13. März 2020 Teilen Geschrieben 13. März 2020 Hallo @gmd , mach auf jeden Fall weiter, keine PN, dieser Teil des Forums ist genau dafür eingerichtet. Wer nicht will (kann) muß hier nicht die Beiträge lesen. Ich selbst mache zur Zeit ein paar Test mit Python, da brauche ich keinen Compiler. Ein Programm wie Rocrail zu lernen, da ist mir der Aufwand zu groß. Mit welchem Compiler (kostenlos) kann man das compilieren? Gruß Martin Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
gmd Geschrieben 13. März 2020 Autor Teilen Geschrieben 13. März 2020 Martin, VisualStudio C# Community version. Ich benutze das nur weil ich ein alte lizenz habe und weil ich viel UI teile bauen muss. Es ist nicht die einfachste umbegung aber leistungsfaehig wenn man nicht gerade eine webapp baut. RocRail ist nicht nur aufwendig zu lernen sondern auch sehr muehsam zu bedienen. Ist halt uralt. Du kannst mira aber eine PN schicken dann gebe ich dir meine email. gruss gmd Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden