DLLCall - Wie csp2GetPacket aufrufen?

  • Hallo!

    Ich möchte mit Hilfe von AutoIT einen Barcode-Scanner auslesen. Dieser Hat einen internen Speicher, der die Codes speichert. Über die "Csp2.dll" kann man Befehle an den Scanner schicken. Einen einfachen DLLCall, der nur die Anzahl der gelesenen Barcodes zurückgibt, habe ich schon hinbekommen.

    Wie aber spreche ich diese DLL-Funktion an:

    Das habe ich mir mit Unterstützung der Hilfe mal gestrickt, ist aber wohl völlig falsch:

    [autoit]

    $wert = DllStructCreate("char,long,long")
    DllCall($dll,"long","csp2GetPacket","ptr",DllStructGEtPtr($wert))
    $1 = DllStructGetData($wert,1)
    $2 = DllStructGetData($wert,2)
    $wert = 0
    MsgBox (0, "Packet", $1 & $2)

    [/autoit]

    Kann mir hier bitte jemand helfen?

  • Ich habe jetzt mal den Puffer wie in dem Beispiel angegeben mal mit eingefügt, leider ohne Erfolg.
    Stattdessen stürzt AutoIT ab :(
    Ist sonst noch was zu beachten, um die Daten aus dem DLLStruct zurück zu bekommen?
    Vielleicht hilft ja der C-Code, der oben in der Doku steht, dem Problem auf die Spur zu kommen.

  • Die Funktion, die du verwenden willst hat folgenden Aufruf:

    [autoit]

    $nBufferSize = 512
    $tBuffer = DLLStructCreate("char[" & $nBufferSize & "]") ; evtl auch so: "byte[" & $nBufferSize & "]"
    $nBarcodeNumber = 12
    $pBuffer = DLLStructGetPtr($tBuffer)
    $aRet = DLLCall($dll, 'long', 'csp2GetPacket', 'ptr', $pBuffer, 'long', $nBarcodeNumber, 'long', $nBufferSize)
    If Not @error Then MsgBox(0, "Return: " & $aRet[0], "Buffer: " & DLLStructGetData($tBuffer, 1))

    [/autoit]