Страница 1 из 1
HID и USB в Visual Basic.
Добавлено: Ср апр 19, 2017 11:42:04
Ariadna-on-Line
Уважаемые коты, ткните носом на информацию. А то похоже скоро опухоль мозга будет от гугления.
Нужно из Visual Basic общаться с USB окружением, чаще HID-ами. Например посмотреть сколько устройств подключено.
Их идентификаторы Виды-Пиды. Обратиться к конкретному Виду-Пиду. Узнать его возможности. Послать ему или от него
байт(ы) данных. И тд. В самом Бейсике этого конечно нет, поэтому делается через вызовы функций из DLL-лек. А это Бейсик может (ну и я чуть-чуть). Очень хоцца конкретных примеров кода. Абсолютно уверен, что все это кто-то умный уже сделал и опубликовал.
Заранее бесконечно благодарен.
ПС. По аналогии например, узнать сколько звуковух на компе - осьмушка строчки кода (X = waveInGetNumDevs) в Визуал Бейсике.
Re: HID и USB в Visual Basic.
Добавлено: Ср апр 19, 2017 14:12:23
Мурик
Re: HID и USB в Visual Basic.
Добавлено: Пт апр 21, 2017 01:35:09
Ariadna-on-Line
Ага. Спасибо. Кое чего получается. Например функцией "Handle = HID_OpenDevice(PID, VID, VersionNumber, Index)" проверяем наличие конкретного Вида-Пида. Можно организовать цикл перебора VID-PID (0-65535). Но это жуткое количество времени. Существует ли способ просто "спросить" комп- к тебе вообще подключены какие-нибудь HID-устройства и сколько. А если нет, то нефиг и искать. Прошу прощенья за такой примитивизм - я "железячник" по профессии. И чегото не нагугливаю.
Re: HID и USB в Visual Basic.
Добавлено: Пт апр 21, 2017 07:48:44
Мурик
Ariadna-on-Line писал(а):Можно организовать цикл перебора VID-PID (0-65535).
Это больше 4 миллиардов комбинаций. Заранее неизвестны PID и VID?
Ariadna-on-Line писал(а):Существует ли способ просто "спросить" комп- к тебе вообще подключены какие-нибудь HID-устройства и сколько.
Функция HID_DeviceInfo из
HID_Lib_Plus
Функция HID_Devicelnfo(*Struct.HID_Devicelnfo) помещает в структуру HID_Devicelnfo, указатель на которую должен быть передан в качестве аргумента, список всех НID устройств, подключенных к компьютеру и их конфигурацию. Описание структуры HID_Devlcelnfo на языке PureBasic.
Код: Выделить всё
Structure HID_Sub_DeviceInfo
VendorID.w
ProductID.w
VersionNumber.w
NumInputBuffers.w
InputReportByteLength.w
OutputReportByteLength.w
FeatureReportByteLength.w
Manufacturer.s
Product.s
SerialNumber.s
EndStructure
Structure HID_DeviceInfo
CountDevice.w ; Число обнаруженных HID устройств
DeviceInfo.HID_Sub_DeviceInfo[258] ; Статический массив структур "HID_Sub_DeviceInfo"
EndStructure
Переменные с префиксом w имеют тип Word занимают по два байта памяти компьютера, а переменные с префиксом s — строкового типа. В примерах в архиве можно найти утилиту "HIDInfo", основанную на использовании данной функции.
Re: HID и USB в Visual Basic.
Добавлено: Пт апр 21, 2017 22:58:35
Ariadna-on-Line
Вчера его скачал "промеж" других. Спасибо за наводку. Есть такая функция. И работает. Но - как это сделано?
Ведь HID.dll как бы основа всего ХИДа, и в нем нет такой полезной функции ? Странно... Согласитесь ведь, "надергивать" функции из разных чужих длл-лек -несолидно даже на Бейсике, когда есть мама-Винда.
Re: HID и USB в Visual Basic.
Добавлено: Сб апр 22, 2017 09:00:20
Мурик
Ariadna-on-Line писал(а):Ведь HID.dll как бы основа всего ХИДа, и в нем нет такой полезной функции ?
Функции в setupapi.dll
Если внимательно посмотреть на функцию
HID_OpenDevice то можно заметить что в цикле производится перечисление всех (по крайней мере первых 256) HID устройств и сравнение их PID/VID с требуемым.
Re: HID и USB в Visual Basic.
Добавлено: Вс апр 23, 2017 23:51:04
Ariadna-on-Line
Нашел наконец. Работает. Разберусь до конца - отпишусь.
Действительно не допёр- ведь HID устройства сначала надо идентифицировать именно как HID из всех подключаемых к USB.