Registrieren / Anmelden
Simulator Forum Handbuch https 
Forum :: Rund um Plugins

 

Aktuelle Zeit: Mo Jan 22, 2018 3:16 am

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beitr├Ąge ] 
Autor Nachricht
BeitragVerfasst: Di Jan 24, 2017 10:51 pm 

Registriert: Do Dez 29, 2005 9:19 pm
Beitr├Ąge: 125
Wohnort: Stuttgart
Hallo zusammen,

ich habe soeben folgendes Verhalten der Plugin-Schnittstelle beobachtet: Ich hatte einen Zug am Bahnsteig stehen, der seine Abfahrtszeit erreicht hatte (gelb hinterlegt). Wegen eines Gegenzuges war sein Signal noch in Haltstellung und er konnte nicht abfahren.
├ťber die Plugin-Schnittstelle wurden w├Ąhrenddessen st├Ąndig, ca. alle 600 ms, das Event "abfahrt" getriggert. Im Gegensatz zu anderen Z├╝gen war dann bei der tats├Ąchlichen Abfahrt in den Zugdetails noch der aktuelle, soeben verlassene Bahnsteig gesetzt, statt der n├Ąchste Bahnsteig.

Generell w├╝rde mich die Abfolge der Events bei einem Fahrplanhalt und die dabei mitgesendeten Zugdetails interessieren.
Meiner Beobachtung nach sind es folgende:
  1. ankunft;gleis="dieser Bahnsteig";amgleis="true"
  2. Falls Ausfahrsignal in Haltstellung: alle 600ms abfahrt;gleis="dieser Bahnsteig";amgleis="true"
  3. Falls Ausfahrsignal in Haltstellung war und jetzt in Fahrtstellung wechselt: abfahrt;gleis="dieser Bahnsteig";amgleis="false"
  4. Falls Ausfahrsignal nicht in Haltstellung war: abfahrt;gleis="n├Ąchster Bahnsteig";amgleis="false"

├ťber eine Antwort, ob ich das Verhalten korrekt wiedergegeben habe und ob dieses Verhalten so beabsichtigt ist, w├╝rde ich mich sehr freuen :)

Viele Gr├╝├če,
Moritz


Nach oben
 Profil
  
 
Mit Zitat antworten  
BeitragVerfasst: Mo Sep 11, 2017 9:30 am 

Registriert: Do Dez 29, 2005 9:19 pm
Beitr├Ąge: 125
Wohnort: Stuttgart
Hallo zusammen,

dann die Frage an die anderen Plugin-Entwickler: Wie habt ihr die Erkennung umgesetzt, an welchem Bahnsteig ein Zug gerade angekommen oder abgefahren ist? Wertet ihr (wie ich) den Bahnsteig in den Zugdetails aus, oder pr├╝ft ihr zu welcher Fahrplanzeile die aktuelle Zeit minus aktueller Versp├Ątung passt? Ist die Versp├Ątung zum Zeitpunkt einer Ankunft, Abfahrt und Durchfahrt dann auch in allen F├Ąllen bereits aktualisiert?

Das von mir beobachtete Verhalten ist zwar meistens so, aber leider nicht immer. In seltenen F├Ąllen steht bei der Abfahrt nicht der n├Ąchste Bahnhof in den Zugdetails, sondern der aktuell verlassene Bahnhof, obwohl das Ausfahrsignal in Fahrtstellung war und kein Abfahrts-Event mit amgleis=true getriggert wurde.
Ich habe das ganze bereits zeitintensiv beobachtet aber konnte keine Regel finden, wann bei der Abfahrt trotz amgleis=false ohne vorausgegangenes amgleis=true der aktuelle und wann der n├Ąchste Bahnsteig in den Zugdetails steht.

Falls es eine offizielle Spezifikation dazu gibt, w├Ąre ich nat├╝rlich auch daran noch immer interessiert.

Viele Gr├╝├če,
Moritz

_________________
jTrainGraph - Bildfahrpl├Ąne im Stellwerksim: Forumsthema, Homepage


Nach oben
 Profil
  
 
Mit Zitat antworten  
BeitragVerfasst: Di Sep 12, 2017 6:59 pm 
Benutzeravatar

Registriert: Mi Jul 16, 2014 9:46 am
Beitr├Ąge: 91
Hi Tauri,

bis ich deinen Beitrag heute morgen gelesen hatte, habe ich das ereignis-tag noch nicht verstanden gehabt. Das liegt unter anderem daran, dass ich mir noch nicht die M├╝he gemacht habe nachzufragen, und das ich die Schnittstelle (logischerweise) als erstes programmiert habe und mich dann nicht mehr viel mit der Dokumentation besch├Ąftigt habe.

Ich wei├č nicht, in wieweit du mein Plugin kennst, deshalb hier kurz zur Erkl├Ąrung: Ich mache das eigentlich so, wie du das als erste M├Âglichkeit beschrieben hast. Ich frage den "Sim-Server" in einem vom User vorgegebenen Intervall nach allen Zugdaten und werte diese dann aus. Das folgende verstehe ich nicht ganz, vielleicht kannst du das nochmal kurz ausf├╝hren:
The-Tauri hat geschrieben:
[...] oder pr├╝ft ihr zu welcher Fahrplanzeile die aktuelle Zeit minus aktueller Versp├Ątung passt? Ist die Versp├Ątung zum Zeitpunkt einer Ankunft, Abfahrt und Durchfahrt dann auch in allen F├Ąllen bereits aktualisiert?


Ich habe mir gerade noch die Dokumentation angesehen und finde die Idee prinzipiell ganz gut. Nur w├╝rde mir bei meinem Plugin z.B. die R├╝ckmeldung fehlen, wenn ein Zug seine Versp├Ątung ├Ąndert oder das Gleis gewechselt wird. Das w├╝rde die Programmierung auf der Plugin-Seite meiner Meinung nach vereinfachen.

Mit meinem Vorgehen habe ich keine Problem festgestellt. Sobald bei einer neuen Abfrage irgendetwas im Sim an dem Zug ge├Ąndert wurde, werden diese Daten mir auch korrekt mitgeteilt, sodass keine solch von dir genannten Probleme entstehen. Ansonsten kann ich dir zu den Events wenig sagen, da ich sie wie gesagt nicht benutzt habe.

Falls du dir genauer anschauen m├Âchtest wie ich die Verbindung programmiert habe, kannst du das gerne unter Github tun. F├╝r dich interessant w├Ąren dann Folgende Klassen: Verbindung, XMLHandler, Zug und FahrplanHalt. Die drei letztgenannten Klassen werden alle in der Verbindungs-Klasse erzeugt.

Manuel

_________________
Autor des Plugins Gleisbelegung
Forenbeitrag: Forum
Plugin-Webseite: Webseite


Nach oben
 Profil
  
 
Mit Zitat antworten  
BeitragVerfasst: Do Sep 14, 2017 7:32 pm 

Registriert: Fr Feb 12, 2016 5:55 pm
Beitr├Ąge: 22
The-Tauri hat geschrieben:
ich habe soeben folgendes Verhalten der Plugin-Schnittstelle beobachtet: [..]

Ich habe die Events noch nie benutzt, aber wenn deine Beobachtung so stimmt, w├╝rde ich das auch als "unpraktisch" oder als Fehler bezeichnen. Wenn je nach dem, ob zum erstmaligen Abfahrtsversuch eine g├╝ltige Fahrstra├če gestellt ist, bei der Abfahrt dann unterschiedliche Gleise gemeldet werden ist das jedenfalls nicht ideal.

Ich nehme an, dass du selbst schon ├Ąhnliche Gedanken hattest, aber was ich in deinem Fall ganz konkret tun w├╝rde (nachdem ein Beitrag hier mit Hoffnung auf Fehlerbeseitigung noch nichts gebracht hat): F├╝r jeden Zug (oder f├╝r jeden "Bahnsteig") ein Flag abspeichern, mit dem erfasst wird, wenn ein "erfolgloser" Abfahrtsversuch stattfindet (amgleis=true). Wenn eine "erfolgreiche" Abfahrt gemeldet wird, erkenne ich anhand des Flags, ob es direkt im ersten Abfahrtsversuch geklappt hat oder ob der Zug schon eine Weile versucht hat abzufahren, und somit ob der im Event ├╝bertragene Bahnsteig der n├Ąchste oder der vorherige Halt ist und kann mir je nach dem, was ich ben├Âtige, den anderen Wert aus vorher abgespeicherten Fahrplandaten oder ├╝ber einen API-Request holen. Dann das Flag wieder zur├╝cksetzen.

PS: Ich finde es sehr sch├Ân, dass du hier f├Ąlschlicherweise von "Bahnsteig" statt "Gleis" schreibst (viele der Stellwerksim-Gleise, an denen Z├╝ge halten k├Ânnen, haben ja nicht mal Bahnsteige aber trotzdem einen Namen/Nummer). :mrgreen: Habe ich in einem Skript auch falsch gemacht, und jetzt habe ich eine Datenbank mit Begriff "bahnsteig", wo eigentlich Gleise gemeint sind. St├Ârt mich etwas, aber ich habe auch keine Lust, das alles anzupassen. :wink:

Edit: Mit den Versp├Ątungszeiten w├╝rde ich nicht rumrechnen. Das wird vermutlich zu ungenau.


Nach oben
 Profil
  
 
Mit Zitat antworten  
BeitragVerfasst: Fr Sep 29, 2017 12:22 am 

Registriert: Fr Feb 12, 2016 5:55 pm
Beitr├Ąge: 22
Ich bin jetzt doch ├╝ber die Ereignisse gestolpert, und auch ich werde aus dem Abfahrt-Ereignis nicht recht schlau.

So wie du es ganz oben im Topic beschrieben hast k├Ânnte man ja noch irgendwie damit umgehen (in meinem Fall alle abfahrt-Events mit amgleis=true wegwerfen, weil ich nur an dem Moment interessiert bin, in dem der Zug tats├Ąchlich losf├Ąhrt ÔÇô wenn er noch 30 Minuten ohne Fahrstra├če am Bahnsteig steht ist das weniger relevant ÔÇô und bei Event mit amgleis=false dann in der eigenen Datenstruktur nachschauen, wo der Zug gerade gehalten hat), aber irgendwie traten immer wieder seltsame Fehler auf.

Jetzt habe ich mal wireshark angeworfen und festgestellt, dass bei einem der Z├╝ge, der losfahren wollte, aber noch kein gr├╝nes Signal hatte, im ├╝blichen Rhythmus eine Nachricht mit amgleis=false und sogar sichtbar=false (!) gesendet wurde, dabei stand er in der visuellen Darstellung im Sim noch am Bahnsteig und wartete wie gesagt auf ein gr├╝nes Signal. Danach h├Ątte er noch ein kurzes St├╝ck fahren m├╝ssen und w├Ąre dann im BW gelandet. Bl├Âderweise ist wireshark wieder zu, aber wenn ich nicht falsch geschaut habe, kam die identische Nachricht bis zur tats├Ąchlichen Abfahrt und dann nichts mehr.

Den tats├Ąchlichen Abfahrtszeitpunkt feststellen k├Ânnte man, wenn ich jetzt nichts falsch gesehen habe, so nur noch ganz krude: Sobald die erste Abfahrtsmeldung kommt alle 1-2 Sekunden nachschauen, ob noch eine neue Abfahrtsmeldung f├╝r den Zug kam. Bleibt die Meldung f├╝r 1-2 Sekunden aus, so ist der Zug gerade abgefahren. Nicht wirklich sch├Ân zu programmieren und streng genommen hat man dann eine Race Condition (vielleicht h├Ąngt ja nur der STS-Client, der Rechner, oder irgendwas in der TCP-Verbindung mal f├╝r 2 Sekunden und daher bleiben die Abfahrtsmeldungen so lange aus).

Vermutlich kann ich auf das Event irgendwie verzichten, aber sch├Âner w├Ąre es finde ich, wenn das besser funktionieren w├╝rde (oder wenn es Absicht ist, der gedachte Einsatzzweck genauer dokumentiert wird).


Nach oben
 Profil
  
 
Mit Zitat antworten  
BeitragVerfasst: Mo Okt 30, 2017 2:36 pm 

Registriert: Do Dez 29, 2005 9:19 pm
Beitr├Ąge: 125
Wohnort: Stuttgart
Hallo zusammen,

Danke f├╝r eure R├╝ckmeldungen, f├╝rs Mitdenken und Analysieren!

endour hat geschrieben:
The-Tauri hat geschrieben:
ich habe soeben folgendes Verhalten der Plugin-Schnittstelle beobachtet: [..]

Ich habe die Events noch nie benutzt, aber wenn deine Beobachtung so stimmt, w├╝rde ich das auch als "unpraktisch" oder als Fehler bezeichnen. Wenn je nach dem, ob zum erstmaligen Abfahrtsversuch eine g├╝ltige Fahrstra├če gestellt ist, bei der Abfahrt dann unterschiedliche Gleise gemeldet werden ist das jedenfalls nicht ideal.

Ich nehme an, dass du selbst schon ├Ąhnliche Gedanken hattest, aber was ich in deinem Fall ganz konkret tun w├╝rde (nachdem ein Beitrag hier mit Hoffnung auf Fehlerbeseitigung noch nichts gebracht hat): F├╝r jeden Zug (oder f├╝r jeden "Bahnsteig") ein Flag abspeichern, mit dem erfasst wird, wenn ein "erfolgloser" Abfahrtsversuch stattfindet (amgleis=true). Wenn eine "erfolgreiche" Abfahrt gemeldet wird, erkenne ich anhand des Flags, ob es direkt im ersten Abfahrtsversuch geklappt hat oder ob der Zug schon eine Weile versucht hat abzufahren, und somit ob der im Event ├╝bertragene Bahnsteig der n├Ąchste oder der vorherige Halt ist und kann mir je nach dem, was ich ben├Âtige, den anderen Wert aus vorher abgespeicherten Fahrplandaten oder ├╝ber einen API-Request holen. Dann das Flag wieder zur├╝cksetzen.
So habe ich mir das auch gedacht und f├╝r die Z├╝ge, die ein amgleis=true senden funktioniert es auch.

endour hat geschrieben:
[...] aber irgendwie traten immer wieder seltsame Fehler auf.

Jetzt habe ich mal wireshark angeworfen und festgestellt, dass bei einem der Z├╝ge, der losfahren wollte, aber noch kein gr├╝nes Signal hatte, im ├╝blichen Rhythmus eine Nachricht mit amgleis=false und sogar sichtbar=false (!) gesendet wurde, dabei stand er in der visuellen Darstellung im Sim noch am Bahnsteig und wartete wie gesagt auf ein gr├╝nes Signal. Danach h├Ątte er noch ein kurzes St├╝ck fahren m├╝ssen und w├Ąre dann im BW gelandet. Bl├Âderweise ist wireshark wieder zu, aber wenn ich nicht falsch geschaut habe, kam die identische Nachricht bis zur tats├Ąchlichen Abfahrt und dann nichts mehr.

Den tats├Ąchlichen Abfahrtszeitpunkt feststellen k├Ânnte man, wenn ich jetzt nichts falsch gesehen habe, so nur noch ganz krude: Sobald die erste Abfahrtsmeldung kommt alle 1-2 Sekunden nachschauen, ob noch eine neue Abfahrtsmeldung f├╝r den Zug kam. Bleibt die Meldung f├╝r 1-2 Sekunden aus, so ist der Zug gerade abgefahren. Nicht wirklich sch├Ân zu programmieren und streng genommen hat man dann eine Race Condition (vielleicht h├Ąngt ja nur der STS-Client, der Rechner, oder irgendwas in der TCP-Verbindung mal f├╝r 2 Sekunden und daher bleiben die Abfahrtsmeldungen so lange aus).

Vermutlich kann ich auf das Event irgendwie verzichten, aber sch├Âner w├Ąre es finde ich, wenn das besser funktionieren w├╝rde (oder wenn es Absicht ist, der gedachte Einsatzzweck genauer dokumentiert wird).
Ich werde noch eine Pr├╝fung implementieren, die bei Abfahrts-Events pr├╝ft, was im letzten Ankunfts-Event dieses Zuges angegeben war (sofern es eines gab). Wenn bei der Abfahrt und amgleis=false nicht der Bahnsteig angegeben ist, der nach dem Ankunfts-Bahnsteig folgen w├╝rde, stimmt etwas mit dem Abfahrts-Event nicht. Ich bin noch am ├ťberlegen, ob ich den Bahnsteig dann manuell ├Ąndere, oder in diesem Fall das Event einfach verwerfen soll.

Viele Gr├╝├če,
Moritz

_________________
jTrainGraph - Bildfahrpl├Ąne im Stellwerksim: Forumsthema, Homepage


Nach oben
 Profil
  
 
Mit Zitat antworten  
Beitr├Ąge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beitr├Ąge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beitr├Ąge in diesem Forum nicht ├Ąndern.
Du darfst deine Beitr├Ąge in diesem Forum nicht l├Âschen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche ├ťbersetzung durch phpBB.de
Impressum