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 

DLL optimieren



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!

29.04.2009, 16:22
Beitrag #5

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
DLL optimieren
So, ich habe meinen Übeltäter glaube ich ausfindig gemacht. Es liegt nicht an der DLL selbst, sondern an dem Quellcode. Den sollte ich optimieren. Ich denke das wird auch der häufigste Grund sein, wesshalb eine DLL nicht so schnell arbeitet.

Ich hoffe es stört niemanden wenn ich an dieser Stelle mein Problem weiter vertiefe.

Ich habe wie gesagt eine Datenaufnahme mit einer C-Bibliothek geschrieben. Das eigentliche Herzstück ist die Processingfunktion, welche die Daten aufnimmt. Dies soll in Echtzeit geschehen. Dazu werden Speicher mit Funktionen der Bibliothek reserviert. Ich dachte mir das folgendermaßen:
Nach jedem Schuss (der Datenaufnahme) wird eine Funktion aufgerufen. In dieser Funktion möchte ich die aufgenommenen Daten nur an LabVIEW weiterleiten. Dort werden die aufgenommenen Daten in eine Queue geschoben und weiterverarbeitet. Soweit funtkioniert das auch. Allerdings macht mir die Funktion, welche mir die Daten in ein LabVIEW Array kopiert, einen strich durch die Rechnung. Diese ist nämlich zu langsam. Ich kann mir allerdings die Adresse des Puffers auslesen, in welchen die Daten abgelegt wurden. Jetzt war mein zweiter Gedanke ich übergebe diesen Pointer einfach der Funktion PostLVUserEvent, aber das führt zu einem Fehler (unexpected exception oder so ähnlich). Nun habe ich versucht mittels des MoveBlock die Daten in mein LVPuffer zu schieben. Das funktioniert noch, aber wenn ich dann dies versuche:
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>(*Memory)->dimSize[0] = 1234;
(*Memory)->dimSize[1] = 1234;</div>
um es mit dem PostLVUserEvent an LV zu übergeben kommt selbe Fehlermeldung wie eben geschildert. In etwa sieht das ganze so aus:
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>typedef struct{
int32 dimSize[2];
uInt16 elements;
} **UInt16HAndle;

UInt16Handle LVMemory = NULL;

// Variable zum Speichern der Pufferadresse.
unsigned long addr;
GetBufferInfo(EventID, MODIFIED_BUFFER_ID, &Buffer);
BufferInquire(Buffer, HOST_ADDRESS, &addr);
MoveBlock((void*)addr, (void*)LVMemory, sizeof(uInt16)*SizeX*SizeY);
(*LVMemory)->dimSize[0] = SizeY;
(*LVMemory)->dimSize[1} = SizeX;

PostLVUserEvent(LVUserEventRef, &LVMemory);</div>
Wie kann ich im Letzten Schritt die Daten an mein LV Array übergeben und das möglichst schnell.

Danke (wahrscheinlich an Rolf ;-) )
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30
Antwort schreiben 


Nachrichten in diesem Thema
DLL optimieren - abrissbirne - 26.04.2009, 16:21
DLL optimieren - rolfk - 27.04.2009, 08:01
DLL optimieren - abrissbirne - 27.04.2009, 09:06
DLL optimieren - rolfk - 27.04.2009, 09:48
DLL optimieren - abrissbirne - 29.04.2009 16:22
DLL optimieren - rolfk - 29.04.2009, 16:37
DLL optimieren - abrissbirne - 29.04.2009, 17:08
DLL optimieren - jg - 29.04.2009, 19:01
DLL optimieren - rolfk - 29.04.2009, 19:42
DLL optimieren - abrissbirne - 30.04.2009, 13:54
DLL optimieren - rolfk - 03.05.2009, 11:48
DLL optimieren - abrissbirne - 04.05.2009, 14:07
DLL optimieren - rolfk - 04.05.2009, 19:17
DLL optimieren - abrissbirne - 05.05.2009, 16:18

Gehe zu: