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 

C-DLL, Speicherüberschreibung, Arraygröße



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!

02.02.2009, 19:33 (Dieser Beitrag wurde zuletzt bearbeitet: 02.02.2009 19:42 von rolfk.)
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
C-DLL, Speicherüberschreibung, Arraygröße
' schrieb:meine Exportfunktion lautet:

__declspec(dllexport) void correl(float data1[], float data2[], unsigned long n, float ans[]);

n ist die Anzahl der Samples.
data1 bekommt ein Sinussignal (n Samples).
data2 bekommt ein Rechtecksignal (n Samples).
ans liefert die Kreuzkorrelation beider Signale (2*n Samples).

Das scheint mir ziemlich eindeutig. Die Funktion hat 4 Parameter. Parameter 1 und 2 sind Arrays die Du in LabVIEW generierst und an die Funktion als Array C Datenpointer von Typ float (LabVIEW Single Precision Float) übergibts. Parameter 3 ist ganz einfach ein 32 Bit unsigned Integer der als Value übergeben wird. Der letzte Parameter ist auch wieder dasselbe als die ersten zwei. Hier musst Du aber in LabVIEW mit Initialize Array ein Array von 2 * n Elementen erzeugen und an das Terminal verbinden.

Das ist alles.

Übrigens hat LabVIEW auch Korrelationsfunktionen die ebenfalls in einer DLL implementiert sind. Dort wird aber nicht einfach der Code aus Numerical-Recipes für C genommen sondern nach den Funktionen der Intel Math Kernel Library gelinkt. Diese Library ist ausführlicher (mehr Funktionen), genauer und schneller (spezifische Intel CPU Optimalisierungen werden benützt) als Numerical-Recipes für C und in gewissen Fällen auch korrekter. Die Numerical-Recipes für C Routinen sind grundsätzlich nicht schlecht aber das Ziel war nicht um die Beste numerische Library zu machen sondern zu zeigen wie man numerische Berechnungen in C grundsätzlich auf eine elegante und gut lesbare Weise machen kann. Die Detailimplementierung von speziellen Randbedingungen und Optimalisierungen ist diesem Ziel aber oft entgegengesetzt.

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


Nachrichten in diesem Thema
C-DLL, Speicherüberschreibung, Arraygröße - rolfk - 02.02.2009 19:33

Gehe zu: