LabVIEWForum.de - Speicher allozieren - wie?

LabVIEWForum.de

Normale Version: Speicher allozieren - wie?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

wie kann ich denn mit LabVIEW Speicher (z.b.) für einen Puffer allokieren? Geht das über die Queue-Funktionen? Kann ich der Queue-Anforderung einen unbestimmten Typ übergeben? Was bekomme ich (dann) zurück? Kann ich den Pointer auf den Speicherbereich der Queue sonst irgendwie übergeben also nicht den Queue-Ausgang, sondern direkt den Pointer?


Sry, dass ich so viele Fragen in einer Stelle, aber die LV-Hilfe ist hier mal wieder absolut intransparent.

Viele Grüße
t4b-1re-2
' schrieb:Hallo,

wie kann ich denn mit LabVIEW Speicher (z.b.) für einen Puffer allokieren? Geht das über die Queue-Funktionen? Kann ich der Queue-Anforderung einen unbestimmten Typ übergeben? Was bekomme ich (dann) zurück? Kann ich den Pointer auf den Speicherbereich der Queue sonst irgendwie übergeben also nicht den Queue-Ausgang, sondern direkt den Pointer?
Sry, dass ich so viele Fragen in einer Stelle, aber die LV-Hilfe ist hier mal wieder absolut intransparent.

Viele Grüße
t4b-1re-2

direkte Antwort: nein. Es gibt in LV keine Pointer, LabVIEW arbeitet nach dem Datenflußmodell und alle Daten werden per Value (über den Draht) übergeben.

Indirekte Antwort: jein. Du kannst z.B. per "initialize Array" ein Array mit einer bestimmten Größe erzeugen und die Array-Elemente durch "Replace Array Subset" ersetzen. Das ist dann im Prinzip wieder eine Pointer-Operation, weil einfach ein neuer Wert an eine Speicherstelle geschrieben wird. Falls du ein Beispiel zum Thema "Ring-Buffer" sucht, kannst du mal hier nachschauen.

Ansonsten kann ich nur noch sagen: Frag Rolf K, der scheint die "allwissende Müllhalde" (ich hoff er kennt nun die Serie "die Fraggles, sonst isser vielleicht beleidigtWink) zu sein, wenn es darum geht Funktionen in LV zu nutzen, die es gar nicht gibtBig Grin
' schrieb:Hallo,

wie kann ich denn mit LabVIEW Speicher (z.b.) für einen Puffer allokieren? Geht das über die Queue-Funktionen? Kann ich der Queue-Anforderung einen unbestimmten Typ übergeben? Was bekomme ich (dann) zurück? Kann ich den Pointer auf den Speicherbereich der Queue sonst irgendwie übergeben also nicht den Queue-Ausgang, sondern direkt den Pointer?
Sry, dass ich so viele Fragen in einer Stelle, aber die LV-Hilfe ist hier mal wieder absolut intransparent.

Wofür willst Du denn das überhaupt? Also LabVIEW selber arbeitet natürlich intern schon mit Pointern und so aber auf Diagrammebene ist das mit voller Absicht nicht verfügbar. Ist auch der Grund warum Du LabVIEW VIs programmieren kannst ohne Dich immer um die korrekte Allozierung von Speicher kümmern zu müssen.

Der einzige Grund wo das noch Sinn macht, ist wenn Du einen solchen Buffer an eine DLL übergeben müsstest. Und da geht das auch. Einfach ein Bytearray (oder String) anlegen in LabVIEW und an die Call Library Node verbinden. Den entsprechenden Parameter dann als Array Datenpointer oder String Datenpointer konfigurieren.

Aber denke daran, LabVIEW verfügt über diesen Buffer nach der Rückkehr der Call Library Node nach Belieben, d.h. wenn Du diesen Buffer an eine asynchrone DLL Funktion gibts die erst später etwas damit machen will, geht es auf diese Weise meist schief.

Rolf Kalbermatter

PS: Danke i2dx für die Erklärung. Nein ich kenne die Fraggles nicht. Bin da wohl schon zu alt und mein Kleiner noch etwas zu jung. Big Grin
Andererseits vermute ich bei Anderen (und bei Dir im Speziellen) nicht automatisch Böswilligkeit wenn ich etwas nicht verstehe. ^_^

Rolf Kalbermatter
' schrieb:PS: Danke i2dx für die Erklärung. Nein ich kenne die Fraggles nicht. Bin da wohl schon zu alt und mein Kleiner noch etwas zu jung. Big Grin
Andererseits vermute ich bei Anderen (und bei Dir im Speziellen) nicht automatisch Böswilligkeit wenn ich etwas nicht verstehe. ^_^

Rolf Kalbermatter

jau, als ich die Fraggles geguckt hab war ich noch sehr jung, das müsste wohl so 28 Jahre her seinBig Grin

zum Glück gibt es aber Wikipedia, da ist das beschriebenSmile
Code:
Majorie, die Müllhalde (gespielt von Jerry Nelson, Myra Fried) ist allwissend und weise. Tatsächlich befindet sie sich im Garten der Gorgs und besteht wohl auch aus ihrem Müll. Die Fraggles besuchen sie, um sich von ihr Rat zu holen und sie und ihre magischen Kräfte um Hilfe zu bitten.

Quelle: Wikipedia / Fraggles
Referenz-URLs