Virtual Box中的HIDAPI库看不到设备

时间:2019-02-21 16:54:42

标签: c++ windows-10 virtualbox hidapi

我正在从事与USB设备作为POS打印机有关的项目。

要获取我正在使用的设备的状态HIDAPI

我的项目必须是跨平台的(我正在使用QT5.12)。所以我在一台PC上通过Virtual Box安装了带有Windows 10的Ubuntu 18.04,以便在两个系统中测试我的代码。

Ubuntu主机和Windows guest。现在,我正在处理Windows部分,已安装库,并在MyProject.pro文件中对其进行了配置,但无法检测到我的设备。

这是我的代码:

struct hid_device_info *devs, *cur_dev;
devs = hid_enumerate(0x0, 0x0);
cur_dev = devs;
while (cur_dev) {
    printf("Device Found\n  type: %04hx %04hx\n  path: %s\n  serial_number: %ls", cur_dev->vendor_id, cur_dev->product_id, cur_dev->path, cur_dev->serial_number);
    printf("\n");
    printf("  Manufacturer: %ls\n", cur_dev->manufacturer_string);
    printf("  Product:      %ls\n", cur_dev->product_string);
    printf("  Release:      %hx\n", cur_dev->release_number);
    printf("  Interface:    %d\n",  cur_dev->interface_number);
    printf("\n");
    cur_dev = cur_dev->next;
}
hid_free_enumeration(devs);

.
handle = hid_open(0x0dd4, 0x015d, NULL); //my device vid and pid
if (!handle)
{
    qFatal("unable to open device");
}

我确定USB设备已连接到VBox。 hid_enumerate和hid_open都无法检测到我的设备。输出为“无法打开设备” 。经过数小时的努力,我不知道。我需要选择另一个库吗?还是还有另一个问题?

1 个答案:

答案 0 :(得分:0)

最后,我发现HIDAPI仅适用于人机接口设备,例如鼠标或键盘,因此它不适用于POS打印机。取而代之的是,我在Windows端使用WINUSB,并且现在运行良好。