НОВОЕ: 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: ArcaOS 5.1 Russian LIP
Russian ARCAOS exists and it's available since the middle of 2017. All versions are supported: 5.1, 5.1.1.

eCo Software is able to maintain OS/2 LIP packages for any other language (German, Dutch, Brazilian Portuguese, Spanish, Sweden, etc)

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:

Virtual keyboard - on-screen virtual keyboard (useful for touchscreens, to input special characters)

Komentarze:

Konstantin
2008-10-21 00:18:46

. ... ........... ... .........

... .. ....... ... ............

......
2009-05-14 16:00:30

.......... ....... . ..... ........ ........... ...... usb??!

eComStation 2.0 includes OpenOffice.org 3.x which supports Microsoft Office Open XML (.docx and other)

 

Siberian OS/2

 


 

 

ArcaOS 5.1.1 whatsnew - PNG icons

PNG icons on Desktop

PNG icons on Desktop. (instead of ancient .ico designed in 1994)

eComStation developer

eCo Software was the leading developer of modules for eComStation 2.0

// надо на ENG!!

 
Every conference is important.

Warpstock Europe 2016

Interview with Lars Erdmann
talking about USB drivers development

What was happening at that conference? The work on ArcaOS was starting..

 

(C) OS2.GURU 2001 -- 2025