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 

USB Descriptor auslesen



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!

20.07.2023, 13:11
Beitrag #1

TDO88 Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Dec 2022

2020
2009
DE


Deutschland
USB Descriptor auslesen
Hallo Zusammen,

ich habe ein HID Gerät, welches über USB am Rechner angeschlossen ist.
Gibt es die Möglichkeit den USB Device Descriptor davon auszulesen?

Habe bisher noch keine Möglichkeit dafür gefunden. Scheinbar kann man das über die HID.dll machen, jedoch weiß ich nicht genau, wie ich diese in meinen Code integrieren kann. Eine .h Datei davon finde ich nicht um die DLL zu importieren und um den DLL Aufruf direkt auzuführen, bin ich mir unsicher, wie ich die Übergabeparameter definieren soll.

Hat da jemand Erfahrung?

Gruß
TDO
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.07.2023, 16:15
Beitrag #2

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 417
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: USB Descriptor auslesen
Hallo TDO,

Microsoft hat jede Menge Infos zur HID API: https://learn.microsoft.com/en-us/window.../ddi/_hid/

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.07.2023, 06:37
Beitrag #3

TDO88 Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Dec 2022

2020
2009
DE


Deutschland
RE: USB Descriptor auslesen
Hallo Martin,

vielen Dank für den Link.
Auf der Seite war ich schon, komme mit diesen Infos aber leider nicht weiter. Es gibt da ja z.B. die Funktion
Code:
BOOLEAN HidD_GetPhysicalDescriptor(
  [in]  HANDLE HidDeviceObject,
  [out] PVOID  Buffer,
  [in]  ULONG  BufferLength
);

Parameters

[in] HidDeviceObject

Specifies an open handle to a top-level collection.

[out] Buffer

Pointer to a caller-allocated buffer that the routine uses to return the requested physical descriptor.

[in] BufferLength

Specifies the length, in bytes, of the buffer at Buffer.

Wie bekomme ich jetzt aber ein Handle auf das HID Gerät, welches ich ansprechen möchte?
Welchen Datentypen muss ich dann beim Parameter Buffer benutzen?

Grüße
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.07.2023, 13:06
Beitrag #4

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 417
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: USB Descriptor auslesen
Wie du an das HidDeviceObject kommst: Da hilft nur die Suchmaschine deiner Wahl zu befragen, oder auf der MS webseite zu suchen :-)
Codebeispiele finden sich ja auch dazu.

Das was du vor hast scheint mir ohne das passende Vorwissen nichts zu sein, was mal eben schnell implementiert werden kann.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2023, 09:32
Beitrag #5

th13 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 173
Registriert seit: Oct 2013

2020 SP1
2013
EN


Deutschland
RE: USB Descriptor auslesen
(21.07.2023 06:37 )TDO88 schrieb:  [code]BOOLEAN HidD_GetPhysicalDescriptor(
[in] HANDLE HidDeviceObject,
[out] PVOID Buffer,
[in] ULONG BufferLength
);
Welchen Datentypen muss ich dann beim Parameter Buffer benutzen?
ULONG ist U32, PVIOD ist ein Zeiger auf deinen Puffer (also der Rückgabestring), da sollte "unsigned pointer-sized integer" und "pointer to value" funktionieren.
HANDLE ist wahrscheinlich auch ein unsigned Integer.

(21.07.2023 06:37 )TDO88 schrieb:  Wie bekomme ich jetzt aber ein Handle auf das HID Gerät, welches ich ansprechen möchte?
Such nach C/C++ oder C#-Code, den du untersuchen kannst, zB hier: https://chromium.googlesource.com/chromi...dows_usb.c
Du wirst hier aber nur wenige Leute finden, die sich mit der Windows-API auskennen. Evtl. ist es auch einfacher, du schreibst den Code zum Auslesen in C++ oder C#, packst das ganze in eine DLL und übergibst an LabVIEW nur den String, hier zB C#-Code: https://stackoverflow.com/questions/5221...descriptor

Calling C/C++ DLLs from LabVIEW
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2023, 17:20
Beitrag #6

Martin.Henz Offline
LVF-Team
LVF-Team

Beiträge: 417
Registriert seit: Jan 2005

2.5.1 bis 20
1992
kA

74363
Deutschland
RE: USB Descriptor auslesen
(24.07.2023 09:32 )th13 schrieb:  Calling C/C++ DLLs from LabVIEW

Bitte nicht ausgerechnet diesen Link verbreiten. Ich kannte das bis heute noch nicht. Das was da steht ist in weiten Teilen schlicht falsch.

Martin Henz
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.08.2023, 11:13 (Dieser Beitrag wurde zuletzt bearbeitet: 25.08.2023 11:18 von rolfk.)
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: USB Descriptor auslesen
(24.07.2023 17:20 )Martin.Henz schrieb:  
(24.07.2023 09:32 )th13 schrieb:  Calling C/C++ DLLs from LabVIEW

Bitte nicht ausgerechnet diesen Link verbreiten. Ich kannte das bis heute noch nicht. Das was da steht ist in weiten Teilen schlicht falsch.

Schlicht falsch ist definitive übertrieben. Teilweise könnte es noch mehr und spezifischere Erklärungen gebrauchen, aber!!! Das endet sehr schnell in C Details, die der Durchschnitt-LabVIEW-Programmierer ohnehin nicht mehr begreifen kann. Das Problem ist komplex und in vielen Fällen schlicht nicht ausgiebig zu erklären auf eine Weise, die ein nicht C Programmierer überhaupt begreifen könnte.

Was sicher ein Update vertragen könnte ist die Anpassung an die heutige Welt wo 64-bit mehr und mehr Standard wird. Diese Dokumente stammen alle noch aus einer Zeit wo 32-bit der Standard war und teilweise selbst noch nicht mal eine Option in LabVIEW. LabVIEW kennt erst seit 2009 auch eine 64-bit Version und erst seit 2014 auf nicht Windows Systemen. Aber selbst dann war es lange Zeit noch der Tenor "Wer braucht überhaupt 64-bit?" und "Warum sollte ich mich mit der Möglichkeit von 64-bit Systemen abgeben? Das benütze ich eh nie im Leben!"

Übrigens ist ein HANDLE immer eine Pointer sized integer, persönlich bevorzuge ich dabei Unsigned aber es ist wichtiger um es konsistent überall signed oder unsigned zu machen, dann welchen davon man wählt.

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: