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: Absturz nach externem Code-Aufruf



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.09.2007, 08:52 (Dieser Beitrag wurde zuletzt bearbeitet: 11.09.2007 09:02 von rolfk.)
Beitrag #17

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
LabVIEW: Absturz nach externem Code-Aufruf
' 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 genauRolleyes

Rolf Kalbermatter

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
Antwort schreiben 


Nachrichten in diesem Thema
LabVIEW: Absturz nach externem Code-Aufruf - rolfk - 11.09.2007 08:52

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Absturz durch unzulässige Pointer VS_03 3 10.274 28.10.2016 18:32
Letzter Beitrag: VS_03
  Labview blockiert serielle Schnittstelle nach Aufruf der DLL Berdschi 5 8.175 24.04.2014 08:38
Letzter Beitrag: Berdschi
  Fehler beim Schließen des VIs nach Delphi-DLL-Aufruf Bärbel 10 14.220 11.11.2013 11:44
Letzter Beitrag: andreaskoller
  Labview-Code in Visual Studio GladiatoreSardo 1 5.629 12.11.2012 10:41
Letzter Beitrag: GerdW
  Absturz von Labview nach schliessen eines VIs sima 4 7.869 23.01.2012 17:07
Letzter Beitrag: sima
  Absturz und fehler bei aufrufen einer externen dll Georg26 3 6.484 18.07.2011 09:45
Letzter Beitrag: Georg26

Gehe zu: