打印
[USB编程]

USB自定义HID收发数据问题

[复制链接]
3251|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
菜鸟同学|  楼主 | 2016-9-9 16:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 菜鸟同学 于 2016-9-9 16:13 编辑

本人使用STM32 按照修改,
<div class="blockcode"><blockquote>  /* Initialize Endpoint 1 */
  SetEPType(ENDP1, EP_INTERRUPT);
  SetEPTxAddr(ENDP1, ENDP1_TXADDR);
  SetEPTxCount(ENDP1, 64);
  SetEPRxStatus(ENDP1, EP_RX_DIS);
  SetEPTxStatus(ENDP1, EP_TX_NAK);
       
          /* Initialize Endpoint 2 */
  SetEPRxAddr(ENDP1, ENDP1_RXADDR);
  SetEPRxCount(ENDP1, 64);
        //SetEPRxStatus(ENDP1, EP_TX_DIS);
  SetEPRxStatus(ENDP1, EP_RX_VALID);


/* 27 */
    0x07,          /*bLength: Endpoint Descriptor size*/
    USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/

    0x81,          /*bEndpointAddress: Endpoint Address (IN)*/
    0x03,          /*bmAttributes: Interrupt endpoint*/
    0x40,          /*wMaxPacketSize: 64 Byte max */
    0x00,
    0x0A,          /*bInterval: Polling Interval (2 ms)*/
    /* 34 */
                /* 27 */
    0x07,          /*bLength: Endpoint Descriptor size*/
    USB_ENDPOINT_DESCRIPTOR_TYPE, /*bDescriptorType:*/

    0x01,          /*bEndpointAddress: Endpoint Address (OUT)*/
    0x03,          /*bmAttributes: Interrupt endpoint*/
    0x40,          /*wMaxPacketSize: 64 Byte max */
    0x00,
    0x0A,          /*bInterval: Polling Interval (2 ms)*/

        0x05,0xFF,// USAGE_PAGE (Generic Desktop)
                0x09,0xFF,// USER DEFINE
                0xA1,0x01,// COLLECT
                0x05,0x01,// USAGE PAGE1
                0x19, 0x00,                    //   USAGE_MINIMUM (Keyboard LeftControl)
                0x29, 0xFF,                    //   USAGE_MAXIMUM (Keyboard Right GUI)
                0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
                0x25, 0xFF,                    //   LOGICAL_MAXIMUM (1)
                0x75, 0x08,                    //   REPORT_SIZE (8)   // size ÊÇ´óС
                0x95, 0x40,                    //   REPORT_COUNT (64) // 64 ¸ö
    0x81, 0x02,                    //   INPUT (Cnst,Var,Abs)
                0x05, 0x02,                    //   USAGE_PAGE(2)
                0x19, 0x00,                    //   USAGE_MINIMUM (Keyboard LeftControl)
                0x29, 0xFF,                    //   USAGE_MAXIMUM (Keyboard Right GUI)
                0x15, 0x00,                    //   LOGICAL_MINIMUM (0)
                0x25, 0xFF,                    //   LOGICAL_MAXIMUM (1)
                0x75, 0x08,                    //   REPORT_SIZE (8)   // size ÊÇ´óС
                0x95, 0x40,                    //   REPORT_COUNT (64) // 64 ¸ö
    0x91, 0x02,                    //   OUTPUT (Cnst,Var,Abs)
    0xc0,                          // END_COLLECTION 25

相关帖子

沙发
菜鸟同学|  楼主 | 2016-9-9 16:08 | 只看该作者
按照上面的代码,在端点一定义了一个收发的64byte的自定义HID设备,我用单片机能给上位机发送数据,
使用监控软件能看到数据发送到上位机,但是上位机发送到下位机的时候,Getlasterror 997,堆叠 io进行中
buff[0] = 0;
        buff[65] = 0;
        ResetEvent(write_overlap.hEvent);
    w_flag = WriteFile(w_hdevhandle,buff,65,NULL,&write_overlap);
//        WaitForSingleObject(write_overlap.hEvent, 500);
        if(w_flag == 0)
        w_flag = GetLastError();

使用特权

评论回复
板凳
菜鸟同学|  楼主 | 2016-9-9 20:50 | 只看该作者
没有人遇到吗,我发现这个自定义HID发送数据速度太慢了。

使用特权

评论回复
地板
菜鸟同学|  楼主 | 2016-9-12 19:09 | 只看该作者
MicroLCD 发表于 2016-9-10 18:08
如果觉得开发USB HID麻烦,使用CH9326最方便。立创商城上有卖,我用过。

谢谢,这个和芯片没有啥关系,我用这个做升级使用,就是很多不是很明白。

使用特权

评论回复
5
insignal| | 2016-9-19 09:57 | 只看该作者
菜鸟同学 发表于 2016-9-16 00:28
我自己实现了自定义HID上下位机,开始很多不明白,感觉这方面的资料浅淡的描述了下,很多迷糊,为什么这 ...

分析代码是很费时间的事
这没法靠别人

使用特权

评论回复
6
菜鸟同学|  楼主 | 2016-9-20 15:05 | 只看该作者
版主长期不在,这个板块有啥意思,名存实亡。

使用特权

评论回复
7
windknief| | 2016-10-6 23:04 | 只看该作者
HID的速率依照您的裝置來決定, Full Speed最快1ms發送一次數據
您的WaitForSingleObject必須在一個迴圈(Loop)內一直執行,直到函式回傳的值0( WAIT_OBJECT_0) 而非997(ERROR_IO_PENDDING)
再呼叫dwResult = GetOverlappedResult(w_hdevhandle, ,&write_overlap, &ByteWritten, FALSE);
此時ByteWritten就是送出的資料長度了

使用特权

评论回复
8
15551292451| | 2018-9-7 11:55 | 只看该作者
菜鸟同学 发表于 2016-9-12 19:09
谢谢,这个和芯片没有啥关系,我用这个做升级使用,就是很多不是很明白。 ...

你好 你的免驱usb升级的做好了吗?

使用特权

评论回复
评论
li880wert 2018-9-30 17:02 回复TA
我做好了 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

707

帖子

8

粉丝