-
Gesamte Inhalte
513 -
Benutzer seit
-
Letzter Besuch
Letzte Besucher des Profils
4227 Profilaufrufe
-
Nur als anregung gedacht, wenn Neo mal nichts zu tun hat .. lol Als abfallproduct meiner gleis- und blockerkennung habe ich funktionen, die eine anlage zunaechst einmal untersuchen ob doppelte oder ueberlappte gleise vorhanden sind. Diese bringen die kalkulation durcheinander. Es war erstaunlich wieviele doppelte gleise ich in meinen anlagen hatte und auch ueberllappende enden. Da bleiben die loks stehen, aber wenn das im tunnel oder schattenbahnhof passiert dann ist man am suchen. Doppelte gleise, also direkt uebereinander halten die loks ja nicht an, koennen aber bei oberleitungen und steuerungen probleme machen. Ich habe ueberlegt daraus einen plugin zu machen, ist aber einiges an arbeit, die ich eigentlich derzeit nicht investieren will, im MBS aber ist das sicherlich unendlich viel einfacher in der elementuebersicht eine warnung eizublenden. Einfach mal ein gedanke, kommt ja hin und wieder vor dass man in eine solche falle faelllt. Gruss Gmd
-
Neo, Easy, Testergebnis: String - nur teilweise zur veranschaulichung [{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6001)@-001"}, "id": 1},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6003)@-002"}, "id": 2},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6030)@-003"}, "id": 3},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6003)@-008"}, "id": 4},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6003)@-009"}, "id": 5},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6030)@-010"}, "id": 6},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6001)@-011"}, "id": 7},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6001)@-012"}, "id": 8},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6030)@-013"}, "id": 9},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "(6036)@-004"}, "id": 10},{"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params .......} ] habe 120 dieser commands erfolgreich versendet - getestet mit Putty Bei 160 macht die verbindung die kraetsche ... Verbindung abgebrochen durch server .. Habe nicht genau die grenze getest, wahrscheinlich buffergroesse .. 120 commands ist erstmal ok fuer mich .. alte schnittstelle benutze ich mehr aber mit der groesse kann ich zunaechst einmal leben. Langfristig waere groesserer batch laenge gut. Gruss Gmd
-
Hallo, mal wieder ein zwischenbericht. Ich arbeite ja an verschiedenen baustellen gleichzeitig, je nach lust und laune. Die letzten tage habe ich allerdings auschliesslich mit blockerkennung verbracht. Wie oben berichtet habe ich den gleisplan ausgelesen und gezeichnet, zur kontrolle im wesentlichen. Dann habe ich funktionen gebaut und mit consolausgaben getestet, was aber nur bis zu einem gewissen mass funktioniert. Dann habe ich erstmal weitere anzeigenfunktionen gebaut, mit denen ich ergebnisse der analysenfunktionen besser pruefen kann, und auch interaktive elemente auf dem modell direkt auswaehlen kann. Alle gleise eingelesen mit eindeutigen namen und allen eigenschaften. Gleisstrecken und temporaere bloecke ermittelt. Hierauf aufbauend werden die steuerungselemente zugewiesen, signale, bremskontakte, einfahr- und ausfahrkontakte, usw. Blockverbindungen ueber weichen... und da ist noch ein fehler drin .. Diese info wird zur dynamischen fahrstrassensteuerung verwendet. Diese anzeigen werden spaeter nicht mehr wirklich gebraucht, wenn dann nur zur fehlersuche. Ich habe weitere funktionen erstellt, die aber noch keine eigene anzeige haben, das kommt als naechstes. Diese funktionen sind: Erkennen isolierter weichen, d.h. weichen die nur mit weichen verbunden sind, die bekommen sonderbehandlung. Doppelte gleise: erkennen wenn gleise uebereinanderliegen, kommt vor, ist ein abfallprodukt. Erkennen parallele gleise und daraus parallele bloecke ableiten. Daran arbeite ich derzeit. Unde wenn ich parallele bloecke erkannt habe, dann folgt logischerweise: Erkennen bestimmter gleismuster wie, ausweich gleis auf strecke, bahnhof harfe mit durchfahrt usw. Aus dem erkennen der gleismuster werden dann die signale und kontakte abgeleitet, groessere bloecke werden je nach laenge in unterabschnitte geteilt (parameter maximale zuglaenge). Gruss Gmd
-
Kann das jemand bitte fixen ? {19A4C617-603E-4066-A5FD-D49FA2BD54EF} - Anknickende Vorfahrtstraße rechts Bin nicht kleinlich was tipfehler angeht, aber hier macht es mir technische probleme beim migrieren von anlagen, wenn es frueher richtig war und jetzt nicht mehr. Auch haben viele strassen den name geaendert zu Stadtstrassen (mit sz natuerlich), das ist ok, aber tippfehler sind hinderlich. Gruss Gmd
-
Neo, danke, wie sieht das mit den return werten aus, ich nehme an die kommen als json zurueck und in der reihenfolge der kommandos, correct ? Werde das ausprobieren. Ich bin nicht mehr weit davon entfernt die blockstrukturen automatisch zu erkennen und alle benoetigten steuereinrichtungen automatisch zu plazieren. Werde weiter berichten, koennte ein plugin daraus werden. Auslesen des gleisplans mit allen informationen und zeichnen des plans in rund 30 sekunden, da sind noch einige einzelaufrufe drin. Habe noch keine zeiten fuer die plazierung von signalen und kontakten. Ich muss noch scripte bauen fuer die objektverknuepfungen. Aber alles in allem geht es vorran. Habe auch schon mit ueber 10,000 gleisen getestet, welches der ausloeser war zu optimieren wo ich konnte. Das beispiel oben hat 750 gleiselemente, ist also vergleichsweise klein. Sagen wir mal eine rohanlage mit 2000 gleiselementen mit allen signalen und kontakten zu versehen und die signifikanten gleise alle mit blockkennungen versehen in unter 3 minuten, das waere so mein naechstes ziel. Gruss Gmd
-
Neo, Ich bleibe mal bei diesem thread mit den rueckmeldungen bezueglich der neuen schnittstelle. Ein ganz wesentliches problem, abgesehen von einzelnen funktionen, ist die performance beim anlysieren von gleisplaenen und orgnisieren groesserer objektmengen, bedingt durch die abwesenheit der kommandogruppen. Ich kann natuerlich alle kommandos einzeln schicken, es funktioniert grundsaetzlich, aber der unterschied ist faktor 100 in der laufzeit. Ich habe limits festgestellt in der anzahl der kommandos pro gruppe abhaengig vom typ des kommandos und habe empirisch zuverlaessige werte ermittelt. Zum beispiel um fuer 500 objekte die koordinaten zu lesen brauche ich im gruppenmodus 103ms, transformationen lese ich in batches von 200, ebenenfalls um die 100ms. Das sind zeiten, die ich mit einzelkommandos niemals erreiche. Und das wird sich auch auf die steuerung auswirken, wenn eine entsprechende anzahl von operationen auszufuehren ist. Derzeit werde ich nur diejenigen funktionen umstellen die nicht zeitkritisch sind und die neue schnittstelle lediglich fuer scripte verwenden. Auch die verarbeitung von events ist durch das Json format langsamer geworden, wir reden hier zwar nur um wenige milisekunden, aber das addiert sich natuerlich bei tausenden von events. Meine app laeuft jetzt multicore und ich versuche zu optimieren wo ich kann. Eine weitere funktion, die ich vermisse, ist lesen objektypen, also die moeglichkeit alle gleise zu lesen und nicht nur uber die selektion. Die alte schnittstelle sendet zwar viele objekte die nicht typ 1 sind auch wenn ich nur nach typ 1 frage, und hat auch fehler bei denen falsche typen zurueckgegeben werden, aber das filtern ist immer noch schneller als bei einer gesamtselektion, da die anzahl der gleise in der regel deutlich geringer ist als die anzahl der nicht gleise. Es stellt sich halt die frage, wie du die verwendung der schnittstelle in zukunft wirklich siehst. Fuer mich ist die alte schnittstelle in vieler hinsicht einfach besser, und wie erwaehnt, das senden von scripten ist eine gute sache. Ich sehe die neue schnittstelle nicht wirklich als realzeitsteuerung fuer groessere anlagen. Die voraussetzung dafuer sind einfach kommandogruppen. Du wirst moeglicherweise auf die verwendung von scripten hinweisen, die zur laufzeit als eine art kommandogruppe verwendet werden koennen, und ich werde auch ausprobieren wo da die grenzen sind, fuer die kontruktionsphase ist die alte schnittstelle jedenfalls noch nicht ersetzbar. Du koenntest zum beispiel {"jsonrpc": "2.0", "method": "editor.getEntityContentID", "params": {"_class": "entity", "name": "BD_W3-E"}, "params": {"_class": "entity", "name": "BD-AG-B07"}, "id": 1} verarbeiten, wie bei gruppierung usw. Das kommando wird nicht zurueckgewiesen, liefert aber nur eine guid, was ja nicht ueberrascht, wenn man den namen der funktion betrachtet. In summe, mit alter und neuer schnittstelle habe ich alle funktionen, die ich fuer meine app brauche. Ich erwarte auch nicht dass du wegen mir funktionen einbaust, die nicht deinem langfrisitigen konzept entsprechen, aber wie schon gesagt, es kommt letztlich darauf an wozu die schnittstelle gut sein soll. Jedefalls bin ich dankbar, dass du die alte schnittstelle nicht gleich ersetzt hast, sondern dass ich beide parallel nutzen kann in der V9. Gruss Gmd
-
Es hat mich einfach mal interessiert ob ich vielleicht rocrail format benutzen kann um meine gleisplaene zu speichern, habe allerdings festgestellt dass das nicht viel bringt. Rocrail hat einen grundsaetzlichen designfehler in der datenstruktur und zwar sind layout und controllinformationen vermischt . Ich koennte einen gleisplan vom MBS exportieren und in Rocrail einlesen, aber ohne jeglichen weitern informationen und dabei gewinnt man nicht wirklich viel. Layout muss reduziert werden, bloecke definiert usw. . Man muesste fahrstrasseninformationen aus dem Mbs in rocrail kontrollstrukturen umwandeln und da fragt man sich dann warum .. Mbs ist wesentlich flexibler und hat ein GBS und Rocrail hat einfach eine andere zielsetzung und ursprung und meiner meinung nach ist es einfach voellig veraltet und ein undurchsichtiges sammelsurium von funktionen geworden im laufe der zeit. Jedenfalls sieht das fuer mich so aus, und was mich am meisten stoert ist dass es so wenig intuitiv ist. Man kann nicht viel sinnvolles tun ohne dokumentation zu lesen, und das stoert mich nun mal unendlich. Sorry for the rant.. Gruss Gmd
-
Neo, du hast mich mal gefragt was mir an der neuen schnittstelle fehlt und ich war noch nicht vollstaendig im bilde. Das bin ich zwar immer noch nicht , aber zumindest kann ich jetzt eine funktion nennen die mir in der neuen schnittstelle fehlt. 303;name;0;1 also extended geometrie mit allen segmenten aus der alten schnittstelle. Warum ? : wenn man ein Katalogkleis mit dem editor verbiegt und verlaengert, verkuerzt, etc. dann kann man das nicht erkennen. Ich kann keine flexibel verlegten gleise erkennen (selbe guid wie original, und auch nicht anders gekennzeichnet). Das ist fatal fuer meine blockerkennung und auch die plazierung von steuerobjekten, da kein durchgaengiger gleisplan errechnet werden kann. Damit wuerde mein konzept so wie die schnittstelle jetzt ausgelegt ist nicht mehr funktionieren, da luecken im gleisplan entstehen oder jegliche abweichung vom standardgleis vermieden wird, und das ist theorie. Weiterhin, und das ist halt eine schoenheitssache und nicht existentiell, waere es schoen bei erzeuge objekt auch eine variation angeben zu koennen. Mein programm kennt alle variationen und wenn du diese funktion implementierst, mache ich ein plugin mit dem man variationen eines modells zur auswahl auf dem board positionieren kann und nicht einzeln durchgehen muss. Wenn man natuerlich nocht die anzahl von variationen abfragen kann waere das noch besser. Gruss gmd
-
Das ist nun wirklich elegant, very nice. Gruss Gmd
-
Was mir noch dazu einfaellt ist, dass Neo ein feature einbauen koennte mit dem man die manuelle bedienung von weichen, signalen etc unterbinden kann, fuer einzelne objekte, gruppen, schlagworte oder alle eines typs (entweder Guid oder sammelbegriff wie Signale,Weichen etc. Damit kann man dann ungewuenschte oder zufaellige eingriffe verhindern. Ist im grunde das was auch meine steuerung tut. gruss Gmd
-
Darstellung von Umlauten und Sonderzeichen JSON Schnittstelle
gmd antwortete auf EASYs Thema in Erweiterungen (Plugins)
Was ich tue sollte Neo ueberhaupt nicht beeinflussen in seiner entwicklungsrichtung, zumindest fuer einige zeit. Was ich tue ist "einfach" ein riesiges plugin und eine experimentelle entwicklung. Weder wird es die kosten des MBS erhoehen noch verringern. Wenn durch dies entwicklung und die diskussionen ideen entstehen die unmittelbar fuer das Mbs nuetzlich sind, kann und wird Neo diese aufgreifen und umsetzen. Wird am ende meine vision wahr, wird das werbung fuer das MBS sein und ein modul welches kostenfrei von jedem verwendet werden kann, falls es jemals dazu kommt das ganze installierbar zu machen und mit weniger resourcen auszukommen als bisher. Fuer jetzt ist das ein versuch und wer moechte kann daran teilnehmen, die source ist offen. Ich hoffe ich habe das verstaendlich formuliert. Gruss Gmd -
Wicked, hatte ich noch nicht wirklich bewusst gesehen. Das spart coding .. muss ich mal weiter drueber nachdenken. Danke Gmd
-
-
Darstellung von Umlauten und Sonderzeichen JSON Schnittstelle
gmd antwortete auf EASYs Thema in Erweiterungen (Plugins)
"Nur eigenen Code ist aktiviert." Die Option "Just My Code" (Nur eigenen Code debuggen) ist in Visual Studio aktiviert. Dadurch werden externe Bibliotheken wie Newtonsoft.Json ignoriert, und man kann nicht hineinspringen. Das is nur eine warnung dass du das nicht debuggen kannst, wird aber die funktion nicht beeinflussen. Du kannst die source laden zum debuggen, brauchst du aber nicht wirklich, das VS auf decompiled falls noetig. Tools - Options -> Debugging deselect Enable Just My Code warning is ticked, deswegen bekommst du die meldung. Gruss Gmd PS: wir koennen gerne per email oder auch whatsapp communizieren wenn du willst, kein problem, dann belasten wir das forum nicht mit diesen dingen -
Darstellung von Umlauten und Sonderzeichen JSON Schnittstelle
gmd antwortete auf EASYs Thema in Erweiterungen (Plugins)
Ich kann dir auch mal die source files schicken, wenn das einfacher ist. Gruss Gmd in meinem logger sieht man die umlaute encoded, und wenn sie dann umgewandelt sind Ich kann die events zerlegen und in eine freundlcihere darstellung umwandeln und die entities extrahieren und filtern usw. Wenn du interesse hast schicke ich dir das gerne .. sollte sich leicht transferieren lassen gruss Gmd