USB HID чтение и запись

614
27 апреля 2017, 16:36

Всем доброго времени суток :) Я знаю VID и PID определённого устройства, и мне с этого устройства надо считать данные. Кто как это делал с QT?

Я пробовал компилировать HIDAPI, USBHID но при компиляции у меня были ошибки, а даже если удавалось их исправить результат положительным ответом не увенчался.

По этому прошу ваших советов и помощи. Кто как делал, через какую библиотеку, кто может помочь?

Устройство CAN BUS Analyzer но мне CAN не нужен, а именно считать по USB HID.

Вот код:

#include <iostream>
#include "hidapi.h"
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{
int res;
unsigned char buf[65];
#define MAX_STR 255
wchar_t wstr[MAX_STR];
hid_device *handle;
int i;
// Enumerate and print the HID devices on the system
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("\n");
    cur_dev = cur_dev->next;
}
hid_free_enumeration(devs);

// Open the device using the VID, PID,
// and optionally the Serial number.
handle = hid_open(0x04D8, 0x0A30, NULL);
// Read the Manufacturer String
res = hid_get_manufacturer_string(handle, wstr, MAX_STR);
printf("Manufacturer String: %ls\n", wstr);
// Read the Product String
res = hid_get_product_string(handle, wstr, MAX_STR);
printf("Product String: %ls\n", wstr);
// Read the Serial Number String
res = hid_get_serial_number_string(handle, wstr, MAX_STR);
printf("Serial Number String: %ls", wstr);
printf("\n");
// Send a Feature Report to the device
buf[0] = 0x2; // First byte is report number
buf[1] = 0xa0;
buf[2] = 0x0a;
res = hid_send_feature_report(handle, buf, 17);
// Read a Feature Report from the device
buf[0] = 0x2;
res = hid_get_feature_report(handle, buf, sizeof(buf));
// Print out the returned buffer.
printf("Feature Report\n   ");
for (i = 0; i < res; i++)
    printf("%02hhx ", buf[i]);
printf("\n");
// Set the hid_read() function to be non-blocking.
hid_set_nonblocking(handle, 1);
// Send an Output report to toggle the LED (cmd 0x80)
buf[0] = 1; // First byte is report number
buf[1] = 0x80;
res = hid_write(handle, buf, 65);
// Send an Output report to request the state (cmd 0x81)
buf[1] = 0x81;
hid_write(handle, buf, 65);
// Read requested state
res = hid_read(handle, buf, 65);
if (res < 0)
    printf("Unable to read()\n");
// Print out the returned buffer.
for (i = 0; i < res; i++)
    printf("buf[%d]: %d\n", i, buf[i]);
return 0;
}
READ ALSO
Старт программы

Старт программы

Какие действия гарантированно выполнены к моменту передачи управления первому оператору функции main()?

238
Удаления записи с бинарного файла по номеру с++

Удаления записи с бинарного файла по номеру с++

Почему - то не работает функция удаленияВот код, что я пытался

260
Quick Sort. C++

Quick Sort. C++

Доброго времени сутокИзучаю алгоритмы и в качестве задания реализовал быструю сортировку(см

364
Заполнение списка из файла

Заполнение списка из файла

Здравствуйте, возник вопрос как заполнить список из файлаИмеется структура, список двусвязный

262