CH376控制打印机,初始化打印机出错

在使用例程控制打印机时,出错了。具体为初始化打印机时的

if ( status==USB_INT_SUCCESS ) {  /* 操作成功则读出描述符并分析 */

len=rd_usb_data( buffer );  /* 将获取的描述符数据从CH375中读出到单片机的RAM缓冲区中,返回描述符长度 */

if ( p_cfg_descr->itf_descr.bInterfaceClass!=7 || p_cfg_descr->itf_descr.bInterfaceSubClass!=1 ) return( UNKNOWN_USB_PRINT );  /* 不是USB打印机或者不符合USB规范 */

返回的 p_cfg_descr->itf_descr.bInterfaceClass和 p_cfg_descr->itf_descr.bInterfaceSubClass的值均为1.有大神指导是什么原因吗?


还有,我接的是USB打印机。由于结构体的定义没有注释,所以不明白这是什么原因导致的,应该如何去解决。


可能是获取描述符阶段已经出错。查下获取描述符返回值与获取到的描述符打印出来。


                           

可能是获取描述符阶段已经出错。查下获取描述符返回值与获取到的描述符打印出来。

                       


获取配置描述符阶段没问题,我之前打印过。错误就是在这一步出现的。p_cfg_descr->itf_descr.bInterfaceClass=7   这个参数的含义是什么呢?



纠正一下返回值为 p_cfg_descr->itf_descr.bInterfaceClass=1

和 p_cfg_descr->itf_descr.bInterfaceSubClass=2


打印机类代码:07。 p_cfg_descr->itf_descr.bInterfaceClass应该为7,  需要注意下是否是多接口设备。


这么看是否是多接口设备呢?我用的打印机是HP LaserJet 1020 plus


把你前一阶段获取到的描述符都贴出来,我看下。


 p_cfg_descr->itf_descr.bLength=4 




 p_cfg_descr->itf_descr.bDescriptorType=0 




 p_cfg_descr->itf_descr.bInterfaceNumber=0 




  p_cfg_descr->itf_descr.bAlternateSetting=2 




 p_cfg_descr->itf_descr.bNumEndpoints=7 




 p_cfg_descr->itf_descr.bInterfaceClass=1 




  p_cfg_descr->itf_descr.bInterfaceSubClass=2 




 p_cfg_descr->itf_descr.bInterfaceProtocol=0 




  p_cfg_descr->itf_descr.iInterface=7 



大佬方便留个联系方式吗?论坛里交流比较慢,我这边比较急


                           

把你前一阶段获取到的描述符都贴出来,我看下。

                       

我发现好像描述符的位对应错了,

 p_cfg_descr->itf_descr.bNumEndpoints=7

 p_cfg_descr->itf_descr.bInterfaceClass=1 

  p_cfg_descr->itf_descr.bInterfaceSubClass=2 

把这几个参数往下移一下就可以诶,二且我试过U盘和USB HUB情况都一样。理论上应该是 p_cfg_descr->itf_descr.bInterfaceClass=8,9

而打印出来确是 p_cfg_descr->itf_descr.bNumEndpoints=8,9

这是怎么回事呢?检查了一下接线有发现没问题。



025-52638376。可能是描述符的结构体实际描述符数据不对应。


                           

025-52638376。可能是描述符的结构体实际描述符数据不对应。

                       

那应该怎么处理呢


我也遇到过,注意对齐的问题


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