USB键盘发回的LED有8个字节程序该如何处理
这个是原始的USB键盘的程序,是对的。可以驱动NUM灯,也只有一个字节,我现在通过驱动下发了8个字节的数据,但是始终有问题。/*原来STC的例子
if (usb_bulk_intr_out(UsbBuffer, 1) == 1)
{
P4M0 &= ~0x01;
P4M1 &= ~0x01;
P6M0 &= ~0xe0;
P6M1 &= ~0xe0;
P40 = 0;
led = UsbBuffer;
LED_NUM = !(led & 0x01);
LED_CAPS = !(led & 0x02);
LED_SCROLL = !(led & 0x04);
}
*/
下面是我改的,因为收不到数据,把i 通过LED灯显示出来了。
i = usb_bulk_intr_out(UsbBuffer, 1);
Led= UsbBuffer;
这里i只有1;而且第一个数据UsbBuffer也不对
请问 usb_bulk_intr_out(UsbBuffer, 1) 这个函数有说明吗,接受8个字节和1个自己都是一样的写法吗
首先得改描述符,表明你能接收8个字节的数据才行…… 请问描述符是哪一个?现在是PC发过来8个字节,STC单片机处理成一个个的字节接收了。 0x05,0x08, //USAGE_PAGE(LEDs);
0x19,0x01, //USAGE_MINIMUM(1);
0x29,0x03, //USAGE_MAXIMUM(3);
0x15,0x00, //LOGICAL_MINIMUM(0);
0x25,0x01, //LOGICAL_MAXIMUM(1);
0x75,0x01, //REPORT_SIZE(1);
0x95,0x03, //REPORT_COUNT(3);
0x91,0x02, //OUTPUT(Data,Variable,Absolute);
0x75,0x05, //REPORT_SIZE(5);
0x95,0x01, //REPORT_COUNT(1);
0x91,0x01, //OUTPUT(Constant);
楼上的高人能不能帮我看看这个改如如何修改才能收到8个字节。我试过很多都不行 搞定了,不是改这里,需要改前面的配置
页:
[1]