2012-02-12 8 views
2

HID 장치에 쓰는 데 문제가 있습니다. 다음은 스누피로 만든 두 개의 로그입니다. 첫 번째는 장치 제조업체의 원래 데모 SW를 사용하여 만들어지며 두 번째 것은 내 SW 로그입니다. 내 소프트웨어가이 장치에서는 작동하지 않지만 다른 HID 장치에서 작동합니다.USB HID 장치에 쓰기

원래 소프트웨어 : 내 소프트웨어

9 ??? down n/a 27.868 BULK_OR_INTERRUPT_TRANSFER 06 16 19 17 00 00 00 00 
URB Header (length: 72) 
SequenceNumber: 9 
Function: 0009 (BULK_OR_INTERRUPT_TRANSFER) 
TransferFlags: 0x00000002 

TransferBuffer: 0x00000040 (64) length 
0000: 06 16 19 17 00 00 00 00 00 00 00 00 00 00 00 00 
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
9 ??? up n/a 27.874 BULK_OR_INTERRUPT_TRANSFER - 0x00000000 
URB Header (length: 72) 
SequenceNumber: 9 
Function: 0009 (BULK_OR_INTERRUPT_TRANSFER) 
TransferFlags: 0x00000002 

No TransferBuffer 

:

코드는 데이터를 보내는 데 사용

9 out down n/a 22.224 CLASS_INTERFACE 06 16 19 17 00 00 00 00 
URB Header (length: 80) 
SequenceNumber: 9 
Function: 001b (CLASS_INTERFACE) 
PipeHandle: 00000000 

SetupPacket: 
0000: 22 09 00 02 00 00 00 00 
bmRequestType: 22 
    DIR: Host-To-Device 
    TYPE: Class 
    RECIPIENT: Endpoint 
bRequest: 09 


TransferBuffer: 0x00000040 (64) length 
0000: 06 16 19 17 00 00 00 00 00 00 00 00 00 00 00 00 
0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
9 out up n/a 22.227 CONTROL_TRANSFER - 0x00000000 
URB Header (length: 80) 
SequenceNumber: 9 
Function: 0008 (CONTROL_TRANSFER) 
PipeHandle: 877af60c 

SetupPacket: 
0000: 21 09 00 02 00 00 40 00 
bmRequestType: 21 
    DIR: Host-To-Device 
    TYPE: Class 
    RECIPIENT: Interface 
bRequest: 09 


No TransferBuffer 
은 다음과 같습니다

hiddata.ReportID := 0; 
hiddata.Data[0] := 6; 
hiddata.Data[1] := $16; 
hiddata.Data[2] := $19; 
hiddata.Data[3] := $17; 
for I := 4 to 64 do 
    hiddata.Data[I] := $0; 
b := HidD_SetOutputReport(HidHandle, @hiddata, 65); 

HidHandle는 정확하고 변수 "B"입니다 실행 후 True.

아이디어가 있으십니까?

내가 뭘 잘못하고있어? 원래

답변

1

:

Function: 0009 (BULK_OR_INTERRUPT_TRANSFER) 

여러분의 프로그램 :

Function: 0008 (CONTROL_TRANSFER) 

HID 사양은 허용 모두 IIRC, 그러나 당신의 하드웨어가 까다로운 것 같다 인터럽트 엔드 포인트를 사용하는 경우에만 작동합니다.

관련 문제