INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

C++ DLL mit komplexer Datenstruktur inLabVIEW verwenden



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

05.02.2009, 20:55
Beitrag #2

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.704
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
C++ DLL mit komplexer Datenstruktur inLabVIEW verwenden
' schrieb:Dabei habe ich größte Schwierigkeiten, die *.dll richtig anzusprechen um an die Messwerte zu gelangen.
Das sehe ich auch so. Denknach

Zitat:Ich habe ein vi mit einem "Library Function Node" erstellt, dem ich alle Variablen und Arrays entsprechend dem "DSPSwFrameType" (s.u.) eingebe. Dabei würde ich nun erwarten, dass dann am entsprechenden Ausgang die Messwerte ausgegeben werden. Das ist wohl aber zu einfach gedacht,
Nein, gedacht ist das genau richtig.
Ich gehe davon aus, dass es so geht - so gehen soll.

Zitat:Ich habe generell 2 Versionen probiert:
Nur eine kann richtig sein.
Ich gehe davon aus, deine erste Methode ist richtig. Was richtig ist, muss in der Beschreibung der DLL-Funktionen stehen. Wenn da eine Funktion mit nur einem Parameter steht, kann nur deine erste Version richtig sein. Und die Methode mit den 50 Eingängen - sowas macht keiner.

Zitat:In dieser Konfiguration stürzt LabVIEW kommentarlos ab, wenn ich das VI im Gesamtprojekt laufen lasse.
Das kommt von folgendem:
Verlangt wird ein Pointer auf einen Speicherbereich, der alle Daten enthält. So ein Bereich heißt normalerweise Cluster. Zuerst einmal musst du sicherstellen, dass die Reihenfolge der Daten im Cluster die selbe ist, wie in der Beschreibung des Parameters der Funktion.
Hast du jetzt ein Array (oder String) im Cluster - fängt das Problem an. Die DLL erwartet hier ein statisches Array (davon gehe ich aus). D.h. die Daten des Arrays werden direkt im Cluster erwartet. LV schreibt aber nicht die Daten des Arrays in den Cluster, sondern einen Pointer auf die Arraydaten. Letztendlich führt das zum Absturz.

So einen großen Cluster mit so vielen Parametern hab ich auch noch nicht gesehen. Drei Möglichkeiten fallen mir ein, die du mal prüfen müsstest. Ich hätte ja die erste bevorzugt.

Erstens:
Cluster erstellen. Dann ein Array of U8 erstellen, das die Länge des erwarteten Speicherbereiches hat. Danach die Daten aus dem Cluster der Reihe nach manuell hart typcasten in das Array of U8. DLL aufrufen und das ganze rückwärts. Für kleine, komplexe Cluster kann man das so machen.

Zweitens:
Du kannst mal "Daten serialisieren" probieren. Dabei gibst du den Cluster auf das Serialisier-Element - heraus kommt ein Datenstream in Form eines Strings. Den String gibt du an die DLL als PChar. Rückwärts musst du das selbe probieren: den String aus dem DLL-Knoten auf ein Deserialisierungs-Element. Das Element bekommt den Cluster als Typeingang und liefert am Ausgang einen Datencluster. Ob das geht weiß ich nicht. Ich war noch nie in der Situation, einen derartigen Cluster an eine DLL zu übergeben.

Drittens:
Eine Wrapper-DLL. Mach dir eine C++-DLL, die auf der einen Seite die User-DLL bedienen kann. Das sollte einfach sein. Und auf der anderen Seite machst du eine oder mehrere Funktionen, die LV bedienen kann. Das ist auch einfach.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
C++ DLL mit komplexer Datenstruktur inLabVIEW verwenden - IchSelbst - 05.02.2009 20:55

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  DLL mit Pointer - Einbindung inLabVIEW sebastian1986 3 6.610 24.11.2009 21:02
Letzter Beitrag: rolfk
  Einführung inLabVIEW Kapitel 15 subzero128 12 11.863 24.08.2009 07:57
Letzter Beitrag: rolfk
  C-Code inLabVIEW Embedded for ARM ? amin 10 14.828 20.08.2009 11:06
Letzter Beitrag: KalleKrabowski
  Simulink Modell dll inLabVIEW einbinden / ausführen MIIIB 11 16.926 28.07.2009 14:09
Letzter Beitrag: MIIIB
  C-struktur inLabVIEW einbinden Olmor 4 5.867 24.07.2009 11:08
Letzter Beitrag: abrissbirne
  Matlab XPC Bedienungs-Oberfläche inLabVIEW gestalten Florian_TU-BS 11 12.190 05.05.2009 14:03
Letzter Beitrag: Florian_TU-BS

Gehe zu: