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 

LabVIEW Memory Manager



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!

19.02.2009, 17:16 (Dieser Beitrag wurde zuletzt bearbeitet: 19.02.2009 17:18 von rolfk.)
Beitrag #10

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
LabVIEW Memory Manager
' schrieb:Was wäre denn Ideal? Ich dachte mir, da mein Toplevel VI nach der Producer-Consumer-Loop Architektur aufgebaut ist, dass dies wunderbar in diesen Aufbau passt. Meine Producer empfängt quasi die Daten und kann diese weiterreichen.

Allerdings wenns irgendwie besser geht, wäre ich dankbar wenn du mir verraten könntest wie?

Danke

Tja ich habe das mal so getan dass ich eine Funktion hatte der das Handle als Parameter passed by reference übergeben wurde. Dann habe ich das Handle das in der DLL alloziert und gefüllt wurde mit dem Handle das von LabVIEW kam ganz einfach ausgetauscht. Ersparte mir eine Datenkopie. Du musst in Deiner DLL Funktion nur darauf achten dass das neue Handle entweder ein gültiges Handle ist, das man also mit DSSetHandleSize() in der Grösse anpassen kann, oder ein NULL Handle. (LabVIEW verwendet intern, und bei Handle Parametern die passed by reference sind, NULL als Alternative für ein leeres Handle also ein Array oder String der nur die Längenangabe 0 enthält.) In dem Fall müsste man dann halt DSNewHandle() verwenden.

Wenn Du aber sowieso NumericArrayResize() verwendest erübrigt sich diese letzte Bemerkung aber, da diese Funktion auch mit NULL Handles korrekt umgeht.

Rolf Kalbermatter

PS: Den Handle Exchange solltest Du mit einer Funktion wie etwa InterlockedExchange() machen da Du ansonsten in Race Conditions laufen kannst.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
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
LabVIEW Memory Manager - abrissbirne - 18.02.2009, 11:42
LabVIEW Memory Manager - IchSelbst - 19.02.2009, 08:57
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 09:44
LabVIEW Memory Manager - rolfk - 19.02.2009, 09:54
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 10:02
LabVIEW Memory Manager - rolfk - 19.02.2009, 10:11
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 12:00
LabVIEW Memory Manager - rolfk - 19.02.2009, 14:57
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 16:53
LabVIEW Memory Manager - rolfk - 19.02.2009 17:16
LabVIEW Memory Manager - abrissbirne - 19.02.2009, 18:03

Gehe zu: