USB: Readfile

OP #1774569
Lesenswert?

Hi,

ich möchte gern 6Bytes per USB HID vom Device auslesen per ReadFile(); 
leider hängt sich der Computer dabei auf....
1
BYTE  buffer[6];
2
ok = ReadFile(DevHandle, buffer, sizeof(buffer), cnt, NULL);
1
HidP_GetCaps(PreparsedData, &Capabilities);
Hier wird mir angegeben, dass InputReportByteLength = 6 ist.


Beim Device hab ich ein ByteArray installiert
1
BYTE InReport[6]; 
2

3
USB_WriteEP(0x81, &InReport[0], sizeof(InReport));

Mit zwei Bytes hab ich es hinbekommen, aber mit sechs Bytes scheitert 
es. Wenn ich ReadFile() mit 5Bytes oder weniger aufrufe, wird Null 
zurückgegeben.

Gruß
Bernd
OP #1774620
Lesenswert?

ist mein Report Deskriptor für den Inputbereich so richtig?
1
UsagePage (0x00)
2
Usage (0x01)
3
Collection(application)
4
LogicalMin (0x00)
5
LogicalMax (0xFF)
6
ReportSize (24)
7
ReportCount (1)
8
Usage (1)
9
Input(Data, Variable, Absolute)

Wenn ich ReportSize(8) verwende, dann funktioniert es reibungslos mit 
einem Byte.
Gast #1782524
Lesenswert?

Eine funktionierende und kostenlose Software um HID-Geräte unter Windows 
anzusprechen findest Du bei www.rahand.eu. Da ist auch eine 
Beispielapplikation (für Visual Studio C++ Express) dabei, die Dir die 
ankommenden Daten visualisiert. Alles was Du einstellen musst sind die 
VID/PID (ggf. noch das Interface) und die IN/OUT-Buffer-Größen. Schau 
Dir das Beispiel an - ist selbsterklärend. Programmiert mit der Win32 
API.

Damit kannst Du zumindest mal testen, ob Dein Treiber oder Dein 
USB-Gerät fehlerhaft sind.

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren