Forum: PC-Programmierung USB Windows HID C++


von Knopf (Gast)


Lesenswert?

Ich benötige etwas Hilfe zur Programmierung aber auch zum Verständnis.

Es gibt und Windows DDK und man kann hier HID benutzen. Soweit ist das 
klar. Ich habe auch einige Klassen bzw. Funktionen gefunden. Allerdings 
sind mir hierbei einige Dinge unklar.

Zunächst zum Verständnis.

In PC hat mehrere USB -meistens- und an diesen kann ja auch jeweils 
verschiedene USB-Geräte angeschlossen sein. Solange es HID Geräte sind 
werden die unter windows erkannt und die Enumerationsdaten eingelesen. 
Soweit ist mir das klar.

Jetztaber ist die frage wie kriege ich raus, wie ich mein USB Gerät 
anspreche  und wie erfahre ich die übertragen Daten der Konfiguration 
zunächst erst mal.
Weiterhin müsste es doch möglich sein sämtliche USB Geräte zuermitteln 
und auch dessen Enumeration. Nur aber wie???

Ich habe da spdid.cbSize gefunden worum handelt es sich dabei.

Weiterhin fand ich HidD_GetHidGuid(&guid). Hier wird wohl eine Adresse 
ermittelt. aber was steckt dahinter und was kann ich damit anfangen.

Weiterhin fand ich ein SetupDiGetClassDEVS (....)

Und SetupDiEnumDeviceInterfaces.

von Ralf H. (rahand_eu)


Lesenswert?

Hallo Knopf,

die USB-Schnittstelle ist um einiges komplexer als z.B. die RS232. Ein 
Lehrbuch hilft dabei die ersten Hürden zu überspringen. Empfehlen kann 
ich Dir z.B. USB 2.0 - Handbuch für Entwickler von J. Axelson. Hier wird 
auch ausführlich auf die Verwendung des DDK eingegangen.

Prinzipielles Vorgehen:
Im DDK gibt es Funktionen (u.a. HidD_GetHidGuid), die Dir dabei helfen 
die GUID's aller angeschlossenen USB-Geräte auszulesen. Du musst dann 
die Gefundenen nur noch mit der GUID (irgendeine Kombination aus der 
Vendor- und Product-ID) Deines Gerätes abgleichen und schon kannst Du 
Dir ein Handle auf Dein USB-Gerät erstellen. Mit diesem Handle kannst Du 
über CreateFile(), ReadFile() und WriteFile() wie auf eine ganz normale 
serielle Schnittstelle zugreifen.

Gruß RalfH.

von Knopf (Gast)


Lesenswert?

Vielen Dank für die Nachricht. soweit habe ich das auch kapiert nur 
fehlt mir das Wissen, wie ich die Richtige USB- herausfinde. 
HidD_GetGuid(&guid); gibt eine Adresse zurück, nur welche?? Ist das 
nicht ein Arry wo alle Schnittstellen gelistet sind oder irgend sowas?

von FBI (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

also etwas Docu lesen mußt Du schon selbst! Und was eine GUID ist sollte 
man auch wissen, insbesondere wenn man mit dem DDK rumspielt.
Ich hab vorher auch noch nie etwas mit USB/HID/DDK programmiert, hab 
mich aus lauter Neugier und weil man ja nie auslernt halt mal bei 
gemacht. Das Ganze hat mich nicht mal 1h gekostet und rausgekommen, 
sozusagen als kleine Aufwärmübung, ist das angehängte kleine Proggi.

CU FBI

von FBI (Gast)


Angehängte Dateien:

Lesenswert?

Nachtrag:
Für die, die nicht selbst compilieren wollen/können hier noch die exe.

von Gerald (Gast)


Lesenswert?

braucht man um den code zu compilieren Windows WDK?

bye

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.