' schrieb:Moin,
@ Jens
Die Representation des Eingangs vom "initialize array" kann ich leider nicht umstellen, da dort der "Call Library Node" angeschlossen ist.
Du stehst total auf dem Schlauch, sorry!
Wenn Du eine C Funktion aufrufst musst Du alle Parameter der Funktion
VOR dem Aufruf festlegen. Natürlich kannst Du das Initialize Array nicht mit dem Array füttern dass aus der CLN kommt. Du musst mit InitializeArray ein entsprechendes Array mit der richtigen Länge erzeugen und am Eingang (sprich links an der CLN) anschliessen so dass die DLL Funktion auch einen Buffer hat in den sie die Resultate schreiben kann.
Die DLL Funktion ist rein C und C schreibt vor dass der Aufrufer alle eventuellen Buffer vor dem Aufruf einer Funktion anlegen muss. Da hast Du kein LabVIEW dass Dir schon brav das Händchen hält und wann immer das nötig ist ganz automatisch die entsprechenden Buffer anlegt und wieder aus dem Speicher entfernt. Dies ist ganz einfach C und LabVIEW kann Dir nur die Werkzeuge geben aber nicht die Arbeit abnehmen, da es ganz einfach nicht genug Informationen dazu hat und diese auch auf keine mögliche Weise selber erhalten kann.
Wenn Du schon C programmieren willst und nicht die eingebauten Funktionen in LabVIEW verwenden willst solltest Du Dir wirklich die Mühe machen um erst mal ein gutes C Tutorial durchzuarbeiten. Pointers, Arrays und Funktionsaufrufe sollten dort schon minimal gut erklärt werden um Dir das nötige Basiswissen zu geben, um auch solche Funktionen von LabVIEW aus aufzurufen.
Da ist aber ein Punkt der mir ziemliche Sorgen bereitet. Die Funktion correl() scheint am Ende den Buffer von ans mit free() friezugeben. Wenn das wirklich so sein soll denke ich mal dass Du diese Funktion nicht ohne Anpassungen von LabVIEW aufrufen kannst. Warum sollte die Funktion das tun, schliesslich willst Du in diesem Buffer doch das Resultatarray ins LabVIEw bekommen? Wenn die DLL versucht einen Buffer den sie von LabVIEW erhalten hat mit der C Runtime Funktion free() freizugeben geht das garantiert sehr falsch.
Rolf Kalbermatter