isbit 发布于 2007-10-19 16:29:00 hid描述符能描述一个endpoint两个hid设备吗?
意思是用一个两个hid设备公用一个endpoint!
例如:前一个字节表示多媒体,第二个表示keyoad 。
就像鼠标的数据格式那样:一个字节为按键,一个为x 一个为y 一个为wheel 。
平常人 发布于 2007-10-19 18:21:00 LZ的概念有误!
设备是由设备描述符描述的,HID描述符用于描述HID设备中接口(Interface)的使用。
根据你给出的鼠标的例子,估计你问的是“一个Endpoint下多个Usage”,既然你已经拿鼠标作为例子,那你就照鼠标的例子做既可。
isbit 发布于 2007-10-20 9:34:00 您说的对对,我的本意是一个设备两个usage, 一时不知怎么表达,就是一个设备里面两个用途不同的“东东”。 1: 但是按鼠标格式我还是疑惑,因为鼠标usage都声明是mouse了! 在里面描述其他usage 感觉牵强,:-)
//通用桌面设备 0x05, 0x01, // USAGE_PAGE (Generic Desktop) //鼠标 0x09, 0x02, // USAGE (Mouse) //集合 0xa1, 0x01, // COLLECTION (Application) //指针设备 0x09, 0x01, // USAGE (Pointer) //集合 0xa1, 0x00, // COLLECTION (Physical) //按键 2: 是不是这样? 在鼠标描述前指名一个 hid id 85 01 再在下一个key pad 描述前指名一个 hid id 85 02 例如鼠标为8个byte,前四个为鼠标,keypad也为8个byte,后四个为kaypad 这8个byte怎么能让他是同一个呢? 这样的话,几个byte 的数据,又怎么公用呢? 呵呵,描述符不是很熟。 谢谢!
平常人 发布于 2007-10-20 9:48:00 然后再参考usb.org中有关HID的部分:http://www.usb.org/developers/hidpage/
这里有很多USAGE的用法,可以供你参考。
isbit 发布于 2007-10-22 9:23:00 我去看看去
ISBIT 发布于 2007-10-22 12:05:00 0x05, 0x0c, ; USAGE_PAGE (Consumer Devices) 0x09, 0x01, ; USAGE (Consumer Control) 0xa1, 0x01, ; COLLECTION (Application) 0x85, 0x01, ; report ID1 0x15, 0x00, ; LOGICAL_MINIMUM (0) 0x25, 0x01, ; LOGICAL_MAXIMUM (1) 0x09, 0xe9, ; USAGE (Volume Up) 0x09, 0xea, ; USAGE (Volume Down) 0x09, 0xb5, ; USAGE (Scan Next Track) 0x09, 0xb6, ; USAGE (Scan Previous Track) 0x09, 0xe2, ; USAGE (Mute) 0x09, 0xcd, ; USAGE (play/pa) 0x09, 0xb7, ; USAGE (Stop) 0x75, 0x01, ; REPORT_SIZE (1) 0x95, 0x07, ; REPORT_COUNT (7) 0x81, 0x02, ; INPUT (Data,Var,Abs) 0x09, 0x00, ; USAGE (Unassigned) 0x95, 0x01, ; REPORT_COUNT (1) 0x81, 0x03, ; INPUT (Cnst,Var,Abs) 0xc0, ; END_COLLECTION 39bytes
0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x02, // USAGE (Mouse) 0xa1, 0x01, // COLLECTION (Application) 0x85 0x02, ; report ID1 0x09, 0x01, // USAGE (Pointer) 0xa1, 0x00, // COLLECTION (Physical) 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // USAGE_MINIMUM (Button 1) 0x29, 0x03, // USAGE_MAXIMUM (Button 3) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x95, 0x03, // REPORT_COUNT (3) 0x75, 0x01, // REPORT_SIZE (1) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x05, // REPORT_SIZE (5) 0x81, 0x03, // INPUT (Cnst,Var,Abs) 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x30, // USAGE (X) 0x09, 0x31, // USAGE (Y) 0x09, 0x38, // USAGE (Wheel) 0x15, 0x81, // LOGICAL_MINIMUM (-127) 0x25, 0x7f, // LOGICAL_MAXIMUM (127) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x03, // REPORT_COUNT (3) 0x81, 0x06, // INPUT (Data,Var,Rel) 0xc0, // END_COLLECTION 0xc0 // END_COLLECTION 0x05, 0x01, // USAGE_PAGE (Generic Desktop)54BYTE 0x09, 0x02, // USAGE (Mouse) 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x02, // report ID1 0x09, 0x01, // USAGE (Pointer) 0xa1, 0x00, // COLLECTION (Physical) 0x05, 0x09, // USAGE_PAGE (Button) 0x19, 0x01, // USAGE_MINIMUM (Button 1) 0x29, 0x03, // USAGE_MAXIMUM (Button 3) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x95, 0x03, // REPORT_COUNT (3) 0x75, 0x01, // REPORT_SIZE (1) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x05, // REPORT_SIZE (5) 0x81, 0x03, // INPUT (Cnst,Var,Abs) 0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x30, // USAGE (X) 0x09, 0x31, // USAGE (Y) 0x09, 0x38, // USAGE (Wheel) 0x15, 0x81, // LOGICAL_MINIMUM (-127) 0x25, 0x7f, // LOGICAL_MAXIMUM (127) 0x75, 0x08, // REPORT_SIZE (8) 0x95, 0x03, // REPORT_COUNT (3) 0x81, 0x06, // INPUT (Data,Var,Rel) 0xc0, // END_COLLECTION 0xc0, // END_COLLECTION
平常人 发布于 2007-10-23 22:43:00 我给的usb.org的网站上有HID的解析软件,可以用来验证你的描述符。
|