Forum: Mikrocontroller und Digitale Elektronik USB: Readfile


von Bernd S. (mms)


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

von µder Coder (Gast)


Lesenswert?

Um welchen µC geht es denn dabei?

von Bernd S. (mms)


Lesenswert?

sorry, ganz vergessen; ich setze den STM32F103 ein.

von Bernd S. (mms)


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.

von guest (Gast)


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ß

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.