Последовательный канал передачи данных можно
Последовательный канал передачи данных можно перевести в специальное состояние, называемое разрывом связи. При этом передача данных прекращается, а выходная линия переводится в состояние "0". Приемник, обнаружив, что за время необходимое для передачи стартового бита, битов данных, бита четности и стоповых битов, приемная линия ни разу не перешла в состояние "1", так же фиксирует у себя состояние разрыва. BOOL SetCommBreak( HANDLE hFile ); BOOL ClearCommBreak( HANDLE hFile );
Следует заметить, что состояние разрыва линии устанавливается аппаратно. Поэтому нет другого способа возобновить прерваную, с помощью SetCommBreak, передачу данных, кроме вызова ClearCommBreak.
Более тонкое управление потоком данным позволяет осуществить функция: BOOL EscapeCommFunction( HANDLE hFile, DWORD dwFunc ); Выполняемое действие определяется вторым параметром, который может принимать одно из следующих значений:
- CLRDTR Сбрасывает сигнал DTR
- CLRRTS Сбрасывает сигнал RTS
- SETDTR Устанавливет сигнал DTR
- SETRTS Устанавливает сигнал RTS
- SETXOFF Симулирует прием символа XOFF
- SETXON Симулирует прием символа XON
- SETBREAK Переводит выходную линию передатчика в состояние разрыва. SetCommBreak является упрощенной формой данного вызова.
- CLRBREAK Снимает состояние разрыва для выходной линии передатчика. ClearCommBreak является упрощенной формой данного вызова.
Приостановить прием/передачу данных может и возникновение любой ошибки при установленом в TRUE поле fAbortOnError в структуре DCB использованой для настройки режимов работы коммуникационного порта. В этом случае, для восстановления нормальной работы порта, следует использовать функцию: BOOL ClearCommError( HANDLE hFile, LPDWORD lpErrors, LPCOMSTAT lpStat );
Эта функция не только сбрасывает признак ошибки для соответсвующего порта, но и возвращает более подробную информацию об ошибке. Кроме того, возможно получение информации о текущем состоянии порта. Вот что означают параметры:
hFile Описатель открытого файла коммуникационного порта.
lpErrors Адрес переменной, в которую заносится информация об ошибке. В этой переменной могут быть установлены один или несколько из следующих бит:
- CE_BREAK Обнаружено состояние разрыва связи
- CE_DNS Только для Windows95. Параллельное устройство не выбрано.
- CE_FRAME Ошибка обрамления.
- CE_IOE Ошибка ввода-вывода при работе с портом
- CE_MODE Запрошеный режим не поддерживается, или неверный описатель hFile. Если данный бит установлен, то значение остальных бит не имеет значение.
- CE_OOP Только для Windows95. Для параллельного порта установлен сигнал "нет бумаги".
- CE_OVERRUN Ошибка перебега (переполнение аппаратного буфера), следующий символ потерян.
- CE_PTO Только для Windows95. Тайм-аут на параллельном порту.
- CE_RXOVER Переполнение приемного буфера или принят символ после символа конца файла (EOF)
- CE_RXPARITY Ошибка четности
- CE_TXFULL Переполнение буфера передачи
lpStat Адрес структуры COMMSTAT. Должен быть указан, или адрес выделенного блока памяти, или NULL, если не требуется получать информацию о состоянии.
Содержание Назад Вперед