COM-порт в Windows (программирование): различия между версиями

Содержимое удалено Содержимое добавлено
м орфография, пунктуация
Нет описания правки
Строка 336:
Предпоследний параметр '''dwFlagsAndAttributes''' должен быть равен 0.
После успешного открытия порта, данные могут быть считаны или записаны при помощи функций ReadFile() и WriteFile().
 
<source lang="cpp">
HANDLE port = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL,
Строка 346 ⟶ 347 :
printf("\nRead %d bytes",size);
</source>
Функция ReadFile/WriteFile осуществляет чтение/запись из файла (устройства) начиная с текущей позиции после окончания чтения обновляет указатель в файле.
 
<source lang="cpp">
BOOL ReadFile(
HANDLE hFile, // хендл файла
LPVOID lpBuffer, //указатель на буфер
DWORD nNumberOfBytesToRead, // размер данных
LPDWORD lpNumberOfBytesRead, //размер считанных данных
LPOVERLAPPED lpOverlapped //структура OVERLAPPED
);
</source>
 
Недостатком этого способа является то, что вызывая функцию ReadFile(), мы не знаем есть ли данные для чтения. Можно циклически проверять их наличие, но это приводит к дополнительным расходам времени ЦП.
Поэтому на практике часто удобней использовать асинхронный режим. Для этого при вызове функции CreateFile() параметр '''dwFlagsAndAttributes''' должен быть равен '''FILE_FLAG_OVERLAPPED'''.