Data Carrier Detect , сокращенно DCD или, альтернативно, Carrier Detect, сокращенно CD , представляет собой управляющий сигнал, присутствующий внутри последовательного коммуникационного кабеля RS-232, который проходит между компьютером и другим устройством, например модемом. Этот сигнал представляет собой простой бит состояния «высокий / низкий», который отправляется «от DCE к DTE» или, в типичном сценарии, от периферийного устройства к компьютеру. Он присутствует практически на всех последовательных портах ПК - контакт 1 девятиконтактного ( DE9) последовательный порт или контакт 8 через 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 по-прежнему является предварительным условием для каждого обмена данными. [ требуется разъяснение ]
PPS (Импульс в секунду) использование времени
Последовательный вывод DCD может использоваться для точного обнаружения сигнала PPS , как описано в RFC 2783: [1]
Одним из удобных способов подачи сигнала PPS в компьютерную систему является подключение этого сигнала к контакту управления модемом на интерфейсе последовательной линии с компьютером. Для этой цели часто используется контакт Data Carrier Detect (DCD). Обычно выходной сигнал временного кода источника времени передается в компьютер по той же последовательной линии. Компьютер обнаруживает переход сигнала на выводе DCD, обычно получая прерывание, и записывает временную метку как можно скорее.
Используется с другим оборудованием
В Linux на каждый последовательный порт ссылаются два имени устройства, одно из которых (для первого последовательного порта) /dev/ttyS0
или /dev/cua0
. Хотя оба они относятся к одному и тому же физическому порту, одно важное различие между тем, как Linux обращается с этими двумя именами устройств, связано с линией DCD. Когда ttyS0 ожидается в системном вызове , Linux предполагает, что, поскольку это устройство предназначено для приема телефонных вызовов, оно переводит процесс в спящий режим - полагая, что пока DCD низкий, делать нечего. Когда используется cua0 - как это происходит при телефонных звонках - Linux предполагает, что программному обеспечению необходим доступ к порту, в то время как DCD низкий для набора номера, поэтому такого поведения блокировки не существует. Тем не менее, есть флаг режима управления, называемый CLOCAL, который фактически активирует или деактивирует это поведение, и по умолчанию этот флаг установлен для cua0, но не для ttyS0. Приложение, которое настаивает на использовании порта «tty», а не порта «cua», является примером того, что для правильной работы может потребоваться перемычка, чтобы установить высокий уровень DCD. [2]
Рекомендации
- ^ Mogul, J .; Миллс, Д .; Brittenson, J .; Stone, J .; Уиндл, У. (март 2000 г.). «Введение» . API Pulse-Per-Second для UNIX-подобных операционных систем . IETF . п. 3. DOI : 10,17487 / RFC2783 . RFC 2783 .
- ^ Колдвелл, Чарльз Терминальные концепции в GNU / Linux. Архивировано 29 апреля 2008 г. на Wayback Machine.