小弟在学习USB时遇到些问题向各位请教下,肯请各位高手多多指教。
1、修饰位变量(如下的报告描述是取自于《圈圈教你玩USB》的第131页的键盘部分)
0x19,0xe0, //Usage Minimum(Keyboard LeftControl)
0x29,0xe7, //Usage Maximum(Keyboard Right GUI)
0x15,0x00, //Logic Minimum(0)
0x25,0x01, //Logic Maximum(1)
0x95,0x08, //Report Count(8)
0x75,0x01, //Report Size(1)
0x81,0x02, //Input(Data,Var,Abs)
以上我能明白怎么回事,它是定义了一个8个长度的数据域。当某个位为1时,表示此位被按下,再对应到其键值;若最低位为1,则代表键值为0xe0(与Usage Minimum(Keyboard LeftControl)对应)的键被按下。
2、但是用于修饰数组时,就搞不清楚Usage Minimum(Maximum)与Logic Minimum(Maximum)之间的关系了(如下的报告描述是取自于《圈圈教你玩USB》的第162页的自定义的USB HID部分)
0x15,0x00, //Logic Minimum(0)
0x25,0xff, //Logic Maximum(255)
0x19,0x01, //Usage Minimum(0)
0x29,0x08, //Usage Maximum(8)
0x95,0x08, //Report Count(8)
0x75,0x08, //Report Size(8)
0x81,0x02, //Input(Data,Var,Abs)
我在尝试将Usage Minimum和Usage Maximum删除后,USB设备确不能正常工作。它在此起到一个什么样的作用呢??? |