Як уже згадувалося, операційні системи Windows забезпечують програмну під радити функціонування пристроїв, підключених до шини USB. Обробку потоків даних пристроїв USB на рівні операційної системи виконує стек стандартних драйверів, які виконують основні функції з управління всіма пристроями USB та обміну даними між ними і системою.

Якщо вам необхідно написати програмне забезпечення для будь-якого пристрою USB, яке розширювало б його можливості по обробці даних, то можна обрати один з трьох можливих шляхів:

написати власний драйвер пристрою, який би забезпечував всі необхід мі функції управління та обміну даними, і програму, яка б взаємодій ствовала з цим драйвером в призначеному для користувача режимі. При цьому можна повністю обійтися без стандартних драйверів системи;

написати драйвер фільтра, який би забезпечував необхідну функціональність, але розташовувався б у стеці драйверів над системними драйверами. Таким чином, всі стандартні функції обробки виконували б драйвери USB, встановлені системою, а додаткові функції забезпечувалися б вашим драйвером фільтра, з яким і взаємодіяла б програма користувача;

скористатися вільно поширюваними бібліотеками функцій і драйвера

ми для доступу до USB пристрою.

У більшості випадків програмний доступ до пристрою USB може знадобитися, якщо даний пристрій виконує якусь дуже специфічну функцію. Наприклад, на базі USB розроблені «електронні осцилографи» або системи збору даних, для роботи з яким ми необхідно мати доступ до самого пристрою. У більшості таких випадків можна вос користуватися вільно поширюваними бібліотеками функцій, які будуть працювати практично у всіх популярних середовищах програмування. Наприклад, під егідою GNU раз працює програмне забезпечення, відоме під назвою LibUsb, що включає необ дімие драйвери і бібліотеки функцій для роботи в операційних системах Windows і Linux. Ці бібліотеки функцій дуже популярні і дозволяють швидко розробляти про грами, які взаємодіють з вашим пристроєм за допомогою набору стандартних функ цій. Це виключає необхідність написання власного драйвера пристрою, що суще ственно економить час.

Крім того, більшість користувачів не знайомі з методикою розробки драйверів,

а це дуже складна область програмування, тому наявність такого вільно поширенню усуваються програмного забезпечення надасть неоціненну допомогу широкому колу корис ному. На основі проекту LibUsb розроблені оболонки (wrappers) для роботи з Visual Basic. NET та C #. NET, найбільш популярною з яких є LibUsbDotNet, також розроб боти під егідою вільно поширюваного програмного забезпечення. Незважаючи на гадану складність програмування USB пристроїв, перераховане програмне забезпечення печення настільки спрощує це завдання, що вона стає під силу навіть новачкам. Рас дивимося на практичних прикладах, як працювати з вашими USB пристроями, і почнемо з пакета програм LibUsb. До речі, вищеперелічене програмне забезпечення можна біс платно завантажити з сайту www.sourceforge.net або з численних дублюючих сайтів.

Як працювати з бібліотеками USB функцій LibUsb? Бібліотека побудована таким обра

зом, щоб можна було виконувати основні операції, пов’язані з USB пристроєм:

ідентифікацію або, по-іншому, перерахування (enumeration). При виконанні цієї операції відбувається виявлення пристроїв, підключених до шини USB, що справджується за допомогою відповідних функцій бібліотеки libusb;

отримання параметрів пристрою (ідентифікаторів пристрої, даних про вироб ник і характеристики пристрою), для чого в бібліотеці є цілий ряд функцій;

відкриття, закриття, читання і запис даних, посилка команд. До пристрою USB, так само, як і до інших об’єктів файлової системи, можна звертатися за записом чте нию, що і виконується за допомогою відповідних функцій бібліотеки.

Всі перераховані можливості можуть бути реалізовані за допомогою виклику соответ ціалу функцій бібліотеки libusb, але тут вони не будуть перераховуватися, оскільки це зайняло б занадто багато місця; ми подивимося, як використовувати деякі з цих функ

Рис. 6.10

Розташування драйвера libusb0.sys в стеку драйверів пристрою

ций на практичних прикладах. Опис усіх функцій читачі зможуть знайти в со ответствующее документації. Нагадаю, що ми розглядаємо застосування функцій биб ліотека libusb в операційних системах Windows.

При інсталяції дистрибутива з libusb в операційній системі Windows в системі інсталюється драйвер фільтра libusb0.sys. Цей драйвер буде знаходитися в вершині сте ка драйверів системи, що легко побачити, на приклад, подивившись відомості про драйвери для будь-якого USB пристрою (рис. 6.10).

Крім того, для звернення до драйвера з програм користувача в систему ІНСТАЛЛ руется бібліотека libusb0.dll, використовуючи кото рую можна розробляти для користувача програми.

Рис. 6.17

Вид вікна програми при видаленні

USB пристрої із системи

Джерело: Магда Ю. С. Комп’ютер в домашній лабораторії. – М.: ДМК Пресс, 2008. – 200 с.: Іл.