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 

Buffer reservieren + Pointer auslesen



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.09.2008, 09:53
Beitrag #7

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 426
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
Buffer reservieren + Pointer auslesen
' schrieb:Ja, was sie liefern sind sehr simple VIs, in denen diese dll-Aufrufe drinstehen. Diese mitgelieferten VIs und auch die Beispielprogramme enden leider genau da, wo es interessant wird:

Die wissen wahrscheinlich warum ... weil es möglicherweise nicht wirklich gut funktionieren wird.

Ich muss ein wenig spekulieren, weil ich diese Schnittstelle nicht genau kenne. Dass das so gar nicht oder nicht so einfach geht, finde ich aber nicht sehr überraschend.

Du übergibst in deiner Schleife bei der zweiten Iteration genau den gleichen Speicher wie beim ersten mal. 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). 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 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. Das ist nach "is_SetImageMem()" der Fall. Die Daten werden also (für LabVIEW) nirgendwo mehr gebraucht und können daher auch freigegeben werden. Möglicherweise passiert nur deshalb kein Crash, weil LabVIEW den Speicher nicht frei gibt und ihn stattdessen für evtl. auftretende erneute Aufrufe des VIs reserviert hält. Du müsstest dafür sorgen, dass der Speicher der einzelnen Frames nicht freigegeben und von LabVIEW auch nicht anderweitig verwendet wird. Es könnte leichte Probleme bereiten, LabVIEW hier auszutricksen.

Unter Umständen musst du dich mit Funktion wie GlobalAlloc(), GlobalFree(). des Betriebssystems befassen. Dann hast du das Belegen und Freigeben des Speichers selbst in der Hand. Beispiele für die Anwendung dieser Funktionen müssten sich z.B. in VIs finden, die Daten zwischen dem Clipboard und LabVIEW austauschen.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
Buffer reservieren + Pointer auslesen - Peter Knauer - 04.09.2008, 16:19
Buffer reservieren + Pointer auslesen - Peter Knauer - 05.09.2008, 00:05
Buffer reservieren + Pointer auslesen - Martin.Henz - 05.09.2008 09:53
Buffer reservieren + Pointer auslesen - Peter Knauer - 05.09.2008, 15:35
Buffer reservieren + Pointer auslesen - Peter Knauer - 05.09.2008, 23:31
Buffer reservieren + Pointer auslesen - Peter Knauer - 09.09.2008, 10:50

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Datenübergabe an DLL Pointer to Pointer Reiling 2 9.566 02.02.2018 10:59
Letzter Beitrag: Reiling
  Absturz durch unzulässige Pointer VS_03 3 10.274 28.10.2016 18:32
Letzter Beitrag: VS_03
  dll mit Pointer auf komplexe Struktur einbinden Wedgewood 11 16.988 27.04.2014 23:44
Letzter Beitrag: Wedgewood
  Pointer auf Array mit Labview übertragen und darstellen lupus022 35 32.400 19.07.2013 10:53
Letzter Beitrag: lupus022
  Pointer und MoveBlock OXO 4 8.191 03.06.2013 16:31
Letzter Beitrag: OXO
  Pointer auf Subarray übergeben Event Horizon 5 7.382 15.07.2012 10:21
Letzter Beitrag: rolfk

Gehe zu: