让node-hid在Windows中运行

Chr*_*ris 5 hid node.js hidapi

我正在尝试在Windows 7上运行node-hid(https://github.com/node-hid/node-hid)模块.我可以打开一个设备并写入它,但没有数据到达.

我已经验证设备正在发送数据.我已经挖掘了节点隐藏代码(HID.cc)并尝试了几个方法来使其工作:

  • 修改了HID :: recvAsync函数,在循环中使用hid_read_timeout来查看是否会返回任何内容.
  • 设置阻止和非阻塞.
  • 更改缓冲区大小以完全适合设备发送的内容.

在Windows 8上,通过hid_read_timeout调用更改,这一切都正常.我不确定这两个系统之间可能有什么变化,但我也计划在Windows XP上使用它,所以我不能称之为好.

我正在努力想出更多有关如何调试此问题的想法.有没有人成功地做过这件事?有没有更好的选择将Node.js与HID设备一起使用?

Chr*_*ris 3

经过一番认真的调试后,我发现由于某种原因我还无法确定,节点模块 node-hid 的源文件 HID.cc 需要在 hid_open 调用之前在构造函数中调用 hid_init() 。我假设不知何故这会受到多个线程的影响,因此在 hid_open 之前调用 hid_init 的安全性是必要的。

我现在可以在 Windows 7 和 Windows 8 上使用此功能。

我必须进行的更改摘要:在我正在使用的 hid_open 调用之前添加 hid_init 。在循环中将 hid_read 更改为 hid_read_timeout。(因为在 Windows XP 上关闭时读取不会返回。)

清理完毕后,我会将我的更改发送给作者。