Suche kurze Programmierhilfe / Plugins/SetChannel

We proudly present: The release of DMXControl 3.3.3!


On September 29, 2026, we held our release show for DMXControl 3.3.3. During our usual “hour-long” session, we showed you all the new features in this version and what it now has to offer.
Read all about it in the corresponding news article: We proudly present: The release of DMXControl 3.3.3!


  • Hallo,

    ich schreibe gerade an zwei Plugins für DMX-Control. Das eine ist die schon aufgelistete Videobeamer-Steuerung, die andere wird eine kleine Komandobox (hoffe, ich habe sie nicht übersehen und es gibt sie schon?), mit der man via Tastatureingabe fix eine Szene eingeben kann (also zB. Kanäle 1-10 auf 30%), eine Funktion, die ich besonders bei größeren Pulten sehr schätze, weil sie eine Menge Zeit spart und man nicht immer auf den Monitor schauen muss um Licht zu stellen.

    Nun aber zu meinem kleinen Problem:

    Die Schnittstelle zu DMX-Controll unterstützt die Funktion setChannel zum Setzen einzelner Kanäle. Soweit so gut. Habe also die Hilfsklassen im implementiert, mein Plugin in DMXC eingebunden und dann versucht, den setChannel auszuführen. Leider bekomme ich dabei immer einen Fehler (Objekt nicht gefunden).

    Zum Testen sieht das ganze gerade so aus:

    Dim dmxv As Long
    dmxv = 50
    Call mHelper.MyStream.SetChannel(1, dmxv, False)

    Den SetChannel-Aufruf habe ich aus einem Demoplugin entnommen. Wobei mir hier nicht ganz klar ist, woher das MyStream kommt. Aber auch ohne klappt es nicht. "Public mHelper" ist in den Formulardeklarationen mit gesetzt und ich habe gerade keine konkrete Idee mehr, wo der Fehler liegen könnte (einbinden in DMXC klappt ohne Probleme und ich bin -soweit ich das sehe- nach der Anleitung vorgegangen. Alle Hilfsfunktionen sind ebenfalls definiert.

    Hat jemand eine spontane Idee oder würde evtl einmal einen Blick auf meinen Quellcode werfen?

    Würde mich freuen :o)

    Viele Grüße,
    Andreas

    Schwerpunkt: Musicals
    Software: DMXC 2.10 / grandMA onPC / ArkaosVJ
    Hardware: DE IF / MA 2Port-Node
    Geräte: EL-40, TS-2, Scantech 150, div. Strobes, Moon- & CAT-Lights, Flower, Derbys, 1 Center-Effekt u.e.m.
    PARs: 4*LED-RGB,2*P56,16*P64,30*P36,10*P16
    Nebel: 2*1000W,700W,Fazer + 70cm-Ventilatoren

  • Also so eine Kommandozeile gibt es sogar schon ;)
    Mit der nächsten Alpha ist die auch noch ein bischen verbessert.
    Wegen der Einbindung: Hast du bei den "Modulinformationen" (IDMXCModule_ModuleInfo) angegeben, dass du einen Mixerkanal verwenden willst? Ansonsten wird natürlich keiner zur Verfügung gestellt.

  • Hi Stefan,

    oh, dann habe ich die Kommandozeile echt übersehen *jetztgefundenhat* - toll wäre (falls noch nicht geplant), wenn man sie komplett mit Tastatur bedienen könnte, also zb "1,5-8*35" setze die Kanäle 1 und 5-8 auf den Wert 35. -> dann spart die Zeile wirklich ne Menge Zeit :o)

    Zum Plugin: Soweit ich das in der API verstanden habe, muss ich das Flag UsesProvidedOutput auf True setzen. Das habe ich auch gemacht. Habe wie im Beispielprojekt eine Form, ein Modul und ein Klassenmodul. Die Referenz auf die DMXCPublicTypesLibrary ist ebenfalls gesetzt. In beiden Modulen (der "fehlerhafte Aufruf" befindet sich in meinem Logikmodul) wird mHelper mit "Public MHelper" vorgestellt. Auch das exportieren des Plugins klappt problemlos.

    Der Aufruf (im eingebundenen Plugin, teste jetzt erstmal mit Get)

    Dim test As Long
    test = 1
    MsgBox (mHelper.ChannelGetValue(test))

    führt dann wieder zu einem "Objekt erwartet" - also ist es leider nicht mal MyStream sondern die mHelper selbst. Arbeite hier mit VB5 und habe im Klassenmodul testweise sogal alle Optionen aktiviert.

    .ProvidesCommand = True
    .ProvidesSceneType = True

    .UsesProvidedOutput = True
    .UsesMessaging = True
    With .Messages
    .Add MSG_Channel_Set
    .Add MSG_Channel_Send
    End With

    Aber wo ist dann der Fallstrick, über den ich stolpere? :(

    Viele Grüße,
    Andreas

    PS: Bekomme das VB6-Demo leider nicht in VB5 zum Laufen, evtl hast Du auch hier einen Tipp, dann arbeite ich von der Demo aus weiter (geht evtl schneller als Fehleranalyse).

    Schwerpunkt: Musicals
    Software: DMXC 2.10 / grandMA onPC / ArkaosVJ
    Hardware: DE IF / MA 2Port-Node
    Geräte: EL-40, TS-2, Scantech 150, div. Strobes, Moon- & CAT-Lights, Flower, Derbys, 1 Center-Effekt u.e.m.
    PARs: 4*LED-RGB,2*P56,16*P64,30*P36,10*P16
    Nebel: 2*1000W,700W,Fazer + 70cm-Ventilatoren

  • Hi Stefan,

    neh, das habe ich (leider) auch:

    Private Function IDMXCPlugin_Init(CallingAppTitle As String, MyFilename As String, DMXCPluginHelper As DMXCTypeLib.IPluginHelper) As Boolean
    Set mHelper = DMXCPluginHelper
    IDMXCPlugin_Init = True
    End Function

    Gibt es eine Möglichkeit, das Beispielprojekt in einer VB5-Version zu bekommen? Soweit ich das sehe, ist wirklich alles genau so eingerichtet, wie im Tutorial vorgegeben. :o(

    Viele Grüße,
    Andreas

    Schwerpunkt: Musicals
    Software: DMXC 2.10 / grandMA onPC / ArkaosVJ
    Hardware: DE IF / MA 2Port-Node
    Geräte: EL-40, TS-2, Scantech 150, div. Strobes, Moon- & CAT-Lights, Flower, Derbys, 1 Center-Effekt u.e.m.
    PARs: 4*LED-RGB,2*P56,16*P64,30*P36,10*P16
    Nebel: 2*1000W,700W,Fazer + 70cm-Ventilatoren

  • Hi Andreas,

    ehrlich gesagt, halte ich es nicht für sinnvoll, noch große Experimente mit VB5 zu machen. Dann solltest Du lieber modernere Dinge ausprobieren, wie z.B. Sharpdevelop (wie schon auf unseren Wiki-Seiten beschrieben, aber mangels Zeit habe ichs auch noch nicht zu funktionierenden basic.net oder c# plugins gebracht.)

    Aber Du kannst ja mal den gesamten Sourcecode Deines Plugins an info@dmxcontrol.de senden. Dann probiere ich das Verhalten unter VB6 aus, vielleicht findet man dann den Fehler (bin allerdings bis zum Wochenende dienstlich unterwegs).

    Gruss Frank

  • Newly created posts will remain inaccessible for others until approved by a moderator. The last reply was more than 365 days ago, this thread is most likely obsolete. It is recommended to create a new thread instead.