DLL Open / Call zu langsam

  • Moin moin! Und ein fettes Danke für das in meinen Augen GROßE Engagement!

    Aber ich glaub da funzt wad nicht: AutoIt sagt dazu in beiden Fällen ( MultiOut32Test und MultiOut32 ) :

    C:\Users\__\DllWrapper\DllWrapper\Wrapper.au3 (10) : ==> Subscript used with non-Array variable.:
    MsgBox(0, "StringTest ,Test,", $result[0])
    MsgBox(0, "StringTest ,Test,", $result^ ERROR

    $Return ist kein Array und beinhaltet 0 .

    Was tun? Ich kann die Sache in reality auch erst am Dienstag wieder an der Maschine testen.
    Und noch was: Was macht die Funktion genau? Wird im Wechsel der $Zu_schreibender_DezimalWert und Null auf den Port geschrieben?
    Das wär ja toll!!

    ... wasweisichdennschon...

  • Hi,
    du benötigst das .NET-Framework 2 für die Wrapper dll.
    Nur zur Info was gibt die Out32 eigendlich für einen Wert zurück? Ist das 0 für erfolgreiches schreiben und -1 bei Fehler oder was?

    Derzeit schreibt er immer nur den Dezimalwert an den Port ohne 0 aber das kann man schnell ändern.
    Wenn dann alles läuft änder ich die Wrapper noch mal schnell das sie die 0 sendet.

    MFG. RAPTOR-ONE

  • Ich hab mich jetzt auch mal dran versucht ;) (braucht kein .NET)

    Spoiler anzeigen
    [autoit]


    $Out32DLL = DllOpen("inpout32.dll")
    $MultiOut32DLL = DllOpen("inpout32Wrap.dll")

    [/autoit] [autoit][/autoit] [autoit]

    Func _MulitOut32($Addresse, $Wert, $Wert2, $Wiederholungen)
    ;Author: Prog@ndy
    DllCall($MultiOut32DLL, "none", "MultiOut32@16", "int", $Addresse, "int", $Wert, "int", $Wert2, "int", $Wiederholungen)
    If @error Then Return SetError(1)
    EndFunc
    Func _MulitOut32Sleep($Addresse, $Wert, $Wert2, $Wiederholungen, $Pause)
    ;Author: Prog@ndy
    DllCall($MultiOut32DLL, "none", "MultiOut32@16", "int", $Addresse, "int", $Wert, "int", $Wert2, "int", $Wiederholungen, "int", $Pause)
    If @error Then Return SetError(1)
    EndFunc

    [/autoit]
  • Hi,
    du benötigst das .NET-Framework 2 für die Wrapper dll.
    Nur zur Info was gibt die Out32 eigendlich für einen Wert zurück? Ist das 0 für erfolgreiches schreiben und -1 bei Fehler oder was?

    Derzeit schreibt er immer nur den Dezimalwert an den Port ohne 0 aber das kann man schnell ändern.
    Wenn dann alles läuft änder ich die Wrapper noch mal schnell das sie die 0 sendet.

    MFG. RAPTOR-ONE

    Ich stelle fest, der Call liefert in jedem Fall die 0 zurück. Erfolg und Misserfolg = 0.

    Wieviel Arbeit steckt da bis jetzt drin, wenn ich mal fragen darf?

    ... wasweisichdennschon...

  • Hi,
    ich hatte eigendlich die orginal dll gemeint.

    Wenn mindestens das .NET-Framework 2 installiert ist und das Skript und die Wrapper-dll im selben Verzeichnis liegen funktioniert diese definitiv. Es sei den du Startes das Skript als 64-Bit Skript. Es muss als 32Bit Skript ausgeführt werden (x86).

    MFG. RAPTOR-ONE

  • Hi,
    ich hatte eigendlich die orginal dll gemeint.

    Wenn mindestens das .NET-Framework 2 installiert ist und das Skript und die Wrapper-dll im selben Verzeichnis liegen funktioniert diese definitiv. Es sei den du Startes das Skript als 64-Bit Skript. Es muss als 32Bit Skript ausgeführt werden (x86).

    MFG. RAPTOR-ONE

    OOoo!!! als x86er löppts !!!! :rock:

    ... wasweisichdennschon...