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

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

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

nNBR, // реально прочитанное число байт
HANDLE
LPVOID
DWORD
LPDWORD
LPOVERLAPPED
lpOverlapped // параметры асинхронного чтения
);
474
Часть V. Справочник
Формат заголовка ReadFile на языке Delphi имеет следующий вид:
function ReadFile(
hFile: THandle; // дескриптор, полученный от CreateFiie
var Buffer; // буфер для чтения
nNumberOfBytesT'oRead: DWORD; // число байт для чтения
var lpNumberOfBytesRead: DWORD;// реально прочитанное число байт
lpOverlapped: Poverlapped // параметры асинхронного чтения
): BOOL;
Первый параметр передает дескриптор объекта, полученный с помощью функции
CreateFiie. Указатель на буфер для чтения данных задается с помощью
второго параметра, а размер этого буфера в байтах - с помощью третьего.
Параметр nNBR передает указатель на переменную типа dword, в которую
возвращено реально прочитанное число байт. В Windows NT/2000/XP этот
параметр не может быть null, если lpOverlapped равно null, и может быть
null, если параметр lpOverlapped ненулевой. В Windows 95/98/МЕ этот
параметр не может быть нулевым. Для получения количества байт,
прочитанных в асинхронном режиме, может использоваться функция
GetOveriappedResuit.
Последний параметр передает настройки для асинхронного чтения данных.
Если объект был открыт с параметром file_flag_overlapped, этот параметр
обязательно должен указывать на правильную структуру типа overlapped,
если же объект был открыт без использования file_flag_overlapped, то этот
указатель обязательно должен быть null.
16.2.1. Дополнительные сведения
В Windows NT/2000/XP можно использовать функцию ReadFiieEx для
асинхронного чтения данных (см. разд. 16.4).
16.2.2. Возвращаемое значение
Функция завершается, если прочитано необходимое количество байтов или
произошла ошибка. Если чтение прошло успешно, возвращается ненулевое
значение.
В случае ошибки возвращается 0, а код ошибки можно получить с помощью
вызова GetLastError.
16.2.3. Пример вызова
Листинг 16.2 показывает пример использования функции ReadFile для
синхронного чтения данных.
Глава 16. Базовые функции Windows
475
var
ComHandle : THandle;
CurrentState : TComStat;
CodeError : Cardinal;
PData : Pointer;
AvaibleBytes, RealRead ; Cardinal; Begin
ComHandle:= CreateFile(...);
{Возвращает структуру состояния порта и код ошибок}
ClearCommError(ComHandle, CodeError, @CurrentState};
{ Число полученных, но еще не прочитанных байт}
AvaibleBytes:= CurrentState.cblnQue;
{ Проверка числа доступных байт}
If AvaibleBytes > 0 then begin GetMem(PData, AvaibleBytes};
If ReadFile(ComHandle, PDataA, AvaibleBytes, RealRead, nil} then begin
{Реально прочитано RealRead байт}
End;
FreeMemfPData} ;
End;
CloseHandle(ComHandle}; end;
16.3. Функция WriteFile: передача данных
Функция WriteFile производит синхронную или асинхронную запись данных в
файл (порт, драйвер). Формат заголовка WriteFile на языке С имеет
следующий вид:
BOOL WriteFile(
HANDLE hHandle, // дескриптор, полученный от CreateFile
LPCVOID lpBuffer, // буфер данных
DWORD nNBTW, // длина буфера
LPDWORD nNBW, // реально отправленное число байт
LPOVERLAPPED lpOverlapped // параметры асинхронной записи
476
Часть V. Справочник
Формат заголовка writeFiie на языке Delphi имеет следующий вид:
function WriteFiie(
hFile : THandle; // дескриптор, полученный от CreateFiie
const Buffer; // буфер данных
nNBTW : DWORD; // длина буфера
var lpNBW : DWORD; // реально отправленное число байт
lpOverlapped: POverlapped // параметры асинхронной записи ): BOOL;
Первый параметр передает дескриптор объекта, полученный с помощью функции
CreateFiie. Указатель на буфер данных для записи задается с помощью
второго параметра, а размер этого буфера в байтах - с помощью третьего.
Параметр nNBw задает указатель на переменную типа dword, в которую будет
записано реально переданное число байтов. В Windows 95/98/МЕ этот
параметр не может быть нулевым. В Windows NT/2000/XP этот параметр может
быть нулевым, если задан указатель на параметры асинхронной записи
lpOverlapped, и не может быть нулевым, если задается синхронная запись,
т. е. указатель lpOverlapped нулевой.
16.3.1. Дополнительные сведения
В Windows NT/2000/XP можно использовать функцию writeFiieEx для
асинхронной записи данных (см. разд. 16.5).
16.3.2. Возвращаемое значение
Если выполнение успешно, функция writeFiie возвращает ненулевое значение.
Если функция завершилась с ошибкой, она возвращает нулевое значение, а
код ошибки МОЖНО узнать С ПОМОЩЬЮ вызова GetLastError.
16.3.3. Пример вызова
Листинг 16.3 показывает пример использования функции WriteFiie для
синхронной записи данных в коммуникационный порт, а листинг 16.4 - пример
асинхронной записи.
var
FComPortHandle : THANDLE; DataPtr : Pointer; nToWrite, nWrite : Integer;
Глава 16. Базовые функции Windows
477
FComPortHandle:= CreateFile(...); nToWrite:= количество передаваемых байт
GetMem(DataPtr, nToWrite);
... заполняем буфер данными ...
WriteFile (FComPortHandle, DataPtr'4, nToWrite, nWrite, nil);
Предыдущая << 1 .. 138 139 140 141 142 143 < 144 > 145 146 147 148 149 150 .. 168 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

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

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

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

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