Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых

Модемы и факс-модемы. Программирование для MS-DOS и Windows.

© Александр Фролов, Григорий Фролов
Том 16, М.: Диалог-МИФИ, 1993.

[Назад] [Содеожание] [Дальше]

2.5. Управление модемами

Модем может работать в двух основных режимах - командном режиме и режиме обмена данными. В режиме обмена данными он может принимать и передавать данные между компьютером и удаленным модемом. При этом компьютер принимает и передает данные от модема через асинхронный порт (COM-порт), на котором установлен модем.

В командном режиме вы можете передавать с вашего компьютера модему команды, управляющие его работой. Компьютер передает модему команды через COM-порт точно так же, как данные для обмена с удаленным модемом.

При помощи команд вы можете изменять характеристики обмена данными, изменять условия связи, записывать и считывать данные из внутренних регистров модема. В этих регистрах хранятся различные числовые параметры, определяющие временные и некоторые другие характеристики работы модема. В командном режиме вы можете заставить модем набрать номер и связаться с другим модемом, принять вызов от удаленного модема.

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

При удавшейся попытке установления связи с другим модемом он автоматически переходит в режим передачи данных

При выполнении модемом процедур самотестирования.

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

После неудачной попытки связаться с удаленным модемом, например, когда модемы не смогли согласовать общий протокол обмена данными. Обычно это происходит при плохом качестве связи

При потере несущей во время передачи данных. Причиной потери несущей может служить плохое качество связи, повреждение линии связи, "зависание" удаленного компьютера

При поступлении модему от компьютера команды в момент набора модемом номера

При передаче от компьютера модему специальной Escape-последовательности.

2.5.1. Система команд hayes-модемов

После выпуска американской фирмой Hayes модемов серии Smartmodem система команд, использованная в ней, стала стандартом, которого стали придерживаться остальные разработчики модемов. Система команд, примененная в этих модемах, носит название hayes-команд, или AT-команд.

Со времени выпуска первых AT-совместимых модемов набор их команд дополнился и стал называться расширенным набором AT-команд.

Мы рассмотрим наиболее важные команды расширенного набора AT-команд. Затем изучим новые команды, применяемые в модемах с аппаратной коррекцией ошибок и сжатием передаваемой информации.

Модемы разных фирм могут поддерживать различные модификации наборов AT-команд. Поэтому дополнительно к этому разделу полезно подробно ознакомиться с документацией вашего модема.

Расширенный набор AT-команд

Все команды, передаваемые компьютером модему, начинаются префиксом AT (ATtention - внимание) и заканчиваются символом возврата каретки (). Исключение составляют только команда A/ и Escape-последовательность +++. Они не требуют для себя префикса AT.

После префикса AT могут идти одна или сразу несколько команд. Команды могут быть отделены друг от друга символами пробела, тире, скобками. Эти символы не несут для модема никакой смысловой нагрузки и просто игнорируются.

В большинстве случаев команды могут быть написаны как заглавными, так и строчными буквами.

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

Если вы допустили ошибку при наборе команды, можно удалить последний символ из буфера модема, передав ему код возврата ().

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

Теперь приведем описание расширенной системы команд hayes-модемов. Для каждой команды дано ее краткое описание и рекомендации по использованию. Маленький символ n, расположенный в команде, означает число. Значения, принимаемые переменной n зависят от конкретной команды. Символ r, встречающийся в описании команды S, означает номер регистра модема.

У разных моделей модемов наборы AT-команд имеют свои особенности, поэтому все команды полностью описаны только в документации на конкретную модель модема.

Префикс AT

AT - начало (префикс) командной строки. После получения этой команды модем автоматически подстраивает скорость передачи и формат данных к параметрам компьютера.

Ответ на вызов удаленного модема (команда A)

A - Команда заставляет модем снять трубку, подключиться к телефонной линии и ответить на вызов удаленного модема.

Данная команда особенно полезна, если режим автоматического ответа выключен (регистр S0 = 0). Она позволяет оператору ответить на телефонный вызов.

Команду можно использовать, если вы сами позвонили абоненту, и после обычного телефонного разговора желаете передать данные, не разрывая связи.

Повтор последней введенной команды (команда A/)

A/ - модем повторяет последнюю введенную команду. Команда передается модему без префикса AT и исполняется модемом немедленно, не ожидая прихода символа возврата каретки . Если вы передадите модему строку AT A/ , то модем укажет на ошибку и вернет компьютеру слово ERROR.

Выбор протокола обмена данными (команда B)

Bn - команда производит выбор стандарта, согласно которому будет происходить обмен данными между модемами. При скорости передачи 300 бит/с происходит выбор между стандартами BELL 103 и CCITT V.21, при скорости 1200 бит/с - между BELL 212A и CCITT V.22 bis.

B0 команда указывает модему на необходимость проводить сеанс связи в соответствии с рекомендациями CCITT V.21/V.22.

B1 команда дает указания модему проводить сеанс связи в соответствии с рекомендациями BELL 103/212A.

При скорости 2400 бит/с и выше команда игнорируется и используется соответствующий стандарт (например, для скорости 2400 бит/с модем будет работать в соответствии с рекомендацией CCITT V.22).

Управление несущей частотой (команда C)

По команде C0 модем прекращает передачу несущей частоты. Команда C1 восстанавливает передачу несущей частоты. Данная команда поддерживается не всеми модемами.

Вызов абонента (команда D)

D[номер] - команда используется для набора номера. После получения этой команды модем снимает трубку, подключается к телефонной линии и начинает набор номера. Набрав номер, модем ожидает пока удаленный модем снимет трубку и затем пытается установить связь.

После установления связи модем переходит в режим передачи данных. Команда состоит из префикса AT, символа D и телефонного номера, в состав которого могут входить следующие управляющие модификаторы:

Модификатор

Назначение

P или T

Эти модификаторы производят выбор между импульсной и тоновой системой набора номера. Импульсная система означает, что цифры телефонного номера, идущие после символа P, модем должен набирать импульсами (символы 0..9). Тоновая система означает, что цифры телефонного номера, идущие после символа T, модем должен набирать частотными сигналами (разрешено использовать символы 0..9, A..D,* ,#). В нашей стране используется импульсная система набора номера. Если вы будете использовать префикс T, то АТС не сможет вас соединить

,

Символ запятой может быть расположен в любом месте команды и вызывает паузу перед набором оставшейся части номера. Длительность паузы определяется значением регистра модема S8. По умолчанию задержка составляет две секунды

;

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

@

Модем ожидает пятисекундной тишины на линии в течение заданного промежутка времени. Промежуток времени, в течение которого модем ожидает тишины, задается в регистре S7. Если в течение этого времени паузы тишины не было, модем отключается и отвечает NO ANSWER.

!

Если знак ! стоит перед знаками последовательности набора, модем кладет трубку на 0,5 секунды, а затем снова снимает ее

S

Модем набирает телефонный номер, записанный в его памяти. Эта команда выполняется только для модемов, имеющих встроенную энергонезависимую память и возможность записи в нее номеров телефонов. Для записи номера в энергонезависимую память модему предназначена команда &Z

R

После набора номера переводит модем из режима вызова в режим ответа. Этот модификатор должен находиться в конце набираемого номера

W

Перед дальнейшим набором телефонного номера модем ожидает длинный гудок из линии. Время ожидания гудка определяется значением регистра S7 и по умолчанию составляет 30 секунд. Если в отведенное время гудок не появился, модем прекращает набор номера и возвращает сообщение NO DIALTONE. Этот параметр может быть полезен при наборе междугородных номеров

Следующая команда набирает номер 111-22-33, используя импульсную систему набора, и пытается установить связь с модемом на другом конце телефонного номера:

ATDP 111 22 33

Модем снимет трубку. Если на линии нет гудка, например, вы сняли трубку параллельного телефона, модем возвращает сообщение NO DIALTONE. В том случае, если номер занят, модем вернет сообщение BUSY. Если на другом конце линии не отвечают, возвращается сообщение NO ANSWER. В случае успешного соединения с удаленным модемом, он вернет сообщение CONNECT и переключится из командного режима в режим обмена данными.

Команду вызова абонента можно использовать для переключения из обычного телефонного разговора в режим передачи данных модемом. Для этого, окончив телефонный разговор, абоненты должны, не вешая трубок, запустить на своих компьютерах телекоммуникационные программы. Затем на одном компьютере надо набрать команду ATA , а на другом ATD . После этого модемы подключатся к линии и установят связь. 1

Управление эхо-выводом команд (команда E)

Команда En управляет эхо-выводом символов, передаваемых модему. После команды E1 модем возвращает каждый знак, передаваемый ему, обратно компьютеру, что позволяет проверить, как работает связь модема и компьютера. Команда E0 или просто E запрещает эхо-вывод.

Выбор стандарта связи (команда F)

Команда Fn предназначена для переключения между дуплексным и полудуплексным режимами. При n = 0 модем переходит в полудуплексный режим, а при n = 1 - в дуплексный.

Команда F имеет расширенный формат для современных высокоскоростных модемов и используется для выбора рекомендации CCITT, в соответствии с которой модем будет передавать данные. Более подробную информацию вы сможете получить из документации на ваш модем.

Управление телефонной линией (команда H)

Команда Hn используется для управления телефонной линией. По команде H0, или просто H, модем вешает трубку и отключается от линии. Обычно команда H0 используется для разрыва связи с удаленным модемом. Сначала модем переводят из режима передачи данных в командный режим, а затем передают ему команду ATH0 .

Для перевода модема из режима передачи данных в командный режим модему необходимо передать Escape-последовательность "+++".

По команде H1 модем снимает трубку и подключается к линии. Эта модификация команды H используется крайне редко.

Выдача идентификационного кода модема (команда I)

Команда In выдает различную справочную информацию о модеме. Различные модемы поддерживают команду I для разных значений n. Если указать номер n больший, чем распознает модем, он возвращает ответ OK или ERROR.

I0, I модем сообщает свой идентификационный код,

I1 модем проводит подсчет контрольной суммы ROM (EPROM) и передает ее компьютеру,

I2 модем проверяет состояние внутренней памяти ROM и возвращает сообщение OK или CHECKSUM ERROR (ошибка контрольной суммы),

I3 выдается версия модема,

I4 модем передает компьютеру строку, определенную производителем,

I5 модем выдает код страны производителя,

I6 модем выдает код модели и код ревизии.

В следующей таблице мы привели справочную информацию, выдаваемую модемами Yokohama, Zoltrix и Smart - One - 2400, в ответ на передачу им команд ATI1-ATI8.

Команда

Ответ модема Yokohama 14400/14400

Ответ модема Zoltrix-1800

Ответ модема Smart - One - 2400

ATI, ATI0

14400</p>

<p>OK

248</p>

<p>OK

249</p>

<p>OK

ATI1

007</p>

<p>OK

000</p>

<p>OK

123</p>

<p>OK

ATI2

OK</p>

<p>OK

OK</p>

<p>OK

OK</p>

<p>OK

ATI3

CES-03 931216</p>

<p>OK

Sierra V4.04 - 09/28/1990</p>

<p>OK

OK</p>

<p>OK

ATI4

a007040284C6002F</p>

<p>bC60000000</p>

<p>r1005111151012000</p>

<p>r3000111170000000</p>

<p>OK

PAR-INT HYB-MAP SC11046   </p>

<p>*NO MNP * SENDFAX 4800 *</p>

<p>OK

OK</p>

<p>OK

ATI5

022</p>

<p>OK

4611</p>

<p>OK

OK</p>

<p>OK

ATI6

RC144DPi Rev CA</p>

<p>OK

OK

OK</p>

<p>OK

ATI7

ERROR

OK

OK</p>

<p>OK

OK Установка громкости внутреннего динамика (команда L)

Команда Ln управляет громкостью сигнала внутреннего динамика модема. L0 и L1 соответствует низкой громкости, L2 - средней и L3 - максимальной. Для некоторых модемов команда L3 не поддерживается.

Управление внутренним динамиком (команда M)

Команда Mn управляет внутренним динамиком модема. Команда M0 (M) полностью отключает динамик модема. По команде M1 динамик включается только во время набора номера и выключается после соединения с удаленным модемом (обнаружения несущей). По команде M2 динамик остается включен все время. По команде M3 динамик включается после набора последней цифры номера и выключается после обнаружения несущей отвечающего модема.

Команда позволяет выполнять звуковой контроль за процессом набора номера, соединения с удаленным модемом и обмена данными.

Управление ответом модема на AT-команды (команда Q)

Команда Qn управляет режимом ответа модема на AT-команды. Команда Q0 разрешает передачу ответа компьютеру, команда Q1 запрещает выдачу ответа. Независимо от команды Q модем всегда сообщает содержание регистров, свой идентификационный код, контрольную сумму памяти и результаты теста (команды S, I).

Перевод модема из командного режима в режим передачи данных (команда O)

Команда On переводит модем из командного режима в режим передачи данных. При этом модем отвечает CONNECT.

Команды О и О0 переводят модем в режим передачи данных. Инициирование последовательности сигналов проверки линии связи не выполняется. Команда может быть использована для того чтобы вернуть модем в режим передачи данных, после того как модему передали Escape-последовательность. Escape-последовательность переводит модем из режима передачи данных в командный режим. Связь с удаленным модемом при этом не разрывается.

Команда О1 переводит модем в режим передачи данных и заставляет его заново согласовать протоколы и стандарты связи с удаленным модемом.

Чтение и запись в регистры модема (команда S)

Команда S имеет два различных формата Sr? и Sr = n. Команда Sr? - производит чтение содержимого регистра модема, имеющего номер r. Команда Sr = n - записывает число n в регистр модема, имеющий номер r. Число n может принимать значения от 0 до 255.

Все AT-команды модифицируют содержимое одного или более S-регистров. Некоторые S-регистры содержат временные параметры, которые можно поменять только командой S. Наиболее интересным представляется регистр S0, позволяющий включить режим автоответа на вызов удаленного модема.

Например, чтобы перевести модем в режим автоответа, ему необходимо передать следующую команду:

ATS0=0

В ответ на денную команду, модем запишет в регистр S0 значение 0 и вернет компьютеру сообщение OK.

Выбор вида ответа модема на AT-команды (команда V)

Команда Vn производит выбор вида ответа модема на AT-команды. После того как модем получит команду V0, он возвращает компьютеру ответ цифровым кодом (например, 0, 1, 2), а после получения команды V1 модем отвечает в символьном виде на английском языке (например, CONNECT, BUSY, OK).

В некоторых случаях использование цифровой формы ответа облегчает обработку результатов выполнения команды при написании собственных программ управления модемом.

Цифровой код результата оканчивается символом перевода строки, а символьный код начинается и заканчивается символами перевода строки и возврата каретки.

Стандартный набор ответов модема

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

Ответ в символьном виде

Ответ цифровым кодом

Смысл

OK

0

Модем выполнил команду без ошибок

CONNECT

1

Модем установил связь со скоростью 300 bps (после выполнения команд X1, X2, X3, X4) или со скоростью 600, 1200, 2400 bps (после выполнения команды X0)

RING

2

Модем обнаружил сигнал звонка на телефонной линии. Это сообщение модем передает компьютеру каждый раз, когда по телефонной линии поступает сигнал вызова (звонок)

NO CARRIER

3

Модем потерял несущую частоту или не получил ответ от удаленного модема

ERROR

4

Ошибка в командной строке, командный буфер переполнен или ошибка в контрольной сумме (команда I2)

CONNECT 1200

5

Модем установил связь со скоростью 1200 bps, (см. команды X1, X2, X3, X4)

NO DIALTONE

6

Отсутствие сигнала станции при снятии трубки (см. команды X2, X4)

BUSY

7

Модем обнаружил сигнал "занято" после набора номера

NO ANSWER

8

Ответ получается в случае использования в командной строке управляющего символа @, если не выполнено условие пятисекундной тишины

CONNECT 600

9

Модем установил связь со скоростью 600 bps (см. команды X1, X2, X3, X4)

CONNECT 2400

10

Модем установил связь со скоростью 2400 bps (см. команды X1, X2, X3, X4)

Выбор набора сообщений модема (команда X)

Команда Xn определяет набор сообщений модема, управляет определением сигнала "занято" и проверкой наличия гудков на линии.

X, X0 сообщение модема об установлении связи при всех скоростях приводится в короткой форме - CONNECT. Номер набирается модемом после паузы вне зависимости от присутствия гудка на линии. Состояние "занято" не определяется.

X1 сообщение модема об установлении связи приводится в полной форме:

Сообщение

Скорость, bps

CONNECT

300

CONNECT 600

600

CONNECT 1200

1200

CONNECT 2400

2400

CONNECT nnnn

nnnn

Номер набирается модемом после паузы вне зависимости от присутствия гудка на линии. Состояние "занято" не определяется.

X2 сообщение модема об установлении связи приводится в полной форме. Номер набирается только при наличии гудка на линии. Состояние "занято" не определяется.

X3 сообщение модема об установлении связи приводится в полной форме. Номер набирается модемом после паузы вне зависимости от присутствия гудка на линии. Состояние "занято" определяется.

X4 сообщение модема об установлении связи приводится в полной форме. Номер набирается модемом после паузы при наличии гудка на линии. Состояние "занято" определяется.

Ниже приводится таблица с возможными сообщениями от модема для каждой X-команды:

Сообщение\
Команды

X0

X1

X2

X3

X4

Смысл

CONNECT

®

®

®

®

®

Соединение

RING

®

®

®

®

®

Пришел звонок

NO CARRIER

®

®

®

®

®

Потеря или неудачная попытка связи

ERROR

®

®

®

®

®

Ошибка в команде, неправильная команда

CONNECT nnnn
(
например, CONNECT 9600)

 

®

®

®

®

Соединение на скорости nnnn

NO DIALTONE

 

 

®

 

®

После снятия модемом телефонной трубки не обнаружен сигнал коммутатора (длинный гудок)

BUSY

 

 

 

®

®

Номер занят

NO ANSWER

 

 

®

®

®

При использовании команды @, модем не обнаружил пятисекундной паузы (тишины) на линии или вызываемый модем не отвечает

Если модему передали команду X2 или X4, то модем разрывает связь и кладет трубку, когда передающий модем переводит телефонную линию в состояние BREAK на 1,6 сек.

Выбор способа отключения модема от линии (команда Y)

Команда Yn определяет способ отключения модема от линии. Команда Y1 принуждает модем повесить трубку, если от удаленного модема получен сигнал BREAK протяженностью больше 16 секунд. Когда модем вешает трубку, он также будет посылать сигнал BREAK удаленному модему в течение 4 секунд.

Команда Y0 не разрешает модему прервать связь при получении длительного сигнала BREAK. Этот режим включен по умолчанию.

Сброс конфигурации модема (команда Z)

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

Некоторые модемы могут записать в энергонезависимую память несколько различных конфигураций. С помощью команды Z можно загрузить любую из сохраненных конфигураций. Для этого после символа Z необходимо указать номер конфигурации. Например, следующая команда загружает конфигурацию номер 1:

ATZ1

Escape-последовательность

Escape-последовательность +++ используется для перевода модема из режима передачи данных в командный режим. Благодаря этой команде можно перейти из режима передачи данных модемом в командный режим работы без разрыва связи. Модем требует тишины перед и после направления этой Escape-последовательности. Величина этого промежутка тишины определена в регистре S12. В заводской установке регистр S12 содержит значение 50, соответствующее 1 секунде. Десятичную величину знака ASCII, который является знаком последовательности выхода, содержит регистр S2 (в заводской установке S2 = 43, т.е. '+').

После того как модем перешел в командный режим, можно повесить трубку и разорвать сеанс связи. Для этого следует передать модему команду ATH0 .

Если вы перевели модем в командный режим, то чтобы изменить некоторые параметры связи вы можете переключить его обратно в режим передачи данных. Для этого можно передать модему команду ATO .

Управление сигналом DCD (команда &C)

Команда &Cn управляет сигналом DCD COM-порта компьютера (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). Сигнал DCD иногда также называют CD или RLSD.

Команда &C0 принудительно устанавливает сигнал DCD. По команде &C1 модем устанавливает сигнал DCD только тогда, когда модем обнаруживает несущую частоту от удаленного модема.

Управление сигналом DTR (команда &D)

Команда &Dn управляет сигналом DTR (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &D0 - модем игнорирует DTR. &D1 - при потере сигнала DTR модем переходит в командный режим работы. &D2 - при потере сигнала DTR модем прекращает связь, отключается от линии, отключает режим автоответа и переходит в командный режим работы. &D3 - при потере сигнала DTR автоматически сбрасывается конфигурация модема, как при выполнении команды ATZ. Модем обнаруживает потерю сигнала DTR, если сигнал DTR отсутствует дольше времени, определенного в регистре модема S25.

Установка конфигурации, записанной в постоянной памяти (команда &F)

Команда &F устанавливает конфигурацию, записанную в постоянной памяти модема. Для модемов, обладающих энергонезависимой памятью, команда &F загружает конфигурацию, записанную в энергонезависимой памяти.

Некоторые модемы могут записать в энергонезависимую память несколько различных конфигураций. С помощью команды &F можно загрузить любую из сохраненных конфигураций. Для этого после команды &F необходимо указать номер требуемой конфигурации.

Включение/выключение защитной частоты (команда &G)

Команда &Gn управляет передачей защитной частоты. Команда &G0 выключает защитную частоту, &G1 - включает защитную частоту 550 Hz, &G2 - модем генерирует защитную частоту 1800 Hz.

Использование данной команды зависит от особенностей телефонной линии и модема.

Управление потоком (команда &K)

Команда &Kn предназначена для выбора режима управления потоком между модемом и компьютером. Когда буфер модема заполняется почти полностью, модем либо передает компьютеру сигнал XOFF или отключает сигнал CTS. Это является сигналом, чтобы компьютер временно прекратил передачу данных модему. Когда модем передаст удаленному компьютеру все данные из своего буфера, и буфер станет практически пуст, модем передает компьютеру символ XON или устанавливает сигнал на линии CTS.

&K0 Запрещает управление потоком между компьютером и модемом.

&K3 Разрешает управление потоком между компьютером и модемом при помощи сигналов RTS/CTS.

&K4 Разрешает управление потоком между компьютером и модемом при помощи передачи символов XON/XOFF.

Ваш модем может поддерживать дополнительные значения параметра n. Для получения более подробной информации, обратитесь к документации вашего модема.

Выбор линии связи (команда &L)

Команда &Ln определяет вид линии связи. &L0 - передача по обычным телефонным линиям связи (выбрано по умолчанию), &L1 - передача по выделенным каналам связи.

Поскольку в большинстве случаев пользователи имеют доступ только к обычным телефонным линиям связи, мы не будем подробно рассматривать эту команду.

Установка асинхронного/синхронного режима работы (команда &M)

Команда &Mn предназначена для установки асинхронного или синхронного режима работы. При n = 0 устанавливается асинхронный режим; при n = 1, 2, 3 устанавливается синхронный режим.

Особенности использования данной команды вы можете посмотреть в описании модема. Некоторые модемы не поддерживают эту команду.

Установка импульсного коэффициента набора номера (команда &P)

Команда &Pn устанавливает импульсный коэффициент набора номера в соответствии с различными стандартами. &P0 - коэффициент заполнения замыкание/интервал 39/61 (американский стандарт), &P1 - коэффициент заполнения замыкание/интервал 33/67 (английский стандарт). В течение секунды модем может подать 10 импульсов.

Некоторые модемы поддерживают несколько значений импульсного коэффициента набора номера и могут передавать импульсы с большей частотой. Более подробно команда должна быть описана в документации вашего модема.

Управление сигналом CTS (команда &R)

Команда &Rn управляет сигналом CTS (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &R0 - сигнал CTS переходит в активное состояние после получения сигнала RTS. Данные, передаваемые модему до поступления сигнала RTS, игнорируются. &R1 - модем игнорирует RTS. Во время асинхронной передачи данных (команда &M0) сигнал CTS всегда активен. Особенности использования данной команды вы можете посмотреть в описании модема.

Управление сигналом DSR (команда &S)

Команда &Sn управляет сигналом DSR (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &S0 - сигнал DSR активен всегда, пока модем включен. &S1 - сигнал DSR активизируется только после окончания этапа установления связи между модемами (квитирования).

Тестирование модема (команда &T)

Команда &Tn используется для тестирования модема.

С помощью команды &T0 можно прервать выполнение теста модема в любой момент. Если модем выполняет локальный аналоговый тест или удаленный цифровой тест, то перед передачей команды &T0 надо с помощью Escape-последовательности перевести модем в командный режим.

По команде &T1 модем начинает выполнять локальный аналоговый тест. Продолжительность теста определяется регистром S18. В ходе локального аналогового теста проверяется и модем и компьютер (см. рис. 2.2).

Рис. 2.2. Локальный аналоговый тест

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

Рис. 2.3. Локальный цифровой тест

Команда &T4 дает согласие на начало удаленного цифрового теста, который запрашивает удаленный модем.

Команда &T5 не дает согласия удаленному модему на начало удаленного цифрового теста.

Команда &T6 вызывает выполнение удаленного цифрового теста (см. рис. 2.4). При этом происходит проверка локального компьютера, локального модема удаленного модема и линии связи:

Рис. 2.4. Удаленный цифровой тест

По команде &T7 модем выполняет удаленный цифровой тест с самодиагностикой (см. рис. 2.5). Модем сам генерирует тестовые сообщения и подсчитывает число ошибок.

Рис. 2.5. Удаленный цифровой тест

По команде &T8 производится локальный аналоговый тест с самодиагностикой (см. рис. 2.6). При этом модем сам генерирует тестовые сообщения и подсчитывает число ошибок.

Рис. 2.6. Локальный аналоговый тест с самодиагностикой

Чтение текущей конфигурации модема (команда &V)

По команде &V модем показывает свою текущую конфигурацию и телефонные номера, записанные в энергонезависимой памяти:

AT&V ACTIVE PROFILE: B1 E1 L1 M1 N1 Q0 T V1 W0 X4 Y0 &C1 &D0 &G0 &J0 &K3 &Q5 &R1 &S0 &T4 &X0 &Y0

S00:000 S01:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:050 S08:002 S09:006

S10:014 S11:095 S12:050 S18:000 S25:005 S26:001 S36:007 S37:000 S38:020 S44:020

S46:138 S48:007 S95:000

STORED PROFILE 0:

B1 E1 L1 M1 N1 Q0 T V1 W0 X4 Y0 &C1 &D0 &G0 &J0 &K3 &Q5 &R1 &S0 &T4 &X0

S00:000 S02:043 S06:002 S07:050 S08:002 S09:006 S10:014 S11:095 S12:050 S18:000

S36:007 S37:000 S40:105 S41:131 S46:138 S95:000

STORED PROFILE 1:

B1 E1 L1 M1 N1 Q0 T V1 W0 X4 Y0 &C1 &D0 &G0 &J0 &K3 &Q5 &R1 &S0 &T4 &X0

S00:000 S02:043 S06:002 S07:050 S08:002 S09:006 S10:014 S11:095 S12:050 S18:000

S36:007 S37:000 S40:105 S41:131 S46:138 S95:000

TELEPHONE NUMBERS:
0=123 45 67 1=987 65 43
2=102 93 84 3=564 73 82

Запись конфигурации модема в энергонезависимую память (команда &W)

По команде &W модем записывает свою текущую конфигурацию в энергонезависимую память. При сбросе модема будет загружена именно эта конфигурация.

Некоторые модемы могут записать в энергонезависимую память несколько различных конфигураций. С помощью команды &W можно сохранить текущую конфигурацию под собственным номером. Для этого после команды &W необходимо указать номер записываемой конфигурации.

Запись телефонного номера в энергонезависимую память (команда &Z)

Команда &Zn используется для записи телефонного номера в энергонезависимую память модема. Количество номеров, которое может запомнить модем, зависит от конкретной модели.

Например, для записи в энергонезависимую память номера 325-48-17 можно передать модему следующую команду:

AT &Z1 3254817

Для набора этого номера достаточно передать модему следующую команду:

AT DP S=1

2.5.2. Регистры модемов

Hayes-совместимые модемы имеют набор регистров, определяющих различные характеристики модема. Содержимое большинства этих регистров можно считывать и изменять программным способом. Как мы рассказали в предыдущей главе, для чтения и записи регистров модема можно использовать AT-команды ATSr? и ATSr = n, где r - номер регистра, а n - число, которое в него записывается.

Ниже мы даем описание 28 регистров модема. Для каждого регистра мы приводим его описание, диапазон возможных значений и значение, записываемое в него по умолчанию.

Современные высокоскоростные модемы с аппаратной реализацией протоколов коррекции ошибок и сжатия информации могут иметь значительно больше регистров, доступных через команды ATS. Их описание вы можете получить в документации на ваш модем.

Регистр S0

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

Если регистр S0 содержит нулевое значение, то режим автоответа выключен. Когда режим автоответа выключен и поступает вызов от удаленного абонента модем не станет отвечать. Чтобы снять трубку, надо передать модему команду ATA.

Содержимое регистра сохраняется в энергонезависимой памяти, если, конечно, она есть у вашего модема.

Регистр S1

Счетчик сигналов звонка. Значение регистра увеличивается каждый раз, когда модему поступает сигнал звонка из телефонной линии. По истечении восьми секунд с момента последнего звонка содержимое регистра сбрасывается. Значение регистра не сохраняется в энергонезависимой памяти.

Регистр S2

Данный регистр содержит ASCII-код Escape-символа, используемого в последовательности перехода в командный режим. Обычно он имеет значение 43, что соответствует ASCII символу '+'. Вы можете переопределить Escape-символ, записав в этот регистр ASCII-код другого символа.

Если записать в регистр S2 число, больше чем 127, происходит блокировка последовательности возврата. При этом вы не сможете переключиться из режима передачи данных в командный режим без потери связи с удаленным модемом. Содержимое регистра не сохраняется в энергонезависимой памяти.

Регистр S3

Регистр содержит ASCII-код символа возврата каретки - . По умолчанию регистр содержит ASCII-код 13. Вы можете переопределить этот символ, записав в регистр новое значение.

Содержимое регистра не сохраняется в энергонезависимой памяти. Это гарантирует, что после выключения питания вы снова сможете использовать символ с ASCII-кодом, равным 13, для ввода AT-команд.

Регистр S4

Регистр содержит ASCII-код символа перевода строки - . По умолчанию регистр содержит ASCII-код 10. Вы можете переопределить этот символ, записав в регистр другое значение. Содержимое регистра не сохраняется в энергонезависимой памяти.

Регистр S5

Регистр содержит ASCII-код символа возврата (возврат на один символ назад). По умолчанию регистр содержит ASCII-код 8. Вы можете переопределить этот символ, записав в регистр новое значение.

Заметим, однако, что если вы запишете в регистр ASCII-код от 31 до 127, то вы не сможете использовать символ с этим кодом в командном режиме. Содержимое регистра не сохраняется в энергонезависимой памяти.

Регистр S6

Определяет время в секундах, в течение которого при снятии трубки на линии должен появиться гудок. По умолчанию регистр содержит значение 2. В энергонезависимой памяти регистр не сохраняется.

Регистр S7

Определяет время в секундах после набора номера, в течение которого модем должен выполнить соединение (обнаружить несущую частоту от удаленного модема). По умолчанию регистр содержит значение 30. Если в течение этого времени модем установит связь, он выдает сообщение CONNECT согласно команде ATX. Если связь не будет установлена, модем отвечает NO CARRIER. В энергонезависимой памяти значение регистра не сохраняется.

Регистр S8

Содержит время задержки при наборе номера (в секундах), которая происходит по модификатору ',' команды ATD. По умолчанию время задержки две секунды. В энергонезависимой памяти регистр не сохраняется.

Регистр S9

Определяет время, в течение которого модем должен принимать несущую частоту от удаленного модема. Если несущая принималась в течение этого времени, модем передает компьютеру сигнал DCD. Содержимое регистра задает время в десятых долях секунды. По умолчанию для установки DCD модем должен принимать несущую 0,6 секунды, то есть регистр содержит число 6. В энергонезависимой памяти значение регистра не сохраняется.

Регистр S10

Определяет промежуток времени, в течение которого может отсутствовать несущая от удаленного модема и при этом не происходит разрыв связи.

Содержимое регистра задает время в десятых долях секунды. По умолчанию несущая частота может отсутствовать 0,7 секунды, то есть регистр содержит число 7. В энергонезависимой памяти значение регистра не сохраняется. Заметим, что значение регистра S10 должно быть больше значения регистра S9, иначе связь будет невозможно установить.

Регистр S11

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

Регистр S12

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

Промежуток времени между передачей модему символов Escape-последовательности ('+') не должен превышать задержку, определенную регистром S12.

Если вы не выдержали задержку перед или после передачи модему Escape-последовательности, или если промежуток времени между передачей отдельных символов Escape-последовательности превосходит эту задержку, то модем остается в режиме передачи данных.

Регистр S12 задает временной промежуток в 0,02 сотых секунды. По умолчанию регистр содержит 50.

Регистр S13

Регистр не используется.

Регистр S14

Теперь мы рассмотрим битовые регистры модемов. Вы можете использовать эти регистры для определения текущего состояния модема. Все они сохраняются в энергонезависимой памяти модема, если она установлена в модеме.

Регистр S14 определяет состояние модема. Рассмотрим отдельные биты этого регистра.

D0 Не используется

D1 Эхо-вывод. При D1 = 0 эхо-вывод символов, передаваемых модему не выполняется, при D1 = 1 выполняется. Этот бит управляется AT-командой E

D2 Управление ответом модема; при D2 = 0 вывод разрешен, при D2 = 1 - запрещен. Этот бит управляется AT-командой Q

D3 Управление формой ответа модема. Если данный бит равен нулю, ответ выполняется в сокращенной (цифровой) форме. В противном случае модем отвечает словами на английском языке. Этот бит управляется AT-командой V

D4 Не используется

D5 Система набора номера. При D4 = 0 модем использует тоновую систему, а при D4 = 1 - импульсную. Этот бит управляется модификаторами T и P AT-команды набора номера D

D6 Не используется

D7 Бит отражает текущее состояние модема. При D7 = 0 модем находится в состоянии ответа, а при D7 = 1 - в состоянии вызова другого модема

Регистр S15

Не используется.

Регистр S16

Параметры тестирования модема.

Регистр S17

Не используется.

Регистр S18

Данный регистр задает длительность теста модема в секундах. По окончании времени, определенным этим регистром тест автоматически завершается.

Если записать в регистр S18 нулевое значение, модем будет находиться в режиме тестирования до тех пор, пока ему не будет передана команда &T0.

Регистр S19

Не используется.

Регистр S20

Не используется.

Регистр S21

Регистр имеет различные форматы для модемов различных фирм-изготовителей.

D0 Тип используемого для телефонной линии разъема. Управляется командой &J

D1 Не используется

D2 Управление сигналами RTS/CTS. Этот бит управляется AT-командой &R

D3 Управление сигналом DTR. Управляется командой &D

D4 Управление сигналом DCD. Управляется командой &D

D5 Управление сигналом DSR. Управляется командой &C

D6 Управление режимом разрыва связи по тайм-ауту (по истечении лимита времени при потере несущей). Управляется командой &S

D7 Не используется

Регистр S22

Регистр управляет выбором набора ответов модема и динамиком.

D1 D0 Эти биты устанавливают уровень громкости на встроенном динамике модема. Для изменения этих битов можно воспользоваться командой L 00 - не используется; 01 - низкий уровень громкости; 10 - средний уровень громкости; 11 - высокий уровень громкости

D3 D2 Управление динамиком. Для изменения этих битов можно воспользоваться командой M 00 - динамик отключен все время; 01 - динамик включен до момента определения несущей; 10 - динамик включен все время; 11 - динамик включается после набора номера до определения несущей

D6-D4 Данные биты определяют набор ответов, используемых модемом: 000 - набор соответствует команде X0; 100 - набор соответствует команде X1; 101 - набор соответствует команде X2; 110 - набор соответствует команде X3; 111 - набор соответствует команде X4

D7 Не используется

Регистр S23

Регистр определяет различные параметры модема:

D0 Управление удаленным тестированием модема. D0 = 0 - тестирование запрещено. D0 = 1 тестирование разрешено

D3 D2 D1 Отражает скорость передачи данных модемом: 000 - скорость 0..300 бит/с; 001 - скорость 600 бит/с; 010 - скорость 1200 бит/с; 011 - скорость 2400 бит/с; 100 - скорость 4800 бит/с; 101 - скорость 9600 бит/с; 110 - скорость 19200 бит/с; 111 - не используется

D5 D4 Управление контролем четности передаваемых данных: 00 - проверка на четность; 01 - бит четности всегда равен 0; 10 - проверка на нечетность; 11 - бит четности всегда равен 1

D7 D6 Устанавливает частоту защитного сигнала. Устанавливается командой &G 00 - защитный сигнал не генерируется 01 - защитный сигнал 550 герц; 10 - защитный сигнал 1800 герц; 11 - не используется

Регистр S24

Не используется.

Регистр S25

Регистр задает время задержки сигнала DTR в сотых долях секунды. Так, если регистр содержит число 5, то время задержки равно 5 * 0,01 = 0,05 секунды.

Регистр S26

Регистр задает время между сигналами RTS и CTS в сотых долях секунды. Зависит от команды &R0.

Регистр S27

Регистр задает различные параметры режима передачи данных модемом:

D1 D0 Управляет режимом передачи данных: 00 - асинхронный; 01 - синхронный; 10 - синхронный с набором номера из памяти; 11 - синхронный с набором номера AT-командой

D2 Бит содержит 0 при передаче по телефонной линии и 1 при передаче по выделенному каналу

D3 Не используется

D5 D4 Зарезервирован

D6 Выбор протокола обмена: 0 - CCITT; 1 - Bell

D7 Не используется

2.5.3. Коррекция ошибок и сжатием информации

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

Стандартный режим. Обеспечивает буферизацию данных, что позволяет работать с различными скоростями передачи данных между компьютером и модемом и между двумя модемами. В результате для повышения эффективности передачи данных вы можете установить скорость обмена компьютер - модем выше, чем модем - модем. В стандартном режиме работы модем не выполняет аппаратной коррекции ошибок

Режим прямой передачи. Данный режим соответствует обычному модему. Передаваемые данные не буферизуются, аппаратная коррекция ошибок не выполняется

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

Режим с коррекцией ошибок и автоматической настройкой. Режим используется, когда заранее неизвестно, поддерживает ли удаленный модем протокол MNP, CCITT V.42 и CCITT V.42 bis. В начале сеанса связи после определения режима удаленного модема устанавливается один из трех других режимов.

При использовании модемов с аппаратной поддержкой протоколоа сжатия информации, например, MNP5 или CCITT V.42 bis, следует установить скорость работы последовательного порта вдвое выше скорости модема.

Команды модемов с протоколом MNP, CCITT V.42 и V.42 bis

Для управления модемами, аппаратно поддерживающими протоколы коррекции ошибок и сжатия передаваемой информации, расширенный набор AT-команд был дополнен новыми командами. В этом разделе мы опишем эти дополнительные команды. У модемов без аппаратной поддержки этих протоколов данные команды отсутствуют.

На вашем модеме набор команд может несколько отличаться от представленного нами. Поэтому для получения более полных сведений обращайтесь к документации на ваш модем.

Выбор размера блоков протокола MNP (команда \A)

Команда \An устанавливает максимальный размер блоков, используемых протоколом MNP при передаче данных. Для увеличения скорости обмена по хорошим линиям увеличьте размер блока. Если связь неустойчива и возникает много ошибок, используйте более короткие блоки, так как это может уменьшить число повторных передач ошибочных блоков.

Команда Максимальный размер блока, байт \A0 64 \A1 128 \A2 192 \A3 256

По умолчанию максимальный размер блока данных устанавливается равным 256 байтам.

Передача сигнала прерывания (команда \B)

В режиме без поддержки аппаратной коррекции ошибок, команда \Bn вызывает передачу сигнала прерывания - BREAK. Длительность сигнала прерывания определяется параметром n (n от 1 до 9) в десятых долях секунды. Режим обработки прерывания при получении сигнала BREAK определяется параметром команды \K.

Управление сжатием данных (команда %C)

Команда %Cn управляет сжатием данных при передаче их по линии связи. По умолчанию сжатие передаваемых данных разрешено.

%C0 запрещает сжатие данных.

%C1 разрешает сжатие данных в соответствии с рекомендацией MNP.

%C2 разрешает сжатие данных в соответствии с рекомендацией V.42.

%C3 разрешает сжатие данных в соответствии с рекомендациями V.42 и MNP.

Контроль качества связи (команда %E)

Команда %En управляет контролем качества связи. Данная команда имеет особенности на различных моделях модемов. Для получения более подробной информации обратитесь к документации на ваш модем.

%E0 команда запрещает контроль качества связи.

%E1 команда разрешает выполнение контроля качества связи и соответствующую перенастройку модема.

Управление протоколом XON/XOFF (команда \G)

Команда \Gn устанавливает протокол обмена между модемами с использованием управляющих символов XON/XOFF. Используйте протокол XON/XOFF с осторожностью. Когда вы передаете двоичные файлы, после передачи символа XOFF передача данных приостановится до получения символа XON.

\G0 отменяет использование протокола XON/XOFF. Выбрано по умолчанию и обычно не требует изменения.

\G1 устанавливает протокол XON/XOFF.

Управление скоростями передачи данных (команда \J)

Команда \Jn управляет скоростями передачи данных. Данная команда работает не на всех модемах. Для получения более подробной информации обратитесь к документации на ваш модем.

\J0 разрешает использование различных скоростей передачи данных между модемами и между модемом и компьютером. Это позволяет повысить эффективность протоколов сжатия информации и коррекции ошибок.

\J1 запрещает использование различных скоростей передачи данных между модемами и между модемом и компьютером.

Управление обработкой сигнала BREAK от удаленного модема (команда \K)

Команда \Kn определяет действие модема после получения им сигнала BREAK от компьютера или удаленного модема.

Рассмотрим, что происходит при получении модемом сигнала BREAK от компьютера, когда модем находится в стандартном режиме или в режиме коррекции ошибок (в режиме MNP).

\K0, \K2, \K4 модем переходит в командный режим без передачи сигнала BREAK удаленному модему.

\K1 модем освобождает свои буферы.

\K3 модем не освобождает свои буферы.

\K5 модем передает сигнал BREAK удаленному модему. Этот режим установлен по умолчанию.

Теперь рассмотрим, что происходит при получении модемом сигнала BREAK от компьютера, когда модем находится в режиме прямой передачи.

\K0, \K2, \K4 модем не передает сигнала BREAK удаленному модему.

\K1, \K3, \K5 модем передает сигнал BREAK удаленному модему.

Наконец рассмотрим что происходит при получении модемом сигнала BREAK от удаленного модема, находится в стандартном режиме.

\K0, \K1 модем освобождает свои буферы.

\K2, \K4 модем не освобождает свои буферы.

\K4, \K5 модем передает сигнал BREAK.

Более подробную информацию о команде \K можно получить из документации на ваш модем.

Выбрать потоковый или блочный метод обмена данными (команда \L)

Команда \Ln устанавливает потоковый или блочный метод обмена данными при соединении в режиме MNP.

\L0 Выбрать потоковый метод обмена данными

\L1 Выбрать блочный метод обмена данными

Определить уровень сигнала на линии (команда %L)

Команда %L позволяет узнать уровень сигнала на телефонной линии. Значение, возвращаемое модемом при передаче ему команды %L, определяет уровень сигнала на линии.

Выбор режима обмена данными (команда \N)

Команда \Nn устанавливает режим обмена данными. Данная команда имеет особенности на различных моделях модемов. Для получения более подробной информации обратитесь к документации на ваш модем.

\N0 стандартный режим с буферизацией.

\N1 режим прямой передачи.

\N2 режим передачи с коррекцией ошибок и с буферизацией.

\N3 режим передачи с коррекцией ошибок и автоматической настройкой на удаленный модем.

\N4 выбирает протокол коррекции ошибок LAPM (Link Access Procedure for Modems). LAPM - протокол коррекции ошибок, определенный в рекомендации CCITT V.42. На настоящий момент LAPM считается более устойчивым к воздействию помех, чем MNP

\N5 выбирает протокол коррекции ошибок MNP.

[Назад] [Содеожание] [Дальше]