Программирование   USB*устройств

March 30, 2012 by admin Комментировать »

Как уже упоминалось, операционные системы 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 с.: ил.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты