Пятница, 03.05.2024, 06:14
Приветствую Вас Гость | RSS

Образовательный портал

Меню сайта
Форма входа
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Яндекс цитирования

Главная » 2016 » Июль » 5 » Практика программирования USB (+ CD)
19:48
Практика программирования USB (+ CD)

Практика программирования USB — В книге собрана информация, необходимая для создания USB-устройств и драйверов для операционной системы Microsoft Windows 2000/XP. Рассмотрен процесс создания USB-устройства: от написания программы микроконтроллера (примеры реализованы для микропроцессора AT89C5131) до разработки собственного WDM-драйвера. Содержится описание специальных классов устройств: HID-класс, позволяющий обойтись без разработки драйвера, и класс CDC, позволяющий работать с USB как с обычным COM-портом. Рассмотрено использование функций Raw Input, Direct Input и Setup API, содержится большое количество практических советов и примеров программ на языках Delphi, C и C#.

Название: Практика программирования USB (+ CD)
Автор: Агуров П. В.
Издательство: БХВ-Петербург
Год: 2006
Страниц: 622
Формат: PDF, DJVU
Размер: 19,43 Мб
ISBN: 5-94157-851-2
Качество: Отличное

Введение
   Для кого эта книга
   Что вы найдете в книге
   Программные требования
   Аппаратные требования
   О программном коде
   Краткое описание глав
   Обозначения
   Благодарности
   Обратная связь
Часть I. Общие сведения о USB
Глава 1. Спецификация USB
   1.1. Что такое USB и зачем это надо
      1.1.1. Общая архитектура USB
      1.1.2. Физическая и логическая архитектура USB
      1.1.3. Составляющие USB
      1.1.4. Свойства USB-устройств
      1.1.5. Принципы передачи данных
      1.1.6. Механизм прерываний
      1.1.7. Режимы передачи данных
      1.1.8. Логические уровни обмена данными
         1.1.8.1. Уровень клиентского ПО
         1.1.8.2. Уровень системного драйвера USB
         1.1.8.3. Уровень хост-контроллера интерфейса
         1.1.8.4. Уровень шины периферийного USB-устройства
         1.1.8.5. Уровень логического USB-устройства
         1.1.8.6. Функциональный уровень USB-устройства
      1.1.9. Передача данных по уровням
      1.1.10. Типы передач данных
      1.1.11. Кадры
      1.1.12. Конечные точки
      1.1.13. Каналы
      1.1.14. Пакеты
         1.1.14.1. Формат маркер-пакетов IN, OUT, SETUP и PING
         1.1.14.2. Формат пакета SOF
         1.1.14.3. Формат пакета данных
         1.1.14.4. Формат пакета подтверждения
         1.1.14.5. Формат пакета SPLIT
      1.1.15. Контрольная сумма
         1.1.15.1. Алгоритм вычисления CRC
         1.1.15.2. Программное вычисление CRC
      1.1.16. Транзакции
         1.1.16.1. Типы транзакций
         1.1.16.2. Подтверждение транзакций и управление потоком
         1.1.16.3. Протоколы транзакций
   1.2. Запросы к USB-устройствам
      1.2.1. Конфигурационный пакет
      1.2.2. Стандартные запросы к USB-устройствам
         1.2.2.1. Получение состояния GET_STATUS
         1.2.2.2. Сброс свойства CLEAR_FEATURE
         1.2.2.3. Разрешение свойства SET_FEATURE
         1.2.2.4. Задание адреса на шине SET_ADDRESS
         1.2.2.5. Получение дескриптора GET_DESCRIPTOR
         1.2.2.6. Передача дескриптора SET_DESCRIPTOR
         1.2.2.7. Получение кода конфигурации GET_CONFIGURATION
         1.2.2.8. Задание кода конфигурации SET_CONFIGURATION
         1.2.2.9. Получение кода настройки интерфейса GET_INTERFACE
         1.2.2.10. Задание кода настройки интерфейса SET_INTERFACE
         1.2.2.11. Задание номера кадра синхронизации SYNC_FRAME
         1.2.2.12. Обработка стандартных запросов
      1.2.3. Дескриптор устройства
         1.2.3.1. Дескриптор устройства
         1.2.3.2. Уточняющий дескриптор устройства
         1.2.3.3. Дескриптор конфигурации
         1.2.3.4. Дескриптор интерфейса
         1.2.3.5. Дескриптор конечной точки
         1.2.3.6. Дескриптор строки
         1.2.3.7. Специфические дескрипторы
         1.2.3.8. Порядок получения дескрипторов
   1.3. Система Plug and Play (PnP)
      1.3.1. Конфигурирование USB-устройств
      1.3.2. Нумерация USB-устройств
      1.3.3. PnP-идентификаторы USB-устройств
      1.3.4. Символьные имена устройств
   1.4. Модель WDM
Глава 2. Программирование на языке C для микроконтроллера
   2.1. Общие сведения о языке С для микроконтроллеров
   2.2. Использование стандартных библиотек
   2.3. Программирование для АТ89С5131
      2.3.1. Файл инициализации
      2.3.2. Структуры дескрипторов
      2.3.3. Структура проекта
Глава 3. Инструменты
   3.1. Программаторы
      3.1.1. Программатор Flip
      3.1.2. Программатор ER-Tronik
   3.2. Инструменты создания драйверов
      3.2.1. NuMega Driver Studio
      3.2.2. Jungo WinDriver
      3.2.3. Jungo KernelDriver
   3.3. Средства Microsoft Visual Studio
      3.3.1. Depends (Dependency Walker)
      3.3.2. Error Lookup
      3.3.3. GuidGen
   3.4. Средства Microsoft DDK
      3.4.1. DeviceTree
      3.4.2. DevCon
         3.4.2.1. Ключ classes
         3.4.2.2. Ключ driverfiles
         3.4.2.3. Ключ hwids
         3.4.2.4. Ключ rescan
         3.4.2.5. Ключ stack
         3.4.2.6. Ключ status
      3.4.3. Chklnf и Genlnf
   3.5. Средства CompuWare Corporation
      3.5.1. Monitor
      3.5.2. SymLink
      3.5.3. EzDriverlnstaller
      3.5.4. WdmSniff
   3.6. Средства Syslnternals
      3.6.1. WinObj
   3.7. Средства USB Forum
      3.7.1. HID Descriptor Tool
   3.8. USB Command Verifier
   3.9. Средства HDD Software
   3.10. Средства Sourceforge
   3.11. Программа мониторинга Bus Hound
Глава 4. Принципы использования функций Win32 в .NET
   4.1. Общие сведения
   4.2. Импорт функций Win32
   4.3. Структуры
      4.3.1. Атрибут StructLayout
      4.3.2. Атрибут MarshalAs
   4.4. Прямой доступ к данным
   4.5. Обработка сообщений Windows
   4.6. Общие сведения о WMI
   4.7. Интернет-ресурсы к этой главе
Часть II. Классы USB
Глава 5. Класс CDC
   5.1. Методы преобразования интерфейсов USB/RS-232
   5.2. Общие сведения об интерфейсе RS-232
      5.2.1. Линии обмена
         5.2.1.1. Передаваемые данные (BA/TxD/TD)
         5.2.1.2. Принимаемые данные (BB/RxD/RD)
         5.2.1.3. Запрос передачи (CA/RTS)
         5.2.1.4. Готовность к передаче (CB/CTS)
         5.2.1.5. Готовность DCE (CC/DSR)
         5.2.1.6. Готовность DTE (CD/DTR)
         5.2.1.7. Индикатор вызова (CE/RI)
         5.2.1.8. Обнаружение несущей (CF/DCD)
         5.2.1.9. Готовность к приему (CJ)
   5.3. Спецификация CDC
      5.3.1. Стандартные дескрипторы
      5.3.2. Функциональные дескрипторы
         5.3.2.1. Заголовочный функциональный дескриптор
         5.3.2.2. Дескриптор режима команд
         5.3.2.3. Дескриптор абстрактного устройства
         5.3.2.4. Дескриптор группирования
      5.3.3. Специальные запросы
         5.3.3.1. Запрос SET_LINE_CODING
         5.3.3.2. Запрос GET_LINE_CODING
         5.3.3.3. Запрос SET_CONTROL_LINE_STATE
         5.3.3.4. Запрос SEND_BREAK
      5.3.4. Нотификации
         5.3.4.1. Нотификация RING^DETECT
         5.3.4.2. Нотификация SERIAL_STATE
   5.4. Поддержка CDC в Windows
      5.4.1. Обзор функций Windows для работы с последовательными портами
         5.4.1.1. Основные операции с портом
         5.4.1.2. Функции настройки порта
         5.4.1.3. Специальная настройка порта
         5.4.1.4. Получение состояния линий модема
         5.4.1.5. Работа с CDC на платформе. NET
      5.4.2. Соответствие функций Windows и USB-запросов
Глава 6. Класс HID
   6.1. Спецификация HID-устройств
   6.2. Порядок обмена данными с HID-устройством
   6.3. Установка драйвера HID-устройства
   6.4. Идентификация HID-устройства
      6.4.1. Идентификация загрузочных устройств
      6.4.2. Дескриптор конфигурации HID-устройства
      6.4.3. HID-дескриптор
      6.4.4. Дескриптор репорта
   6.5. Структура дескриптора репорта
      6.5.1. Элементы репорта
         6.5.1.1. Элементы короткого типа
         6.5.1.2. Элементы длинного типа
      6.5.2. Типы элементов репорта
         6.5.2.1. Основные элементы
         6.5.2.2. Глобальные элементы
         6.5.2.3. Локальные элементы
      6.5.3. Примеры дескрипторов
   6.6. Запросы к НID-устройству
      6.6.1. Запрос GET_REPORT
      6.6.2. Запрос SET_REPORT
      6.6.3. Запрос GET_IDLE
      6.6.4. Запрос SET_IDLE
      6.6.5. Запрос GET_PROTOCOL
      6.6.6. Запрос SET_PROTOCOL
   6.7. Инструменты
   6.8. Драйверы для HID-устройств в Windows
Глава 7. Другие классы USB
Часть III. Практика программирования USB
Глава 8. Создание USB-устройства на основе АТ89С5131
   8.1. Общая информация об АТ89С5131
   8.2. Структурная схема АТ89С5131
   8.3. USB-регистры AT89C5131
      8.3.1. Регистр USBCON
      8.3.2. Регистр USBADDR
      8.3.3. Регистр USBINT
      8.3.4. Регистр USBIEN
      8.3.5. Регистр UEPNUM
      8.3.6. Регистр UEPCONX
      8.3.7. Регистр UEPSTAX
      8.3.8. Регистр UEPRST
      8.3.9. Регистр UEPINT
      8.3.10. Регистр UEPIEN
      8.3.11. Регистр UEPDATX
      8.3.12. Регистр UBYCTLX
      8.3.13. Регистр UFNUML
      8.3.14. Регистр UFNUMH
   8.4. Схемотехника АТ89С5131
   8.5. Базовый проект для АТ89С5131
      8.5.1. Первая версия программы для АТ89С5131
      8.5.2. Добавляем строковые дескрипторы
      8.5.3. Добавление конечных точек
   8.6. Загрузка программы
Глава 9. Реализация класса CDC
   9.1. Реализация CDC
   9.2. Дескрипторы устройства
      9.2.1. Инициализация конечных точек
      9.2.2. Обработка CDC-запросов
      9.2.3. Конфигурирование RS-порта и CDC-линии
      9.2.4. Прием и передача данных
   9.3. Установка драйвера
   9.4. Программирование обмена данными с CDC-устройством на языке Delphi
   9.5. Программирование обмена с CDC-устройством на языке С#
      9.5.1. Использование компонента MSCOMM
      9.5.2. Использование функций Win32
   9.6. Проблемы CDC
Глава 10. Реализация класса HID
   10.1. Реализация HID на АТ89С5131
   10.2. Передача нескольких байтов
   10.3. Feature-репорты
   10.4. Передача данных от хоста (SET_REPORT)
   10.5. Установка HID-устройства
   10.6. Обмен данными с HID-устройством
      10.6.1. Получение имени HID-устройства
      10.6.2. Получение атрибутов устройства и чтение репортов
      10.6.3. Передача данных от хоста к HID-устройству
   10.7. Примеры HID-устройств
      10.7.1. Реализация устройства "мышь"
      10.7.2. Реализация устройства "клавиатура"
   10.8. Использование HID-протокола
      10.8.1. Интерпретация данных
      10.8.2. Коллекции
      10.8.3. Массивы и кнопки
   10.9. HID-устройство с несколькими репортами
Глава 11. Специальные функции Windows
   11.1. Функции Setup API
      11.1.1. Перечисление USB-устройств
      11.1.2. Получение состояния USB-устройства
   11.2. Перечисление USB-устройств с помощью WMI
   11.3. Специальные функции Windows XP
      11.3.1. HidD_GetInputReport - чтение HID-репортов
      11.3.2. Получение данных Raw Input
   11.4. Функции DirectX
   11.5. Диалог добавления нового оборудования
   11.6. Работа с символьными именами устройств
   11.7. Безопасное извлечение флэш-дисков
   11.8. Обнаружение добавления и удаления устройств
   11.9. Интернет-ресурсы
Глава 12. Разработка драйвера
   12.1. Основные процедуры драйвера WDM
      12.1.1. Процедура DriverEntry
      12.1.2. Процедура AddDevice
      12.1.3. Процедура Unload
      12.1.4. Рабочие процедуры драйвера
         12.1.4.1. Заголовок пакета
         12.1.4.2. Ячейки стека ввода/вывода
         12.4.1.3. Рабочие процедуры драйвера
      12.1.5. Обслуживание запросов IOCTL
   12.2. Загрузка драйвера и обращение к процедурам драйвера
      12.2.1. Процедура работы с драйвером
      12.2.2. Регистрация драйвера
         12.2.2.1. Регистрация с помощью SCM-менеджера
         12.2.2.2. Параметры драйвера в реестре
      12.2.3. Обращение к рабочим процедурам
      12.2.4. Хранение драйвера внутри исполняемого файла
   12.3. Создание драйвера с помощью Driver Studio
      12.3.1. Несколько слов о библиотеке Driver Studio
         12.3.1.1. Класс KDriver
         12.3.1.2. Класс KDevice
         12.3.1.3. Класс Klrp
         12.3.1.4. Класс KRegistryKey
         12.3.1.5. Класс KLowerDevice
         12.3.1.6. Классы USB
      12.3.2. Другие классы Driver Studio
      12.3.3. Создание шаблона драйвера с помощью Driver Studio
         12.3.3.1. Шаг 1. Задание имени и пути проекта
         12.3.3.2. Шаг 2. Выбор архитектуры драйвера
         12.3.3.3. Шаг 3. Выбор шины
         12.3.3.4. Шаг 4. Задание набора конечных точек
         12.3.3.5. Шаг 5. Задание имени класса и файла
         12.3.3.6. Шаг 6. Выбор функций драйвера
         12.3.3.7. Шаг 7. Выбор способа обработки запросов
         12.3.3.8. Шаг 8. Создание сохраняемых параметров драйвера
         12.3.3.9. Шаг 9. Свойства драйвера
         12.3.3.10. Шаг 10. Задание кодов IOCTL
         12.3.3.11. Шаг 11. Дополнительные настройки
      12.3.4. Доработка шаблона драйвера
      12.3.5. Базовые методы класса устройства
      12.3.6. Реализация чтения данных
      12.3.7. Установка драйвера
      12.3.8. Программа чтения данных
      12.3.9. Чтение данных с конечных точек других типов
      12.3.10. "Чистый" драйвер USB-устройства
Часть IV. Справочник
Глава 13. Формат INF-файла
   13.1. Структура INF-файла
      13.1.1. Секция Version
      13.1.2. Секция Manufacturer
      13.1.3. Секция DestinationDirs
         13.1.3.1. Ключ DefaultDescDir
         13.1.3.2. Ключи file-list-section
         13.1.3.3. Ключ dirid
         13.1.3.4. Ключ subdir
      13.1.4. Секция описания модели
      13.1.5. Секция xxx. AddRegw xxx. DelReg
      13.1.6. Секция xxx. LogConfig
      13.1.7. Секция xxx. CopyFiles
      13.1.8. Секция Strings
      13.1.9. Связи секций
   13.2. Создание и тестирование INF-файлов
   13.3. Установка устройств с помощью INF-файла
   13.4. Ветки реестра для USB
Глава 14. Базовые функции Windows
   14.1. Функции CreateFile и CloseHandle: открытие и закрытие объекта
      14.1.1. Дополнительные сведения
      14.1.2. Возвращаемое значение
      14.1.3. Пример вызова
   14.2. Функция ReadFile: чтение данных
      14.2.1. Дополнительные сведения
      14.2.2. Возвращаемое значение
      14.2.3. Пример вызова
   14.3. Функция Write File: передача данных
      14.3.1. Дополнительные сведения
      14.3.2. Возвращаемое значение
      14.3.3. Пример вызова
   14.4. Функция ReadFileEx. АРС-чтение данных
      14.4.1. Возвращаемое значение
      14.4.2. Дополнительные сведения
      14.4.3. Пример вызова
   14.5. Функция WriteFiieEx: АРС-передача данных
      14.5.1. Возвращаемое значение
      14.5.2. Пример вызова
   14.6. Функция WaitForSingieObject ожидание сигнального состояния объекта
      14.6.1. Возвращаемое значение
   14.7. Функция WaitForMultipleObjects: ожидание сигнального состояния объектов
      14.7.1. Возвращаемое значение
   14.8. Функция GetOverlapped Result: результат асинхронной операции
      14.8.1. Возвращаемое значение
   14.9. Функция DeviceloControl: прямое управление драйвером
      14.9.1. Возвращаемое значение
   14.10. Функция Cancel/o: прерывание операции
      14.10.1. Возвращаемое значение
   14.11. Функция Query Dos Device, получение имени устройства по его DOS-имени
      14.11.1. Возвращаемое значение
      14.11.2. Пример вызова
   14.12. Функция Define Dos Device: операции с DOS-именем устройства
      14.12.1. Возвращаемое значение
      14.12.2. Пример вызова
Глава 15. Структуры и функции Windows для последовательных портов
   15.1. Структура настроек порта COMMCONFIG
   15.2. Структура свойств порта COMMPROP
   15.3. Структура тайм-аутов COMMTIMEOUTS
   15.4. Структура статуса порта COMSTAT
   15.5. Структура DCB
   15.6. Функция BuildCommDCB: создание структуры DCB из строки
      15.6.1. Дополнительные сведения
      15.6.2. Возвращаемое значение
      15.6.3. Пример вызова
   15.7. Функция BuildCommDCBAndTimeouts: создание структуры DCB и тайм-аутов из строки
   15.8. Функции SetCommBreak и ClearCommBreak: управление выводом данных
      15.8.1. Возвращаемое значение
   15.9. Функция ClearCommError: получение и сброс ошибок порта
      15.9.1. Возвращаемое значение
   15.10. Функция EscapeCommFunction: управление портом
      15.10.1. Возвращаемое значение
   15.11. Функции GetCommMask и SetCommMask: маска вызова событий
      15.11.1. Возвращаемое значение
   15.12. Функция WaitCommEvent ожидание события СОМ-порта
      15.12.1. Возвращаемое значение
      15.12.2. Дополнительные сведения
      15.12.3. Пример вызова
   15.13. Функции GetCommConfig и SetCommConfig: конфигурирование параметров порта
      15.13.1. Возвращаемое значение
      15.13.2. Пример вызова
   15.14. Функция CommConfigDialog: диалог конфигурирования порта
      15.14.1. Возвращаемое значение
      15.14.2. Дополнительные сведения
      15.14.3. Пример вызова
   15.15. Функция GetCommProperties: прочитать свойства порта
      15.15.1. Возвращаемое значение
      15.15.2. Пример вызова
   15.16. Функции GetCommState и SetCommState: состояние порта
      15.16.1. Возвращаемое значение
      15.16.2. Пример вызова
   15.17. Функции GetCommTimeouts и SetComniTimeouts: тайм-ауты порта
      15.17.1. Возвращаемое значение
      15.17.2. Пример вызова
   15.18. Функция PurgeComm: сброс буферов порта
      15.18.1. Возвращаемое значение
      15.18.2. Пример вызова
   15.19. Функция SetupComm: конфигурирование размеров буферов
      15.19.1. Возвращаемое значение
   15.20. Функции GetDefaultCommConfig и SetDefaitltCommConfig: настройки порта по умолчанию
      15.20.1. Возвращаемое значение
   15.21. Функция TransmitCommChar. передача специальных символов
      15.21.1. Возвращаемое значение
   15.22. Функция GetCommModemStatus: статус модема
      15.22.1. Возвращаемое значение
      15.22.2. Пример вызова
   15.23. Функция EnumPorts: перечисление портов
      15.23.1. Дополнительные сведения
      15.23.2. Возвращаемое значение
      15.23.3. Пример вызова
Глава 16. Структуры и функции Windows Setup API
   16.1. Функция Setup DiGetCiassDevs: перечисление устройств
      16.1.1. Возвращаемое значение
   16.2. Функция SetupDiDestroyDevicelnfoList освобождение блока описания устройства
      16.2.1. Возвращаемое значение
   16.3. Функция SetupDiEnumDevicelnterfaces: информация об устройстве
      16.3.1. Возвращаемое значение
   16.4. Функция SetupDiGetDevicelnterfaceDetaii: детальная информация об устройстве
   16.5. Функция SetupDiEnumDevicelnfo: информация об устройстве
   16.6. Функция SetupDiGetDeviceRegistryProperty: получение Plug and Play свойств устройства
   16.7. Функция CM_Get_DevNode_Status: статус устройства
   16.8. Функция CM_Request_Device_Eject безопасное извлечение устройства
Глава 17. Структуры и функции Windows HID API
   17.1. Функция HidD_Hello: проверка библиотеки
   17.2. Функция HidD_JetHidGuid: получение GUID
   17.3. Функция HidD_GetPreparsedData: создание описателя устройства
   17.4. Функция HidD_EreePreparsedData: освобождение описателя устройства
   17.5. Функция HidD_Get Feature: получение Feature-репорта
   17.6. Функция HidD_SetFeature: передача Feature-репорта
   17.7. Функция HidD_GetNumlnputBuffers: получение числа буферов
   17.8. Функция HidD_SetNumlnputBuffers: установка числа буферов
   17.9. Функция HidD_GetAttributes: получение атрибутов устройства
   17.10. Функция HidD_GetManufacturerString. получение строки производителя
   17.11. Функция HidD_GetProductString получение строки продукта
   17.12. Функция HidD_GetSerialNumberString. получение строки серийного номера
   17.13. Функция HidD_GetIndexedString. получение строки по индексу
   17.14. Функция HidD_Jetlnput Report получение Input-репорта
   17.15. Функция HidD_SetOutputReport. передача Output-репорта
   17.16. Функция HidP_GetCaps: получение свойств устройства
   17.17. Функция HidP_MaxDataListLength: получение размеров репортов
   17.18. Функция HidD_FIushQueue: сброс буферов
   17.19. Функция HidP_GetLinkColiectionNodes: дерево коллекций
   17.20. Функции HidP_GetScaledUsageValue u HidP_SetScaledUsage Value: получение и задание преобразованных значений
   17.21. Функция HidF_MaxUsageListLength: размер буфера для кодов клавиш
   17.22. Функция HidP_UsageListDifference: различие между массивами
Приложения
Приложение 1. Дополнительные функции
Приложение 2. Компиляция примеров в других версиях Delphi
Приложение 3. Таблица идентификаторов языков (LangID)
Приложение 4. Таблица кодов производителей (Vendor ID, Device ID)
Приложение 5. Как создать ярлык Device Manager
Приложение 6. Часто задаваемые вопросы
Приложение 7. Описание компакт-диска
Литература
Предметный указатель


Скачать Практика программирования USB (+ CD)

Скачать с dfiles.ru
Скачать с turbobit.net
Скачать с hitfile.net
Скачать с gigapeta.com
Категория: Библиотека | Просмотров: 361 | Добавил: Admin | Теги: USB, практика, программирования, 2006 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Ввод/Вывод WM
Моментальный Вывод Webmoney
Красота, здоровье
Календарь

Copyright MyCorp © 2024
Конструктор сайтов - uCoz