Как использовать библиотеку libusb в Visual Studio |
![]() |
Добавил(а) microsin |
В этой статье описана простая демонстрационная программа, показывающая, как вызывать и использовать функции библиотеки libusb-Win32 (находящиеся в libusb0.dll) из программы на C++, написанной в MS Visual Studio. Для работы программа нуждается в установке библиотеки libusb для Windows, которую закачать можно по ссылке [1] (установка никаких вопросов и затруднений не вызывает). Программа управляет светодиодом на макетной плате AVR-USB-MEGA16, см. ссылку [5], в которую прошит firmware из примера hid-custom-rq пакета V-USB компании Objective Development (это firmware работает как устройство USB HID). Пакет примеров V-USB можно свободно скачать с сайта компании Objective Development, см. ссылку [2]. Прошивка firmware находится в файле examples\hid-custom-rq\firmware\main.hex архива пакета (пакет русской версии библиотеки). Программа сделана на основе диалогового окна, и её шаблон подготовлен мастером Visual Studio в режиме "Dialog-based MFC application". Алгоритм работы программы прост - при запуске читается состояние светодиода на макетной плате. Если он горит, ставится галочка в чекбоксе "Светодиод горит", а если нет, то галочка снимается. Если пользователь меняет состояние галочки, то светодиод соответственно зажигается или гаснет. Принцип работы программы и код управления взят из консольной программы хоста, файлы set-led.c и opendevice.c (находящиеся в том же пакете примеров, папка examples\hid-custom-rq\commandline\). Добавлен только код загрузки библиотеки libusb0.dll) и инициализация указателей на используемые в ней библиотечные функции, что реализовано в модуле libusb_func.cpp. Идея загрузки библиотеки и указателей на функции взята из документа "HID device coding example.pdf", где имеется пример работы с HID-устройством USB, но через другую библиотеку - hid.dll (эта библиотека входит в состав Windows). Проект можно скачать по ссылке [6]. Список файлов проекта и их краткое описание: [Управление светодиодом AVR-USB-TINY45] Аналогичный пример firmware для управления макетной платой AVR-USB-TINY45 можно скачать по ссылке [6]. Оно реализует точно такое же USB-устройство, как и firmware AVR-USB-MEGA16, так что ПО хоста одинаковое для обеих макетных плат (исходный код для ATmega32 портирован на микроконтроллер ATtiny85). [Драйвер фильтра (filter driver), библиотека libusb] ПО хоста, описанное в этой статье, требует установку библиотеки libusb и специального драйвера фильтра. Без драйвера фильтра ПО хоста не увидит USB-устройство и не сможет управлять им. Это относится почти ко всем программам, написанным на основе библиотеки LibUsb. Подробно установка библиотеки и драйвера фильтра описана в статье [3]. [Ссылки] 1. LibUSB download site:sourceforge.net - библиотека LibUSB (используется для ПО хоста). |