Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Аппаратное обеспечение -> Агуров П.В. -> "Интерфейсы USB. Практика использования и программирования" -> 134

Интерфейсы USB. Практика использования и программирования - Агуров П.В.

Агуров П.В. Интерфейсы USB. Практика использования и программирования — БВХ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interfeysusbpraktikaispolzovaniya2004.djvu
Предыдущая << 1 .. 128 129 130 131 132 133 < 134 > 135 136 137 138 139 140 .. 168 >> Следующая

использование коротких пакетов
)!
pUrb->OrbBulkOrInterruptTransfer.TransferFlags =
(USBD_TRANSFER_DIRECTIQN_IN | USBD_SHGRT_TRANSFER_OK);
// Передаем сформированный запрос драйверу нижнего уровня status =
m_EndpointlIN.SubmitUrb(pUrb);
// Возвращаем реально прочитанное число байт
dwBytesRead - pUrb->UrbBulkOrInterruptTransfer.TransferBufferLength; //
Освободить пакет delete pUrb;
// Вернуть реально прочитанное число байт I.Information() - dwBytesRead;
428
Часть IV. Создание USB-устройств
II Подтвердить успешное завершение операции return I.PnpCornplete(this,
status);
>
14.2.7. Установка драйвера
Скомпилировав драйвер, мы получим файл ATDriver.sys.
(Files Needed Ш
: The;fileATDriyer.sysWn(Unknown)isneeded. ..¦ iafefal' 'j OK
Cancel
Type the path where the file is located, and then click OK.
Copy files from:
| E AttLi S В \T estVAT 89VAT D river4sys4obifre\i386 jjJ : | I
firowse...: : ]j.

Рис. 14.22. Указание файла драйвера
Upgrade Device Driver Wizard
Driver Files Search Results
The wizard has finished searching for driver files for your hardware
device.
The wizard found a driver for the following device:
PVASoft test board .
Windows found a driver that is a closer match for this device than your
current driver. Tо install the driver Windows found, click Next.
fgggjj. e:\ttusbVestVat89'iatdriver\sysSatdiiverjhf
< Back Next" j| Cancel |
КЗ
Рис. 14.23. Драйвер обнаружен
Глава 14. Создание USB-устройства на основе ATMEL АТ89С5131
429
Теперь, подключив наше устройство, нужно установить этот драйвер, указав
путь к файлу ATDriver.inf и файлу самого драйвера (рис. 14.22).
Если все прошло успешно, система обнаружит драйвер и установит его (рис.
14.23). Теперь можно заняться созданием программы для чтения данных.
14.2.8. Программа чтения данных
В главе 9 мы достаточно подробно разобрали методы загрузки и обращения к
драйверам, поэтому дополнительных комментариев к листингу 14.8 не
требуется.
['Листинг 14.8. Модуль для загрузки и обращения к драйверу ATDriverDevice
Я&............................. ......... ........................ ..
..............
unit DrvLoader; interface
Uses Windows, SysUtils; type
TAT89DriverLoader - class private
hDevice : THandle; // хранить дескриптор драйвера Public Constructor
Create;
Destructor Destroy; override;
Public П Регистрация драйвера
Function CreateService(SysPath : String) : Boolean;
II Разрегистрация драйвера Function RemoveService : Boolean;
II Старт драйвера Function StartService : Boolean;
II Останов драйвера Function StopService : Boolean; public
II Открытие драйвера
Function Open(Devlndex : Integer) : Boolean;
II Закрытие драйвера Procedure Close;
430
Часть IV. Создание USB-устройств
public
// Вызов функции DeviceloControl Function Fund : Cardinal;
// Вызов функции чтения Function Read : String;
End;
implementation
Uses WinSvc, Dialogs;
// Конструктор
Constructor TAT89DriverLoader.Create;
Begin Inherited Create; hDevice;= INVALID_HANDLE_VALUE;
End;
// Деструктор
Destructor TAT89DriverLoader.Destroy;
Begin
Close;
Inherited Destroy;
End;
// Описание драйвера Const // Имя драйвера
DriverName : PChar= 1ATDriverDevice'#0;
// Имя файла драйвера
FileDriver : String = 'ATDriver.sys'#0;
// Полное имя драйвера
DriverPath : String - '\\.\ATDriverDevice';
Function TAT89DriverLoader.CreateService(SysPath : String) : Boolean; var
hSCMan, hService: SC_HANDLE;
DriverPath : String;
Begin
Result:= False;
Глава 14. Создание USB-устройства на основе ATMEL АТ89С5131
431
hSCMan:- WinSvc.OpenSCManager(
Nil, ( local }
Nil, { SERVICES_ACTIVE_DATABASE }
SC_MANAGER_ALL_ACCESS )i
If hSCMan = 0 then Exit;
// Получаем полное имя к файлу драйвера // Если драйвер находится в
текущем каталоге,
// где запускается программа, то не добавляем SysPath DriverPath:=
{SysPath + JFileDriver;
// Создаем сервис (регистрируем драйвер)
hService:= WinSvc.CreateService(hSCMan, Drivemame, DriverName,
SERVICE_ALL_ACCESS, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START,
SERVICE_ERROR_NORMAL,
PChar(0DriverPath[1]), nil,nil,nil,nil,nil);
// Файл не найден или сервис ухе зарегистрирован If hService = 0 then
begin
MessageDlg(SysErrorMessage(GetLastError), mtError, [mbOK], 0);
CloseServiceHandle(hSCMan);
Exit;
End;
// Регистрация успешна
WinSvc.CloseServiceHandle(hService);
WinSvc.CloseServiceHandle(hSCMan);
Result:- True;
End;
// Удаление регистрации драйвера
Function TAT89DriverLoader.RemoveService : Boolean; var hSCMan, hService
: SC_HANDLE;
Begin Result:- False;
// Удаление сервиса из реестра
hSCMan:- WinSvc.OpenSCManager(Nil,Nil,SC_MANAGER_ALL_ACCESS);
432
Часть IV. Создание USB-устройств
If hSCMan - 0 then Exit;
hService;- WinSvc.OpenService(hSCMan, DriverName, SERVICE_ALL_ACCESS); //
Ошибка открытия сервиса If hService-О then begin
CloseServiceHandle(hSCMan);
Exit;
End;
// Удалить
WinSvc.DeleteService(hService);
WinSvc.CloseServiceHandle(hService);
WinSvc.CloseServiceHandle(hSCMan);
Предыдущая << 1 .. 128 129 130 131 132 133 < 134 > 135 136 137 138 139 140 .. 168 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.