我正在从事与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都无法检测到我的设备。输出为“无法打开设备” 。经过数小时的努力,我不知道。我需要选择另一个库吗?还是还有另一个问题?
答案 0 :(得分:0)
最后,我发现HIDAPI仅适用于人机接口设备,例如鼠标或键盘,因此它不适用于POS打印机。取而代之的是,我在Windows端使用WINUSB,并且现在运行良好。