wwjmaomao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-07
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1463回复:12

HI,大家好,问大家一个关于HID设备report descriptor 的问题

楼主#
更多 发布于:2004-01-09 20:39
该设备现在处于能写,不能读的状态,应用程序如下后:
Result = ReadFile    (ReadHandle,
InputReport,
Capabilities.InputReportByteLength,
&NumberOfBytesRead,
(LPOVERLAPPED) &HIDOverlapped);
 
cout<<\"ReadFile: \"<<GetLastError()<<endl ;
总是TIMEOUT,为什么,盼大家给予指点。
BTW:CREATEFILE 和WRITEFILE 都正常。偶怀疑是FIRMWARE中report descriptor 的问题,但又不明白哪里除了问题,谁能给偶一些提示。

DSCR_DEVICE  equ 1;; Descriptor type: Device
DSCR_CONFIG  equ     2;; Descriptor type: Configuration
DSCR_STRING  equ 3;; Descriptor type: String
DSCR_INTRFC  equ 4;; Descriptor type: Interface
DSCR_ENDPNT  equ 5;; Descriptor type: Endpoint

ET_CONTROL   equ 0;; Endpoint type: Control
ET_ISO   equ 1;; Endpoint type: Isochronous
ET_BULK    equ 2;; Endpoint type: Bulk
ET_INT    equ 3;; Endpoint type: Interrupt

public DeviceDscr, ConfigDscr, StringDscr, UserDscr, HIDDscr, ReportDscr, ReportDscrEnd

DSCR SEGMENT CODE

;;-----------------------------------------------------------------------------
;; Global Variables
;;-----------------------------------------------------------------------------
;; Note: This segment must be located in on-part memory.
        rseg DSCR;; locatethedescriptortableanywherebelow 8K
DeviceDscr:db deviceDscrEnd-DeviceDscr;; Descriptor length
db  DSCR_DEVICE ;; Decriptor type
dw  1001H  ;; Specification Version (BCD)
db  00H ;; Device class
db  00H ;; Device sub-class
db  00H ;; Device sub-sub-class
db  40H ;; Maximum packet size
dw 0B404H ;; Vendor ID
dw 0255H ;; Product ID
dw 0100H ;; Product version ID
db 1 ;; Manufacturer string index
db 2 ;; Product string index
db 0 ;; Serial numberstring index
db 1                 ;; Number of configurations
deviceDscrEnd:

ConfigDscr:db ConfigDscrEnd-ConfigDscr;; Descriptor length
  db DSCR_CONFIG ;; Descriptor type
db StringDscr-ConfigDscr;;Configuration+End
                                  ;;  Points length (LSB)
db (StringDscr-ConfigDscr)/256 ;; Configuration
                          ;;+ End Points length (MSB)
db 1 ;; Number of interfaces
db 1 ;; Interface number
db 0 ;; Configuration string
db 10000000b;; Attributes (b7 - buspwr, b6 -
                       ;;selfpwr, b5 - rwu)
db 0FAH ;; Power requirement (div 2 ma)
ConfigDscrEnd:

IntrfcDscr:
db IntrfcDscrEnd-IntrfcDscr;; Descriptor length
db DSCR_INTRFC ;; Descriptor type
db 0 ;; Zero-based index of this interface
db 0 ;; Alternate setting
db 2 ;; Number of end points
db 03H ;; Interface class (HID)
db 00H ;; Interface sub class
db 00H ;; Interface sub sub class
db 05H ;; Interface descriptor string index
IntrfcDscrEnd:

HIDDscr:
db 09h ;; length
db 21h ;; type: HID
dw 1001h ;; release: HID class rev 1.1
db 00h ;; country code (USA)
db 01h;; number of HID class descriptors tofollow
db 22h ;; report descriptor type (HID)
     db (ReportDscrEnd-ReportDscr);;lengthofHID descriptor
db 00h
HIDDscrEnd:

Ep1InDscr:
db Ep1InDscrEnd-Ep1InDscr;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 81H ;; Endpoint number, and direction
db ET_INT ;; Endpoint type
db 40H ;; Maximum packet size (LSB)
db 00H ;; Max packet size (MSB)
db 1 ;; Polling interval (ms)
Ep1InDscrEnd:

Ep2OutDscr:
db Ep2OutDscrEnd-Ep2OutDscr;; Descriptor length
db DSCR_ENDPNT ;; Descriptor type
db 02H;; Endpoint number, and direction
db ET_INT ;; Endpoint type
db 40H ;; Maximum packet size (LSB)
db 00H ;; Max packet size (MSB)
db 1 ;; Polling interval (ms)
Ep2OutDscrEnd:

ReportDscr:
  db 06h, 0A0h, 0FFh ;; Usage Page (FFA0H = vendor defined)
db 09h, 01h         ;; Usage (vendor defined)
db 0A1h, 01h       ;; Collection (Application)
;; The input report
db 09h, 01h         ;; Usage (vendor defined)
db 15h, 00h   ;; Logical minimum (0)
db 25h, 0FFh   ;; Logical maximum (255)
db 75h, 08h   ;; Report size (8 bits)
db 95h, 40h   ;; Report count (64 fields)
db 81h, 02h;; Input (Data, variable, absolute)
;; The output report
db 09h, 02h   ;; Usage (vendor defined)
db 75h, 08h   ;; Report size (8 bits)
db 95h, 40h   ;; Report count (64 fields)
db 91h, 02h;; Output (Data, Variable, Absolute)
;; The feature report
db 09h, 03h;; Usage Page (vendor defined)
db 75h, 08h   ;; Report size (8 bits)
db 95h, 05h   ;; Report count (5 fields)
db 0B1h, 02h;; Output (Data, variable, absolute)

db 0C0h             ;; End Collection
ReportDscrEnd:
wwjmaomao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-07
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-01-10 16:10
有高手吗?好象最多只能给69分!!!帮帮忙三
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-01-10 16:21
用户被禁言,该主题自动屏蔽!
wwjmaomao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-07
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-01-10 16:28
我确定IN 里有数据啊!
感谢回复,先给10分!

[编辑 -  1/10/04 by  wwjmaomao]
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-01-10 16:31
用户被禁言,该主题自动屏蔽!
wwjmaomao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-07
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-01-10 16:35
我可以把IN里的数据给端点0,然后用GetFeaturereport 读出来
所以确定IN里有数据
能帮我看看还有什么可能出现的错误吗?都列出来行吗 ?
IN里没数据算一个,谢谢

[编辑 -  1/10/04 by  wwjmaomao]
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-01-10 16:41
用户被禁言,该主题自动屏蔽!
wwjmaomao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-07
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-01-10 16:47
现在怎么不能给分了,
小女子感激不尽。我先去试试
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-01-10 16:50
用户被禁言,该主题自动屏蔽!
wwjmaomao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-07
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-01-10 16:54
能帮我看看report descriptor 有问题吗?我用的是INT端点,上边说道用GET FEATUREREPORT从0得到INT1的数据只是一个实验,只是为了确定INT1中有数据。
我现在想知道以下问题:
READFILE后HOST 会自动去INT1吗?
什么时候会重新配置,怎么判定数据是在配置前写入的?
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-01-10 16:59
用户被禁言,该主题自动屏蔽!
wwjmaomao
驱动牛犊
驱动牛犊
  • 注册日期2003-07-07
  • 最后登录2004-06-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-01-10 17:04
5555~~~是HID 设备,没有驱动的啊。。原来你没仔细看标题啊!

[编辑 -  1/10/04 by  wwjmaomao]
pengenwen
禁止发言
禁止发言
  • 注册日期2003-03-07
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分1586分
  • 威望8380点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2004-01-10 17:12
用户被禁言,该主题自动屏蔽!
游客

返回顶部