Zuerst mal danke für die vielen Posts bis jetzt.
Leider gehts auch mit den neuen Ideen nicht.
1D-Array mit 8 Werten ging leider nicht.
Ein Cluster passt leider auch nicht mit der DLL zusammen.
Die letzten 2 Sätze verstehe ich nicht wirklich.
Ich habe 3 Eingänge
- 1*32bit --> kein Problem
- 3*32bit hintereinander --> ein Problem
- 8*32bit hintereinander --> auch ein Problem
das ich 32 Byte hintereinander reinschicke ist leider auch nicht möglich, die größte Zahl in LabVIEW ist soweit ich weiß 4 Byte oder?
' schrieb:Die letzten 2 Sätze verstehe ich nicht wirklich.
Folgendes sollte eigentlich funktionieren:
Code:
long Unterprogramm(unsigned long Handle, long AIN1, long AIN2, long AIN3, long AIN4, long AIN5, long AIN6, long AIN7, long AIN8, long SCAN, long dio1_direction, long dio2_direction);
So muss der Funktionskopf der DLL-Funktion in LV8.2 aussehen, nachdem du ihn manuell erstellt hast.
Wenn tatsächlich die Daten explizit übergeben werden, dann liegen sie genau so auf dem Stack - respektive so werden sie mittels des Stacks an das Unterprogramm in der DLL übergeben. Die C++-Anweisung "typedef struct { .. } _AIN;" definiert praktisch einen Speicherbereich, der 8*U32 breit ist. Durch das Benutzen einer Variablen (hier: Analog) des Typs _AIN wird praktisch ein Speicherbereich von 8*U32 referenziert. Schreibst du als Parameter "Analog" in den Funktionskopf, so "kopiert" der Kompiler automatisch diese 8 U32 auf den Stack. Und ob da nun eine Variable, die aus 8 U32 besteht, oder acht Variablen, von denen jede einzelne aus 1 U32 besteht, kopiert werden - für das Unterprogramm in der DLL ist das egal. Hier gilt: es müssen 8 (respektive eben 12) U32 hintereinander am Stack liegen.
Probier das mal aus und sag Bescheid, ob's geklappt hat oder nicht.
' schrieb:Folgendes sollte eigentlich funktionieren:
Code:
long Unterprogramm(unsigned long Handle, long AIN1, long AIN2, long AIN3, long AIN4, long AIN5, long AIN6, long AIN7, long AIN8, long SCAN, long dio1_direction, long dio2_direction);
Es funktioniert jetzt!
Vielen Dank für deine Hilfe!