| 
 
 
    
   
 
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
  
 Дополнительная информация
 
   
 Kommentare: Konstantin   2008-10-21 00:18:46 |  . ... ........... ... .........
 ... .. ....... ... ............  |  ......   2009-05-14 16:00:30 |  .......... ....... . ..... ........ ........... ...... usb??!  |   
  
  
    
   
     | 
    
It's easy to maintain eComStation: a) Fast installation (20 minutes and it's ready), b) Universal drivers, replace a device - the system boots and continues work, c) Use eCS to recover damaged Windows (no danger to be infected by virus)     | 
  
    | 
   
 
       | 
      
 
   
 
Siberian OS/2
 
 
   
   
        |