Олег Титов - Работа с COM и LPT в Win32.
Название: | Работа с COM и LPT в Win32. | |
Автор: | Олег Титов | |
Жанр: | Самиздат, сетевая литература, Литература ХX века (эпоха Социальных революций), Windows, Системное программирование, Windows API | |
Изадано в серии: | неизвестно | |
Издательство: | неизвестно | |
Год издания: | - | |
ISBN: | неизвестно | |
Отзывы: | Комментировать | |
Рейтинг: | ||
Поделись книгой с друзьями! Помощь сайту: донат на оплату сервера |
Краткое содержание книги "Работа с COM и LPT в Win32."
Аннотация к этой книге отсутствует.
Читаем онлайн "Работа с COM и LPT в Win32.". [Страница - 5]
○ fInX, fOutX устанавливаются в TRUE
○ fOutXDsrFlow,fOutXCtsFlow устанавливаются в FALSE
○ fDtrControl устанавливается в DTR_CONTROL_ENABLE
○ fRtsControl устанавливается в RTS_CONTROL_ENABLE
• Для строк вида 9600,n,8,1,p (заканчивающихся символом p):
○ fInX, fOutX устанавливаются в FALSE
○ fOutXDsrFlow,fOutXCtsFlow устанавливаются TRUE
○ fDtrControl устанавливается в DTR_CONTROL_HANDSHAKE
○ fRtsControl устанавливается в RTS_CONTROL_HANDSHAKE
Следует заметить, что функция BuildCommDCB только заполняет поля DCB указанными значениями. Это подготовительный шаг к конфигурированию порта, но не само конфигурирование, которое выполняется рассматриваемыми далее функциями. Поэтому Вы можете вызвать BuildCommDCB для общего заполнения структуры DCB, затем изменить значения не устраивающих Вас полей, и после этого вызывать функцию конфигурирования порта.
Заполнить DCB можно еще одним способом. Вызовом функции GetCommState. Эта функция заполняет DCB информацией о текущем состоянии устройства, точнее о его настройках. Вот как она выглядит:
BOOL GetCommState(HANDLE hFile, LPDCB lpDCB);
Функция очень проста и имеет всего два параметра:
hFile
Описатель открытого файла коммуникационного порта. Этот описатель возвращается функцией CreateFile. Следовательно, прежде чем получить параметры порта, Вы должны его открыть. Для функции BuildCommDCB это не требовалось.
lpDCB
Указатель на DCB. Для DCB должен быть выделен блок памяти.
При успешном завершении функция возвращает ненулевое значение. При ошибке нуль. Получить параметры порта можно в любой момент, а не только при начальной настройке.
Заполнив DCB можно приступать к собственно конфигурированию порта. Это делается с помощью функции SetCommState:
BOOL SetCommState(HANDLE hFile, LPDCB lpDCB);
Эта функция имеет точно такие же параметры, как GetCommState. Различается только направление передачи информации. GetCommState считывает информацию из внутренних управляющих структур и регистров порта, а SetCommState наоборот заносит ее. Следует быть осторожным при вызове функции SetCommState, поскольку она изменит параметры даже в том случае, если очереди приема/передачи не пусты, что может вызвать искажение потока передаваемых или принимаемых данных.
Еще одна тонкость этой функции заключется в том, что она завершится с ошибкой, если поля XonChar и XoffChar в DCB содержат одинаковые значения.
Как всегда, в случае успешного завершения возвращается отличное от нуля значение, а в случае ошибки – нуль.
Следующей важной управляющей структурой является COMMTIMEOUTS. Она определяет параметры временных задержек при приеме и передаче. Значения, задаваемые полями этой структуры, оказывают большое влияние на работу функций чтения/записи.
typedef struct _COMMTIMEOUTS {
DWORD ReadIntervalTimeout;
DWORD ReadTotalTimeoutMultiplier;
DWORD ReadTotalTimeoutConstant;
DWORD WriteTotalTimeoutMultiplier;
DWORD WriteTotalTimeoutConstant;
} COMMTIMEOUTS,*LPCOMMTIMEOUTS;
Поля структуры COMMTIMEOUTS имеют следующие значения:
ReadIntervalTimeout
Максимальное время, в миллисекундах, допустимое между двумя последовательными символами считываемыми с коммуникационной линии. Во время операции чтения временной период начинает отсчитываться с момента приема первого символа. Если интервал между двумя последовательными символами превысит заданое значение, операция чтения завершается и все данные, накопленые в буфере, передаются в программу. Нулевое значение данного поля означает, что данный тайм-аут не используется. Значение MAXDWORD, вместе с нулевыми значениями полей ReadTotalTimeoutConstant и ReadTotalTimeoutMultiplier, означает немедленный возврат из операции чтения с передачей уже принятого символа, даже если ни одного символа не было получено из линии.
ReadTotalTimeoutMultiplier
Задает множитель, в миллисекундах, используемый для вычисления общего тайм-аута операции чтения. Для каждой операции чтения данное значение умножается на количество запрошеных для чтения символов.
ReadTotalTimeoutConstant
Задает константу, в миллисекундах, используемую для вычисления общего тайм-аута операции чтения. Для каждой операции чтения данное значение прибавляется к результату умножения ReadTotalTimeoutMultiplier на количество запрошеных для чтения символов. Нулевое значение полей ReadTotalTimeoutMultiplier и ReadTotalTimeoutConstant означает, что общий тайм-аут для операции чтения не используется.
WriteTotalTimeoutMultiplier
Задает множитель, в миллисекундах, используемый для вычисления общего тайм-аута операции записи. Для каждой операции записи данное значение умножается на количество записываемых символов.
--">Книги схожие с «Работа с COM и LPT в Win32.» по жанру, серии, автору или названию:
Сергей Александрович Садов - Ответ (Баймер) (СИ) Жанр: Самиздат, сетевая литература Год издания: 2006 |
Другие книги автора «Олег Титов»:
Олег Титов, Александр Геннадьевич Бачило, Тим Скоренко и др. - Яблони на Марсе (сборник) Жанр: Научная Фантастика Год издания: 2012 Серия: Научная фантастика |
Татьяна Сергеевна Леванова, Ольга Цветкова, Олег Титов и др. - Мю Цефея. Шторм и штиль Жанр: Приключения Год издания: 2019 Серия: Антология фантастики |