首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >hidapi Windows8.1 hid_write失败

hidapi Windows8.1 hid_write失败
EN

Stack Overflow用户
提问于 2015-07-25 06:36:46
回答 2查看 1.1K关注 0票数 1

硬件:带有usb测试固件的lpc1549评估板...

endpoint size 64字节endpoint intr读出-report buf并以十六进制显示len和数据...将out_report复制到in_report buf中,并使用写入函数和len回显

主机:

使用qt5、libusb-1.0.19 wingw32 dll和hidapi代码

hid测试代码在linux、win7和win8.1中成功地发布了所有的api调用(写和读除外)。

在linux中,测试代码先是hid_write,然后是hid_read,然后正确返回数据

我没有使用由hidapi hid_write强制标记的报告ID,因为恩智浦固件和keil软件不使用它(据我所知) ...我的linux软件正确地发送和接收已定义的64字节模式或更小的len),byte是此模式的一部分...输出字节数据和输入字节数据故意不同且正确接收

在windows下运行keil hid客户端成功地与lpc1549固件进行了正确的通信,即使它们只传输和回显一个字节...

我的固件将端点大小更改为64字节(我希望我的更改是正确的),并且keil hid客户端可以在windows中使用它,因此我的假设是我的描述符是正确的……但愿能去

主机软件kububtu 14.04 hid_write len = 17,设备17字节已收到,17字节表示已收到...一切似乎都工作正常。

win 8.1 hid_write中包含hidapi的主机软件len = 17字节显示在设备上,其中16字节正确,其余为0,但读取指示接收到的len为64...我发出了一个写为17,正确地收到了16,但显示为64收到也win 8.1抛出一个空白的system32/cmd提示符窗口...为什么?

同样的情况也挂在win7上,只有hid_write len =0成功...正在弹出相同的命令提示...收到len = 64,但未传输数据(因为len =0才有意义)

我不能单步执行或断点,因为qt调试器get在应用加载时出现段错误

另外,我在我的qt应用程序中链接到hidapi“windows/id.c”代码,它现在是我的代码的一部分。

很抱歉,我的描述相当复杂

如果没有使用报告ID,为什么它是必填项...这将浪费一个字节,并且如果需要uint32_t对齐,则将浪费大约7%的64字节数据

为什么用c++ msvs编写的keil hid客户端与我的固件和hidapi不能正常工作?

keil hid客户端的运行是否表明我的固件、描述符和报告len是正确的?

什么会导致弹出空的命令提示符?

我可能做错了什么(一个完整的基于hidapi的应用程序可以正确地与一个完整的基于usb的固件pgm通信,而不仅仅是描述的测试代码)?

EN

回答 2

Stack Overflow用户

发布于 2015-07-28 13:31:42

几天后,有几件事弄清楚了。

ReportID似乎是windows中的东西,而且只在主机端...固件在我的设置中不受影响

此外,最初没有清除的是,ReportID是对最大64个报告字节的补充

所以我创建了一个1+ 64字节= 65的缓冲区...第一个是零,因为我没有使用ReportID机制,剩下的64个通常使用

因此,无论usb hid描述符端点侧的reportsize是什么,写调用数据大小都需要是1+

在linux中,我所看到的hid上没有ReportID。

下一步:确保在主机以及设备上的write调用中指定的数据长度与端点大小定义完全匹配,否则数据不会通过这两个方向,并且您的软件可能会挂起(永远等待)另一端的读取

我希望这能帮助其他人更好地了解hidapi hid_write调用的windows端。

票数 1
EN

Stack Overflow用户

发布于 2015-07-29 01:38:25

Alan Ott给我写了以下内容

http://www.signal11.us/oss/hidapi/hidapi/doxygen/html/group__API.html#gad14ea48e440cf5066df87cc6488493af

报告ID是固定存在的,在HIDAPI中必须始终发送报告ID,但如果报告ID为0,则不会发送到设备。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31620814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档