' schrieb:Hallo Silvio,
das erste, was mir aufgefallen ist: Du hast keinen Speicher für die Daten, die Du abholen willst, reserviert. Du übergibst der dll-Funktion den Zeiger auf die Adresse im Speicher, wo die dll die Daten ablegen soll und wovon Dein VI die Daten lädt. Wenn Du diesen Speicherbereich zuvor nicht für Deine Applikation reservieren läßt, schreibt die Funktion die Daten irgendwo im Speicher hin und das führt in der Regel zum Crash. Entweder kommt eine LV-Fehlermeldung und die Ausführung des VIs wird abgebrochen oder es erscheint ein Fenster "LabVIEW hat einen Fehler verursacht und muß beendet werden"
Den Speicher reservierst Du, indem Du ein Feld anlegst, das so viele Elemente hat, wie Du Bildpunkte erhältst und zwar in dem Datenformat, wie die Funktion Dir liefert.
Hallo Andreas
Das mit dem Speicher war schon in Ordnung. Seit LabVIEW 8.2 (oder vielleicht 8.0) kann man bei einem Arrayparameter einen anderen skalaren Parameter als Minimum Size angeben. Dann alloziert LabVIEW den entsprechenden Speicher vor dem DLL Aufruf wenn kein gültiges Array angeschlossen ist (oder bei einem zu kleinen Array resized es den). Und das macht Silvio auch ganz richtig so.
In älteren LabVIEW Versionen hättest Du aber vollumfänglich recht, dass man den entsprechenden Speicher erst explizit allozieren muss indem man z.B. ein Array mit der nötigen Grösse initialisiert.
Rolf Kalbermatter