18.02.2009, 11:42
Ich beschäftige mich momentan ein wenig mit den Funktionen für externe Codes. Ich habe eine Datenaufnahme in C++ innerhalb meines LabVIEW Projektes. Dort bekomme ich ein 1dimensionales Ergebnisarray. Ich habe mir überlegt folgendes in meinem Skript einzubauen:
1. Ich reserviere mit über Handles dynamisch Speicher.
2. Ich schreibe das Datenaufnahmearray dort hinein.
3. Ich löse ein Event in meiner LV Eventstruktur aus, welches mir die aufgenommenen Daten übergibt.
4. Ich gebe den Speicher wieder frei.
Soweit ok denk ich mal. Ich habs dann so versucht:
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>Zu 1.:
uInt16 **ArrayMemoryHdl;
ArrayMemoryHdl = (uInt16 **)DSNewHClr(sizeof(uInt16)*81920);
Zu 2.:
MoveBlock((void*)Datenarray, (UHandle*)ArrayMemoryHdl, 81920);
Zu 3.:
PostLVUserEvent(*Value, (UHandle*)&ArrayMemoryHdl);
Zu 4.:
DSDisposeHandle((UHandle)ArrayMemoryHdl);</div>
Leider löst mir die Zeile PostLVUserEvent ein Fehler aus das er wohl die Daten an der falschen Stelle im Speicher sucht. Leider verstehe ich nicht warum. Hat von euch jemand eine Idee?
Danke
1. Ich reserviere mit über Handles dynamisch Speicher.
2. Ich schreibe das Datenaufnahmearray dort hinein.
3. Ich löse ein Event in meiner LV Eventstruktur aus, welches mir die aufgenommenen Daten übergibt.
4. Ich gebe den Speicher wieder frei.
Soweit ok denk ich mal. Ich habs dann so versucht:
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>Zu 1.:
uInt16 **ArrayMemoryHdl;
ArrayMemoryHdl = (uInt16 **)DSNewHClr(sizeof(uInt16)*81920);
Zu 2.:
MoveBlock((void*)Datenarray, (UHandle*)ArrayMemoryHdl, 81920);
Zu 3.:
PostLVUserEvent(*Value, (UHandle*)&ArrayMemoryHdl);
Zu 4.:
DSDisposeHandle((UHandle)ArrayMemoryHdl);</div>
Leider löst mir die Zeile PostLVUserEvent ein Fehler aus das er wohl die Daten an der falschen Stelle im Speicher sucht. Leider verstehe ich nicht warum. Hat von euch jemand eine Idee?
Danke