神马不是坑爹 发表于 2013-11-5 19:09:36

ST USB host 驱动HID扫描枪有问题

  问题描述:
USB host驱动 HID 扫描枪,插入扫描枪时枚举已经完成,进入 USBH_HID_Handle() 状态机内,一直在 HID_GET_DATA 状态和 HID_POLL 状态之间跳转。
扫描枪扫描数据时,有些扫描扫描枪的数据能够读到,而有扫描枪的数据读不到。

跟踪进入 USBH_InterruptReceiveData()函数
USBH_Status USBH_InterruptReceiveData( USB_OTG_CORE_HANDLE *pdev, 
                                uint8_t *buff, 
                                uint8_t length,
                                uint8_t hc_num)
{

  pdev->host.hc.ep_is_in = 1;  
  pdev->host.hc.xfer_buff = buff;
  pdev->host.hc.xfer_len = length;
  


  if(pdev->host.hc.toggle_in == 0)
  {
    pdev->host.hc.data_pid = HC_PID_DATA0;//HC_PID_DATA0 /改成 HC_PID_DATA1,
  }
  else
  {
    pdev->host.hc.data_pid = HC_PID_DATA1;//同时 HC_PID_DATA1 /改成 HC_PID_DATA0,就可以接收异常的数据,但原来的枪又不能用了
  }
   /* toggle DATA PID */
  pdev->host.hc.toggle_in ^= 1;  
  
  HCD_SubmitRequest (pdev , hc_num);  
  
  return USBH_OK;
}
按注释中的修改后可以读出之前不能读的扫描枪的数据,而之前正常的扫描枪的数据又读不出了!!
求大神们帮着分析一下,谢谢!

dzc2001 发表于 2013-11-30 17:40:20

RE:ST USB host 驱动HID扫描枪有问题

USB里面处理的时候限制时间了,建议你准备的usb分析仪吧。

神马不是坑爹 发表于 2014-10-11 12:04:26

回复:ST USB host 驱动HID扫描枪有问题

回复第 2 楼 于2013-11-30 17:40:20发表:
USB里面处理的时候限制时间了,建议你准备的usb分析仪吧。:dizzy:
 
朋友,你好,我现在终于买到USB分析仪了,您能具体说一下 “USB里面处理的时候限制时间了” 思路吗??先谢谢了
 

lujf000 发表于 2015-1-8 18:25:30

:lol:lol:lol
过去了快一年, 你终于买到了USB分析仪了 ...

1746286272 发表于 2016-11-10 23:16:53

楼主,这个问题解决了嘛?我遇到了一个问题是:键盘识别正常,usb2.0的扫码枪也正常,但是有好多款扫码枪枚举完了,一直不能读数据。您可以提供下例程嘛?

奏奏奏 发表于 2016-11-25 09:38:56

扫描枪直接选用串口接口的,在中断里处理接收到的字符串
页: [1]
查看完整版本: ST USB host 驱动HID扫描枪有问题