- Каким образом происходит общение DTE с модемом?
Практически все телефонные модемы общего назначения имеют
унифицированный набор команд, предложенный и закрепленный фирмой
Hayes, по имени которой назван и сам набор. Другое название набора -
AT-набор (AT-set), поскольку большинство команд начинается с префикса
AT (ATtention - внимание). Ряд специализированных модемов имеет
собственные наборы команд, несовместимые с Hayes и между собой.
Различаются два основных режиме работы модема: режим команд и режим
данных. В первом режиме DTE передает модему команды и получает
сообщения, во втором модем прозрачно передает данные между DTE и
удаленным модемом.
В командном режиме процессор Hayes-модема постоянно следит за потоком
битов от DTE и пытается обнаружить сочетание "AT" или "at", переданное
на одной из допустимых скоростей. Как только такое сочетание
обнаружено - процессор фиксирует данную скорость и переходит в режим
ввода командной строки, записывая получаемые символы во внутренний
буфер, объем которого обычно равен 40 символам. Пробелы в командах
игнорируются, если это не оговорено особо для отдельных команд.
Неправильно набранные символы можно стирать символом "забоя" (по
умолчанию - BS, код 08 hex), однако префикс AT в буфер не заносится,
поэтому невозможно ни его стирание, ни отмена режима ввода командной
строки.
Командный режим модема изначально был ориентирован на ручной ввод
команд с простого терминала, поэтому способ ввода и структура команд
разработаны в "человеческой" форме. По той же причине модем в
командном режиме по умолчанию возвращает (эхо-режим) каждый полученный
от DTE символ, позволяя визуально контролировать правильность набора
команд. В режиме данных полученные символы по умолчанию не
возвращаются.
Большинство команд Hayes-модемов обозначаются буквой - "A", "P", или
символом с буквой - &C, %T. Команда может иметь параметр (обычно
числовой) - X1, &D2. Если числовой параметр опущен, он полагается
нулевым. Ряд команд имеет синтаксис, не подчиняющийся этим правилам.
В одной командной строке может быть записана как одна, так и несколько
команд; исключение составляют случаи, когда очередная команда приводит
к смене режимов, делающей следующие за ней команды бессмысленными.
Выполнение каждой команды происходит после завершения ее выделения из
командной строки и синтаксического разбора. В случае успешного
выполнения командной строки выдается сообщение OK; перед ним могут
быть выданы строки дополнительной информации, запрошенные введенными
командами. При обнаружении ошибки выдается сообщение ERROR и обработка
строки прекращается, но все предшествующие правильные команды к этому
моменту будут выполнены.
Примеры командных строк:
ATX
at&d1
at l1 m3 e1 &c
Каждая строка AT-команд завершается символом CR (код по умолчанию - 0D
hex, клавиша Enter). После получения CR процессор модема анализирует
командную строку и по возможности выполняет каждую команду в ней,
после чего выдает сообщение о подтверждении, ошибке или запрошенную
командами информацию. Диагностические сообщения Hayes-модемов по
умолчанию выдаются в текстовой форме, но могут выдаваться и в виде
трехзначных десятичных кодов.
AT-команды служат для получения сведений о состоянии модема, изменения
режимов его работы, набора номера, установки/завершения связи и
тестирования модема и линии. Для изменения основных параметров имеются
отдельные команды, прочие параметры хранятся в так называемых
S-регистрах, принимающих значения от 0 до 255. Значения S-регистров
могут использоваться как полностью, так и раздельно по полям и
отдельным битам. На самом деле все или большая часть параметров
хранятся в S-регистрах, а отдельные команды управления ими введены
исключительно для удобства.
За редкими исключениями, команды изменения состояния действуют только
на текущий набор параметров, теряющий свои значения при отключении или
сбросе модема. Содержимое текущего набора может быть записано в один
из сохраненных наборов в NVRAM; кроме этого, ряд команд может
непосредственно изменять содержимое NVRAM.
Кроме командных строк, начинающихся с AT, Hayes-модемы поддерживают
также команду "A/". Она повторяет последнюю введенную командную
строку; исполнение начинается сразу после получения символа "/", кода
CR не требуется.
При выполнении команд соединения (вызов, ответ, тестирование)
происходит соединение модемов и переход в режим данных, сопровождаемый
выдачей сообщения CONNECT. В режиме данных все поступающие символы
прозрачно пересылаются модемом. Исключение составляет так называемая
Escape-последовательность из трех одинаковых символов (по умолчанию -
"+"), перед и после которой должны быть выдержаны охранные интервалы
(по умолчанию - 1 сек). При получении такой последовательности модем
переходит в командный режим, не разрывая соединения; впоследствии
можно как вернуться в режим данных, так и разорвать соединение любой
из подходящих команд.
[ К списку статей ]
[ К оглавлению FAQ ]
Как устроен интерфейс модема и DTE?
Какие основные команды используются в Hayes-модемах?