HID device IN Report mit ReadFile empfangen

OP #744676
Lesenswert?
• ▲
▼
Hallo,
ich habe schon ne ganze Menge an Beiträgen hier durchforstet aber keine 
Antwort auf meine Frage gefunden.
Ich möchte mit ReadFile einen Report von meinem HID device empfangen. 
Der Report Deskriptor sieht folgerndermaßen aus:
HID_UsagePageVendor(0xFF),
HID_Usage(0x01),
HID_Collection(HID_Application),
  HID_Usage(0x03),
  HID_LogicalMin(0),
  HID_LogicalMax(1),
  HID_ReportCount(4),
  HID_ReportSize(8),
  HID_Input(HID_Data | HID_Variable | HID_Absolute),
  HID_Usage(0x04),
  HID_LogicalMin(0),
  HID_LogicalMax(1),
  HID_ReportCount(127),
  HID_ReportSize(8),
  HID_Output(HID_Data | HID_Variable | HID_Absolute),
HID_EndCollection,

ReadFile liefert aber kein Ergebnis (time out - can't read from device). 
Mit einem USB Paket Analyzer sehe ich aber, dass ein IN Paket vom 
controller gesendet wird. Ich habe probiert dem Report eine ID 
zuzuweisen und dann im IN Report im ersten Byte die ID anzugeben und es 
ging. Ich möchte aber die Report ID vermeiden, da ich keine brauche. 
Soweit ich das verstanden habe bekommen dann alle Reports die ID 0. Aber 
selbst wenn das erste Byte im IN Report eine 0 ist empfängt Windows ihn 
nicht.
Hat jemand eine Idee woran das liegen könnte?

Danke
mfg
sven
(Firma: Explinovo GmbH) #1189680
Lesenswert?
• ▲
▼
Hallo,
ich habe ein kleines Problemchen.
Gerade beschäftige ich mich mit dem PIC 18F4550 und wollte nun eine 
Verbindung über USB zum PC herstellen.

Ich habe alle Deskriptoren geschrieben und die Enumeration scheint gut 
zu funktionieren oder zumindest das Gerät wird im Gerätmanager als HID 
angezeigt.

Jetzt möchte ich Daten an Geräte senden und empfangen. Dazu habe ich ein 
Programm in Visual C++ geschrieben (Microsoft Visual Studio 2009).
Ich habe vieles in Foren gelesen und was ich verstanden habe ist daß es 
mit den Funktionen ReadFile(...) und WriteFile(...) vollkommen 
ausreicht,  leider sende und empfange ich nichts.
Deswegen glaube ich, dass ich noch etwas falsch mache.
Inzwischen bin ich auf die WDK (früher DDK) gestoßen.
Aus dieser Library benutze ich die Funnktionen 
HidD_GetInputReport(...)zum empfangen und HidD_SetOutputReport(...)zum 
senden.
Ich habe die Dateien HID.h und HIDSDI.h hinzugefügt, aber jetzt es 
kompiliert nicht mehr. Ich kriege immer:

***
error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""unsigned 
char __stdcall HidD_GetInputReport(void *,void *,unsigned long)" 
(?HidD_GetInputReport@@YGEPAX0K@Z)" in Funktion "_main".
***

Muss ich DDK oder WDK Librarys benutzen?
Hat jemand schon so ein Problem gehabt? Habt Ihr  Ideen woran es liegen 
könnte? Ich befürchte das es an dem Report Deskriptor liegt... Was 
glaubt ihr??
Vielen Dank für jede Antwort!

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.