Jump to content

gmd

Mitglieder
  • Gesamte Inhalte

    667
  • Benutzer seit

  • Letzter Besuch

Alle erstellten Inhalte von gmd

  1. Warum vergessen. Es funktioniert soweit, abgesehen von diesem bug. Vielleicht finde ich ja noch mehr. Mein Blockmonitor ist so gut wie fertig inclusive gleiskonstakte. Ich kann das jederzeit auf ein anderes protokoll umstellen wenn es soweit ist, dann wird das Lua script halt algepasst. Da ich das generisch loese ist das kein grosses problem. Gruss Gmd
  2. Hallo, Habe probleme mit Kommando 61. Wie wird der variablenname angegeben? 61;Objektname.Variablenname funktioniert nicht und 61;Modulvariable funktioniert auch nicht getestet mit putty 60;Objektname.Variablenname;Wert meldet die variable ja korrekt und ich gehe davon aus dass der variablen name genauso einzugeben ist. Geht aber nicht, bekomme immer 0;Unknown ... usw Habe etliche variationen ausprobiert, ohne erfolg. Kommando 62 funktioniert wie erwartet. gruss gmd Work around: Hatte nur mal aus interesse einen zweiten parameter angegeben (als wert) was ja unnoetig ist bei 61 und auch nicht angegeben. Das funktioniert. Ist wohl ein bug.
  3. 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
  4. 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
  5. Ja das ist mir klar aber die bearbeitung ist zu muehsam. gruss gmd
  6. Haha, neine ich meine eine wirkliche schaltwerk simulation nach dem vorbild mit allen mechanischen elementen und tast, nicht die modellvariante. Ich mache alles open source, kein finanzielles interesse auch wenn man das mit EEP erreichen koennte. Wer interesse hat kann es benutzen. Der gleisplan wird nicht nach der anlage gebaut, das entsteht gleichzeitig oder auch nach dem anlagenbau wenn noch keine gleisbenennung stattgefunden hat. Die fahrwege wegen mit dem stellpult planer festgelegt, mit allen namen. etc. Die namen werden nach vorgaben generiert .Die MBS objekte werden danach benannt, die steuertabellen fuer die standard scripte generiert. So ist das gedacht. Werde ich an der kleinen demo anlage aufbauen und demonstrieren bevor ich an meine monsteranlage gehe. Weniger gemeint als modellieren nach vorgegebenen profilen, mehr spontan und feinere aufloesung als das raster des hoehenprofils. gruss gmd
  7. 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
  8. 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
  9. Das ist genau mein ansatz. Von meiner seite brauche ich keine muehsamen einzeldefinitionen, das ist mir zu lamgwierig. Das "basteln" besteht ja auch nicht aus der benennung jedes einzelnen teils auf der anlage. Man installiert heute digital funktionsbausteine. Will man an der naehe der realanlage bleiben braucht man die simulation solcher bausteine. Das ist eine moeglichkeit. Wenn einige sagen sie moechten so nah wie moeglich am basteln bleiben, dann moechte ich mal wissen wie sie ein gleisbildstellpult "basteln". Da geht es dann naemlich gleich los mit dem kompromiss, dass man doch einen pc benutzt und ein programm. Und dann wird es richtig muehsam mit den derzeitigen optionen. Ich habe mir alle gleisplan programme angesehen, die teuren und die freien. Schrecklich ! Lernintensiv, wenig intuitiv. Ich habe wenig interesse am beispiel einer eisenbahnsteuerung von 1960. Ein definitions layer ueber der ebene die heute zur verfuegung steht mit einer script library in open source, die komplexere einheiten bedient. Die ersten definitionen habe ich gerade fuer mich fertiggestellt und bin dabei einen gleisplan editor fuer mich zu bauen, der es mir erlaubt in kurzer zeit den plan fuer meine monsteranlage zu bauen. Das eine schliesst das andere ja nicht aus, Grundversion, Steuerversion, Erweiterte Steuerversion kann separat angeboten werden. Wer die zusatzmodule nicht nutzen will, braucht dafuer auch nicht zu zahlen. Fuer mich persoen;ich ist mir das ziemlich egal, das was ich aus der schnittstelle rausholen kann reicht weitestgehend fuer das was ich vorhabe. Ein paar punkte vielleicht die fehlen. Vorschlaege gehen mehr in richtung aufbau. Bessere unterstuetzung fuer oberleitung, und landschaftsbau. Ich wuerde gerne eine 3D brush sehen, die wie bei einem 3D printer das gelaende aufbaut, stattt die derzeit muehsamen methoden. Wenn die schnittstelle noch ein klein wenig erweitert wird kann alles auf einer hoeheren steuerebene von einem externen programm erledigt werden. gruss gmd
  10. Hallo, habe einen anfang gemacht fuer meine eigene externe steuerung. Manche moegen fragen warum das rad neu erfinden, es gibt ja schon genuegend. Holzraeder, speichenraeder, gummiraeder, stahlraeder usw. Aber fuer den Mond buggy musste man auch ein neues rad erfinden. Vorhandene konzepte haben die eigenart die gleisplaene alle auf dem kleinsten element aufzubauen, die einzeln plaziert werden. Das ist mir einfach zu muehsam. In der zeit in der ich eine anlage beschriftet habe und manuell einen gleisplan gebaut und alles definiert habe , habe ich mir auch ein programm gebaut. Ich kann ganze bloecke definieren und plazieren mit vielen automatischen funktionen dahinter. Das alles in RocRail zu machen ist mir einfach zu muehsam und eine real anlage anzusteuern mit DCC ist auch keine rocket science. Falls ich jemals wieder eine real anlage baue, was ich vorhabe, dann sowieso mit arduinos und meinem eigenen netzwerk. Hier die specs, die ich als ausgangspunkt definiert habe. Streckenelemente Einfahren optional Sperrsignal Strecke optional Vorsignal, optional Strassenkreuzung Bremsen Halten mit/ohne Warten beinhaltet Hauptsignal Ausfahren Sonderelemente Ende- mit und ohne Wenden Kuppeln Identifizieren Rangierstrecke Weichenelemente Links Rechts Kreuz Dreiweg Schiebebuehne Drehscheibe Verbindung Blockelemente Ein blockelement ist eine kombination obiger Strecken- und Sonderelemente. Verbindungselement Ein verbindungselement ist eine kombination aus weichenelementen die mehrere blockelemente verbindet. Strassenelemente Eine kombination von block- und verbindungselementen die einen punkt zwischen A und B definieren. Anlagenabschnitt Ein teil einer anlage bestehend aus einem oder mehreren strassenelementen. Blocktypen Streckenblock Durchfahrtblock Umfahrblock Ausweichblock Parkblock Rangierblock Austauschblock Halteblock Einfahrblock Ausfahrblock Verbindungsblock Endblock Ladeblock Serviceblock Trainingsblock Jeder blocktyp hat bestimmte eigenschaften, die durch zugeordnete spezifische scripts implementiert werden. Es ist moeglich eine kombination obiger typen zu erstellen. Eigenschaften werden ueber inspektor fenster zugeordnet. Gleisplaene werden erstellt durch plazieren von block- und verbindungselementen. Einzelne strecken- oder sonderelemente gibt es nicht im gleisplan. Sie sind immer bestandteil eines blockelements. Jedes blockelement kann an jedem verbindungspunkt eines einzelelementes abgebogen werden (45 grad) um die gewuenschte geometrie the plans zu erzeugen. Verschiedene views auf den gleisplan koennen dynamisch gebildet werden. Die laufzeitumgebung unterstuetzt einen touchscreen fuer plazierungs und steuerungskommandos. Blockelemente koennen farblich unterschieden werden und belegt- und reserviert anzeigen koennen ebenfalls durch verschiedenen hintergrund farben visualisiert werden. Fahrzeugbewegung wird durch animation angezeigt und wahlweise kann der fahrzeugname eingeblendet werden. Signalstellungen werden innerhalb der streckenelemente angezeigt. Fahrbefehle koennen ueber touchscreen eingegeben werden. Es ist ziel die blockdefinition zuerst im steuerungsprogramm zu machen. Eine einzelne eingabe von gleisnamen und konatktname ist nicht erforderlich, diese werden automatisch erzeugt. Die namen werden automatisch in der MBS anlage geschrieben wenn ein "Trainingslauf" ueber den block stattfindet. Dadurch wird die verknuepfung zwischen steuerungsprogramm und anlage hergestellt. Zugkonfigurationen koennen auf einem Trainingsblock ermittelt werden. Zuege koennen automatisch plaziert werden. Parken von unbenutzten zuegen auf einer parkflaeche ohne gleise ist moeglich. Abrufen von zuegen von der parkflaeche ueber ein Einfahrblock und ablegen ueber Ausfahrblock. Das ganze mache in C# mit WPF gruss Gmd
  11. Die naechste version 5CB72297-8285-461B-A14F-B30EA6C50C48 Alle anderen sind entfernt. Mit weichenschaltung, geschwindigkeits parametern per block, wartezeiten per halteblock, automatische durchfahrtsanforderung Vor- und sperrsignale sind noch nicht versorgt, nur verbunden. Langsamfahrt erwarten und manuelles sperren eines einfahrtgleises wird noch irgendwann erweitert. Das script wird als naechstes erweitert um mehrere anlagenabschnitte zu definieren. Jeder abschnitt kann bis zu 99 bloecke enthalten. Das kann allein durch definition der drei tabllen im hauptscript erfolgen. Programmierung ist nicht erforderlich. Derzeit is nur eine abschnitt definition unterstuetzt. Der naechste schritt muss sein diese tabellen auch durch ein interaktives tool zu erstellen ueber die externe schnittstelle. gruss gmd
  12. could not care less about likes, ist nur eine facebook krankheit dass man sowas braucht. Ich war einfach nur hoeflich, haette das auch anders ausdruecken koennen. gruss gmd
  13. Forum inhalte sollten nicht auf das kleinste gemeinsame vielfache reduziert werden. Solche posts verhindern dass man ueberhaupt etwas posted was ueber 1+1 hinausgeht. Wenn du nicht einverstanden bist dann sende eine PN und poste so etwas nicht oeffentlich, macht dich nicht gerade sympathisch, wenn dir daran ueberhaupt etwas liegt. gruss Gmd
  14. VB ist nicht meine sache (VB ist ein populaeres Bier hier in OZ) schmeckt aber nicht Das gibt es von Easy regards Gmd
  15. 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
  16. 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
  17. 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
  18. Hier ist die verbesserte version. Muss erweitert werden fuer mehrere blocklisten. Werde das tun wenn ich die weichen verwaltung eingebat habe. E7BF2785-7534-4720-9729-3C75BB1417D1 Jetzt ist nur noch erforderlich die definitionstabelle zu erstellen und die komponenten alle richtig zu benennen. Bevor ich weitermache werde ich mir ein programm bauen und die schnittstelle benutzen um strassen automatisch zu erkennen und benennen. Ich werde das so loesen dass ein zug auf einer voreingestellten strecke faehrt und waehrend der fahrt die gleise und weichen erkannt und automatisch benannt werden. Mit den signalen muss ich mir noch etwas ueberlegen, vielleciht kann ich ueber die position (koordinaten) eine zuordnung finden. sollte moeglcih sein. Wenn das funktioniert sollte der definitionsaufwand fuer eine groesse anlage drastisch sinken. Damit sollte auch die information zur verfuegung stehen das GBS oder auch rocRail besser zu parametrisieren. Mal sehen wie weit ich komme. gruss gmd
  19. Habe mal schnell umgebaut .. Eine kontakt routine und eine signalroutine. Werde meine variablen in ein gleis packen dann brauche ich auch die eventmodule nicht mehr. Das dauert etwas laenger das anzupassen und zu testen, lohnt sich aber, damit schrumpft das ganze nun wirklich auf generischen code und definitionstabellen. Die benennung der objekte ist auch geloest (im prinzip), dann kan ich meine monsteranlage etwas effizienter automatisieren. Danke nochmals fuer den tip. gruss gmd
  20. Ok, ich sehe dein argument. Macht sinn, ein problem dabei fuer mich. Wenn ich das umstelle auf alle kontakte ueber zentralen event dann muss ich aufpassen wenn ich das in analge mit vorhandenen konatkten einbaue die noch nicht de konventionen entsprechen, die muss ich filtern. Generell has du recht. Das gleiche gielt fuer Signale, soweit habe ich nocht nicht gedacht. Ist halt gut eine loesung zur diskussion zu stellen. Ich werde die demo anlage mal umbauen ... werde eine zweite version machen. Danke fuer den vorschlag gruss gmd
  21. berechnet und gezeichnet sind zwei par dinge. Neo sagte gezeichnet und das betrifft den bildaufbau (weniger objekte, schneller zeichnen, groesserer zoom faktor weniger details schnelleres bild) bewegte objekte muessen allerdings berechnet werde so wie ich das sehe. Zuege und autos fahren weiter auch wenn sie unsichtbar sind. gruss gmd
  22. Ja waere ein gedanke aber das ist eine weitere eben in der definition. Im selektionsfenster fuer die kontakte cann ich den prefix eingeben und bekomme lle kontakte direkt angezeigt das ist unwesentlich mehr aufwand als ein schlagwort zuordnen und erspart die definition des schlagwortes. So sehe ich das derzeit. Wenn mann events per script definieren koennte und die kontakte zuordnen per script waere es noch einfacher. gruss gmd
  23. Demo anlage F3B894BE-083C-4BA5-AF2D-47D96E71973F Habe kleine testanlage gebaut um mein script separat zu erweitern und nicht die grosse anlage mitschleppen. Ist in weniger als einer stunde entstanden, dabei ist die benennung der objekte der loewenanteil der arbeit. Habe einen herzschlag zugefuegt der verhindert dass ein dead lock passiert. Habe ausserdem die externe schnittstelle angeschaut und einen weg gefunden elemente eine fahrstrasse automatisch zu benennen. Werde mir ein plugin bauen was das tut. Kein lust in meiner grossen anlage das alles manuell zu vervollstaendigen. gruss gmd
  24. Das ist wohl richtig. Entscheidend ist der zoom faktor, also bildausschnitt, und das laesst schliessen zumindest bei meinem system, dass der bildaufbau der entscheidende faktor ist und nicht die berechnung der positionen. Das spielt sicher die CPU/Gpu eine rolle. Eine schnelle gpu mit langsamer cpu hat sicher einfluss auf die berechnung aber das haengt auch stark von dem aufbau des programms ab. Ich denke dass bei heutiger cpu leistung zur zeite der engpass im bildaufbau besteht, insbesondere mit vielen schatten etc. Reduzieren der bildqualitaet (details, schatten usw) wird die frame rate erhoehen und maximale gpu leistung kann nicht abgeruefen werden wenn das programm nicht dafuer vorbereitet ist (stichwort raytracing). Ich habe eine relativ bescheidene grafik karte in meinem system und die gpu ist nur mit max 25% ausgelastet. gruss gmd
  25. keine problem, ich muss nicht recht haben, ist nur meine meinung gruss gmd
×
×
  • Neu erstellen...