gmd Posted March 10, 2020 Share Posted March 10, 2020 (edited) 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 Edited March 10, 2020 by gmd Link to comment Share on other sites More sharing options...
gmd Posted March 10, 2020 Author Share Posted March 10, 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 to comment Share on other sites More sharing options...
Andy Posted March 10, 2020 Share Posted March 10, 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 to comment Share on other sites More sharing options...
gmd Posted March 10, 2020 Author Share Posted March 10, 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 to comment Share on other sites More sharing options...
HaNNoveraNer Posted March 10, 2020 Share Posted March 10, 2020 Für mich wäre es nur in VB interessant. Link to comment Share on other sites More sharing options...
gmd Posted March 10, 2020 Author Share Posted March 10, 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 to comment Share on other sites More sharing options...
HaNNoveraNer Posted March 10, 2020 Share Posted March 10, 2020 Java ist nicht meine Sache. Das ist doch nur ne blöde Insel in Indonesien Link to comment Share on other sites More sharing options...
gmd Posted March 12, 2020 Author Share Posted March 12, 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 to comment Share on other sites More sharing options...
FeuerFighter Posted March 12, 2020 Share Posted March 12, 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 to comment Share on other sites More sharing options...
gmd Posted March 12, 2020 Author Share Posted March 12, 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 to comment Share on other sites More sharing options...
FeuerFighter Posted March 12, 2020 Share Posted March 12, 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 to comment Share on other sites More sharing options...
HaNNoveraNer Posted March 12, 2020 Share Posted March 12, 2020 (edited) 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: Edited March 12, 2020 by HaNNoveraNer Link to comment Share on other sites More sharing options...
EASY Posted March 12, 2020 Share Posted March 12, 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 to comment Share on other sites More sharing options...
gmd Posted March 13, 2020 Author Share Posted March 13, 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 to comment Share on other sites More sharing options...
HaNNoveraNer Posted March 13, 2020 Share Posted March 13, 2020 Muss ja nicht über das Forum laufen, wenn das Forum das nicht möchte. Link to comment Share on other sites More sharing options...
EricD Posted March 13, 2020 Share Posted March 13, 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 to comment Share on other sites More sharing options...
martin51 Posted March 13, 2020 Share Posted March 13, 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 to comment Share on other sites More sharing options...
gmd Posted March 13, 2020 Author Share Posted March 13, 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 to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now