标签: hidapi

CreateFileA无法在Windows中打开HID设备

编辑:此处报告的问题:https://github.com/signal11/hidapi/issues/276

Inkling是Wacom的笔设备.(InklingReader)是一个开源项目,可以从中获取实时数据.

我正在尝试整理InklingReader以使用HIDAPI而不是libusb (因为它在更高级别工作:HID而不是原始USB,所以更紧凑和更合适.此外,libusb在最近的OSX上失败).

HID API是一个小型lib:一个.h,一个(每个平台).c.

我的代码看起来像这样:

    unsigned short  inklingVendorId = 0x056a, inklingProductId = 0x0221;
    if (hid_init() == FAIL) return;   
    handle = hid_open(inklingVendorId, inklingProductId, nullptr);
Run Code Online (Sandbox Code Playgroud)

在Windows上hid_open失败.单步执行揭示了这里的失败点:

// path = "\\\\?\\hid#vid_056a&pid_0221&mi_00&col01#8&1ea90857&0&0000#"
//        "{4d1e55b2-f16f-11cf-88cb-001111000030}"
//
static HANDLE open_device(const char *path, BOOL enumerate)
{
    HANDLE handle;
    DWORD desired_access = (enumerate)? 0: (GENERIC_WRITE | GENERIC_READ);
    DWORD share_mode = FILE_SHARE_READ|FILE_SHARE_WRITE;

    // enumerate = 0
    handle = CreateFileA(path,
        desired_access,
        share_mode,
        NULL,
        OPEN_EXISTING,
        FILE_FLAG_OVERLAPPED,/*FILE_ATTRIBUTE_NORMAL,*/
        0); …
Run Code Online (Sandbox Code Playgroud)

windows usb driver hid hidapi

10
推荐指数
1
解决办法
2298
查看次数

使用HIDAPI,您如何查询原始报告描述符?

我想解构从hid_read函数中收到的原始报告hidapi.

据我了解,这可以使用设备报告描述符中的信息来实现.但是当试图查询这些描述符时,我迷失在HID规范之间并使用可用的方法hidapi.

我希望看到一个具体的C或基于node-hidapi的示例,它可以查询和枚举设备的所有报告描述符 - 也许是鼠标来保持简单?

hid hidapi

5
推荐指数
1
解决办法
2660
查看次数

让node-hid在Windows中运行

我正在尝试在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设备一起使用?

hid node.js hidapi

5
推荐指数
1
解决办法
2261
查看次数

使用 Python hidapi 打开具有多种用途的设备

我是 Python hidapi 的新手,尽管我之前使用过它基于的 C 版本。Python 库确实不同,我无法从提供的一个示例中弄清楚如何使用它。有谁知道这个库有什么好的文档吗?

如果您正在寻找特定问题,我正在尝试打开具有多种用途的 HID 设备。我的设备具有以下相关特征:

vendor_id: 10618
product_id: 4
usage: 8
usage_page: 1
interface_number: 1
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用 hid_enumerate 来选择我想要的字典,但在实例化设备对象后,即使我知道它在那里,设备也不会打开(因为它列在枚举中)。

python hid hidapi

3
推荐指数
1
解决办法
6255
查看次数

适用于 Linux 的 hidapi 与 libusb

为 USB 鼠标编写一些 C 代码。

更具体地说,将配置和信息写入鼠标,如轮询、灵敏度、按钮操作、颜色(光)、触觉改变、OLED 等。


与开始了这个古老的文章,其中libhid建议了libusb

看着libhid它似乎已经死了。该项目的最后一次提交是从 2012 年开始的,它是 C++。但我发现一些链接说应该转到hidapi.

然而,hidapi似乎也已经死了。2016 年的最后一次提交。或者它可能只是稳定的?

libusb毕竟,它看起来像一个更好的使用。从一篇 15 年前的文章开始 - 这并没有那么夸张。

问题是我是否遗漏了什么?是libusb要走的路吗?

已经做了一些快速测试 libusb-1.0.0-dev

#include <libusb-1.0/libusb.h>
Run Code Online (Sandbox Code Playgroud)

并且效果很好 - 至少对于我所做的快速测试而言是这样。但是 HID 库也许会更好?

从本机包选项我至少有:

libhidapi-dev      
libhidapi-libusb0  
libhidrd0-dbg      
libhidapi-hidraw0  
libhidrd0          
libhidrd0-dev
Run Code Online (Sandbox Code Playgroud)

libusb-0.1-4                 libusbmuxd4
libusb-1.0-0                 libusbmuxd-dev
libusb-1.0-0-dev             libusbmuxd-tools
libusb-1.0-doc               libusb-ocaml
libusbauth-configparser1     libusb-ocaml-dev
libusbauth-configparser-dev  libusbprog0v5
libusb-dev                   libusbprog-dev
libusbguard0                 libusbredirhost1
libusbhid-common             libusbredirhost-dev
libusb-java                  libusbredirparser1
libusb-java-dbg              libusbredirparser-dev
libusb-java-doc              libusbtc08-1
libusb-java-lib              libusbtc08-dev
Run Code Online (Sandbox Code Playgroud)

linux usb mouse libusb hidapi

3
推荐指数
1
解决办法
4242
查看次数

通过 USB 使用 HIDAPI 时对报告 ID 感到困惑

我是 USB HID 新手,我正在尝试在我的应用程序中使用 HIDAPI 。

我有一个关于使用 HIDAPI(在 Visual Studio 中)有关报告 ID 的问题。

当我尝试使用 HIDAPI 并连接到 Microchip 自定义演示时,我对这方面感到困惑:65 字节的报告对我来说没有意义!

即使我不想设置报告ID,我也需要将第一个字节设置为0并将65字节缓冲区发送到设备,但我只从Microchip设备接收64字节数据(因为报告是64 字节长)。

看起来像:

    **Host**                       **Device**

         *write_hid*
      65 byte  --------------->

          *read_hid*
       <------------------   64byte
Run Code Online (Sandbox Code Playgroud)

然而,这对我来说似乎很奇怪。

发送或接收的报告不是总是 64 字节吗?因为规范规定报告的最大长度应为 64 字节,并且每 1 毫秒发送一次。

如果答案是肯定的,为什么 API 为 1 字节的报告 ID 保留 65 字节?

报告ID是否包含在64字节中?

65 字节的数据长度对我来说没有意义。

usb hid hidapi

2
推荐指数
1
解决办法
3705
查看次数

Java和HID通信

我正在寻找一个简单的无线HID接口设备的Linux/Windows/Mac Java HID控制器.我对USB4Java LibUsb库进行了修改无济于事,而且我已经朝着JavaHIDAPI的方向发展.

对我来说不幸的是,我真的不知道我正在做什么,除了一个相当不错的高级编程技能集(C#/ VB.Net),并切换到这是杀了我.

我发现的方向说我首先需要编译这里找到的HIDAPI库.它说它会构建一个名为hidapi-jni.dll的东西(它没有).

无论如何,我认为这是我需要去的地方,因为HID什么都不做,只是简单地向无线控制器发送信号和从无线控制器接收信号(并响应接收到的信号).

有没有为此使用JavaHIDAPI的分步教程?还是有更好的图书馆?(我注意到这有点......过时了).

我尝试了以下内容:

static{ System.loadLibrary("hidapi"); }
.
.
.
public static void main(string[] Args) throws . . . {    
    ClassPathLibraryLoader.loadNativeHIDLibrary();
    HIDDevice dev = HIDManager.getInstance().openById(VEND_ID, PROD_ID, null);
    .
    .
    .
}
Run Code Online (Sandbox Code Playgroud)

我正在运行的问题是(除了HIDAPI似乎没有构建到HIDAPI-jni.dll中这一事实)HIDManager.openById(...)总是返回null.另外,我移动了内置在C:...\Java ...\bin目录中的hidapi.dll ......或者其他东西,我确定它是正确的,因为没有任何不满意的链接错误.这真的令人沮丧,因为似乎没有任何关于Java和HID的新手指南.

我在这做错了什么?

java hid hidapi

1
推荐指数
1
解决办法
9940
查看次数

标签 统计

hidapi ×7

hid ×6

usb ×3

driver ×1

java ×1

libusb ×1

linux ×1

mouse ×1

node.js ×1

python ×1

windows ×1