Plugin-Programmierung in DMXC3

  • Hallo an alle Entwickler und Plugin-Entwickler,


    ich habe mal versucht mich über das Thema Plugins in DMXC3 zu informieren.
    Leider musste ich feststellen, dass es wenig Infos oder gar ein kleines Tutorium gibt, wie man ein Plugin erstellt.
    Alles was ich dazu im Forum gefunden habe, war immer stark auf einzelne Probleme fokussiert.


    Ich würde gerne um eine Wiki-Eintrag bitten, in dem beschrieben wird, welche DLLs man braucht, wo die herkommen und einen exemplarischen Weg was man dann damit anfängt, bzw welche Möglichkeiten es gibt.
    Ich weiß natürlich, dass das ein recht großer Wunsch ist. Dennoch habe ich die Hoffnung, dass dadurch die Einstiegshürde für Leute die eigentlich Programmieren können aber halt schlichtweg bei dem Thema nicht wissen wo vorne und hinten ist deutlich reduziert wird (z.B. ich :D). Vllt ein unkonventionelles Beispiel: Viele im Forum kennen bestimmt das Spiel Cities: Skylines. Das ist ja an sich von Hause aus schon ein gutes Spiel gewesen aber erst durch seine weitreichenden und gut dokumentierten Möglichkeit zum Modden wurde die Community in die Lage versetzt, das Spiel nach eigenen Vorstellungen (in gewissen Grenzen) und für alle zugänglich zu erweitern. Und jetzt nehmen wir einfach mal an, dass in diesem Fall die Kunden tatsächlich am besten wissen, was sie haben wollen.
    Das heißt natürlich nicht, dass DMXC3 es in der selben Manier machen sollte, aber ich denke das Thema ist eine grundsätzlich dankbare Angelegenheit. Gut für die Software, für die Cummunity und evtl. sogar so gut, dass eine Plugins in den "offiziellen" Programmumfang übernommen werden können, die die "Hauptentwickler" entlasten.


    Lg
    MWSysTech

  • Moin,


    zum einen gibt es jetzt mehre Beispiele für Plugins von DMXC 3. Als ich anfing gab es nur das Template: https://github.com/DMXControl/LumosPluginTemplates
    Einige weitere Beispiel findest du ebenfalls bei GitHub wie z.B den Aprilscherz von 2017(siehe Kernel as a Service - Aprilscherz 2017).


    Du benötigst Visual Studio 2015 (V14)


    Bei Fragen kann ich gerne weiter Helfen. Eventuell fange ich sonst mal an was im Wiki zu dokumentieren.


    Viele Grüße


    soekkle

  • Hallo,


    wir haben in unserem Programmierprojekt die Aufgabe ein Textbuch als Plugin für DMX3 zu implentieren. Daher wollte ich fragen, ob es schon ein Wiki Eintrag für Plugins in DMX3 erstellt wurde?


    Ich danke schonmal im Voraus. :)

  • Hallo!


    Aktuell existiert leider noch keine Dokumentation in Form eines Wiki-Artikels für die Plugin-Entwicklung für DMXControl 3. Dafür gibt es aber bereits das oben genannte KernelCouldPlugin, welches als Beispiel-Plugin gedacht ist, um das grundlegende Kommunikationskonzept von DMXControl 3 und die Arbeitsweise der wichtigsten Funktionen zu verstehen. Somit kann das KernelCloudPluging quasi als Ausgangspunkt für weitere Plugins dienen. Darüber hinaus gibt es auf dem gleichen Github-Account weitere Plugins, die ebenfalls mit zur Entwicklung eines neuen Plugins herangezogen werden können.


    Viele Grüße, Stefan.

  • Vielen Dank Stefan.


    Ich habe mir das KernelCloudPlugin heruntergeladen und die ZIP-Datei entpackt. Beim Öffnen der sln bekomme ich die Fehlermeldung:


    Und zwar wurden die Komponenten LumosGUI, LumosLIB und LumosGUILIB nicht gefunden. :/

    Daher denke ich, dass die meisten Methoden vom Kontext nicht vorhanden sind.

    Und im Ordner habe ich ebenfalls geschaut und konnte dort die DLLs nicht finden.


    Könnten Sie mir da weiterhelfen?


    Mit freundlichen Grüßen


    Mathan

  • Hallo,

    dazu einfach auf dem Entwicklungs-PC DMXControl 3 installieren. Darin sind alle benötigten Libs sowie die LumosGUI enthalten. Dann ganz einfach in den jeweiligen Projekten bei "Verweise" die entsprechenden Verweise zu den Libs herauslöschen und die genannten Libs und Exe neu als Ressourcen hinzufügen.

    Viele Grüße

    JP

  • Hallo,


    ich bin gerade dabei eine Kommunikation mit dem Kernel (Server) herzustellen. Könnte man die Verbindung über TCP mit sogenannten Sockets herstellen?

    Dafür bräuchte ich dann die IP-Adresse und Port auf dem verbunden werden soll.

  • Moin,


    Sockets sind in der Regel für die Kommunikation gedacht. Die IP-Adresse hängt von dem Rechner ab auf dem der Server läuft. Der Port hängt von verschiedenen Faktoren ab. Dazu gehören zu Beispiel das verwendete Protokoll und ob der Port nicht belegt ist.


    Wenn ich wüst was du mit den Server verbinden willst, und was im server die Verbindung annehmen soll kann ich dir mehr sagen.


    Viele Grüße


    soekkle

  • Hi soekkle,


    und zwar möchte ich eine Kommunikation mit dem Kernel herstellen, damit ich von dort die Lichtszenen aufrufen kann :).

    Für ein Projekt müssen wir ein Plugin erstellen und in der müssen wir die Cues aufrufen.


    Mit freundlichen Grüßen


    Mathan

  • Moin,


    ich versehe dich jetzt so, dass ihr zum einen ein Kernel Plugin schreiben wollt, das über TCP Befehle erhät und entsprechende Aktionen im Kernel auslöst. Auf der anderen seit ist ein selbstgeschriebenes Progamm, das die Befehle sendet.

    In diesen Fall kommen auf beiden Seiten Sockets zum einsatz. Man muss sich überlegen welche Seite im TCP-Sinn der Server und wer der Client ist.

    Auf der Server Seite wird ein Port größer 1000 Festgelegt (optimal veränderbar), die Kleineren sind für standartisirte Protokolle vorgesehen. Und als IP-Adresse IP_ANY oder die eines Netzwerkinterface angegeben auf der der Server lauschen soll. Auf der Clientseite wird der selbe Port eingetragen und die IP-Adresse des TCP-Servers eingetragen.


    Viele Grüße


    soekkle

  • Es gibt auch einen anderen weg, ScenenListen in der GUI zu starten, ohne eine separate Verbindung aufzubauen.


    ConnectionManager.getInstance().GuiSession.SceneLists liefert dir eine Liste aller ScenenListen.

    diese kannst du dann direkt ansteuern.

  • Danke :)


    In meiner Klasse habe ich versucht die Methode aufzurufen Allerdings findet er sie nicht :/

    Ich habe in meine Klasse die nötigen Bibliotheken von DMX verwiesen (LumosLIB und LumosGUI)

    Brauche ich noch etwas um ConnectionManager.getInstance().GuiSession.SceneLists aufrufen zu können?

  • Moin,


    ich habe mal bei mir in Visual Studio Nachgeachaut aus. Bei mir Findet es erst auch nicht ConnectionManager. Es ist in einen anderen Namespace als Lösung wird vorgeschlagen:Entweder

    • using Lumos.GUI.Connection
    • Lumos.GUI.Connection.ConnectionManager.getInstance().GuiSession.SceneLists

    Die Erste Lösung hat den Vorteil wenn du mehrmal was aus dem Naspace Brauchst sparst du dir tipparbeit, beim zweiten sind Doppelnutzungen von Namen unwahrscheinlicher.


    Viele Grüße

    soekkle

  • Guten Abend soekkle,


    Sie meinten, dass die Verbindung von der vorhandenen GUI benutzt wird. Ist damit das Hauptprogramm (DMX3) gemeint?


    Ich wollte erstmal über eine Windows Form das ganze versuchen und die Lichtszenen irgendwie über eine MessageBox ausgeben.

    Ich bekomme dann als Fehlermeldung: "ConnectionManager is currently not connected".


    Ich habe im ConnectionManager.getInstance() geschaut und da habe es einige conncetion Methoden und habe damit dann bisschen rumgespielt und versucht irgendwie eine verbindung herzustellen und dann anschließend die Lichtszenen aus dem Kernel zu holen und auszugeben. Allerdings kam ich nicht besonders weit.



    Muss ich sie irgendwie anders aufrufen?


    private void scene_Click(object sender, EventArgs e)

    {

    MessageBox.Show((ConnectionManager.getInstance().GuiSession.SceneLists).ToString());

    }


    Ich wollte es einfach erstmal über ein Buttonclick versuchen.


    Mit freundlichen Grüßen

    Mathan

  • ConnectionManager.getInstance().GuiSession.SceneLists


    Wie kann ich die Liste aufrufen und anschließend in einer Listbox ausgeben lassen?