2017-01-05 2 views
0

Я приобрел устройство, измеряющее содержание CO2 в воздухе. Он сообщает значения через USB каждые 3 секунды. Я хочу обработать эти значения с помощью VB6.Доступ к USB HID от VB6

После подключения устройства я нахожу его в аппаратном менеджере, указанном как устройство интерфейса пользователя (HID).

При осмотре соответствующей записи я знаю, что подключил ее к порту № 0003.Hub_ # 0003. На вкладке «События» я прочитал, что было настроено устройство с именем USB \ VID_04D9 & PID_A052 \ 1.40 и что его идентификатор класса - {745A17A0-74D3-11D0-B6FE-00A0C90F57DA}. Реализации RS/232 нет, по крайней мере, я их не вижу, поэтому MS COMM Control бесполезен (все равно попробовал все 16 разрешенных номеров портов).

Поиск через SO информации о HID с тегом [VB6], единственная информация, которую я получаю, заключается в том, что использование API HID напрямую является PITA.

Я хотел попробовать все-таки попробовать и попытался ссылаться на HID.dll, только чтобы найти VB6, жалуясь, что эта DLL не может использоваться VB.

Есть ли способ получить доступ к моему устройству для получения и обработки переданных данных? Как мне начать это предприятие?

+0

Когда вы говорите «ссылку» на DLL, вы имеете в виду «добавить его в качестве ссылки»? Если это не COM-библиотека, вам нужно добавить Declares для любых включенных функций.Есть ли документальный API для этого? Это написано с помощью C? –

+0

Джим, да, я попытался добавить его в качестве ссылки. Однако это продукт, написанный для HID, и рекомендуется для использования MS. См. Это описание: https://en.wikipedia.org - на этой странице утверждается, что «вы можете использовать встроенные драйверы HID (устройства интерфейса пользователя) Windows для связи с устройствами, которые соответствуют спецификации класса HID USB. необходимо использовать специальный драйвер, устройство использует драйверы, входящие в состав Windows. Используйте любой язык программирования, который поддерживает вызовы функций API. ": http://janaxelson.com/hidpage.htm/wiki/USB_human_interface_device_class – Herb

+0

Первая ссылка должна быть прочитана: https: //en.wikipedia.org/wiki/USB_human_interface_device_class – Herb

ответ

0

Я вижу, что Jan Axleson имеет ссылку (ту же страницу в комментариях) к реализации VB6, но все ссылки на странице замечены как сломанные - они просто перезагружают страницу. Если вы сможете отследить это, я уверен, что это послужит вашим потребностям.

В любом случае вы, по-видимому, можете использовать любое поддерживаемое HID-устройство с DirectInput. Экземпляр DirectX8, затем DirectInput8, затем DirectInputDevice. Перечислите устройства, используя GetDIDevices, .Acquire устройство, представляющее интерес (ваше устройство HID) и изучите его возможности.

Все это зависит от DirectX, который полностью documented от MS. Документы не дружелюбны к VB6, но обычно это возможно.

+0

Спасибо Джим. Однако DirectX8 не может быть установлен на Win 8.1 и говорит, что для этого требуется Win 9x, ..., Vista. – Herb

+0

@Herb Просто установите последнюю версию DX, которая работает для вашей ОС (11?). Все предыдущие интерфейсы должны быть добавлены в новые версии или будут эквивалентны. –

1

Это не для слабонервных, используя любой язык, если у вас нет полных документов поставщиков. Вероятно, вам придется использовать USB-сниффер для захвата необработанных пакетов во время использования с программным обеспечением поставщика. Оттуда начинается тяжелая работа по царапинам и угадыванию.

См. [VB6] TEMPer Gold USB HID Thermometer Class для примера кода, написанного на VB6, для работы с таким устройством. Даже получить это на работу было много сократить и попробовать, даже если другие разместили образец кода С и некоторые размышления об обмене USB-пакетами. Похоже, у вас будет еще больше работы, если кто-то еще не выполнил какую-то тяжелую работу для вас.

HID.DLL не является библиотекой ActiveX. В нем нет встроенного встраиваемого. Насколько я знаю, нет никакого внешнего typelib. Так что в любом случае нечего устанавливать ссылку.

Не только это, но и не COM-библиотека, а простая обычная стандартная DLL.

Я думаю, вы могли бы находиться далеко над головой. Если поставщик не предлагает библиотеку API, вам может быть не повезло, если у вас нет времени и инструментов для проведения необходимых исследований и разработок. Если поставщик предлагает достойные низкоуровневые документы, это сэкономит некоторые усилия, но это кажется маловероятным, поскольку они редко делают.

+0

Спасибо, что начал меня. Я пока не буду отмечать ваш ответ как решение, пока не сделаю какой-то серьезный прогресс, на который надеюсь. +1 – Herb

Смежные вопросы