加载USB配置值错误!!![求助]

/* 电脑软件读出描述符 如下: Device Descriptor: bcdUSB: 0x0200 bDeviceClass: 0x00 bDeviceSubClass: 0x00 bDeviceProtocol: 0x00 bMaxPacketSize0: 0x40 (64) idVendor: 0x03F0 (Hewlett Packard) idProduct: 0xC402 bcdDevice: 0x0100 iManufacturer: 0x01 iProduct: 0x02 iSerialNumber: 0x03 bNumConfigurations: 0x01

ConnectionStatus: DeviceConnected Current Config Value: 0x01 Device Bus Speed: Full Device Address: 0x01 Open Pipes: 6

Endpoint Descriptor: bEndpointAddress: 0x0A Transfer Type: Bulk wMaxPacketSize: 0x0200 (512) bInterval: 0x00

Endpoint Descriptor: bEndpointAddress: 0x8B Transfer Type: Bulk wMaxPacketSize: 0x0200 (512) bInterval: 0x00

Endpoint Descriptor: bEndpointAddress: 0x07 Transfer Type: Bulk wMaxPacketSize: 0x0200 (512) bInterval: 0x00

Endpoint Descriptor: bEndpointAddress: 0x88 Transfer Type: Bulk wMaxPacketSize: 0x0200 (512) bInterval: 0x00

Endpoint Descriptor: bEndpointAddress: 0x04 Transfer Type: Bulk wMaxPacketSize: 0x0200 (512) bInterval: 0x00

Endpoint Descriptor: bEndpointAddress: 0x85 Transfer Type: Bulk wMaxPacketSize: 0x0200 (512) bInterval: 0x00 */

/* 采用外部固件方式 单片机读出打印机描述符 如下: 9 2 65 0 3 1 0 C0 1 9 4 0 0 2 7 1 2 0 7 5 0A 2 40 0 0 7 5 8B 2 40 0 0 9 4 1 0 2 FF FF FF 0 7 5 7 2 40 0 0 7 5 88 2 40 0 0 9 4 1 1 2 FF D4 0 0 7 5 7 2 40 0 0 7 5 88 2 40 0 0 9 4 2 0 2 8 6 50 0 7 5 4 2 40 0 0 7 5 85 2 40 0 0 */

if(status==USB_INT_SUCCESS) //操作成功则读出描述符并分析 { if(p_cfg_descr->itf_descr.bInterfaceClass!=7) return(UNKNOWN_USB_PRINT); if(p_cfg_descr->itf_descr.bInterfaceSubClass!=1 ) return(UNKNOWN_USB_PRINT); //不是USB打印机或者不符合USB规范 endp_out_addr=endp_in_addr=0; c=p_cfg_descr->endp_descr[0].bEndpointAddress; //第一个端点的地址 if(c&0x80) //IN端点的地址 endp_in_addr=c&0x0f; else //OUT端点 { endp_out_addr=c&0x0f; endp_out_size=p_cfg_descr->endp_descr[0].wMaxPacketSize; //数据接收端点的最大包长度 } if(p_cfg_descr->itf_descr.bNumEndpoints>=2) //接口有两个以上的端点 { if(p_cfg_descr->endp_descr[1].bDescriptorType==5 ) //端点描述符 { c=p_cfg_descr->endp_descr[1].bEndpointAddress; //第二个端点的地址 if(c&0x80) //IN端点 endp_in_addr=c&0x0f; else //OUT端点 { endp_out_addr=c&0x0f; endp_out_size=p_cfg_descr->endp_descr[1].wMaxPacketSize; } } } if(p_cfg_descr->itf_descr.bInterfaceProtocol<=1 ) endp_in_addr=0; //单向接口不需要IN端点 if(endp_out_addr==0) //不是USB打印机或者不符合USB规范 return(UNKNOWN_USB_PRINT); status=set_config( p_cfg_descr->cfg_descr.bConfigurationValue); //加载USB配置值 if(status==USB_INT_SUCCESS) { CH375_WR_CMD_PORT( CMD_SET_RETRY ); //设置USB事务操作的重试次数 CH375_WR_DAT_PORT( 0x25 ); CH375_WR_DAT_PORT( 0x89 ); //位7为1则收到NAK时无限重试, 位3~位0为超时后的重试次数 /* 如果单片机在打印机忙时并无事可做,建议设置位7为1, 使CH375在收到NAK时自动重试直到操作成功或者失败 */ /* 如果希望单片机在打印机忙时能够做其它事,那么应该 设置位7为0,使CH375在收到NAK时不重试,所以在下面 的USB通讯过程中,如果USB打印机正忙,issue_token 等子程序将得到状态码USB_INT_RET_NAK */ } } return(status); //status 返回 F1

因为你的设备是复合设备,错误代码是0XF1,如果你参考我们例子程序的话,一般来说返回0XF1是未知的设备. 不知道你是怎么监视程序是在加载USB配置值出现错误的.个人怀疑是可能是返回了一个未知设备的错误.因为你的打印机是个复合的设备所以操作上要注意这点.


请问向这种复合设备应该怎么操作呀?


只有登录才能回复,可以选择微信账号登录