Режимы команд и данных (модем)


Из Википедии, свободной энциклопедии
  (Перенаправлено из режима данных (модем) )
Перейти к навигации Перейти к поиску

Режимы команд и данных относятся к двум режимам, в которых может работать компьютерный модем . Эти режимы определены в наборе команд Hayes , который является стандартом де-факто для всех модемов. Эти режимы существуют, потому что существует только один канал связи между модемом и компьютером, который должен передавать модему как команды компьютера, так и данные, которые модем должен передавать удаленной стороне по телефонной линии.

Когда модем находится в командном режиме , любые отправленные ему символы интерпретируются как команды для выполнения модемом в соответствии с набором команд Hayes . Команде предшествуют буквы «АТ», что означает «Внимание». Например, если модем получает «ATDT5551212» в командном режиме, он интерпретирует это как указание набрать на телефоне цифры 5551212 с помощью тонального набора. Находясь в командном режиме, модем может отправлять ответы обратно на компьютер, указывая результат выполнения команды. Например, модем может ответить словом «BUSY» в ответ на команду ATDT, если он слышит сигнал «занято» после набора номера и настроен на прослушивание сигналов «занято».

Любая связь в командном режиме (в обоих направлениях) завершается возвратом каретки .

Когда модем находится в режиме данных , любые символы, отправляемые на модем, предназначены для передачи удаленной стороне. Модем переходит в режим передачи данных сразу после установления соединения. Например, если ATDT5551212 привел к телефонному звонку, на который ответил модем другого компьютера, модем сообщит слово «CONNECT» и затем переключится в режим передачи данных. Любые дальнейшие символы, полученные по последовательному каналу, считаются исходящими от удаленной стороны, и все отправленные символы передаются удаленной стороне.

Когда модем с поддержкой голоса находится в режиме «голосовые данные», любые данные, отправляемые на модем, интерпретируются как аудиоданные для воспроизведения по телефонной линии, а не как байты символов для цифровой передачи другой стороне.

Переключение между режимами

Модемы всегда запускаются в командном режиме при включении питания. Вот как модем может переключиться в режим данных:

  • После успешного исходящего соединения в ответ на команду набора номера «ATD», в которой модем достигает другого модема.
  • После ответа на звонок командой ответа "АТА", если на другом конце находится другой модем.
  • После автоматического ответа на звонок по какой-то заранее настроенной причине (например, автоответчика) и подключения к другому модему. (Почти все модемы поддерживают автоматический ответ при получении команды «ATS0=1».)
  • После получения команды «ATO» (это три буквы AT-Oh, а не AT-zero) после возврата в командный режим с помощью управляющей последовательности (см. ниже).
  • В ответ на аналогичные команды набора номера или соединения для факсимильной или голосовой связи.

Модемы переключаются обратно в командный режим из режима данных по следующим причинам:

  • Соединение прервалось (например, другой абонент повесил трубку).
  • Компьютер выдал команду выхода, которая обычно представляет собой 1-секундную паузу, затем три символа «+++», затем еще 1-секундную паузу. Соединение сохраняется, но модем может принимать команды, например "ATH" для завершения соединения. Компьютер может подать команду «ATO», чтобы вернуться в режим данных.
  • Компьютер проинструктировал модем завершить вызов, установив вывод готовности терминала данных (DTR) в состояние «выключено». (Обычно именно так в настоящее время компьютеры вызывают завершение модемного вызова - управляющая последовательность +++ используется редко и обычно отключается, чтобы избежать сбоев в работе, если эти символы являются законной частью потока данных).

Практичное современное использование

Сегодня большинство модемов настроены с символами «&C1&D2» в строке инициализации или иным образом ведут себя по умолчанию. Это вызывает следующее поведение:

  • Модем использует контакт обнаружения несущей данных (DCD), чтобы сообщить, подключен ли он к хосту. Как правило, компьютер может просто прочитать вывод DCD в любое время и всегда знает, находится ли модем в режиме команд или данных. Высокий уровень DCD означает режим данных, а низкий уровень означает командный режим. DCD — это сигнал, посылаемый модемом на компьютер. (Обратите внимание, что DCD также остается высоким в командном режиме после escape-последовательности +++, но на практике программное обеспечение использует это так редко, если вообще использует, поэтому это не проблема.)
  • Модем интерпретирует контакт Data Terminal Ready (DTR) как сигнал от компьютера, чтобы узнать, когда он хочет завершить вызов. DTR - это сигнал от компьютера к модему. Компьютер постоянно поддерживает высокое значение DTR до тех пор, пока не захочет завершить вызов, после чего компьютер снижает значение DTR на секунду или две. Компьютер также поддерживает низкий уровень DTR, когда не запущены никакие программы, которые хотят использовать модем - это не позволяет модему отвечать на вызовы из-за автоматического ответа или других неожиданных или нежелательных действий. Компьютер может с уверенностью предположить, что после того, как DTR понизится на пару секунд, модем перейдет в командный режим.

Сообщения о выходе канала передачи данных (DLE)

При обычной коммутируемой передаче данных модемы входят в режим передачи данных только один раз — начиная с установления сеанса и заканчивая разъединением сеанса. Однако, когда модемы используются для факсимильной и голосовой (аудио) связи, они быстро переключаются между командным режимом и режимом данных несколько раз во время разговора. Это связано с тем, что роль модема меняется чаще - вместо того, чтобы просто передавать байты из точки А в точку Б, он либо согласовывает параметры и страницы с факсимильным аппаратом, либо переключается между режимами записи, паузы и воспроизведения звука.

В режимах факса и голосовых данных иногда происходят события, о которых модем хочет сообщить компьютеру независимо от того, находится ли он в командном режиме или в режиме данных. Примером такого события является нажатие вызывающим абонентом клавиши тонального набора в голосовом режиме. Другими распространенными внеполосными сообщениями являются уведомления от модема о том, что данные были потеряны из-за того, что компьютер отправляет данные либо слишком медленно, либо слишком быстро, или о том, что модем слышит неожиданный гудок на линии (что означает, что вызывающий абонент, вероятно, повесил трубку). ), или трубка добавочного номера была снята или повесили трубку.

Этот тип события сигнализируется сообщением DLE , которое представляет собой односимвольное сообщение, которому предшествует код Escape канала передачи данных. DLE — это символ, отправляемый с модема на компьютер, определение которого не связано ни с режимом команд, ни с режимом данных, и который использует специальный код ASCII (0x10), который никогда не встречается ни в каких AT-командах или ответах, поэтому его можно изолировать от поток команд/ответов только по этой причине. В этих режимах всякий раз, когда отправляется DLE (0x10), следующий за ним символ имеет особое значение, не связанное с командами и данными. Например, DLE, за которым следует цифра 2, означает, что вызывающий абонент нажал цифру 2 на клавиатуре своего телефона. Это может произойти как в режиме команд, так и в режиме данных, пока телефонная линия используется модемом, а кто-то находится на другом конце линии.

Символ DLE может появляться в факсимильных или аудиоданных. Чтобы избежать неправильной интерпретации байта данных 0x10 как DLE, используется «вставка битов». Stuffing — распространенная схема кодирования для модемов, используемая для экранирования символов в потоках. В данном случае заполнение означает, что два символа DLE подряд интерпретируются как один литеральный байт со значением 0x10.

DLE также слегка используется при обмене данными между компьютером и модемом. Одно конкретное событие DLE указывает на конец страницы факса или конец аудиофайла. Это событие возвращает модем обратно в командный режим. В отличие от стандартного коммутируемого режима передачи данных, сбрасывание DTR не является подходящим способом возобновления командного режима, поскольку зависание нежелательно, а escape-код с обязательными паузами также не подходит. Из-за этого буквальные 0x10 байт данных также удваиваются от компьютера к модему.

DLE никогда не используется в стандартных режимах передачи данных от модема к модему, таких как тот, который используется для коммутируемого доступа в Интернет, по крайней мере, самим модемом. В этих режимах DLE передается по строке так же, как и любой другой символ. DLE (и сообщения с экранированием DLE) используются модемом только для факсимильных и голосовых приложений, когда он специально переведен в факсимильный или голосовой режим.