|
Reformat
Утилита для форматирования USB флешек, USB винчестеров
(для совместимости с OS/2)
(promo)
Unsorted
|
|
|
|
AD: Upgrade ArcaOS to NeoWPS level
- Install original PNG icons drawed by designer, specialized at OS/2 adornation.
- Install eSchemes 2019 to change colors and buttons on desktop.
|
USBCALLS library for eComStation
|
TITLE: USBCALLS library for eComStation
DATE: 2006-04-28 17:27:53
AUTHOR: Frolov Dmitry
Please use online translator go to http://translate.google.com and request the translation of http://ru.ecomstation./projects/reviews/index.php?id=143 to your language |
Введение
Большинство современных периферийных устройств подключаются к компьютеру через USB-порт, постепенно вытесняя COM- и SCSI-устройства. Их поддержка со стороны программного обеспечения сейчас востребована как никогда. Библиотека USBCALLS предлагает разработчикам удобный программный интерфейс для работы с USB-устройствами, который может значительно упростить разработку приложений. При использовании USBCALLS разработчику не нужно писать драйвер для управления USB-устройством. Он пишет обычное Ring-3 приложение, которое обращается к драйверу USBCALLS, благодаря чему отладка кода заметно упрощается. USBCALLS позволяет взаимодействоать с устройствами, присоединенными к контроллеру любого типа, поскольку он не работает напрямую с USB-контроллером, а обращается к драйверу USBD.
USBCALLS позволяет управлять устройствами, подключенными через любой USB-контроллер:
Программы, использующие USBCALLS:
- GPhoto2 - управление цифровыми фотокамерами
- ptppro - управление цифровыми камерами по протоколу PTP (Sony, Kodak и т.п.)
- Sane - управление сканерами
- Coolfm - управление USB FM-приемниками
- Программа просмотра подключенных USB устройств - USBRES.EXE
- Программа управления Palm
- Программа управления мультимедийными кнопками на USB-клавиатурах
- Программа определения подключения USBMSD-накопителя
- Программа управления web-камерами (Logitech QuickCam 4000 Pro и совместимыми)
Библиотека USBCALLS была разработана Markus Montkowski. В настоящее время, разработку ведет Dmitry Froloff.
Управление USB-устройствами, краткий обзор endpoints
Любое USB-устройство обязано поддерживать USB Control Transfer. С помощью этого протокола производится распознавание и конфигурирование USB-устройств, сброс ошибок, перезапуск и т. п. Соотвествующие типы Control Transfer отвечают за передачу различных дескрипторов устройства, из которых, в свою очередь, можно узнать об устройстве все, что оно может сообщить о себе: Device Class/Subclass, Vendor Product Id, Serial Number, количество и типы endpoints и прочее.
- Bulk - endpoint через который производится передача данных из/в устройство. Практически все устройства, за исключеним самых простых, имеют его. Примеры: mass storage, флеш-накопители, MP3-плееры, кардридеры, сканеры, фотокамеры и т.д.
- Irq - это Interrupt endpoint. Через него устройство оповещает о каких-то событиях. Например событием является то, что устройство готово к передаче данных или произошла какая-то ошибка. Многие из вышеперечисленных устройств имеют interrupt endpoint. Отдельно стоят т.н. HID - Human Interface Devices. Для них Interrupt endpoint является основным. Это USB-клавиатуры, мыши, составные устройства, джойстики и т.д.
- Iso - Isochronous endpoint. Предназначен для передачи видео (webcam) или audio (USB sound), т.е. для тех видов трансферов, в которых требуется иместь постоянную полосу пропускания для передачи непрерывных данных.
Interrupt-протокол - это обычное чтение из USB endpoint, с той лишь разницей, что данные реально передаются лишь тогда, когда USB-устройство готово к их передаче, т.е. хост контроллер периодически (с заданным интервалом) опрашивает устройство. Содержимое самих данных полностью зависит от типа и протокола работы устройства.
Действия программиста сводятся к следующему:
- открыть устройство, получить от UsbResMg хэндл для последующей работы с ним: UsbOpen();
- в цикле вызывается функция UsbIrqRead(). Если в течение указанного времени от устройства пришло прерывание, то функция возвратит прочитанные из Interrupt endpoint данные, характеризующие событие, или вернется по таймауту с соответствующим кодом завершения;
- анализируются данные, и, в зависимости от результата, производятся определенные действия. Например, если говорить о мультимедийной клавиатуре, имитируется нажатие клавиш - посредством скан-кодов, или же просто напрямую выполняются требуемые действия: управление audio, запуск приложения;
- по завершении работы с устройством хэндл освобождается с помощью функции UsbClose().
Следующий вариант управления USB-устройствами - Bulk endpoint.
- открыть устройство, получить от UsbResMg хэндл для последующей работы с ним: UsbOpen();
- далее, в цикле вызываются функции UsbBulkRead()/UsbBulkWrite(), работающие аналогично DosRead()/DosWrite(), за исключением наличия таймаута. Если в течение указанного времени устройство выполнило требуемую операцию, то функция возвратит данные, прочитанные из Bulk endpoint (передаст данные в устройство) или вернется по таймауту с соответствующим кодом завершения;
- анализируется код завершения или принятые данные, и, в зависимости от результата, производим определенные действия. Например, для USB-накопителей читаем/пишем сектора с данными. В каждом конкретном случае алгоритм и последовательность операций определяется устройством, с которым производится обмен данными.
- по завершении работы с устройством, хэндл освобождается с помощью функции UsbClose().
Работа с устройством через Iso endpoint.
Алгоритм работы следующий:
- открыть устройство, получить от UsbResMg хэндл для последующей работы с ним: UsbOpen();
- создать семафор;
- посылается запрос к UsbCall с этим семафором на Iso transfer;
- ожидание семафора;
- по наполнении блока, UsbCall выставляет семафор;
- сбрасывается семафор, выполняются действия с данными;
- цикл к ожиданию семафора;
- по завершении работы вызывается UsbCall с отменой Iso transfer;
- по завершении работы с устройством освобождаются семафор и хэндл с помощью функции UsbClose().
Другие функции USBCALLS:
USBCALLS включает в себя Функцию выбора конфигурации. Конфигурация весьма важна, поскольку она определяет режим работы устройства. Например, в веб-камере, в зависимости от требуемого разрешения и цветности, устанавливается соотвествующая конфигурация. Аналогично для аудио-устройств, рабочая частота дискретизации и разрядность аудио-данных задается путем выставления конфигурации. Кроме этого, в UsbCalls есть весь необходимый набор функций для построения дерева устройств:
- UsbQueryNumberDevices(), UsbQueryDeviceReport() для построения списка устройств;
- UsbRegisterChangeNotification(), UsbRegisterDeviceNotification(), UsbDeregisterNotification() для получения уведомления о подключении устройства.
Подключайся к разработке управляющих программ!
Обмениваться данными можно через любые типы endpoints, а значит возможно реализовать поддержку практически любых USB-устройств из Ring3.
Поддержку каких устройств можно реализовать? Мы предлагаем вам заняться разработкой программ управления устройствами:
- TV-тюнеры
- UPS (бесперебойные источники питания)
- пульты дистанционного управления
- модемы
- джойстики
- сенсорные экраны
- сканеры штрих-кодов
- микрофоны
- USB security keys
- программы-детекторы подключения устройств
- USBRES (VIO-версия)
Мы надеемся, вы убедились, что управлять USB-устройствами очень просто. Если у вас возникли вопросы по библиотеке USBCALLS, задавайте их в форуме http://forum.ecomstation.ru
Дополнительная информация
|
Test the program:
|
USB Dock - shows devices plugged into PC
|
Komentarze: Konstantin  2008-10-21 00:18:46 | . ... ........... ... .........
... .. ....... ... ............ | ......  2009-05-14 16:00:30 | .......... ....... . ..... ........ ........... ...... usb??! |
|
How to prevent data loss? a) don't use old version of JFS driver. b) Don't boot from old eCS CD1 (if you take eCS 2.0 CD1, then disable its disk checker else it can kill your partitions), Advice how to use JFS filesystem |
|
|
Siberian OS/2
|