打印

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

[复制链接]
4497|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cz1129|  楼主 | 2013-8-13 10:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 cz1129 于 2013-8-13 10:29 编辑

问题描述:
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[hc_num].ep_is_in = 1;  
  pdev->host.hc[hc_num].xfer_buff = buff;
  pdev->host.hc[hc_num].xfer_len = length;
  


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







沙发
cz1129|  楼主 | 2013-8-14 13:43 | 只看该作者
看来没有人用ST USB host 驱动HID扫描枪。
折腾好好久都没有解决这个问题,现在彻底放弃了,改用 keil 自带的USB 库,应用起来比这个方便多了

使用特权

评论回复
板凳
dun2012| | 2013-9-25 11:31 | 只看该作者
楼主,我也遇到跟你一样的问题,keil自带的库,能不能上传一份啊,先谢谢了。

使用特权

评论回复
地板
cz1129|  楼主 | 2013-9-26 11:40 | 只看该作者
这是我测试的DEMO,你可以用来测试,具体应用你可以参照DEMO更改。

HID_Kbd.rar

931.42 KB

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
dun2012 + 1 赞一个!
5
dun2012| | 2013-10-11 11:08 | 只看该作者
cz1129 发表于 2013-9-26 11:40
这是我测试的DEMO,你可以用来测试,具体应用你可以参照DEMO更改。

谢谢啊,我试试您的代码

使用特权

评论回复
6
dun2012| | 2013-10-15 09:48 | 只看该作者
本帖最后由 dun2012 于 2013-10-15 10:11 编辑
cz1129 发表于 2013-9-26 11:40
这是我测试的DEMO,你可以用来测试,具体应用你可以参照DEMO更改。

楼主,你好,我试了你的代码,发现我的USB键盘没有问题,可以通过 key = getkey (); 得到按键值,但是我的扫描枪没有反映, 就是 key = getkey (); 没有读到键值,您遇到过这样的问题了吗?

使用特权

评论回复
7
shimon| | 2013-10-24 20:30 | 只看该作者
两位大哥   你们可以把源码发给我一份吗?  我都摸索几天了,一点进展都没有啊!!!!

使用特权

评论回复
8
cz1129|  楼主 | 2013-10-28 01:35 | 只看该作者
dun2012 发表于 2013-10-15 09:48
楼主,你好,我试了你的代码,发现我的USB键盘没有问题,可以通过 key = getkey (); 得到按键值,但是我的 ...

键盘和扫描枪我都测试了的,而且我最终应用的是扫描枪,是没有问题的,你在多调试查一下。

使用特权

评论回复
9
cz1129|  楼主 | 2013-10-28 01:36 | 只看该作者
shimon 发表于 2013-10-24 20:30
两位大哥   你们可以把源码发给我一份吗?  我都摸索几天了,一点进展都没有啊!!!![em:9 ...

上面的是我上传的源码,你可以直接下来测试用。另外你也可以到MDK安装目录下去找DEM源码。

使用特权

评论回复
10
elclt188| | 2016-11-8 23:45 | 只看该作者
大神,为什么我下载不了的

使用特权

评论回复
11
elclt188| | 2016-11-10 23:11 | 只看该作者
楼主,这个问题解决了嘛,我也遇到了,可不可以给我个例程参考参考,感激不尽!1746286272@qq.com

使用特权

评论回复
12
johnzhang0921| | 2017-1-5 10:00 | 只看该作者
多谢分享,正好最近在研究这个下来试试。

使用特权

评论回复
13
zhanzr21| | 2017-1-5 18:32 | 只看该作者
这个不错, 不过建议你直接使用串口接口的扫码枪, 软件上面方便得多, 本人就是搞这个的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

18

帖子

1

粉丝