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 

HIDAPI.DLL



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!

31.08.2016, 13:23
Beitrag #1

Stefan1101 Offline
LVF-Neueinsteiger


Beiträge: 4
Registriert seit: Jun 2016

2015 Student
-
DE



HIDAPI.DLL
Hallo zusammen,

nachdem ich bei der Kommunikation mittels VISA (Link) probiert habe, leider kann vollständigen Erfolg hatte, möchte ich nun die Kommunikation mit Hilfe der HIDAPI.DLL realisieren.
Allerdings habe ich das Problem, dass die Funktion hid_open() nicht korrekt ausgeführt wird, ich bekomme immer den Wert "0" zurück. Im angehängten VI habe ich zwei Funktionen realisiert.
Die Erste (hid_enumerate()) dient nur für mich als Bestätigung, dass das Gerät überhaupt angesprochen wird. Ich vermute der Fehler beim Aufruf der zweiten Funktion (hid_open)) liegt im dritten Übergabearameter, der möglicherweise nicht korrekt übergeben wird. Vielleicht liegt es somit an dem Typ *wchar_t?

Hier finde man eine Erläuterung zur der DLL.

Ebenso habe ich probiert die DLL mit LabVIEW zu importieren. Das erstellte VI gibt mir allerdings ebenfalls den Wert "0" zurück.

Über jeden Denkanstoß bin ich dankbar.

Stefan


Angehängte Datei(en)
15.0 .vi  HID_API.vi (Größe: 10,55 KB / Downloads: 487)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
06.09.2016, 22:48 (Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2016 22:57 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: HIDAPI.DLL
(31.08.2016 13:23 )Stefan1101 schrieb:  Hallo zusammen,

nachdem ich bei der Kommunikation mittels VISA (Link) probiert habe, leider kann vollständigen Erfolg hatte, möchte ich nun die Kommunikation mit Hilfe der HIDAPI.DLL realisieren.
Allerdings habe ich das Problem, dass die Funktion hid_open() nicht korrekt ausgeführt wird, ich bekomme immer den Wert "0" zurück. Im angehängten VI habe ich zwei Funktionen realisiert.
Die Erste (hid_enumerate()) dient nur für mich als Bestätigung, dass das Gerät überhaupt angesprochen wird. Ich vermute der Fehler beim Aufruf der zweiten Funktion (hid_open)) liegt im dritten Übergabearameter, der möglicherweise nicht korrekt übergeben wird. Vielleicht liegt es somit an dem Typ *wchar_t?

Hier finde man eine Erläuterung zur der DLL.

Ebenso habe ich probiert die DLL mit LabVIEW zu importieren. Das erstellte VI gibt mir allerdings ebenfalls den Wert "0" zurück.

Über jeden Denkanstoß bin ich dankbar.

Stefan

NULL in C bei einem Stringparameter ist nicht der String "NULL" (man beachte die Anführungszeichen die angeben dass es sich hier um eine String handelt) sondern der NULL Pointer. LabVIEW selber unterstüctzt grundsätzlich keine Pointer aber bei der Call Library Node kann man einen Parameter als Pointersized Integer konfigurieren. Danach kannst Du dort einfach eine Integerkonstante mit dem Wert 0 anbinden. Dadurch dass Du das gleich richtig als Pointersized Integer konfigurierst, bekommst Du später wenn Du allenfalls nach 64 Bit LabVIEW wechselst (Ja, irgendwann mal zwischen LabVIEW 2017 und 2025 wird die 32 Bit Variante auch unter Windows definitive zum Fenster rausgeschmissen, Linux und MacOS X sind schon bei LabVIEW 2016 nur noch 64 Bit!) keine grauen Haare mehr da die VIs auch dann noch korrekt sind.

Das heisst in LabVIEW musst Du diesen Funktionsparemeter entweder als C String Pointer konfigurieren wenn Du dort auch wirklich eine String übergeben willst aber als Pointersized Integer, wenn Du einen NULL Pointer übergeben willst.

Auch die beiden Returnwerte der zwei Funktionen sollten als Pointersized Integer konfiguriert werden statt als 32 Bit Integer. Und man sollte dann natürlich am Ende auch entsprechen hid_free_enumeration() aufrufen für das "Handle" von hid_enumerate() und entsprechen hid_close() für das "Handle" von hid_open(). Ansonsten baust Du ein Speicherleck!

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 


Gehe zu: