我正在开发与POS设备(如POS打印机)相关的项目。
我正在使用HIDAPI来获取设备的状态。
我的项目必须是跨平台的(我使用的是QT5.12)。所以我在一台PC上通过Virtual Box安装了Windows 10的Ubuntu 18.04,用于在两个系统中测试我的代码。
Ubuntu主机和Windows客户端。现在我正在处理windows部分,安装了libs,在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都可以检测到我的设备。输出是“无法打开设备”。经过几个小时的努力,我不知道。需要我选择另一个lib吗?还是有另一个问题?
最后,我发现HIDAPI仅适用于人机界面设备,如鼠标或键盘,因此不适合POS打印机。相反,我使用WINUSB用于Windows端,它现在运行良好。