Data Carrier Detect ( DCD ) или Carrier Detect ( CD ) — это управляющий сигнал, присутствующий внутри последовательного коммуникационного кабеля RS-232 , который идет между компьютером и другим устройством, таким как модем . Этот сигнал представляет собой простой бит состояния «высокий/низкий» , который отправляется с оборудования передачи данных (DCE) на терминальное оборудование данных (DTE), т. е. с модема или другого периферийного устройства на компьютер в типичном сценарии. Он присутствует практически на всех последовательных портах ПК — на контакте 1 девятиконтактного ( DE9 ) последовательного порта или на контакте восемь 25-контактного (DB25) порта. Его назначение зависит от подключенного устройства, но наиболее конкретное значение — указать, когда модем подключен к другому удаленному модему через телефонные линии.
Слово «носитель» относится к аналоговому сигналу- носителю , который генерируется модемом и модулируется для передачи данных. На модеме данных потеря носителя равносильна прекращению соединения.
Подобно сигналу индикатора звонка на последовательном порту ПК, изменения состояния сигнала DCD могут генерировать аппаратное прерывание , которое может быть перехвачено процессором в любое время при изменении состояния сигнала DCD, избавляя ПК от необходимости постоянного опроса контакта.
DCD очень важен для модемов, так как это основной способ компьютера узнать, что модем потерял соединение с удаленным хостом. Помимо преднамеренных отключений, модемы могут неожиданно потерять соединение по разным причинам, например, из-за отключения телефонной линии. Можно использовать модем без сигнала DCD, однако единственный способ для компьютера узнать, что соединение отключено, — это передать модемом слова « NO CARRIER » по линиям передачи данных. Поскольку слова «NO CARRIER» также являются сообщением, которое может появиться в контексте обычного сеанса передачи данных (например, если их набирает человек на удаленном конце), нет положительного способа для компьютерной программы различать слова, отправляемые по соединению, и слова, отправляемые с модема.
Внешние модемы со светодиодными индикаторами состояния обычно имеют индикатор с надписью "CD" ( обнаружение несущей ). Этот индикатор состояния напрямую связан с тем, что модем посылает по линии DCD.
По умолчанию, когда модем включен, сигнал DCD не подтверждается. Он не подтверждается, пока модем не сделает исходящий вызов или не ответит на входящий вызов, а затем не подключится к модему данных на другом конце. Сигнал подтверждается в то же время, когда модем сообщает свое сообщение CONNECT, и остается подтвержденным, пока вызов не будет отключен (намеренно или из-за неисправности на линии). DCD отключается, как только локальный модем больше не получает несущую от удаленного модема, независимо от того, какая сторона инициировала отключение. Пока сигнал DCD высокий, компьютер может предположить, что любые данные, поступающие от модема, были отправлены с удаленной стороны.
Практически все новые модемы позволяют настраивать поведение сигнала DCD. Типичные доступные опции включают «всегда подтверждать DCD», «подтверждать DCD только при подключении» и «всегда подтверждать DCD, кроме как сразу после обнаружения отключения».
Значение DCD отличается, когда модем находится в режимах факса или голоса . В этих режимах его важность уменьшается. [ как? ]
Часто последовательный порт используется для прямого соединения компьютера с компьютером. Для этого требуется адаптер, называемый нуль-модемом , который на самом деле не является модемом в традиционном смысле, а представляет собой разъем, который просто скрещивает комплементарные контакты на двух последовательных портах, чтобы обе стороны могли общаться. Нуль-модем обычно соединяет выход DTR каждого компьютера с входами DCD и DSR другого.
При использовании в этом сценарии DCD используется для простого обнаружения присутствия и/или готовности другой стороны начать сеанс. Например, на ПК с Windows выход DTR сохраняется на низком уровне до тех пор, пока не будет запущена некоторая программа для доступа к последовательному порту и повышения уровня сигнала DTR. Удаленная сторона воспримет это как повышение уровня входа DCD. Некоторое оборудование распознает только переход как начало сеанса. Другое оборудование (например, консольный порт маршрутизатора ) может ожидать передачи символов, [ необходимо разъяснение ], но высокий уровень сигнала DCD по-прежнему является предпосылкой для каждой коммуникации. [ необходимо разъяснение ]
Последовательный вывод DCD можно использовать для точного обнаружения сигнала PPS , как описано в RFC 2783: [1]
Одним из удобных способов подачи сигнала PPS в компьютерную систему является подключение этого сигнала к выводу управления модемом на последовательном интерфейсе компьютера. Для этой цели часто используется вывод обнаружения несущей (DCD). Обычно выходной сигнал временного кода источника времени передается на компьютер по той же последовательной линии. Компьютер обнаруживает переход сигнала на выводе DCD, обычно путем получения прерывания, и записывает временную метку как можно скорее.
В Linux каждый последовательный порт ссылается на два имени устройства - одно из них (для первого последовательного порта) /dev/ttyS0
против /dev/cua0
. Хотя они оба ссылаются на один и тот же физический порт, одно важное различие между тем, как Linux обрабатывает эти два имени устройств, связано с линией DCD. Когда ttyS0 ожидает в системном вызове , Linux предполагает, что поскольку это устройство предназначено для приема телефонных звонков, он переведет процесс в спящий режим - полагая, что пока DCD низкий, делать нечего. Когда используется cua0 - как при совершении телефонных звонков - Linux предполагает, что программному обеспечению необходимо получить доступ к порту, пока DCD низкий, для набора номера, поэтому такое блокирующее поведение не существует. Тем не менее, есть флаг режима управления , называемый CLOCAL, который фактически активирует или деактивирует это поведение, и по умолчанию флаг установлен для cua0, но не для ttyS0. Приложение, которое настаивает на использовании порта «tty» вместо порта «cua», является примером приложения, которому может потребоваться перемычка для принудительного перевода DCD в высокий уровень для правильной работы. [2]