6. Программирование модемов
После выпуска американской фирмой Hayes модемов серии Smartmodem,
системакоманд, использованная в ней, стала неким стандартом, которого
придерживаются остальные фирмы - разработчики модемов. Система
команд,применяемая в этих модемах, носит название hayes-команд, или AT-команд.
Со времени выпуска первых AT-совместимых модемов набор их команд несколько
расширился, но все основные команды остались без изменения.
Все команды, передаваемые компьютером модему, надо начинать префиксом AT
(ATtention - внимание) и заканчивать символомвозврата каретки ( <CR> ). Только
команда А/ и Escape-последо-вательность «+++» не требуют для себя префикса AT.
После префикса AT могут идти одна или сразу несколько команд. Для ясности эти
командымогут быть отделены друг от друга символами пробела, тире, скобками. В
большинстве случаев команды могут быть написаны как заглавными, так и
строчнымибуквами.
При передаче модему команд они сначала заносятся во внутренний буфер, который,
как правило, имеет размер 40 символов. Команды, записанные в буфер модема,
исполняются после поступления символавозврата каретки. Вследствие ограниченности
размера буфера не следует передавать модему слишком длинные команды ( больше
размерабуфера). Длинные команды можно разбивать на части и передавать в
несколько заходов. При этом каждая часть должна начинаться префиксом АТ и
заканчиваться символом возврата каретки.
MR Modem Ready - Модем готов к обмену данными. Если этот индикатор не горит,
то надо проверить линию питания модема.
TR Terminal Ready - Компьютер готов к обмену данными с модемом. Этот индикатор
горит, когдамодем получил от компьютера сигнал DTR.
CD Carrier Detect - Индикатор зажигается, когда модем обнаружил несущую
частоту на линии. Индикатор должен гореть на протяжении всего сеанса связи и
гаснуть, когда один из модемов освободит линию.
SD Send Data - Индикатор мигает, когда модем получает данные от компьютера.
RD Receave Data - Индикатор мигает, когда модем передает
данные к компьютеру
HS High Speed - Модем работает на максимально возможной для него скорости.
AA Auto Answer - Модем находится в режиме автоответа. То есть модем
автоматически будет отвечать на приходящие звонки. Когда модем обнаружит
звонок на телефоннойлинии, этот индикатор замигает.
OH Off-Hook - Этот индикатор горит, когда модем снял трубку ( занимает линию).
Основные команды модема
AT - Начало (префикс) командной строки. После получения этой команды модем
автоматически подстраивает скорость передачи и формат данных к параметрам
компьютера.
A - Автоответ. Если режим автоматического ответа выключен (S0=0), команда
используетсядля ответа на звонок от удаленного модема. Команда заставляет модем
снять трубку ( подключиться к линии ) иустановить связь с удаленным модемом.
A/ - Модем повторяет последнюю введенную команду. Команда передается на модем
без префикса AT и исполняется модемомнемедленно, не ожидая прихода символа
возврата каретки. Если вы передадите модему строку AT A/ <CR>, то модем
укажет на ошибку и вернет слово ERROR.
Bn - Команда производит выбор стандарта, согласно которому будет происходить
обмен данными между модемами. При скорости передачи 300 бит/с происходит
выбор между стандартами BELL 103 и CCITT V.21, при скорости1200 bps - между
BELL 212A и CCITT V.22bis. При скорости 2400 bps эта команда игнорируется
и используется стандарт CCITT V.22. Если n=0, устанавливаются стандарты CCITT
V.21/V.22, а если n=1 - стандарты BELL 103/212A.
Ds - Команда используется для набора номера. После получения этой команды модем
начинает набор номера и при установлении связипереходит в режим передачи
данных. Команда состоит из префикса AT, символа D и телефонного номера, в
составкоторого могут входить следующие управляющие модификаторы: P или T. Эти
модификаторы производят выбормежду импульсной и тоновой системой набора ( в
нашей стране используется импульсная система).
, - Символ запятой вызывает паузу при наборе номера. Длительность паузы
определяетсясодержимым регистра S8.
; - Символ точки с запятой, если он находится в конце командной строки,
переводит модем посленабора номера в командный режим.
@ - Модем ожидает пятисекундной тишины на линии в течение заданного промежутка
времени.Промежуток времени, в течение которого модем ожидает тишины, задается в
регистре S7. Если в течение этого времени паузы тишины не было, модем
отключается и отвечает NO ANSWER.
S - Модем набирает телефонный номер, записанный в его памяти. Эта команда
выполняется только для модемов, имеющих встроенную энергонезависимую память
и возможность записи в нее номеров телефонов.
R - После набора номера переводит модем в режим автоответа. Этот модификатор
должен находиться вконце набираемого номера.
W - Перед дальнейшим набором телефонного номера модем ожидает длинный гудок из
линии. Причем время ожидания гудка содержится врегистре S7. Если в отведенное
время гудок не появился, модем прекращает набор номера и возвращает
сообщение NO DIALTONE. Этот параметр может быть полезен при наборе
междугородних номеров.
Fn - Переключение между дуплексным/полудуплексным режимами. При n=0 переход в
полудуплексныйрежим, а при n=1 - в дуплексный.
Hn - Эта команда используется для управления телефонной линией. Если n=0, то
происходит отключение модема от линии, если n=1, модем подключается к линии.
Ln - Установка громкости сигнала внутреннего динамика:
n=0,1 соответствует низкой громкости, n=2 - средней и n=3 - максимальной.
Mn - Управление внутренним динамиком. При n=0 динамик выключен. При n=1 динамик
включентолько во время набора номера и выключен после обнаружения несущей. При
n=2 динамик включен все время. При n=3динамик включается после набора последней
цифры номера и выключается после обнаружения несущей отвечающего модема.
Qn - Управление ответом модема на AT-команды. При n=0 ответ разрешен, при n=1
ответ запрещен. Независимо от состояния Q0 или Q1 модемвсегда сообщает
содержание S-регистров, свой идентификационный код, контрольную сумму
памяти и результаты теста.
Sr? - Чтение содержимого регистра модема, имеющего номер r.
Sr=n - Запись в регистр модема с номером r числа n. Число
n может иметь значения от 0 до 255. Все команды модифицируют содержимое
одного или более S-регистров. Некоторые S-регистры содержат
временныепараметры, которые можно поменять только командой S.
Vn - Производит выбор вида ответа модема на AT-команды.
При n=0 ответ происходит цифровым кодом, а при n=1 модем отвечает в символьном
видена английском языке. Использование цифровой формы ответа облегчает
обработку результатов выполнениякоманды при написании собственных программ
управления модемом.
Yn - Способ отключения модема от линии. Существуют два способа отключения
модема от линии: стандартный, когда модем получаетнеактивный сигнал DTR от
компьютера, и принудительный, когда модем получает от удаленного модема
сигнал перерыва BREAK. Команда ATH0 направляет удаленному модему сигнал
прерывания BREAK, который длится 4с.При n=0 модем отключается стандартно, при
n=1 модем отключается после получения из линии сигналаBREAK.
Z - Сбрасывает конфигурацию модема. При этом во все регистры загружаются
значения, принятые по умолчанию. Значения регистров, принятые по умолчанию
берутся из энергонезависимой памяти модема или, если модем такой памяти не
имеет, из постоянной памяти или определяется исходя из переключателей на плате
модема.
+++ - Escape-последовательность, используемая для перехода в командный режим
работы модема. Благодаря этой команде можно перейти из режима передачи данных
модемом в командный режим работы без разрывасвязи. Модем требует тишины перед и
после направления этой Escape-последовательности. Величинаэтого промежутка
тишины определена в регистре S12.
&F - модем устанавливает конфигурацию, записанную в постоянную память.
&Gn - Включение/выключение защитной частоты. n=0 - защитная частота выключена,
n=1 - модем генерирует защитную частоту 550Hz, n=2 - модем генерирует
защитную частоту 1800 Hz. Использование данной команды зависит от
особенностей телефонной линии.
&Ln - Вид линии связи. При n=0 передача по обычным (коммутируемым) линиям связи,
n=1 передача по выделенным каналам.
&Mn - Установка асинхронно/синхронного режима работы. При n=0
устанавливаетсяасинхронный режим, при n=1,2,3 устанавливается синхронный режим.
&Pn - Установка импульсного коэффициента набора номера в соответствии с
различными стандартами. При n=0 - коэффициент заполнения замыкание/интервал
39/61 (Америка), приn=1 - 33/67 (Англия).
&Sn - Управление сигналом DSR порта RS-232-C. При n=0 сигнал DSR активен
всегда, а при n=1 сигнал DSR активизируется только после окончания этапа
установления связи между модемами.
Последовательность действий для установления связи
а)Инициализация COM-порта
Проводим инициализацию COM-порта, к которому подключен мо-
дем. Для этого программируем регистры микросхемы UART, задавая формат данных и
скоростьобмена. Заметим, что модем будет проводить соединение с удаленным
модемом как раз на этой скорости. Чем скорость выше, тем быстрее будет
происходить обмен данными с удаленным модемом.
Однако при увеличении скорости на плохих телефонных линиях сильно возрастает
количество ошибок.
б)Инициализация модема
Передавая модему AT-команды через СОМ-порт, производим его
инициализацию. При помощи АТ-команд можно установить различные режимы
работымодема - выбрать протокол обмена, установить набор диагностических
сообщений модема и т.д.
в)Соединение с удаленным модемом
Передаем модему команду набора номера (ATD). В этом случае
модем набирает номер и пытается установить связь с удаленным модемом. Или
передаем модему команду AT S0=1 для перевода его в режим автоответа. Послеэтого
модем ожидает звонка от удаленного модема, а когда он приходит, пытается
установить с ним связь.
г)Ожидаем ответ от модема
В зависимости от режима, в котором находится модем, он мо-
жет передавать компьютеру различные сообщения. Например, если модем производит
вызов удаленного модема (АТ-команда ATD), то модем может выдать следующие
сообщения:
CONNECT Успешное соединение
BUSY Номер занят
NO DIALTONE На линии отсутствует сигнал коммутатора
NO ANSWER Абонент не отвечает
NO CARRIER Неудачная попытка установить связь
Когда приходит звонок, модем передает компьютеру сообщение RING, если регистр
модема S0 равен нулю. В этом случае для ответа на звонок надо послать модему
командуАТА. Если модем находится в режиме автоответа и регистр модема S0 не
равен нулю, то модем автоматическипытается ответить на звонок и может выдать
следующие сообщения:
CONNECT Успешное соединение
NO DIALTONE Нет несущей частоты удаленного модема
NO CARRIER Неудачная попытка установить связь
Если модем передал компьютеру сообщение CONNECT ,значит, он успешно произвел
соединение и теперь работает в режимепередачи данных. Теперь все данные,
которые вы передадите модему через СОМ-порт, будут преобразованы модемом в
форму,пригодную для передачи по телефонным линиям, и переданы удаленному
модему. И наоборот, данные, принятые модемомпо телефонной линии, переводятся в
цифровую форму и могут быть прочитаны через СОМ-порт, к которому подключен
модем.
Если модем передал компьютеру сообщения BUSY, NO DIALTONE, NO ANSWER, NO CARRIER
значит, произвести соединение с удаленныммодемом не удалось и надо попытаться
повторить соединение.
д)Подключение модема в командный режим
После окончания работы коммуникационная программа должна
перевести модем в командный режим и передать ему команду положить трубку
(ATH0). Дляперевода модема в командный режим можно воспользоваться
Escape-последовательностью «+++». После того как модем перешел в командный
режим, можно опять передавать ему АТ-команды.
е)Сбрасываем сигналы на линиях DTR и RTS
Низкий уровень сигналов DTR и RTS сообщает модему, что компьютер не готов к
приему данных через COM-порт.
При работе с асинхронным последовательным адаптером вы можете использовать
механизм прерываний. Так как передача и прием данныхмодемом представляют собой
длительный процесс, то применение прерываний от порта позволяет использовать
процессорное время для других нужд.
7.Протоколы обмена данными
При передаче данных по зашумленным телефонным линиям всегда существует
вероятность, что данные, передаваемые одним модемом,будут приняты другим
модемом в искаженном виде. Например, некоторые передаваемые байты могут
изменить свое значениеили даже просто исчезнуть.
Для того, чтобы пользователь имел гарантии, что его данные переданы без ошибок,
используются протоколы коррекции ошибок.
Общая форма передачи данных по протоколам с коррекцией ошибок следующая:
данные передаются отдельнымиблоками (пакетами) по 16-20000 байт, в зависимости
от качества связи. Каждый блок снабжается заголовком, в которомуказана
проверочная информация, например контрольная сумма блока. Принимающий
компьютер самостоятельно подсчитывает контрольную сумму каждогоблока и
сравнивает ее с контрольной суммой из заголовка блока. Если эти две
контрольный суммы совпали, принимающая программа считает, что блок передан без
ошибок. В противном случае принимающий компьютер передаетпередающему запрос на
повторную передачу этого блока.
Протоколы коррекции ошибок могут быть реализованы как на аппаратном уровне,
так и на программном. Аппаратный уровеньреализации более эффективен.
Быстродействие аппаратной реализации протокола MNP примерно на 30% выше,чем
программной.
... и доступен для чтения и записи со стороны ЦП. С помощью этого регистра осуществляется обмен данными между контроллером и ЦП, а также служебной информацией — загрузкой команды и чтением из регистров состояний и указателей. Запись и чтение служебной информации осуществляется в определенной последовательности, в соответствии со структурой команд. Основной регистр состояния RS доступен только для ...
... , В 3. Активное сопротивление, Ом «1» «10» «100» «1000» «1» «10» «100» «1000» «1» «10» «100» «1000» «10м» 2.2 Программное обеспечение тестирования устройства Программа тестирования ПЗУ по методу контрольной суммы LXI B 0040h ; Загрузить в ВС начальный адрес ПЗУ MVI D ...
0 комментариев