Guten Abend,
ich habe eine Frage wie man die WindowsAPI HidD_GetFeature() richtig
verwendet - weil ich tu es offensichtlich falsch oder es ist ein Bug:
-auf dem Mikrocontroller läuft VUSB
1. Szenario: ich lege auf dem Mikrocontroller die ReportID auf default
(= 0)
wenn ich den Report abfrage mit HidD_GetFeature() dann kommen die Daten
richtig
2. Szenario: ich lege die Report ID auf 1 (im Report Descriptor) und
frage den Report ab (mit ID1). Der kommt dann auch, aber leider falsch -
das 1. Byte fehlt
der Inhalt des Eingangspuffers:
Eingangspuffer (Byte Nr) [0][1][2][3][4][5][6][7][8]
Daten bei ID0: 0 1 2 3 4 5 6 7 8
Daten bei ID1: 1 2 3 4 5 6 7 8 ?
Was mache ich falsch?
Gruß Markus
0x06,0x00,0xff,// USAGE_PAGE (Vendor Defined Page 1)
3
0xa1,0x01,// COLLECTION (Application)
4
0x15,0x00,// LOGICAL_MINIMUM (0)
5
0x26,0xff,0x00,// LOGICAL_MAXIMUM (255)
6
0x75,0x08,// REPORT_SIZE (8)
7
8
0x85,0x01,// REPORT_ID (1)
9
0x95,0x40,// REPORT_COUNT (64)
10
0x09,0x01,// USAGE (Vendor Usage 1)
11
0xB2,0x02,0x01// FEATURE (Data,Var,Abs)
12
13
0x85,0x02,// REPORT_ID (2)
14
0x95,0x80,// REPORT_COUNT (128)
15
0x09,0x01,// USAGE (Vendor Usage 1)
16
0xB2,0x02,0x01// FEATURE (Data,Var,Abs)
17
18
...
19
...
20
0xc0// END_COLLECTION
21
};
In dem Beispiel werden jetzt zwei Descriptoren definiert:
- ID = 1; Größe 64 Bytes
- ID = 2; Größe 128 Bytes
Je nach Bedarf kannst du Dir das anpassen und auch noch einen
dritten/vierten anfügen.
Du mußt dann noch die Firmware ändern, so dass Dein erstes Byte immer
die entsprechende Report ID enthält.
Gruß Potter
super,
"Du mußt dann noch die Firmware ändern, so dass Dein erstes Byte immer
die entsprechende Report ID enthält."
das war es, warum es nicht so wie gewollte geklappt hat, weil ich gleich
mit Nutzdaten angefangen habe
Danke