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 

LV Handles



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!

11.03.2009, 16:46 (Dieser Beitrag wurde zuletzt bearbeitet: 11.03.2009 16:52 von abrissbirne.)
Beitrag #2

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
LV Handles
' schrieb:Hallo,

ich dachte ich hätte so langsam das Prinzip von Handles verstanden, aber eine neue Aufgabe hat mit gezeigt das ich wohl doch noch nicht ganz durchgestiegen bin.
Mein Problem:
Ich möchte Speicherplatz reservieren. Dazu verwende ich LV Memory Manager Funktionen. Über eine externe Bibliothek soll diese Platz beschrieben werden. Die Funktion die ich aufrufe erwartet als Übergabewert einen Daten-Pointer (DataPtr specifies a physical address that points to the data). Mein Handle besteht ja aus einem Master-Pointer der wiederum auf eine Liste von Pointern sieht. Ich dachte mir eigentlich es müsste irgendwie so funktionieren &(*Handle)->value. Wie kann ich also aus meinem Handle den Datenpointer extrahieren?

Danke, eure abrissbirne
Nochmal zum bessern Verständnis:
Ich befasse mich mit einer Datenaufnahme, welche über eine Bibliothek in C++ abläuft. Hier gibt es die Möglichkeit eine Funktion zu verwenden, die mir in einen von mir allocierten Speicherbereich Daten hineinschreibt. Diese Funktion erwartet von mir einen Daten-Pointer (siehe oben).
Ich bin nun folgendermaßen vorgegangen:
Ich reserviere mir Speicher mittels der Funktion DSNewHandle.
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>struct {
int32 dimSize[2];
uInt16 elmements;
} **UInt16Handle;

UInt16Handle MemoryHdl;
MemoryHdl = (UInt16Handle)DSNewHClr(sizeof(uInt16)*SizeX*SizeY);
</div>
Habs alternativ auch so versucht:
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>struct {
int32 dimSize[2];
uInt16 elmements;
} **UInt16Handle;

UInt16Handle MemoryHdl = NULL;
NumericArrayResize(uW, 2, (UHandle*)&MemoryHdl, SizeX*SizeY);
(*MemoryHdl)->dimSize[1] = SizeX;
(*MemoryHdl)->dimSize[2] = SizeY;
</div>
Die Funktion aus der Bibliothek sieht in etwa so aus:
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>CreateBuffer(SystemID, long SizeX, long SizeY, long Type, Attribute, long ControlFlag, long Pitch, void *DataPtr, BufferID);</div>
System ID: ergibt sich aus nach dem Verbindungsaufbau mit der Karte (OK)
SizeX: Ist ebenso kein Problem und wird aus einer Datei ausgelesen (OK)
SizeY: siehe SizeX
Type: UInt16 (OK)
Attribute: Können aus einer Liste gewählt werden (OK)
ControlFlag: PHYSICAL_ADDRESS (Specifies that DataPtr is a physical address that points to the data) (OK)
Pitch: Abstand zwischen zwei Zeilen des Arrays (Kann in Bildpunkten und Bytes angegeben werden). Entspricht quasi meinem SizeX (OK?)
DataPtr: Hier muss nun aus dem Handle der Datenpointer extrahiert werden. (NICHT OK)
BufferID: Ergibt sich wieder aus dem vorherigen Programmablauf (OK)

Diese Funktion sollte nun laut Beschreibung die Daten direkt in den von mir reservierten Speicher schreiben. Leider funktioniert es bis jetzt nicht.

Danke, eure abrissbirne
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
LV Handles - abrissbirne - 11.03.2009, 13:53
LV Handles - abrissbirne - 11.03.2009 16:46
LV Handles - rolfk - 11.03.2009, 19:44
LV Handles - abrissbirne - 11.03.2009, 22:06
LV Handles - rolfk - 12.03.2009, 09:49
LV Handles - abrissbirne - 16.03.2009, 08:45
LV Handles - rolfk - 16.03.2009, 10:16

Gehe zu: