打印
[STM32F1]

hid 设备写可以,读收不到数据,bus hound可以看到数据

[复制链接]
1463|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
各位大侠,目前端点和报告描述符大小均改为64,枚举没问题,pc向stm32写没问题,我在单片机里100ms发一次数据给pc,用bushound也看到有,但是pc用readfile+异步一直error_io_pending,不用异步就一直挂起,不知道啥原因啊?能给解答下吗?



PC端的,使用同步模式:
reader = CreateFile(HidFunctionClassData->DevicePath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, (LPSECURITY_ATTRIBUTES)NULL, OPEN_EXISTING, 0, NULL);
HidD_GetPreparsedData(hd, &PreparsedData);
HidP_GetCaps(PreparsedData, &Capabilities); // 取得报告的长度


Read函数:
BYTE rBuffer[1024] = { 0 };
                DWORD dwRet;
                BOOL bRet=0;
                DWORD error;
                int ret = 0;

                rBuffer[0] = G_dwInputID;// ; // 描述符的input=7

                // 长度为 实际的数据正文+一个byte的报告ID. 设置过小,即小于报告的长度,会返回1784号错误
                // 用overlap会出现 ERROR_IO_PENDING (997)的错误,不用就会一直挂死
                bRet = ReadFile(handle, rBuffer, Capabilities.InputReportByteLength, &dwRet, NULL);
               
                if (GetLastError() != 0) {
                        error = GetLastError();
                        ret = error*(-1);
                        return ret;
                }



沙发
lxyppc| | 2017-6-15 14:46 | 只看该作者
capabilities这个结构体里面的各个值是多大
readfile的时候前面那个id值应该就让他保持为0

使用特权

评论回复
板凳
lanmanck|  楼主 | 2017-6-15 17:00 | 只看该作者
应该是stm32固件问题,现在对着例程挨个修改了,哎

使用特权

评论回复
地板
yiy| | 2017-6-15 20:46 | 只看该作者
没用过这个功能,学习学习,等待高手。。

使用特权

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

本版积分规则

个人签名:跟阿里云拼了: http://www.qcloud.com/redirect.php?redirect=1001&cps_key=361a94179534e81fbc22912619cc97ef

153

主题

397

帖子

3

粉丝