Welcome to eComStation.RU site!

Select your language: Russian English Deutch Spanish Italian Portuguese Czech Polish French

Frequently asked questions and answers:

eComStation.RU

ru · en · de · es · it · pt · cz · pl · fr
eComStation - это совершенно другая операционная система для PC (IBM OS/2 Warp)
Программы, новости, статьи, поддержка пользователей, оборудование, вопросы и ответы.
 
      Что такое OS/2?НовостиУстановкаОбновлениеПрименениеБудущееСообществоКупить    
(Карта сайта)

 
 
Списки протестированного OS/2 оборудования
Как получить драйверы OS/2 бесплатно

 
Обновление

 
Программы

 
(Санкт-Петербург)

 
Преимущества (1)

 
Разработчику (1)

 
(Пайпы программ)

 
Компании: (1)

 
История (1):

 
(Бонусы)

 
Советы:

 
(Барьеры и решения)

 
Технологии: (1)

 
(Применение в науке, лаборатории, ..)

 

 
Готовые решения:

 
Новая eComStation:

 
Будущее: (1)

 
(Ссылки на другие сайты)

 
(Картинка дня)

 
Артефакты OS/2

 
Гаджеты

 

Библиотека USBCALLS для eComStation


TITLE: Библиотека USBCALLS для eComStation

DATE: 2006-04-28 17:27:53

AUTHOR: Frolov Dmitry

Введение

Большинство современных периферийных устройств подключаются к компьютеру через 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


Дополнительная информация

Попробуй программу:

SSD с установленной eComStation - модернизируй свой ноутбук или десктоп. Компьютер заработает быстрее, тише и экономичнее.

Комментарии:

Konstantin
2008-10-21 00:18:46

А мне понравилось сие описание.

Еще бы хватило ума разобраться.

Михаил
2009-05-14 16:00:30

интересная статья. А какой алгоритм диагностики работы usb??!

Прокомментируйте эту статью (напоминаем, автор работал над текстом несколько недель, уважайте мнение других).


Ваше имя:

Ваш E-Mail:

CODE:
......

  

Ваш комментарий:


Писать программы для eComStation - это выгодно: a) система имеет более компактный API, который хорошо продуман и эффективен, b) Рынок не такой бесконечный, как у Windows. Все пользователи eComStation узнают про ваш продукт, c) Один разработчик значительно влияет на всю ОС.

Статьи

Операционная система
Программное обеспечение
Оборудование
Для разработчика
Разное
Колонка редактора


Готовая eComStation на SSD диске

 





Последний активный опрос: Какая высота барьера RPM?

IBM OS/2 Warp

 
Обучение новичков

Отчет: OS/2 совместимое оборудование

 
Статьи


   
  Почему eComStation?
Возможности
Особенности
Применение
Ролики и скриншоты
   eComStation для
для бизнесменов
для студентов и инженеров
для продавцов компьютеров
сообщество пользователей
   Разработчик
Распространить программу
Описание API, библиотеки
Начать новый проект
Конкурсы
   Программы
Он-лайн каталог
Выбрать через eCo Market
   Служба поддержки
Отправить вопрос
Купить eComStation
Вопросы и ответы
Обучение новичков
 
 
© 2001 - 2014 eCo Software, All rights reserved
eComStation is a registered trademark of Serenity Systems International
OS/2 Warp is a registered trademark of IBM Corporation
 

 

 
Картинка дня: