Я пытаюсь прочитать вывод GPS-приемника Trimble SPS-361, который подключен к компьютеру под управлением Windows 7 через USB, используя C ++ (предпочтительно) или Джава. Я знаю, что люди задавали подобные вопросы, но я не могу найти то, что я ищу. Это звучит как libusb моя лучшая ставка, это правда? Если это так, что такое хороший учебник / руководство / пример кода?
Похоже, мне нужно установить / написать какой-то драйвер для конкретного устройства, а затем я могу читать данные с устройства с помощью C ++ через libusb. Это общий процесс чтения с USB или я запутался?
Подводя итог, что я думаю, нужно (я знаю, что я повсюду):
Что ж, если вам нужны необработанные данные с устройства, вы можете найти их в списке устройств USB и буквально прочитать из них как файл.
Начните с получения всех устройств:
HDEVINFO hDevInfo = SetupDiGetClassDevs( &HIDWatch::GUID_DEVINTERFACE_HID, 0, 0, DIGCF_DEVICEINTERFACE );
Перечисляйте каждый, пока не найдете то, что ищете:
SetupDiEnumInterfaceDevice( hDevInfo, NULL, &HIDWatch::GUID_DEVINTERFACE_HID, index++, &InterfaceInfoData )
Получить подробности устройства через SetupDiGetInterfaceDeviceDetail
… затем откройте дескриптор файла для пути устройства через CreateFile
с GENERIC_READ
доступ … запустить DeviceIoControl
чтобы получить строку продукта, используя IOCTL_HID_GET_PRODUCT_STRING
, Если это не ваше устройство, закройте файл CloseHandle
, Если это ваше, сидеть в цикле (желательно в потоке) делать ReadFile
и вы получите сырые записи с устройства.
Это должно заставить вас идти …
Обычно датчик GPS выставляется в Windows как последовательный порт. Нет необходимости делать специальную обработку USB.
Просто выполните последовательную связь через CreateFile / ReadFile и проанализируйте полученные данные GPS NMEA.