Автор работы: Пользователь скрыл имя, 18 Марта 2013 в 21:01, курсовая работа
Целью данной курсовой работы является освоение использования динамически подключаемых библиотек и их взаимодействие с устройствами, подключаемыми к персональному компьютеру через интерфейс USB, а также создание приложения типа “клиент-сервер” с помощью технологии Winsock.
Будем рассматривать работу с интерфейсом USB на примере HID джойстика Logitech Precision.
Введение……………………………………………………….….…….....................3
1. Постановка задачи…………………………………………...…..….….….4
2. Описание HID устройств…………………………………………........….6
3. Описание DLL библиотек…………………………………..…………..…7
4. Динамическая библиотека HID_Lib_Plus.dll………..…………..…....….8
5. Программирование с использованием сокетов……..……………....….11
6. Результат работы программ……………………….……….…………..…14
Заключение………………………….……………………….……………….....…..16
Список литературы………………………………………………….…….………..18
Приложение А………………………………………………………….…….....….19
Введение……………………………………………………….
1. Постановка задачи…………………………………
2. Описание HID устройств………………………………………….....
3. Описание DLL библиотек…………………………………..…………..
4. Динамическая библиотека
HID_Lib_Plus.dll………..…………..…..
5. Программирование с
использованием сокетов……..…………
6. Результат работы программ……………………….……….…………..…
Заключение………………………….………………………
Список литературы…………………………………
Приложение
А………………………………………………………….……....
Целью данной курсовой работы является освоение использования динамически подключаемых библиотек и их взаимодействие с устройствами, подключаемыми к персональному компьютеру через интерфейс USB, а также создание приложения типа “клиент-сервер” с помощью технологии Winsock.
Будем рассматривать работу с интерфейсом USB на примере HID джойстика Logitech Precision.
Для реализации задачи был выбран язык С++ и среда программирования Borland C++ Builder 6.0 Enterprise.
Написать клиент серверное
приложение, в котором посредством
подключенного к компьютеру-
Рисунок 1. Схема установки
Класс USB HID описывает устройства, которые используются практически в каждом современном компьютере. В нём существует множество предопределённых функций. Они позволяют производителям аппаратного обеспечения разрабатывать продукты, соответствующие спецификации USB HID, и ожидать, что они будут работать с любым программным обеспечением, которое так же поддерживает эти спецификации. Примечательно то, что USB HID может быть использован, как для описания работы самого устройства, так и для описания интерфейса устройства. Например, вполне допустимым будет использование USB устройства, имеющего два различных USB интерфейса одновременно(например, USB-телефон может использовать HID клавиатуру, и USB аудио устройство, для микрофона).
Современные игровые контроллеры
и джойстики часто являются USB
HID устройствами. В отличие от устройств,
которые подключаются через игровой
порт, USB HID устройства обычно не требуют
драйверов для нормальной работы.
Почти все игровые устройства
будут работать с использованием
встроенных драйверов, поскольку они
разрабатываются с
Разработка драйвера USB-устройст-ва для компьютера не каждому под силу, так как это требует немалых знаний и специального набора компьютерных программ. Выходом из данной ситуации может быть создание USB-уст-ройств класса HID (Human Interface Device — устройство взаимодействия человека с компьютером), драйверы для которых имеются в операционной системе.
К HID относятся, в частности,
USB клавиатуры, мыши, джойстики и
другие средства ручного ввода информации.
Тип устройства должен быть задан
в специальной логической структуре,
называемой дескриптором сообщения. Спецификацией
НЮ предусмотрен тип "нестандартное
устройство", которым можно пользоваться
для обмена произвольной информацией.
Это позволяет создавать
Чтобы упростить работу с HID, был разработан компонент приложения - динамическая библиотека подпрограмм (DLL), названная "HID_Lib_Plus". В отличие от "HID_Lib", которая предназначена исключительно для PureBasic, "HID_Lib_Plus" можно использовать в любой среде программирования, поддерживающей вызовы функций из динамических библиотек, например в Visual Studio или Delphi.
Библиотека HID_Lib_Plus содержит 16 функций:
HID_DeviceTest(PID,VID,
HID_OpenDevice(PID,VID,
HID_CloseDevice(Handle) завершает работу с НЮ и освобождает все ресурсы компьютера, использовавшиеся при работе с ним. Ее параметр — идентификатор устройства, полученный ранее с помощью функции HID_OpenDevice. В случае успешного выполнения заданной операции будет возвращено число, не равное нулю.
HID_ReadDevice(Handle,*buffer,
HID_WriteDevice(Handle,*
Особенность функций HID_ReadDevice и HID_WriteDevice заключается в том, что они не возвращают управление вызвавшей их программе до завершения чтения или записи информации. Это приводит, например, к тому, что при чтении программа "зависает", пока от НЮ не поступит весь ожидаемый информационный пакет. Поэтому для чтения и обработки информации рекомендуется создать в программе отдельный поток.
GetlnputReport(Handle,*buffer,
НID_SetOutputReport(Handle,*
HID_GetFeature(Handle,*buffer,
HID_GetCaps(Handle,*
HID_GetNumlnputBuffers(Handle) позволяет узнать размер буфера, в котором временно хранится информация, отправленная устройством, но еще не прочитанная программой.
HID_GetManufacturerString(
HID_Devicelnfo(*Struct.HID_
Winsocket, поставляемый со
всеми последними версиями Microsoft
Windows, представляет собой набор
функций, оформленных в виде
динамической библиотеки (DLL), и предназначен
для осуществления сетевого
Создатели Winsocket сделали
его универсальным средством
для построения сетевых
Работа с Winsocket в
какой-то степени напоминает
Получив подтверждение
от удаленного сервера, ваша
программа может приступать к
обмену данными. Для этого в
библиотеке Winsocket предусмотрены функции
передачи данных (Send, Sendto) и чтения
данных (Recv, Recvfrom). В случае успешно
проведенной операции эти
Клиент может считывать данные с джойстика, подключаясь к нему используя его идентификаторы (Pid, Vid, Rev), визуально отображать состояния кнопок (панель изначально скрыта, но может быть развёрнута щелчком по панели Button state) и отправлять закодированное состояние кнопок на сервер по протоколу TCP/IP на указанный пользователем адрес. При этом визуально отображаются состояния подключений джойстика и сетевого соединения.
Рисунок 2. Внешний вид программы клиента
Сервер «прослушивает» указанный пользователем порт и принимает от клиента закодированные состояния кнопок джойстика. На основании принятых данных и карты управления (задаётся в настройках) вычисляется следующее состояние системы, которое используется для визуального отображения программной модели.
Рисунок 3. Внешний вид программы сервера
Рисунок 4. Окно настроек управления
В данной работе мы ознакомились
с устройством и
1. http://www.radioman-portal.
2. http://msdn.microsoft.com/
3. http://www.bitbybit.ru/
4. http://book.itep.ru/4/41/eth_
5. http://belani.narod.ru/1/
Листинг клиента
Unit1.cpp – реализует основной алгоритм работы клиента
//----------------------------
#undef UNICODE
//#include <windows.h>
#include <stdio.h>
#include <vcl.h>
#include <math.h>
#pragma hdrstop
#include "Unit1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
//ОПРЕДЕЛЕНИЯ ДЛЯ КНОПОК
#define Button_Down 0x0001
#define Button_Up 0x0002
#define Button_Left 0x0004
#define Button_Right 0x0008
#define Button_1 0x0010
#define Button_2 0x0020
#define Button_3 0x0040
#define Button_4 0x0080
#define Button_5 0x0100
#define Button_6 0x0200
Информация о работе Интерфейс USB на примере HID джойстика Logitech Precision