Информационный сайт

 

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

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

Агуров П.В. Интерфейсы USB. Практика использования и программирования — СПб.: БХВ-Петербург, 2004. — 576 c.
ISBN 5-94157-202-6
Скачать (прямая ссылка): interface2004.djvu
Предыдущая << 1 .. 136 137 138 139 140 141 < 142 > 143 144 145 146 147 148 .. 166 >> Следующая

Работая в системе Windows 98, в разделе [FtdiPort232.HW.AddReg] упомянутого выше файла ftdiport.inf найдите строку
HKR,,ConfigData,1,01,00,3F,3F,10,27,88,13,С4,09,Е2,04,71,02,38,41, 9с ,80,4Е,СО,34,00,1А, 00,0D,00,06,40,03,80,00,00,00,00
Младший байт каждого коэффициента записан первым, за ним следует старший. Например, последовательность Е2,04 соответствует числу 4Е2Н. Внеся нужные изменения, отредактированным файлом заменяют исходный.
Работая в системе Windows 2000, аналогичным образом редактируют такую же строку в разделе [FtdiPort232.NT.HW.AddReg] того же файла.
ЧАСТЬ V
Справочник
Базовые функции Windows
Рассмотрим базовые функции Windows, такие как открытие и закрытие объекта, чтение и передача данных, ожидание сигнального состояния объектов и др.
16.1. Функции CreateFiie и CloseHandle: открытие и закрытие объекта
Функция CreateFiie открывает объект, а функция CloseHandle — закрывает. Объектом может являться файл, драйвер, порт, устройство и т. д. Объект может быть открыт в режиме разделения или эксклюзивно. В этом случае попытка открыть ресурс еще раз, завершится с ошибкой. Дескриптор, полученный после вызова CreateFiie, должен быть закрыт после использования ВЫЗОВОМ CloseHandle.
Формат заголовков CreateFiie И CloseHandle на языке С имеет следующий
вид:
HANDLE CreateFiie(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LP_SECURITY_ATTRIBUTES IpSA,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile );
BOOL CloseHandle( HANDLE hObject ) ;
Il имя объекта
I/ способ доступа
// тип совместного доступа
// атрибуты защиты
// параметры создания
// атрибуты
// дескриптор template-файла
// дескриптор объекта
472
Часть V. Справочник
Формат заголовков createFile и cioseHandle на языке Delphi имеет следующий вид:
function CreateFile(
16.1.1. Дополнительные сведения
Для нотации языка С строка, передаваемая в функцию createFile, должна иметь дублированные знаки "\", например, \\.\comi выглядеть как WW.Wcomi.
16.1.2. Возвращаемое значение
Если функция createFile выполнена успешно, возвращается дескриптор открытого ресурса. Этот дескриптор используется для доступа к открытому ресурсу. Если при открытии ресурса произошла ошибка, функция возвращает значение INVALid_handle_value, а подробности можно узнать, вызвав
ФУНКЦИЮ GetLastError.
После использования дескриптор должен быть освобожден вызовом функции CioseHandle.
Функция cioseHandle возвращает ненулевое значение, если закрытие дескриптора выполнено успешно, и возвращает 0, если произошла ошибка. Расширенную информацию об ошибке можно получить с помощью вызова
GetLastError.
16.1.3. Пример вызова
Листинг 16.1 показывает структуру программы, использующей функции CreateFiie/cioseHandie для доступа к коммуникационному порту СОМІ.
IpSA : PSecurityAttributes;
dwCreationDisposition,
dwFlagsAndAttributes: DWORD;
hTemplateFile: Thandle ): THandle; function CioseHandle(
hObject: THandle ): BOOL;
lpFileName: PChar; dwDesiredAccess,
dwShareMode: DWORD;
// имя объекта
// способ доступа
// тип совместного доступа
// атрибуты зашиты
// параметры создания
// атрибуты
// дескриптор template-файла
// дескриптор объекта
Глава 16. Базовые функции Windows
473
^истинг 16.1. Использование функций CreateFile и CloseHandle
{Переменная для хранения дескриптора порта} var
ComHandle : THandle; {Открыть порт}
ComHandle:= CreateFiIe('\\.\C0M1',
GENERIC_READ or GENERIC_WRITE, О,
nil,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL or FILE_FLAG_OVERLAPPED, 0
) ;
{Проверить результат}
if ComHandle = INVALID_HANDLE_VALUE then begin
{Ошибка открытия порта, функция GetLastError вернет код ошибки}
Expend;
{ ... порт открыт успешно . . . }
{ ... использование порта через дескриптор ComHandle ...} {Закрытие порта} CloseHandle(ComHandle);
16.2. Функция Read File: чтение данных
Функция ReadFiie производит синхронное или асинхронное чтение данных. Формат заголовка ReadFiie на языке С имеет следующий вид:
BOOL ReadFiie(
hHandle, // дескриптор, полученный от CreateFile
1pBuffer, // буфер для чтения
nNBTR, // число байт для чтения
nNBR, // реально прочитанное число байт
HANDLE LPVOID DWORD LPDWORD LPOVERLAPPED
lpOverlapped Il параметры асинхронного чтения
);
474
Часть V. Справочник
Формат заголовка ReadFiie на языке Delphi имеет следующий вид:
function ReadFiie(
hFile: THandle; 11 дескриптор, полученный от CreateFiie
var Buffer; Il буфер для чтения
nNumberOfBytesToRead: DWORD; Il число байт для чтения
var lpNumberOfBytesRead: DWORD;// реально прочитанное число байт
lpOverlapped: Poverlapped Il параметры асинхронного чтения
): b0ol;
Первый параметр передает дескриптор объекта, полученный с помощью функции CreateFiie. Указатель на буфер для чтения данных задается с помощью второго параметра, а размер этого буфера в байтах — с помощью третьего.
Параметр nNBR передает указатель на переменную типа dword, в которую возвращено реально прочитанное число байт. В Windows NT/2000/XP этот параметр не может быть null, если lpoveriapped равно null, и может быть null, если параметр lpoveriapped ненулевой. В Windows 95/98/МЕ этот параметр не может быть нулевым. Для получения количества байт, прочитанных в асинхронном режиме, может использоваться функция GetOveriappedResuit.
Предыдущая << 1 .. 136 137 138 139 140 141 < 142 > 143 144 145 146 147 148 .. 166 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100