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 

UUID als Datentyp für eine DLL erstellen



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!

04.03.2012, 13:28
Beitrag #11

jabami Offline
LV-Novize
*


Beiträge: 14
Registriert seit: Feb 2012

LabView 2011
2011
DE


Deutschland
RE: UUID als Datentyp für eine DLL erstellen
Hallo Rolf,

danke das Du Dich nochmal zu dem Problem geäussert hast. Ich hab Dir im Anhang mal die Dateien angehängt mit denen ich bisher gearbeitet habe. Wie Du sehen wirst ist das alles nicht soviel. Mir ging es prinzipiell darum die CLEyeMulticam.dll in Labview anzusprechen. Testen wirst Du das wohl aber nicht können, da Du ja die Hardware bräuchtest. Den Treiber kann man sich im übrigen hier herunterladen.

Mit bestem Dank und Grüßen,
Jan


Angehängte Datei(en)
0.0 .zip  PS3 Eye LabView .zip (Größe: 3,44 MB / Downloads: 258)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.03.2012, 17:38
Beitrag #12

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: UUID als Datentyp für eine DLL erstellen
(04.03.2012 13:28 )jabami schrieb:  Hallo Rolf,

danke das Du Dich nochmal zu dem Problem geäussert hast. Ich hab Dir im Anhang mal die Dateien angehängt mit denen ich bisher gearbeitet habe. Wie Du sehen wirst ist das alles nicht soviel. Mir ging es prinzipiell darum die CLEyeMulticam.dll in Labview anzusprechen. Testen wirst Du das wohl aber nicht können, da Du ja die Hardware bräuchtest. Den Treiber kann man sich im übrigen hier herunterladen.

Mit bestem Dank und Grüßen,
Jan

Would be nice if you could save it to 2010.

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
04.03.2012, 23:55
Beitrag #13

jabami Offline
LV-Novize
*


Beiträge: 14
Registriert seit: Feb 2012

LabView 2011
2011
DE


Deutschland
RE: UUID als Datentyp für eine DLL erstellen
Hallo Rolf,

im Anhang die beiden vorerst von mir erstellten VI's: PS3_CameraCount.vi und PS3_GetCameraUUID.vi. CameraCount funktioniert bei mir (ist ja auch trivial und Minimalst). An GetCameraUUID beiss ich mir wie gesagt die Zähne aus. Wie bereits zuvor beschrieben, kann ich mir auch den Pointer aus dem ersten Node nicht anzeigen lassen. Theoretisch müsste das ja möglich sein wenn der gesamte MoveBlock Teil einfach weggelassen wird. Aber bereits in einem solchen Fall bekomm ich den zuvor beschriebenen Fehler. Der Parameter für den Funktionsaufruf ist richtig. Das hab ich mehrfach überprüft. Ich hab im Anhang auch noch ein C# Beispiel angehängt das die beschriebene .dll nutzt.

Beste Grüße,
Jan


Angehängte Datei(en)
10.0 .vi  PS3_CameraCount.vi (Größe: 11,43 KB / Downloads: 247)

10.0 .vi  PS3_GetCameraUUID.vi (Größe: 13,95 KB / Downloads: 230)

0.0 .txt  Program.txt (Größe: 6,52 KB / Downloads: 661)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
05.03.2012, 20:14 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2012 20:17 von rolfk.)
Beitrag #14

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: UUID als Datentyp für eine DLL erstellen
(04.03.2012 23:55 )jabami schrieb:  Hallo Rolf,

im Anhang die beiden vorerst von mir erstellten VI's: PS3_CameraCount.vi und PS3_GetCameraUUID.vi. CameraCount funktioniert bei mir (ist ja auch trivial und Minimalst). An GetCameraUUID beiss ich mir wie gesagt die Zähne aus. Wie bereits zuvor beschrieben, kann ich mir auch den Pointer aus dem ersten Node nicht anzeigen lassen. Theoretisch müsste das ja möglich sein wenn der gesamte MoveBlock Teil einfach weggelassen wird. Aber bereits in einem solchen Fall bekomm ich den zuvor beschriebenen Fehler. Der Parameter für den Funktionsaufruf ist richtig. Das hab ich mehrfach überprüft. Ich hab im Anhang auch noch ein C# Beispiel angehängt das die beschriebene .dll nutzt.

Beste Grüße,
Jan

Ok das hilft! Ein paar Dinge sind hierbei erwähnenswert:

1) Das program.txt File spezifiziert keine Calling Convention und gemäss MSDN bedeutet dies für .Net Sprachen (Visual Basic, C#, C++) dass stdcall verwendet wird. Deshalb muss man das in der Call Library Node für die Funktionen dieser DLL ebenfalls so einstellen. Deshalb crashte der Aufruf der GetCameraUUID Funktion auch da der Stack korrumpiert wurde. Für die CameraCount Funktion machte es nichts aus da diese Funktion keine Parameter hat.
Achtung: Die Call Library Node für die MoveBlock Funktion muss auf cdecl bleiben, da LabVIEW alle seine Funktionen als cdecl exportiert.

2) Der erste Parameter zu MoveBlock muss als Integersized Pointer konfiguriert sein, soweit hast Du das richtig, aber Du stellst dazu auch ein dass dieser Wert als Referenz übergeben werden muss was falsch ist. Du willst nicht einen Pointer auf den Pointer an diese Funktion geben sondern direkt den Pointer den die GetCameraUUID Funktion zurückgegeben hat.

3) Der zweite Parameter zu MoveBlock sollte nicht ein Cluster mit 16 Floatingpointzahlen sein sondern einer mit 16 Bytes, und ein Byte entspricht einem U8. Alternativ kannst Du ihn auch als Array of 16 * U8, passed as Array Pointer konfigurieren, und dieses Array direkt so aus der Funktion führen. Solange Du diese GUID nicht selbst optisch interpretieren willst sondern nur verwendest um an andere Funktionen zu übergeben ist das kein Problem. Oder Du kannst das Array auch nach der Call Library Node mit der Array to Cluster Node umwandeln. Nicht vergessen auf diese Funktionen einen Rechtsklick zu machen und die Clustergrösse auf 16 einzustellen.

Mit diesen Änderungen sollte es danach gehen.

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
05.03.2012, 21:14
Beitrag #15

jabami Offline
LV-Novize
*


Beiträge: 14
Registriert seit: Feb 2012

LabView 2011
2011
DE


Deutschland
RE: UUID als Datentyp für eine DLL erstellen
Hallo Rolf,

vielen lieben Dank für Deine hilfreichen Tips. Habe sie umgesetzt, aber die VI beendet immernoch mit einem Fehler (siehe vorherige Posts.) Ich hab Dir meine Änderungen nochmals angehängt.

Beste Grüße,
Jan


Angehängte Datei(en)
10.0 .vi  PS3_GetCameraUUID_v.1.1.vi (Größe: 14,61 KB / Downloads: 256)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
06.03.2012, 00:55
Beitrag #16

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: UUID als Datentyp für eine DLL erstellen
(05.03.2012 21:14 )jabami schrieb:  Hallo Rolf,

vielen lieben Dank für Deine hilfreichen Tips. Habe sie umgesetzt, aber die VI beendet immernoch mit einem Fehler (siehe vorherige Posts.) Ich hab Dir meine Änderungen nochmals angehängt.

Beste Grüße,
Jan

Wo krachts denn? Du hast Punkt 2) meines Posts nicht gut durchgelesen.

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
06.03.2012, 20:57
Beitrag #17

jabami Offline
LV-Novize
*


Beiträge: 14
Registriert seit: Feb 2012

LabView 2011
2011
DE


Deutschland
RE: UUID als Datentyp für eine DLL erstellen
Hallo Rolf,

auch wenn ich den Adress(Pointer) der Moveblock Funktion zu "Wert" ändere, anstatt "Zeiger auf Wert" , gibt die VI einen Fehler aus. Dieser wird allerdings schon in dem ersten .dll Knoten generiert, daher glaube ich nicht das es an der MoveBlock Funktion hapert. Irgendetwas ist mit dem Funktionsaufruf im ersten "Call Library Knoten" falsch. Und ich weiss nicht was. Hab bereits mit mehreren Parametern gespielt - leider ohne Erfolg. Hast Du noch eine Idee?

Beste Grüße,
Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.03.2012, 08:50 (Dieser Beitrag wurde zuletzt bearbeitet: 07.03.2012 08:53 von rolfk.)
Beitrag #18

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: UUID als Datentyp für eine DLL erstellen
(06.03.2012 20:57 )jabami schrieb:  Hallo Rolf,

auch wenn ich den Adress(Pointer) der Moveblock Funktion zu "Wert" ändere, anstatt "Zeiger auf Wert" , gibt die VI einen Fehler aus. Dieser wird allerdings schon in dem ersten .dll Knoten generiert, daher glaube ich nicht das es an der MoveBlock Funktion hapert. Irgendetwas ist mit dem Funktionsaufruf im ersten "Call Library Knoten" falsch. Und ich weiss nicht was. Hab bereits mit mehreren Parametern gespielt - leider ohne Erfolg. Hast Du noch eine Idee?

Beste Grüße,
Jan

Ok ich habe noch mal alle Files in Deinem ZIP Archive angeschaut. Und dabei scheint es dass das Headerfile zur DLL die Funktionsaufrufe etwas anders und deutlicher deklariert, als das was auf der Webseite zu sehen ist, die Du zuerst verlinkt hast. Demgemäss sind die Funktionen der CLEye DLL eben doch als cdecl deklariert. Wie sich das mit dem .Net Vorbild in Program.txt zusammenreimen lässt, das keine Aufrufkonvention im IMPORT Statement festlegt und daher gemäss MSDN stdcall verwenden würde weiss ich jetzt auch nicht. Aber da das DLL Header File wohl vom Hersteller kommt, und das .Net Vorbild vielleicht von weiss ich wem, gehe ich davon aus dass cdecl doch die richtige Konvention für alle CLEye Funktionen ist.

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
07.03.2012, 12:25
Beitrag #19

jabami Offline
LV-Novize
*


Beiträge: 14
Registriert seit: Feb 2012

LabView 2011
2011
DE


Deutschland
RE: UUID als Datentyp für eine DLL erstellen
Hallo Rolf,

abgesehen davon, dass das zur VErfügung gestellte Programm "programm.txt" aus der gleichen Quelle stammt wie der Treiber selbst, habe ich auch alle Kombinationen aus Aufrufkombinationen getestet. Cdecl und Standard. Hast Du noch weitere Ideen woran es liegen könnte?

Beste Grüße,
Jan
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
07.03.2012, 21:58
Beitrag #20

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: UUID als Datentyp für eine DLL erstellen
(07.03.2012 12:25 )jabami schrieb:  Hallo Rolf,

abgesehen davon, dass das zur VErfügung gestellte Programm "programm.txt" aus der gleichen Quelle stammt wie der Treiber selbst, habe ich auch alle Kombinationen aus Aufrufkombinationen getestet. Cdecl und Standard. Hast Du noch weitere Ideen woran es liegen könnte?

Beste Grüße,
Jan

Nein! Das ist jetzt wirklich ein Rätsel.

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


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Variant Datentyp bei C++ dll BastiFantasti 1 5.615 10.02.2012 21:30
Letzter Beitrag: rolfk
  Erzeugte DLL hat geänderten Datentyp (uint32->int32) LabVIEWDompteur 4 6.583 14.10.2011 12:09
Letzter Beitrag: rolfk
  Datentyp HANDLE, PVOID weschi 7 11.153 12.06.2007 14:14
Letzter Beitrag: rolfk

Gehe zu: