Digital Enlightenment Interface mit VB.net

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!


  • Erstmal Hallo zusammen

    ich hab ein Problem mit meiner Programmierung in VB.net und der usbdmx.dll des DE-IF.

    ich hatte erstmal ein reines testprogramm geschrieben welches die usbdmxsi.dll verwendet hat, da ist ja auch ein beispiel im Projekt mit drin. funktionierte auch einwandfrei!

    jetzt möchte ich allerdings mehrere IF´s verwenden (brauche 4 da ich 1900 Kanäle brauche)

    dafür müsste ich jetzt die normale usbdmx.dll verwenden um halt mehrere interfaces zu finden und an zu sprechen.

    Mein problem daran ist das ich eher Programmierneuling bin und mich grade mal mit vb.net auseinander gesetzt hab (komm ich gut mit klar da ich auch schon bisschen was in excel programmiert hab)

    jetzt probiere ich schon seit einigen wochen damit herum aber komme irgendwie auf keinen grünen zweig damit.... im DE Forum habe ich jetzt gelesen das ihr hier mit eurer software auch dieses interface unterstützt und diese wohl auch in vb geschrieben sein soll.

    nun hätte ich die frage ob mir jemand sagen könnte wie ich die funktionen der usbdmx.dll deklarieren muss und wie dann der aufruf dieser in vb aussehen muss damit ich vernünftige werte zurückbekomme.

    also z.B.

    Public Declare Function GetAllConnectedInterfaces Lib "C:\Users\ASUS\Desktop\USBDMX Interface\usbdmx.dll" _
    (ByVal a As String) As long

    (so funktionierts auf jeden fall nicht ^^)

    und halt den entsprechenden aufruf

    Public Declare Function GetDeviceVersion Lib "C:\Users\ASUS\Desktop\USBDMX Interface\usbdmx.dll" _
    (ByVal serie As String) As Long

    mit dem aufruf:

    Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
    Dim b As Long
    b = GetDeviceVersion("0000000000000001")
    MsgBox(b)
    End Sub

    gibt mir auch schon die version des entsprechenden devices 0000000000000001 etc. zurück habs mit mehreren getestet und bekomm 272 zurück (in hex umgerechnet sind das 110 was auch der richtigen version entspricht) aber warum klappt das mit dem ganzen rest nicht.... ich brech weg....

    wäre echt super wenn mir da jemand von euch bei helfen könnte! oder sagen könnte was ich falsch mache.

    vielen dank schonmal im vorraus

    Edited once, last by Viktor (January 30, 2010 at 7:32 PM).

  • Kann mir hier keiner helfen?

    wenn ihr noch weitere Infos braucht bitte bescheid sagen!

    Verzweifle noch da dran :(

    Ich komme einfach mir dieser TSeriallist nicht klar....


    GetAllConnectedInterfaces: TSERIALLIST;

    TSERIAL = array[0..15] of Char;
    TSERIALLIST = array[0..31] of TSERIAL; <--- wie kann ich das in vb.net hinbekommen ?

    bitte helft mir :)

  • Also in C# geht das z. B. so:

    Musste halt noch in vb umschreiben ;)

    Matthias

  • hey das ist doch schonmal was :D

    werd ich mal ausprobieren, melde mich nochmal und schreibe dann auch mal die ganzen definitionen etc. in die foren für all jene welche die selben probleme haben wie ich :rolleyes:

    danke schonmal für die antwort!

    ps. wär echt nett wenn du jetzt noch den aufruf und declare part senden könntest :)

    gruß

    Edited 3 times, last by Viktor (January 31, 2010 at 6:50 PM).

  • also habs jetzt mal so probiert:


    <StructLayout(LayoutKind.Sequential, Pack:=0, CharSet:=CharSet.Ansi)> _
    Structure Serial
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=16)> _
    Public SerialNumber As Char()
    End Structure
    <StructLayout(LayoutKind.Sequential, Pack:=0, CharSet:=CharSet.Ansi)> _
    Structure SerialList
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> _
    Public Serials As Serial()
    End Structure

    scheint auch so in ordnung zu sein zumindest mekert vb.net das ganze nicht an :)

    bekomme jetzt aber egal wie auch immer ich das getallconnected interfaces

    Declare Function GetAllConnectedInterfaces Lib "usbdmx.dll" () As SerialList
    oder ohne as SerialList
    mit dem aufruf

    Dim seriallist1 As SerialList (oder as new SerialList )
    seriallist1 = GetAllConnectedInterfaces()

    aufrufe immer die fehlermeldung :

    MarshalDirectiveException:
    Die Typensignatur der Methode ist nicht PInvoke-kompatibel.

    habe damit ein problem, da ich nicht weiß was eine typensignatur ist (hab auch schonmal gegoogled hat mich aber nur nochmehr verwirrt :(
    )

    wie kann ich die funktion richtig aufrufen, bitte helft mir, zumindest in c# übersetzt bekomm ich das schon irgendwie ;-D

    edit: Habe mittlerweile auch was über stringbuilder gelesen allerdings habe ich damit das problem das wenn ich die funktion aufrufe und an den stringbuilder übergebe das dann die anwendung ohne irgendeinen kommentar endet und das wars dann....

    habe mir auch mal auf klassische art und weise ein struct gebastelt was allerdings komplett schief ging :O

    Edited once, last by Viktor (February 1, 2010 at 10:15 PM).

  • Sooooooo hab jetzt mit ein bisschen hilfe eine wrapper dll zusammengebaut ist aber noch nicht alles drin was reingehört ;D

    wenn die fertig ist werd ich diese Michael von DE zusenden mit deklaration dann kann er diese evtl. ins zip reinpacken für alle die damit so probleme haben wie ich sie (juhuu) -> hatte :D

  • Ja aber ich spreche von der normalen usbdmx.dll nicht von der kurzen usbdmxsi.....

    mit dieser kann man ja nur das erste angeschlossene interface aufrufen, brauchte aber 4 und darum gehts dabei ;-D

  • Könntest dein Code vllt hier posten ? vllt hilfst du damit auch anderen :)
    Wär nett von dir, da ich vor dem selben PInvoke Problem stehe.

    MfG

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