阅读:1332回复:1
求助,HID设备应用程序ReadFile
我使用的是AN2131芯片,将设备设为HID类,设备需要执行的功能
是每隔一段时间向主机发送5个字节的数据 在描述符里 db 07h ; Descriptor length db 05h ; Descriptor type = ENDPOINT db 82h ; IN-2 db 03h ; type - INTERRUPT db 05d,0 ; maxPacketSize = 5 db 100d ; polling interval is 100 msec db 07h ; Descriptor length db 05h ; Descriptor type = ENDPOINT db 02h ; OUT-2 db 03h ; type - INTERRUPT db 02d,0 ; maxPacketSize = 2 db 100d ; polling interval is 100 msec 在应用程序运行后得到的结果却是 InputReportByteLength=6 OutputReportByteLength=3 在TD_Init()里 IN07VAL = bmEP2; IN07IEN = bmEP2; OUT07VAL = bmEP2; OUT07IEN = bmEP2; for(i=0;i<5;i++) IN2BUF = 0xff; IN2BC = 5; void ISR_Ep2in(void) interrupt 0 { int i; if(!arrayFlag) { for(i=0;i<5;i++) IN2BUF = array[5]; arrayFlag = 1; IN2BC = 5; } else IN2BC =5; EZUSB_IRQ_CLEAR(); USBIRQ = bmBIT1; } void ISR_Ep2out(void) interrupt 0 { if(EPIO[IN2BUF_ID].cntrl & bmEPBUSY) { TOGCTL = 0x08 | IN2BUF_ID; WRITEDELAY(); if(TOGCTL & 0X08) TOGCTL |= 0x20; else TOGCTL |= 0x40; } OUT2BC=0; } 可是程序运行时,到ReadFile函数就出问题 DisplayData(\"----readfile entered----\"); Result = ReadFile \\ (ReadHandle, \\ InputReport, \\ Capabilities.InputReportByteLength, \\ &BytesRead, \\ NULL); DisplayData(\"----readfile completed----\"); 在消息显示框里只能显示----readfile entered----的信息,我检查过ReadHandle和InputReport都没有问题,请问这是怎么回事啊 还有,我在另外的资料上看到 在使用WriteFile,ReadFile之前,必须先通过DeviceIOControl发送请求,我用的这个程序上没有。 |
|
沙发#
发布于:2005-03-31 11:08
用Err.LastDllError看一下是什么错误
WriteFile , ReadFile 是一个写,一个读 DeviceIOControl是直接进行读写操作 这些操作必须都是USB设备固件提供支持才行 |
|