Библиотека HIDAPI в Virtual Box не видит устройства - PullRequest
0 голосов
/ 21 февраля 2019

Я работаю над проектом, связанным с USB-устройствами, такими как POS-принтеры.

Я использую HIDAPI для получения статуса устройства.

Мой проект должен быть кроссплатформенным (я использую QT5.12).Поэтому я установил Ubuntu 18.04 с Windows 10 через Virtual Box на одном ПК для тестирования моего кода в обеих системах.

Хост 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 не могут обнаружить мое устройство.Вывод «невозможно открыть устройство» .После нескольких часов усилий я понятия не имею.Нужно ли мне выбрать другую библиотеку?Или есть другая проблема?

1 Ответ

0 голосов
/ 05 марта 2019

Наконец, я понял, что HIDAPI предназначен только для устройств интерфейса пользователя, таких как мышь или клавиатура, поэтому он не подходит для POS-принтеров.Вместо этого я использовал WINUSB для Windows, и теперь он работает хорошо.

...