Jump to content

Recommended Posts

Hallo :),

ich möchte Euch hier mein Projekt vorstellen: 'MBSControl'.

Die Entwicklung von Programmen, die über die integrierte Schnittstelle des 3D-Modellbahnstudios, extern auf die Steuerung zugreifen ist noch zu sehr an die Konventionen der Schnittstelle gebunden. Das heist für mich, jedes Kommando muss in einen für das MBS lesbaren Text übersetzt werden.

Beim Programmieren bremst mich das jedesmal aus, wenn ich sich wiederholende Abläufe bei jedem neuem Projekt immer wieder implementieren muss. Deshalb arbeite ich lieber mit einer Bibliothek, in der sich fertige Komponenten befinden und die das für mich übernehmen.

Die Bibliothek wurde mit Visual-Studio 2013 Express und C# entwickelt, kann aber als DLL auch in anderen Programmiersprachen verwendet werden.

Danke an EASY für die Unterstützung bei meinen Ersten Gehversuchen mit der Schnittstelle und den vielen kreativen Hinweisen für die Bibliothek.

Die Bibliothek wird weiter wachsen, entweder mit Erweiterungen, die ich selber brauche oder was ihr vorschlagt.

Als Dokumentation kann ich erstmal nur einen automatisch erstellten CHM-File anbieten, eine Kurzversion werde ich nach und nach im folgenden Beitrag erstellen. Dort wird ebenfalls ein Beispielprojekt zur Einbindung in ein C#-Projekt mit vorgestellt.

Wer Fragen zur Einbindung in sein Projekt hat, oder auf Probleme stösst bitte hier im Beitrag posten, und/oder als PM an mich.

Viel Spass wünscht

Mikel_60

Mbscontrol_de.zip

Mbscontrol_dll_1.0.zip

Link to post
Share on other sites

(Wird nach und nach ergänzt!)

Einbindung der DLL in ein C#-Projekt

Die DLL in das Projektverzeichnis kopieren oder in ein zentrales Verzeichnis, zur Verwendung für mehrere Projekte. Zu References hinzufügen und dann deklarieren.

Das Beispielprojekt kann dazu als Vorlage verwendet werden.

###########################################################

using MBSControl; // Die MBSControl DLL
...

namespace MBSClient
{
    public partial class frmMain : Form
    {

        private cMBS Mbs; // Mbs oder wie ihr es lieber nennt.

        public frmMain()
        {
            // Mbs wird als Instanz von MBSControl verwendet !!!
            Mbs = cMBS.Instance;
            //
            InitializeComponent();

            ....

##############################################################

Auf die Bibliothek kann jetzt zugegriffen werden. Visual Studio zeigt automatisch eine Auswahl der verfügbaren Kommandos an. Um eine Bessere Übersichtlichkeit zu erreichen, wurden die Kommandos in Klassen (Gruppen) zusammengefasst. Ein Aufruf könnte folgender Maßen aussehen:

List<string> list = Mbs.Object.GetList; // Liefert eine Liste aller Objekte im aktuellen Projekt. Für jedes Objekt den Namen als String.

Die genauen Aufrufparameter für jedes Kommando und die Rückgabewerte sind in der bereits Oben eingebundenen Hilfedatei aufgeführt.

 

Übersicht der Gruppen und verfügbaren Kommandos

  1. Camera: Alle Kommandos, die sich auf die Kameras beziehen
    GetList, GetScreenshot, GetName, SetActive
  2. Control: Alle Kommandos, die sich auf Steuerobjekte beziehen
    GetList, GetType, GetValue, SetValue
  3. Engine: Alle Kommandos, die sich auf die Loks beziehen
    GetSpeed, SetSpeed, GetLightState, SetLightState
  4. GroupCommands // noch nicht direkt verfügbar zur Zeit in MBSControl
  5. Info: Infos 3D-Modellbahnstudio
    Version, ApplicationPath
  6. Light: Beeinflussung der Umbebungsfarben
    SetColors
  7. Objekt: Allgemeine Objektkommandos
    GetList, GetType, GetPosition, SetPosition, GetRotation, SetRotation, GetScale, SetScale, GetSize, GetSelected, GetName, AddToGroup, Add, Clone, Delete, Rename, Group, Ungroup, Link, Unlink, GetLink, GetListOfAnimated, StartAnimation, StopAnimation, SetAnimation
  8. Projekt: Gibt aktuelle Einstellung zurück oder setzt sie.
    Id, Name, LengthUnit, AngularUnit, AnimationEnable, SoundEnable, AnimationStartOverTime
  9. Rail: Fast alle Kommandos zusammen die sich auf Gleise beziehen.
    GetList, GetType, GetCountOfTrack, GetLengthOfTrack, GetIndexOfActiveLane, ActivateLane
  10. RollingStock: Gibt Informationen über das Rollmaterial zurück.
    GetList, GetType, GetTrack,
  11. Signal: Fasst alle Kommandos, die die Signale betreffen zusammen.
    GetList, GetState, SetState
  12. Variable: Zugriff auf (Objekt-) Variablen.
    GetList, GetValue, SetValue
  13. Client: Zum Auf- und Abbau der Verbindung und auch zum direkten Senden und Empfangen von Kommandos und Rückgabewerten.
    Connect, Disconnect, [SendCommand, GetResultlist]

http://www.3d-modellbahn.de/wiki/3415 ausführlich dokumentiert.Die verfügbaren Kommandos für SendCommand sind bereits in der Wiki unter

 

MBS Demo C#-Client

Mbs_demo.png

Im Demo-Projekt sind die Grundlegenden Funktionen implementiert, um die Verbindung zum Modellbahnstudio herzustellen und die Events zu empfangen.

Um die Einbindung der Kommandos besser zu Verdeutlichen, wurde eine kleine Beispielanwendung zur Verknüpfung von 2 Objekten eingebunden. Das Nebenobjekt wird an die selben Koordinaten, wie das Hauptobjekt platziert, lediglich die Rotation um die Z-Achse ist anpassbar. Ich nutze das zum Beispiel zur Platzierung von Beleuchtungen in Personenwagen.

(Pause, geht Morgen weiter ...)

 

Mbscontrol_demo.zip

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...