НОВОЕ: OS/2 GURU - Вопросы и ответы ru · en · de · es · it · pt · cz · pl · fr

OS/2.GURU Library

Reviews / articles about OS/2 eComStation ArcaOS

Operating systems
ArcaOS, eComStation, IBM OS/2 Warp
eComStation myths 

Latest  
 
 
Blonde Guy

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:

eSchemes - change the colors and buttons on the desktop.

Comments:

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

 


 

 

ArcaOS 5.1.1 - DOS works again

DOS virtual machine works again (it was working on Core 2 Duo, and didn't for i5). Install ArcaOS in UEFI mode to use DOS VM.

We keep the memory about eComStation

OS/2 Guru is the only web-site which talks about the deserts of eComStation (OS/2 Warp was used as base, the development started in 1999.. 2001.. till 2013).

// надо на ENG!!
Blonde Guy

Buy OS/2 application: DVD/CD Toys

 
Every conference is important.

Warpstock Europe 2017

Interview with Lars Erdmann
What do we discuss? I don't remember.

What was happening at that conference?

 

(C) OS2.GURU 2001 -- 2025