mikrocontroller.net

Forum: PC-Programmierung USB Windows HID C++


Autor: Knopf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf H. (rahand_eu)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Knopf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: FBI (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: FBI (Gast)
Datum:
Angehängte Dateien:

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

Autor: Gerald (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
braucht man um den code zu compilieren Windows WDK?

bye

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.