Jump to content

Eine Frage zur externen Steuerung


Recommended Posts

Hallo MBS-Freunde,

ich habe eine kleine Frage zur externen MBS-Steuerung. Vielleicht kann mir jemand einen Tip geben.

Wenn ich die Kommando-ID 250;0 absetze, sollten eigentlich alle Kameras übergeben werden. Aber egal, ob ich als Parameter 0,1,2 oder 3 angebe, ich erhalte immer nur einen String mit den benutzerdefinierten Kameras zurück. Nun weiß ich nicht warum dies so ist.

Frage ich die aktive Kamera ab (ID 270), so erhalte ich als Rückgabe korrekt die aktuell aktive Kamera.

Hat sich vielleicht das Kommando in irgendeiner Art und Weise geändert, so das andere Parameter übergeben werden müssen? Ist vielleicht die Übergabe falsch?

procedure TForm1.bu_CamsClick(Sender: TObject);
begin
   cmdSender('250;0'+chr(10), Sender);
end;

Andere Kommandos, auch mit Parameter, lassen sich so absetzen. Erstellt ist das Ganze mit Lazarus auf einem Raspberry Pi 4. Zur Kommunikation nutze ich die lNet-Erweiterung.

Danke für eure Antworten und allen ein schönes Wochenende
Plutoli

Link to post
Share on other sites

Hallo Plutoli,

die Dokumentation ist hier leider nicht mehr ganz auf dem aktuellsten Stand. Es gibt in V6 nur noch die benutzerdefinierten Kameras, die 2D-, 3D- und Cockpit-Ansichten sind technisch keine Kameras mehr und werden daher auch nicht mehr über das Kommando 250 zurückgeliefert. Da seit V6 jedes Fahrzeug eine Cockpit-Ansicht besitzt (auch Wagons), unterstützen die Kommandos 270/271 neben den benutzerdefinierten Kameras auch jedes Fahrzeug.

Viele Grüße,

Neo

Link to post
Share on other sites

Hallo Neo,
danke für Deine rasche Antwort. :-)

Die Kommandos 270/271 nutzen mir zunächst (noch) nichts. Per 350;1 bekomme ich eine Liste aller Loks. Leider bekomme ich hierbei auch Straßenfahrzeuge oder Menschen als Ergebnis zurückgeliefert und nicht nur echte Loks. Gibt es hier eventuell eine Unterscheidung, wie ich nur eine bestimmte Kategorie zurückgeliefert bekomme? Alternativ wäre es eine Option, entsprechenden Objekten, die für eine Kameraansicht infrage kommen, eine Objektvariable mitzugeben. Aber hier habe ich auch noch nicht herausgefunden, wie ich diese mit einer externen Verbindung abfragen kann. Gibt es hierzu vielleicht einen Trick?

 

Letztens hatte ich angefragt, ob es möglich ist per Ereignissteuerung ein Video aufzuzeichnen, was ja nicht geht. Nun will ich versuchen, dies mit externen Mitteln zu lösen und dabei die Möglichkeit haben während der Aufzeichnung entsprechende Kameras auszuwählen, unabhängig zusätzlich zur Kameraauswahl durch die Ereignissteuerung. 

Schöne Grüße
Plutoli

Link to post
Share on other sites

Hallo Plutoli,

aktuell gibt es leider keine Unterscheidungsmöglichkeiten zwischen verschiedenen Rollmaterialien. Benötigst du diese denn überhaupt, wenn du ein Video aufzeichnen willst? Stehen die zu verwendenden Fahrzeuge/Kameras nicht im Vorfeld fest?

Viele Grüße,

Neo

Link to post
Share on other sites

Hallo Neo,
nee, die Kameras bzw. Fahrzeuge stehen nicht unbedingt im Vorfeld fest sondern sind davon abhängig, welche nun einen entsprechendes Ereignis zur Kameraauslösung startet. Dies können, wie in meinem Beispiel gezeigt, verschiedene Rollmaterialien sein. Da ich zum Beispiel per Zufall bestimme, welcher Zug im Schattenbahnhof gestartet wird, löst dieser auch das erste Kameraereignis aus. Danach greife ich auf fest vorgegebene Kameras zu, oder halt jene, die das nächste Ereignis auslösen. Eine Vorhersage ist da nicht so einfach.

Um dann ein Video zu planen, wäre es praktisch, wenn man halt das entsprechende Rollmaterial auslesen könnte um dieses dann kurzfristig auzuwählen zu können ohne den Ablauf zu stören. Wenn ich dies manuell über das MBS machen würde, müßte ich die Anlage jedesmal anhalten, Rollmaterial auswählen, Kamera aktivieren und weiterlaufen lassen.  Geht auch, ist aber nicht wirklich effizient. ;-)

Leider helfen die Kommandos 60/61 auch nicht weiter, hier bekomme ich nur eine 1 (erfolgreich) zurückgeliefert, aber sonst keine weiteren Informationen zu Variablen.

Aber auf jeden Fall danke für Deine Hilfe

Schöne Grüße
Peter

 

2021-01-17.mbp

Link to post
Share on other sites

Hallo Atrus,

selbstverständlich kann man das. Allerdings ist es mir noch nicht gelungen an die Objekt-Eigenschaften (Variablen oder Schlagworte) zu gelangen. In der EV bekomme ich diese Daten angezeigt, jedoch über die Kommando 60/61 bekomme ich keine Rückmeldung; einzig eine Eins, die mir anzeigt, daß das Kommando erfolgreich war (was es für mich allerdings nicht war ohne weitere Rückgabewerte;)). Vielleicht aber gibt es hier ja einen geheimen Trick? Über Befehl 350;1 bekomme ich die Namen der Objekte zurück geliefert, z.B. Lok1;Lok2;PkwA;PkwB;PkwC.  Gebe ich nun das Kommando 60;Lok2 sollten alle Informationen zum Objekt Lok2 geliefert werden, beim Befehl 61;Lok2.xy nur die Variable xy von Objekt Lok2. Nur hier passiert nichts.
Mein Ziel ist es bei der Kamerasteuerung letztendlich unabhängig von der EV zu werden und diese komplett extern zu managen.

Aber ich gebe nicht auf. In irgendeiner Art und Weise erreiche ich sicher mein Ziel. :) 

Dennoch danke für Deinen Tip

Schöne Grüße
Plutoli

Link to post
Share on other sites

Hallo,
an die Variablen werdet ihr wohl nicht rankommen. Das Protokoll wurde entwickelt, bevor es Objekt- und Modulvariablen gab. Und an der Schnittstelle hat sich dafür nichts getan. Die einzige Idee, die ich da habe, ist ein unsichtbares Objekt. Da stehen parallel 6 Variablenwerte zur Verfügung, Position x/y/z, Rotation x/y/z. Die sind abfragbar.
Verdammt dreckige Technik, könnte aber nutzbar sein.

Gruß
  Andy

Link to post
Share on other sites

Hallo Andy,

danke für Deinen Hinweis. Ja, den Weg könnte man durchaus gehen, aber schön ist die Lösung nicht wirklich. ;) 

Ich finde es schade, daß die Schnittstelle nicht mit den Versionen gewachsen ist. Ich habe erst jetzt angefangen mich detaillierter damit zu beschäftigen und dachte, ich könnte damit viele tolle Sachen machen, aber scheinbar sind meinem Spieltrieb hier Grenzen gesetzt.

Aber trotzdem auch Dir einen herzlichen Dank und schöne Grüße
Plutoli

 

Edited by Plutoli
Link to post
Share on other sites

Hallo Plutoli,

die Schnittstelle, so wie sie aktuell implementiert ist, gilt als veraltet. Das hat den Hintergrund, dass ich die Schnittstelle gern mit der EV, konkret mit Lua, zusammenführen möchte. Aktuell muss jeder Befehl immer doppelt implementiert werden, sowohl für die EV als auch für die externe Schnittstelle. Das Ziel ist, mit der EV/Lua Netzwerkkommandos zu senden und zu empfangen, wodurch der Schnittstelle alle Befehle zur Verfügung stehen würden, die auch mit der EV zur Verfügung stehen.

Bisher gab es jedoch noch nicht genügend freie Ressourcen, diese Erweiterung einzubauen.

Viele Grüße,

Neo

Link to post
Share on other sites

Hallo Neo,

danke für die Information.

Dann hoffe ich nun auf eine der nächsten Version. In der Zwischenzeit werde ich mich dann mal an Lua herantasten und schauen, was man damit alles treiben kann.

Ein Dank auch an Dich und schöne Grüße
Plutoli

Link to post
Share on other sites
vor 4 Stunden schrieb Plutoli:

Ich finde es schade, daß die Schnittstelle nicht mit den Versionen gewachsen ist.

Hallo Plutoli,
V5 mit Lua war ein Quantensprung. Bis dahin hat die Schnittstelle ja gepaßt. Es war aber auch keine dringende Notwendigkeit da viel dran zu machen. Die bestehenden Plugins liefen auch ohne Variablen. Das ist jetzt mit der Idee der Handyapp anders geworden. Das wird schon werden.

Gruß
  Andy

Link to post
Share on other sites

Hallo Andy,
klar wird das werden. 

Ich wollte mir nur irgendwie nicht wieder eine neue Programmiersprache antun. 70er Basic, 80er Fortran77 und Pascal, 90er C, Clipper und Assembler, 00er Delphi und PhP, 10er  Unix Shell sowie Powershell und Java. Und die 20er starten nun mit Lua. Das wird :D 

Schöne Grüße
Plutoli

Link to post
Share on other sites
vor 13 Minuten schrieb Plutoli:

nicht wieder eine neue Programmiersprache antun. 70er Basic,

Hallo Plutoli,

OT: :) und was war mit ALGOL 60 ? Damit haben wir als Studenten die Zuse Z21 glühen lassen und laufende Lochstreifen lesen gelernt. Im Amt hatten wir noch eine relaisgesteuerte Z11, die bei der Berechnung einer Winkelfunktion hörbar die Relaiskontakte klappern lies. Aber ich will nicht meckern, ich habe noch einen leisen Rechenschieber. ;)

HG, Henry

Link to post
Share on other sites

Hallo,

vor 9 Stunden schrieb Plutoli:

Ich wollte mir nur irgendwie nicht wieder eine neue Programmiersprache antun.

Lua ist eine Skriptsprache und daher eher die kleine Schwester einer voll ausgewachsenen Programmiersprache. Als Programmierer mit deinen Erfahrungen hast du die Basics innerhalb kurzer Zeit erlernt, dir wird vieles vertraut vorkommen.

Viele Grüße,

Neo

Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...