问题标签 [hidapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
258 浏览

google-chrome - Chrome API HID 接收在 Windows 中不起作用

我有一个 chromapp,它使用 USB 将数据发送到 PC,作为 HID 设备连接,在 Linux 中完美运行。尝试在 Windows 中执行相同操作时,应用程序看到设备已连接,但会引发运行时错误:

hid.receive回调函数实现如下

我在 Windows 10 Pro 版本 1607 版本 14388.0 上运行 Google Chrome 版本:52.0.2743.116

其他人有类似的问题吗?有人可以帮我解决这个问题吗?

0 投票
1 回答
820 浏览

c - windows 上的 hidapi - 未定义的函数引用

我使用 Visual Studios 在 Windows 上构建 hidapi。该构建生成了一个“hidapi.lib”文件。现在我正在尝试使用 Eclipse IDE 编写 C 代码,并通过将其名称更改为“libhid.lib”来包含“hidapi.lib”。hidapi.h 也存在并包含在内。当我尝试访问 hidapi.h 的任何函数时,就会出现错误。每次运行程序时,编译器都会给出未定义的引用错误。我哪里错了?

源代码
编译错误

0 投票
1 回答
1348 浏览

usb - STM32f4 HID接收数据

如何在设备模式下作为 HID(USB) 运行的 STM32f407 发现板中从主机 PC 接收 OUT 报告数据?可能吗?我正在考虑使用 hidapi 从主机发送数据。

0 投票
1 回答
307 浏览

multithreading - 如何在 wxWidgets 中继续轮询 HIDAPI?

从嵌入式微控制器和 C 的世界转向使用 wxWidgets 的 C++。

我创建了一个简单的 GUI 程序,使用 codeblocks 和 wxWidgets 与我使用 signal11 中的 HIDAPI 制作的 USB Hid 设备进行交互。

使用简单的按钮,我可以连接、断开连接和检查设备上的固件软件版本。

我想要做的是让 GUI 自动检测设备是否存在,所以如果我拔下我的设备,GUI 会响应(所有内容都变灰)或在插入时重新启用所有内容。

这是需要一个永无止境的线程来实现的东西,还是有更好的方法?我通常会在微控制器上的中断例程中做这样的事情,但不确定它在桌面平台上的等价物吗?

0 投票
1 回答
1441 浏览

c++ - 如何在 Visual Studio 2015 C++ 中包含 hidapi

我正在尝试将 Visual Studio 2015 上的 hidapi 库用于 c++ 控制台应用程序。

我已将 hidapi.h 作为头文件包含在内,但似乎无法弄清楚如何链接 dll。我已经搜索了这个站点,寻找包含其他库的解决方案,但它们似乎针对每种情况都是特定的。

任何帮助是极大的赞赏。

0 投票
1 回答
887 浏览

python - cython hidapi 写入错误

我正在尝试写入连接到安装了 raspbian 的 raspberry pi 3 的 USB 设备。

错误:


代码

这段代码有什么问题?根据库中的文档,它接受任何整数列表。

我用这个作为参考:https ://github.com/trezor/cython-hidapi/blob/master/try.py

0 投票
1 回答
870 浏览

node.js - node-hid HID.devices() 函数在 Windows 上返回空数组

我在 Windows 10 64 位上使用node-hid库。

它安装完美,但是当我连接任何 USB 设备时。HID.devices() 返回空数组 ( [] )。相同的代码完美地显示了适用于 Linux 或 MAC 平台上的设备的对象数组。

我已经尝试过的是在这两种情况下安装预构建二进制文件并从源代码构建节点隐藏,输出是相同的。

我在互联网上找不到与此问题相关的任何内容。

提前致谢

0 投票
1 回答
1885 浏览

linux - 如何在 Qt Creator 中使用 HIDAPI?

我将整个hidapi-0.7.0下载(https://github.com/downloads/signal11/hidapi/hidapi-0.7.0.zip)解压缩到我的项目目录中,然后添加hidapi-0.7.0/hidapi/hidapi.hhidapi-0.7.0/linux/hid-libusb.c我的项目中。所以它们现在出现在我的*.pro文件中。

我安装了 libusb-1.0 ( sudo apt-get install libusb-1.0-0-dev) 并尝试构建项目。它编译得很好,但是链接器这样做了:


自述文件只是说:

要使用 HIDAPI,只需将 hid.c 或 hid-libusb.c 拖放到您的应用程序中,然后使用 Makefile 中的构建参数进行构建。

这没有帮助。(当我一开始甚至不了解 Makefile 时,如何确保 QtC 生成的 Makefile 像那样工作?)


该网站说:

构建说明

...

Linux:
切换到 linux/ 目录并运行 make。

但它做同样的事情:


我是否仍然缺少某些东西(我希望如此),还是 HIDAPI 0.7.0 实际上已损坏,因为它甚至没有正确构建开箱即用?


根据@eyllanesc 的评论进行实验:

也不喜欢那样,但至少这是一个不同的错误,所以它可能是某种进步。不幸的是,我也不知道这个是什么意思。

0 投票
1 回答
1534 浏览

c++ - HID USB 控制传输 (Windows)

最近,我开始学习如何在 Windows 10 上与 HID 设备进行通信。

但我有几个问题。

根据Window的文档,HidD_SetOutputReport必须将ReportBuffer参数的第一个字节设置为报表ID或0x00

由于我设备的 HID 报告描述符已经声明了一些报告 id,所以我必须在使用时设置报告 idHidD_setoutputreport而不是0x00?

当我使用报告 id 0x80 作为buf[0],例如: 0x80 0x02 0x00 ....... 0x00 (我Capabilities.OutputReportByteLength是 64)

我的代码是ret = HidD_SetOutputReport(handle->device_handle, buf2, 65)

但我总是这样发送数据(在Bus Hound上):

64 输出 80 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...... 4.1.0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...... 4.1.16

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...... 4.1.32

00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...... 4.1.48

我认为它应该发送buf[1] to buf[64]而不是发送buf[0] to buf[63],所以我尝试ret = HidD_SetOutputReport(handle->device_handle, buf2, 64)了,但结果是一样的。

这是我的 INPUT 和 OUTPUT 的 HID 报告描述符:

使用页面(通用桌面)05 01

逻辑最小值 (0) 15 00

用法(操纵杆)09 04

收藏(申请)A1 01

报告编号 (48) 85 30

使用页面(通用桌面)05 01

使用页面(按钮) 05 09

最低使用量(按钮 1)19 01

最大使用量(按钮 10) 29 0A

逻辑最小值 (0) 15 00

逻辑最大值 (1) 25 01

报告大小 (1) 75 01

报告计数 (10) 95 0A

单位指数 (0) 55 00

单位(无)65 00

输入 (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02

使用页面(按钮) 05 09

最低使用量(按钮 11) 19 0B

使用最大值(按钮 14) 29 0E

逻辑最小值 (0) 15 00

逻辑最大值 (1) 25 01

报告大小 (1) 75 01

报告数 (4) 95 04

输入 (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02

报告大小 (1) 75 01

报告数 (2) 95 02

输入 (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03

用法(通用桌面:指针)0B 01 00 01 00

集合(物理)A1 00

结束收集 C0

用法(通用桌面:帽子开关)0B 39 00 01 00

逻辑最小值 (0) 15 00

逻辑最大值 (7) 25 07

体力最小值 (0) 35 00

物理最大值 (315) 46 3B 01

单位(英语:度)65 14

报告大小 (4) 75 04

报告数 (1) 95 01

输入 (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02

使用页面(按钮) 05 09

最低使用量(按钮 15) 19 0F

最大使用量(按钮 18) 29 12

逻辑最小值 (0) 15 00

逻辑最大值 (1) 25 01

报告大小 (1) 75 01

报告数 (4) 95 04

输入 (Data,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 02

报告大小 (8) 75 08

报告数 (52) 95 34

输入 (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03

使用页面(供应商定义 1)06 00 FF

报告编号 (33) 85 21

使用情况(供应商定义 1)09 01

报告大小 (8) 75 08

报告数 (63) 95 3F

输入 (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03

报告编号 (129) 85 81

使用情况(供应商定义 2)09 02

报告大小 (8) 75 08

报告数 (63) 95 3F

输入 (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Bit) 81 03

报告编号 (1) 85 01

使用情况(供应商定义 3)09 03

报告大小 (8) 75 08

报告数 (63) 95 3F

输出 (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Vol,Bit) 91 83

报告编号 (16) 85 10

使用情况(供应商定义 4)09 04

报告大小 (8) 75 08

报告数 (63) 95 3F

输出 (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Vol,Bit) 91 83

报告编号 (128) 85 80

使用情况(供应商定义 5)09 05

报告大小 (8) 75 08

报告数 (63) 95 3F

输出 (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Vol,Bit) 91 83

报告编号 (130) 85 82

使用情况(供应商定义 6)09 06

报告大小 (8) 75 08

报告数 (63) 95 3F

输出 (Cnst,Var,Abs,NWrp,Lin,Pref,NNul,Vol,Bit) 91 83

结束收集 C0

0 投票
2 回答
2174 浏览

python - 解释 HIDAPI python 输出

我想在 OS X 上使用 Python 从 USB HID 扫描仪读取字符串。下面的示例是我的起点,我已经能够为我的扫描仪定制代码:我已经能够执行命令:h.open () 成功并打印出制造商和产品字符串。扫描代码已通过扫描仪与 EVDEV 进行验证。

挑战在于解释返回的数据并将其映射回 ascii 字符串。

这篇文章提供了 python HIDAPI 示例代码

$ sudo python try.py输出:

问题

我找不到好的例子(比如用 EVDEV 找到的例子)。任何指向等效项的链接都会非常有帮助。 在没有良好文档的情况下解释输出是一个挑战。 h.read() 返回一个列表

  1. 为什么 h.read() 选择 64?

    d = h.read(64)

当 64 替换为 1,2,3...8 中的数字时,列表中的元素数相同。9 个或更多结果是 8 个元素的列表。

  1. 为什么变量 'd' 是 8 个元素的输出列表?(8 没有在任何地方指定)

    print('read: "{}"'.format(d))

  2. 每个打印的输出列表代表什么?1个打字字符?

  3. 输出列表中的每一列代表什么\encode?

  4. 是否有已发布的表格将数字映射到键盘?

我期待回复:如果您有使用 HIDAPI(尤其是 Python)的经验,请在您的回答中说明这一点。进入双倍奖励回合以获得 HID 扫描仪体验