Як використовувати бібліотеку libusb у Visual Studio, avr-working-with-usb, programming

У цій статті описана проста демонстраційна програма, яка показує, як викликати та використовувати функції бібліотеки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". Алгоритм роботи програми простий - під час запуску читається стан світлодіода на макетній платі. Якщо він горить, ставиться галочка у чекбоксі "Світлодіод горить", а якщо ні, то галочка знімається. Якщо користувач змінює стан галочки, світлодіод відповідно запалюється або гасне.

libusb

Принцип роботи програми та код керування взятий з консольної програми хоста, файли set-led.c і opendevice.c (перебувають у тому ж пакеті прикладів, папка examples\hid-custom-rq\commandline\). Доданий тільки код завантаження бібліотеки libusb0.dll) та ініціалізація покажчиків на бібліотечні функції, що використовуються в ній, що реалізовано в модулі libusb_func.cpp. Ідею завантаження бібліотеки та вказівників на функції взято з документа "HIDdevice coding example.pdf", де є приклад роботи з HID-пристроєм USB, але через іншу бібліотеку -hid.dll (ця бібліотека входить до складу Windows).

[Управління світлодіодом AVR-USB-TINY45 ]

Аналогічний приклад firmware для управління макетною платою AVR-USB-TINY45 можна завантажити за посиланням [6]. Воно реалізує такий самий USB-пристрій, як і firmware AVR-USB-MEGA16, так що ПЗ хоста однакове для обох макетних плат (вихідний код для ATmega32 портований на мікроконтролер ATtiny85).

використовувати

[Драйвер фільтра (filter driver), бібліотека libusb ]

ПЗ хоста, описане в цій статті, вимагає встановлення бібліотеки libusb та спеціального драйвера фільтра. Без драйвера фільтра хоста не побачить USB-пристрій і не зможе керувати ним. Це стосується майже всіх програм, написаних на основі бібліотеки LibUsb. Детально установка бібліотеки та драйвера фільтра описана у статті [3].