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
Ich hab das Problem gefunden... mir war nicht bewusst, dass Windows die Berichte offensichtlich nur empfängt, wenn die Berichtsgröße 100%ig mit der im Deskriptor angegebenen Größe übereinstimmt...
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!
Das liegt am name mangling von C++. versuch es mal so: [c] extern "C" { #include <HIDSDI.h> #include <HID.h> } Gruß, Matthias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.