USB驱动扫码枪收不到数据

UINT8 get_int_in(UINT8 tog,UINT8 endp_int)

{

UINT8 s,t,j;

tog = tog ? 0x80 : 0x00;

issue_token(tog,( endp_int << 4 ) | DEF_USB_PID_IN);

s = wait_interrupt( );  ////这是返回的是0x20

printf("get_int_in data: s=%02x\n",(unsigned short)s);

if(s == USB_INT_SUCCESS )

   {


  t = RD_USB_DATA(data_buf);//?ü???????????????¤????°???8×??????ó±ê??4×???

for(j=0;j!=t;j++) 

printf("%02x ",(unsigned short)data_buf[j]);

  if( endp_int == Device_Atti.Device[0].Device_endp )

Device_Atti.Device[0].tog = Device_Atti.Device[0].tog ? FALSE : TRUE;

      else 

Device_Atti.Device[1].tog = Device_Atti.Device[1].tog ? FALSE : TRUE;

}

return s;

}


查询手册,发现数这个操作是失败的。也就是issue_token是有问题的,请问如上的代码,问题出在哪里呢?

多谢

image.png

补充下,扫码枪device的配置和cfg如下:

Get_Dev_Descr:

12 01 10 01 00 00 00 08 da 09 0a c1 06 94 01 02 00 01 

Get_Cfg_Descr1:

09 02 22 00 01 01 00 a0 32 



Get_Cfg_Descr2:

09 02 22 00 01 01 00 a0 32 09 04 00 00 01 03 01 02 00 09 21 10 01 00 01 22 48 00 07 05 81 03 08 00 0a 



纠正下s = wait_interrupt( );  ////这是返回的是0x2a

 返回值是0x2a


image.png


如下是用 bus hound抓的数据:

但是我没法对应,不知道我的初始化代码哪里有问题。

image.png


icon_jpg.gif屏幕截图.jpg

补充下bus hound抓的数据


有两个问题问一下,1:你设置了NAK重试吗?2:5#那张图中cfg 14是你设置配置的值?


1:  #defineCMD20_SET_RETRY0x0B// 设置重试次数为11次

xWriteCH376Cmd( CMD20_SET_RETRY );

      如果设置为无限重试,也是收不到数据的。

2: cfg配置是 set_config的返回值,为14表示INT_SUCCESS#defineUSB_INT_SUCCESS0x14

   s = set_config( Device_Atti.Cfg_value );

   printf(" cfg %02x \n",(UINT16)s);



补充一下配置和返回值

2:cfg配置是 set_config的返回值,为14表示INT_SUCCESS#defineUSB_INT_SUCCESS0x14

   s = set_config( Device_Atti.Cfg_value );

   printf(" Device_Atti.Cfg_value: %02x, ret %02x\n", Device_Atti.Cfg_value,(UINT16)s);

打印值如下: Device_Atti.Cfg_value: 01, ret 14



不要沉啊,请问谁遇到过同样的问题么


我也遇到了同样的问题


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