Jump to content

Empfohlene Beiträge

Geschrieben

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

Geschrieben

(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

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen.

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...