XR_WDM
驱动小牛
驱动小牛
  • 注册日期2002-06-28
  • 最后登录2013-03-01
  • 粉丝1
  • 关注0
  • 积分15分
  • 威望67点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:679回复:0

metalwing和jinghuiren各位高手请进!关于D12!

楼主#
更多 发布于:2004-12-16 12:06
我按照usbprint11说明中的设置重新设置了描述符,枚举过程图如下:


可是为何我进行设置配置之后,请求失败呢?
一下将各描述符贴出,请各位指出不足之处。多谢!

USB_DEVICE_DESCRIPTOR DeviceDescr =
{
sizeof(USB_DEVICE_DESCRIPTOR), // 设备描述符长度, =0x12
USB_DEVICE_DESCRIPTOR_TYPE, // 设备描述符类型, =0x01
          0x0110, // 协议版本, =1.10
0,               // 设备类型  
          0,      // 设备子类
0,         // 设备协议
EP0_PACKET_SIZE,// 端点0最大数据包大小, =0x10
0x0471, // PHILIPS公司的设备ID
0x0111,   // 设备制造商定的产品ID
          0x0100, // 设备系列号
0, // iManufacturer
0, // iProduct
0, // iSerialNumber
1         //可能配置数
};

//配置描述符
USB_CONFIGURATION_DESCRIPTOR ConfigDescr =
{
sizeof(USB_CONFIGURATION_DESCRIPTOR),          // 配置描述符的长度, =0x09
USB_CONFIGURATION_DESCRIPTOR_TYPE, // 配置描述符的类型, =0x02
CONFIG_DESCRIPTOR_LENGTH, // 描述符总长度 =0x2e
          1, // 只支持1个接口
1, // 配置值
0, // 字符串描述符指针(无)
0x40, // 自供电
0x32 // 最大功耗(100mA)
};

//接口描述符
USB_INTERFACE_DESCRIPTOR InterfaceDescr =
{
sizeof(USB_INTERFACE_DESCRIPTOR), // 接口描述符长度, =0x09
USB_INTERFACE_DESCRIPTOR_TYPE, // 接口描述符类型, =0x04
0, // 接口数,只有1个
0,         // 可选配置,只有1个
0x01,        // 除端点0的端点索引数目 =0x04
USB_DEVICE_CLASS_PRINTER,      // 设备类型 打印机类
1,        // 子类代码
0x01, // 协议代码        
0         // 字符串描述符指针(无)
};

//端点1发送描述符
USB_ENDPOINT_DESCRIPTOR EP1_TXDescr =
{
sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07
USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05
0x81, // 端点1IN
USB_ENDPOINT_TYPE_INTERRUPT, // 中断传输, =0x03
EP1_PACKET_SIZE, // 端点最大包的大小, =0x10
10 // 传输间隔时间, =10ms
};

//端点1接收描述符
USB_ENDPOINT_DESCRIPTOR EP1_RXDescr =
{
sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07
USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05
0x01, // 端点1OUT  
USB_ENDPOINT_TYPE_INTERRUPT, // 中断传输, =0x03
EP1_PACKET_SIZE, // 端点最大包的大小, =0x10
10 // 传输间隔时间, =10ms
};

//端点2发送描述符
USB_ENDPOINT_DESCRIPTOR EP2_TXDescr =
{
sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07
USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05
0x82, // 端点2IN
USB_ENDPOINT_TYPE_BULK, // 批量传输, =0x02
EP2_PACKET_SIZE, // 端点最大包的大小, =0x40
0 // 批量传输时该设置无效
};

//端点2接收描述符
USB_ENDPOINT_DESCRIPTOR EP2_RXDescr =
{
sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07
USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05
0x02, // 端点2OUT  
USB_ENDPOINT_TYPE_BULK, // 批量传输,=0x02
EP2_PACKET_SIZE, // 端点最大包的大小, =0x40
0 // 批量传输时该设置无效  
};


USB_TOTAL_DESCRIPTOR TotalDescriptor=
{
sizeof(USB_CONFIGURATION_DESCRIPTOR), // 配置描述符的长度, =0x09
USB_CONFIGURATION_DESCRIPTOR_TYPE, // 配置描述符的类型, =0x02
CONFIG_DESCRIPTOR_LENGTH, // 描述符总长度 =0x2e
1, // 只支持1个接口
1, // 配置值
0, // 字符串描述符指针(无)
0x40, // 自供电
0x32, // 最大功耗(100mA)

sizeof(USB_INTERFACE_DESCRIPTOR), // 接口描述符长度, =0x09
USB_INTERFACE_DESCRIPTOR_TYPE, // 接口描述符类型, =0x04
0, // 接口数,只有1个
0,       // 可选配置,只有1个
0x01,    // 除端点0的端点索引数目 =0x04
0x07,    //USB_DEVICE_CLASS_PRINTER, // 设备类型    打印机类
0x01,     // 子类代码    
          0x01,      // 协议代码
0, // 字符串描述符指针(无)

sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07
USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05
0x81, // 端点1IN
USB_ENDPOINT_TYPE_INTERRUPT, // 中断传输,=0x03
EP1_PACKET_SIZE, // 端点最大包的大小, =0x10
10, // 传输间隔时间,

sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07
USB_ENDPOINT_DESCRIPTOR_TYPE,
                  // 端点描述符类型, =0x05
0x01, // 端点1OUT  
USB_ENDPOINT_TYPE_INTERRUPT, // 中断传输,=0x03
EP1_PACKET_SIZE, // 端点最大包的大小, =0x10
10,    // 传输间隔时间,

sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07
USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05
0x82, // 端点2IN
USB_ENDPOINT_TYPE_BULK,   // 中断传输, =0x03
EP2_PACKET_SIZE, // 端点最大包的大小, =0x40
0, // 批量传输时该设置无效

sizeof(USB_ENDPOINT_DESCRIPTOR), // 端点描述符长度, =0x07
USB_ENDPOINT_DESCRIPTOR_TYPE, // 端点描述符类型, =0x05
0x02,  
USB_ENDPOINT_TYPE_BULK       // 中断传输,
EP2_PACKET_SIZE, // 端点最大包的大小,
0                     // 批量传输时该设置无效
};
后进而勃发
游客

返回顶部