logo

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

这人很懒,什么都没留下

屏幕截图.jpg

补充下bus hound抓的数据

这人很懒,什么都没留下

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


1:  #define CMD20_SET_RETRY 0x0B// 设置重试次数为11次

xWriteCH376Cmd( CMD20_SET_RETRY );

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

2: cfg配置是 set_config的返回值,为14表示INT_SUCCESS#define USB_INT_SUCCESS 0x14

   s = set_config( Device_Atti.Cfg_value );

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


这人很懒,什么都没留下

补充一下配置和返回值

2:cfg配置是 set_config的返回值,为14表示INT_SUCCESS#define USB_INT_SUCCESS 0x14

   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


这人很懒,什么都没留下

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

这人很懒,什么都没留下

我也遇到了同样的问题

这人很懒,什么都没留下
只有登录才能回复,可以选择微信和github账号登录