' schrieb:Du übergibst in deiner Schleife bei der zweiten Iteration genau den gleichen Speicher wie beim ersten mal.
Ja, genau das habe ich ja geahnt, deswegen wollte ich gern mal gucken, was für eine Adresse da übergeben wird.
Wenn das stimmt, dann aber warum? Ich initialisiere doch in jedem Durchlauf ein neues Array!?
' schrieb:Um das zu vermeiden ruft das IDS in dem Beispiel mit dem Ringpuffer vermutlich das VI zum Speicherallokieren auch drei mal separat auf, anstatt es in einer Schleife zu machen. Setze doch mal zwischen "Array initialisieren" und "is_SetAllocatedImageMem()" die Funktion "Immer kopieren" (in der Palette Applikationssteuerung, Speicherverwendung).
Werde ich am Montag einmal probieren.
' schrieb:Wenn das nicht funktioniert (was ich mir gut vorstellen kann), dann setze "Array initialisieren" außerhalb der Schleife und mache ein zweidimensionales Array daraus.
Das hatte ich auch schon probiert. Du meinst, dann das Array mittels "Index-Eingang" (habe jetzt nicht mehr im Kopf, wie das bei LabVIEW genau heißt) übergeben?
' schrieb:Das nächste Problem wird sein, dass die DLL auch nach dem Ende von "is_SetImageMem()" noch auf die Speicherbereiche zugreift. Für LabVIEW wird ein Speicherbereich nicht mehr benötigt, wenn die Leitung endet.
Wäre mir auch klar. Allerdings funktioniert dieses Vorgehen prinzipiell und wurde von IDS in allen möglichen Beispielen und auch von mir schon erfolgreich so umgesetzt.
Heute gab es einen kleinen Durchbruch: Es ist mir gelungen, die dll-interne Speicherallokation erfolgreich durchzuführen. Und erwartungsgemäß funktioniert DIE auch innerhalb einer Schleife. Ich konnte heute erstmal Speicher für 90 Frames allokieren und erfolgreich der DLL in den Ringpuffer hängen. Auch die Videoaufzeichnung in diesen Ringpuffer scheint zu funktionieren. Das war aber auch vorher schon der Fall (wenn es mir denn gelang, ihn "von Hand" zu allokieren.)
Am Montag wird probiert, ob ich die Frames auch auslesen kann.
Dann wäre es möglich, erstmal unsere Kameramessung in den Hauptspeicher zu jubeln (Der müsste dafür reichen, ohne daß etwas in die Auslagerungsdatei geschrieben wird), und nach der Aufnahme in Ruhe ein A VI draus zu machen (was bisher auch immer ein Geschwindigkeitsnadelöhr war).
Sollte meine Lödung sich als wirklich funktionierend herausstellen, werde ich sie natürlich posten.
Viele Grüße!