usb鼠标 迷惑

[复制链接]
2997|6
 楼主| lincoln1000 发表于 2011-5-6 14:48 | 显示全部楼层 |阅读模式
坛里的各位大侠,小弟在学习usb鼠标过程中发现如下奇怪的现象,不知大家有没有遇到过,给小弟指点下迷津

现象:1、若只向pc报告dxdy,则鼠标可以正常使用,报告描述符如下
_ReportDescriptor:     //
    .dw 0x05, 0x01                    // USAGE_PAGE (Generic Desktop)
    .dw 0x09, 0x02                    // USAGE (Mouse)
    .dw 0xa1, 0x01                    // COLLECTION (Application)
    .dw 0x09, 0x01                    //   USAGE (Pointer)
    .dw 0xa1, 0x00                    //   COLLECTION (Physical)
//    .dw 0x05, 0x09                    //     USAGE_PAGE (Button)
//    .dw 0x19, 0x01                    //     USAGE_MINIMUM (Button 1)
//    .dw 0x29, 0x03                    //     USAGE_MAXIMUM (Button 3)
//    .dw 0x15, 0x00                    //     LOGICAL_MINIMUM (0)
//    .dw 0x25, 0x01                    //     LOGICAL_MAXIMUM (1)
//    .dw 0x75, 0x01                    //     REPORT_SIZE (1)
//    .dw 0x95, 0x03                    //     REPORT_COUNT (3)
//    .dw 0x81, 0x02                    //     INPUT (Data,Var,Abs)
//    .dw 0x75, 0x05                    //     REPORT_SIZE (5)
//    .dw 0x95, 0x01                    //     REPORT_COUNT (1)
// .dw 0x81, 0x03                    //     INPUT (Cnst,Var,Abs)
    .dw 0x05, 0x01                    //     USAGE_PAGE (Generic Desktop)
    .dw 0x09, 0x30                    //     USAGE (X)
    .dw 0x09, 0x31                    //     USAGE (Y)
//    .dw 0x09, 0x38                    //     USAGE (Wheel)
    .dw 0x15, 0x81                    //     LOGICAL_MINIMUM (-127)
    .dw 0x25, 0x7f                    //     LOGICAL_MAXIMUM (127)
    .dw 0x75, 0x08                    //     REPORT_SIZE (8)
    .dw 0x95, 0x02                    //     REPORT_COUNT (3)
    .dw 0x81, 0x06                    //     INPUT (Data,Var,Rel)
    .dw 0xc0                         //   END_COLLECTION
    .dw 0xc0                          //   END_COLLECTION
_ReportDescriptor_End:
         2、如果在1的基础上加上报告按键,则通过bus hound抓到的in数据长度总为1,并且要么是dx的值,要么是dy的值,报告描述符如下
_ReportDescriptor:     //
    .dw 0x05, 0x01                    // USAGE_PAGE (Generic Desktop)
    .dw 0x09, 0x02                    // USAGE (Mouse)
    .dw 0xa1, 0x01                    // COLLECTION (Application)
    .dw 0x09, 0x01                    //   USAGE (Pointer)
    .dw 0xa1, 0x00                    //   COLLECTION (Physical)
    .dw 0x05, 0x09                    //     USAGE_PAGE (Button)
    .dw 0x19, 0x01                    //     USAGE_MINIMUM (Button 1)
    .dw 0x29, 0x03                    //     USAGE_MAXIMUM (Button 3)
    .dw 0x15, 0x00                    //     LOGICAL_MINIMUM (0)
    .dw 0x25, 0x01                    //     LOGICAL_MAXIMUM (1)
    .dw 0x75, 0x01                    //     REPORT_SIZE (1)
    .dw 0x95, 0x03                    //     REPORT_COUNT (3)
    .dw 0x81, 0x02                    //     INPUT (Data,Var,Abs)
    .dw 0x75, 0x05                    //     REPORT_SIZE (5)
    .dw 0x95, 0x01                    //     REPORT_COUNT (1)
    .dw 0x81, 0x03                    //     INPUT (Cnst,Var,Abs)
    .dw 0x05, 0x01                    //     USAGE_PAGE (Generic Desktop)
    .dw 0x09, 0x30                    //     USAGE (X)
    .dw 0x09, 0x31                    //     USAGE (Y)
//    .dw 0x09, 0x38                    //     USAGE (Wheel)
    .dw 0x15, 0x81                    //     LOGICAL_MINIMUM (-127)
    .dw 0x25, 0x7f                    //     LOGICAL_MAXIMUM (127)
    .dw 0x75, 0x08                    //     REPORT_SIZE (8)
    .dw 0x95, 0x02                    //     REPORT_COUNT (3)
    .dw 0x81, 0x06                    //     INPUT (Data,Var,Rel)
    .dw 0xc0                         //   END_COLLECTION
    .dw 0xc0                          //   END_COLLECTION
_ReportDescriptor_End:

望大家不吝赐教 先谢谢了
 楼主| lincoln1000 发表于 2011-5-6 15:59 | 显示全部楼层
顶起,大家有没有遇到过这样的情况! 把报告按键的屏蔽了  就可以移动鼠标! 传输字节的个数都是设置对了的,但是pc那边抓到的数据长度恒为1:Q
 楼主| lincoln1000 发表于 2011-5-7 13:36 | 显示全部楼层
是不是我给的信息不全?怎么没人回答的:(  折腾得我呀,把我想到的可能都试过了 还是一样的现象!用的是标准鼠标,应该就是跟着device class definition for human interface device那个文档搞就是了的呀
 楼主| lincoln1000 发表于 2011-5-8 14:50 | 显示全部楼层
没人碰到过这种现象吗? 大家给我猜测下是什么原因吧:Q   
好像数据传输过程丢了前面两个字节的数据似的
 楼主| lincoln1000 发表于 2011-5-8 16:32 | 显示全部楼层
结贴了 :lol  摸索了几天还是蒙出来了
 楼主| lincoln1000 发表于 2011-5-8 17:10 | 显示全部楼层
最根本原因是我用的是集成了usb模块的ic  ic 文档上面介绍不够齐全  4个字节的长度分两次传就好了  端点设置那设不到64byte  貌似只能设2
bluesky_kun 发表于 2013-6-28 11:32 | 显示全部楼层
我在做usb鼠标的绝对坐标处理,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

61

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部