Delphi DLL

  • VB.NET
    Hallo,



    ich programmiere unter Visual Studio 2005 und mit VB.net. Dabei soll ich eine Linearachse ansprechen. Der Hersteller der Achse hat eine DLL beigelegt, die in Delphi geschrieben wurde. Diese DLL verwendet einen aynchronen Aufruf, um einen Pointer zu übergeben, der auf eine Struktur zeigt, in der die Daten der Achse liegen. Den Asynchronen Callback und den Zeiger habe ich eigentlich schon hinbekommen. Zumindest steht im IntPtr jedes mal eine andere Zahl drin und die Callback Funktion wird auch aufgerufen. Nach einigem hin und her habe ich jetzt den Quelltext der Struktur bekommen. Trotzdem hänge ich jetzt seit einer Woche an dem Problem.



    Die Struktur sieht folgendermaßen aus:

    const
    MAX_BYTE_ARR = 15;

    TCommand = packed record // Datenstruktur für Rückgabe im Callback Mode

    aID:integer;
    aCommand:integer;
    aValue:integer;
    byteArr:array[0..MAX_BYTE_ARR] of byte;
    end;

    Meine Struktur sieht so aus


    VB.NET-Quellcode

    1. Public Structure StructCallback
    2. Public ID As Int32
    3. Public Command As Int32
    4. Public Value As Int32
    5. Public Bytearray() As Byte
    6. End Structure


    und ich versuche sie folgendermaßen auszulesen

    VB.NET-Quellcode

    1. Sub Callbackauswertung(ByVal ar As IAsyncResult)
    2. CallbackJ.EndInvoke(intPtrCallbackA, ar)
    3. paramCallback = CType(Marshal.PtrToStructure(intPtrCallbackA, GetType(StructCallback)), StructCallback)
    4. end sub


    Kann mir bitte jemand sagen, wie ich die Struktur definieren muss, damit PtrToStructure auch was reinschreibt?

    P.S. Wenn ich das Programm mit dem Debugger durchlaufen lasse, kommt keine Fehlermeldung. Die Structur bleibt einfach nur leer. Außerdem habe ich noch einen Teil der Dokumentation der DLL angehängt.

    Vielen Dank im Vorraus
    Bilder
    • Anleitung.JPG

      26,39 kB, 727×512, 147 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Erox“ ()