' schrieb:Habs mal mit der NumericArrayResize() Funktion versucht. Den typeCode f64 kennt die Funktion schonmal nicht. Habs dann so versucht:
if(err = NumericArrayResize(uB, 2, (UHandle*) &Array, PixelX * PixelY))
goto release
Das hat er dann auch geschluckt. Mein Skript sieht nun also folgendermaßen aus:
Das geht natürlich ganz fest falsch. Der f64 hatte ich leider falsch im Gedächtnis. Muss natürlich fD sein. Schau doch auch mal ganz einfach im External Code Reference Manual nach (ältere LabVIEWs Help->Search LabVIEW Bookshelf und dann da der Link External Code Reference, neuere LabVIEWs leider nicht mehr als PDF Dokument sondern nicht so praktisch in der ganzen Hilfe verpackt:
VI and Function Reference->Connectivity VIs and Functions-> Libraries & Executables->Code Interface Node Functions).
Ohne diese Referenz ist die Programmierung von DLLs (oder CINs) welche Gebrauch machen von den LabVIEW Manager Funktionen praktisch aussichtslos.
Der erste Parameter bei NumericArrayResize gibt den Elementdatentypen an den ein einzelnes Element im Array haben soll. Wenn Du da uB machst nimmt die Funktion einfach mal an dass Du da ein Bytearray hast. Das Ganze kannst Du zwar wieder tricksen indem Du die Anzahl Elemente mit 8 (double byte size) ^ Anzahl Dimensionen multiplizierst, aber das hat potentiel wieder Alignmentprobleme, da LabVIEW auf einigen Platformen spezielles Elementalignment vornimmt. NumericArrayResize trägt dem alles Rechnung.
Und Du füllst zwar das Array mit Daten vergisst aber jetzt um im Array auch noch zu vermelden wieviele Daten Du da reingepackt hast. Der LabVIEW Memory Manager will dass Du Arrays sauber mit seinen Funktionen anlegst, in Grösse veränderst und wieder freigibst, das LabVIEW Diagram verwendet aber die dimSizes im Array um zu wissen, ob und wieviel Daten da denn sind. Beides ist unabdingbar nötig, dass es korrekt funktioniert.
Also füg doch noch mal nach dem Datenkopieren soetwas ein wie:
(*Array)->dimSize[0] = PixelX;
(*Array)->dimSize[1] = PixelY;
oder vielleicht auch umgekehrt. Bei zweidimensionalen Arrays weiss ich das nie so genau
Rolf Kalbermatter