Статьи Королевства Дельфи


Часть V - часть 7


Последовательный канал передачи данных можно перевести в специальное состояние, называемое разрывом связи. При этом передача данных прекращается, а выходная линия переводится в состояние "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, если не требуется получать информацию о состоянии.




Начало  Назад  Вперед