| 
 
    
   
  
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
 
  Дополнительная информация
  Komentarze: | Konstantin  2008-10-21 00:18:46
 |  . ... ........... ... .........
 ... .. ....... ... ............ |  | ......  2009-05-14 16:00:30
 |  .......... ....... . ..... ........ ........... ...... usb??! | 
 | 
  
 
Siberian OS/2
   
 |