4. Программирование модемов

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

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

Все команды, передаваемые компьютером модему, надо начи­нать префиксом AT (ATtention - внимание) и заканчивать символом возврата каретки ( <CR> ). Только команда А/ и Escape-последо­вательность "+++" не требуют для себя префикса AT.

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

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

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

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

Если у вас внешний модем, то на его лицевой панели нахо­дится восемь световых индикаторов. Хотя их расположение на раз­личных моделях может меняться, их обозначения являются стан­дартными:

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.

! - Если знак ! стоит перед знаками последовательности на­бора, модем переходит в состояние ON HOOK (кладет трубку) на 1/2 секунды, а затем снова переходит в состояние OFF HOOK ( снимает трубку).

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

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

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

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

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

Hn - Эта команда используется для управления телефонной линией. Если n=0, то происходит отключение модема от линии, если n=1, модем подключается к линии.

In - Выдает идентификационный код модема и контрольную сумму содержимого памяти модема. Если n=0, модем сообщает свой идентификационный код, если n=1, модем проводит подсчет конт­рольной суммы EPROM и передает ее компьютеру, n=2 - модем про­веряет состояние внутренней памяти ROM и возвращает сообщение OK или CHECKSUM ERROR (ошибка контрольной суммы). При n=3 выда­ется состояние модема.

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-регистров, свой идентификационный код, контрольную сумму памяти и результаты теста.

On - Команда переводит модем из командного режима в режим передачи данных. При этом модем отвечает CONNECT. Команда О и О0 переводят модем в режим передачи данных без инициирования последовательности сигналов проверки линии связи. Команда О1 переводит модем в режим передачи данных и заставляет модем пе­редать последовательности сигналов проверки линии связи, т.е. производить повторное квитирование с удаленным модемом.

Sr? - Чтение содержимого регистра модема, имеющего номер r.

Sr=n - Запись в регистр модема с номером r числа n. Число n может иметь значения от 0 до 255. Все команды модифицируют содержимое одного или более S-регистров. Некоторые S-регистры содержат временные параметры, которые можно поменять только ко­мандой S.

Vn - Производит выбор вида ответа модема на AT-команды. При n=0 ответ происходит цифровым кодом, а при n=1 модем отве­чает в символьном виде на английском языке. Использование циф­ровой формы ответа облегчает обработку результатов выполнения команды при написании собственных программ управления модемом.

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

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

CONNECT 1 Модем установил связь со скоростью 300 bps

RING 2 Модем обнаружил сигнал звонка

NO CARRIER 3 Модем потерял несущую частоту

ERROR 4 Ошибка в командной строке

CONNECT 1200 5 Модем установил связь со скоростью 1200 bps

NO DIALTONE 6 Отсутствие сигнала станции при снятии трубки

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

NO ANSWER 8 Нет ответа после ожидания сигнала

CONNECT 600 9 Модем установил связь со скоростью 600 bps

CONNECT 2400 10 Модем установил связь со скоростью 2400 bps

Yn - Способ отключения модема от линии. Существуют два способа отключения модема от линии: стандартный, когда модем получает неактивный сигнал DTR от компьютера, и принудительный, когда модем получает от удаленного модема сигнал перерыва BREAK. Команда ATH0 направляет удаленному модему сигнал прерыва BREAK, который длится 4с. При n=0 модем отключается стандартно, при n=1 модем отключается после получения из линии сигнала BREAK.

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

+++ - Escape-последовательность, используемая для перехода в командный режим работы модема. Благодаря этой команде можно перейти из режима передачи данных модемом в командный режим ра­боты без разрыва связи. Модем требует тишины перед и после нап­равления этой Escape-последовательности. Величина этого проме­жутка тишины определена в регистре S12.

&Cn - Данная команда управляет сигналом DCD порта RS-232-C. При n=0 сигнал DCD всегда активен, а при n=1 сигнал DCD устанавливается только тогда, когда модем обнаруживает несущую частоту от удаленного модема.

&Dn - Управление сигналом DTR. При n=0 модем игнорирует DTR, n=1 - при потере сигнала DTR модем переходит в командный режим работы, n=2 - при потере сигнала DTR модем прекращает связь, отключается от линии, отключает режим автоответа и пере­ходит в командный режим работы, n=3 - при потере сигнала DTR автоматически сбрасывается конфигурация модема, как при выпол­нении команды ATZ. Модем обнаруживает потерю сигнала DTR, если сигнал DTR отсутствует дольше времени, определенного в регистре модема S25.

&F - модем устанавливает конфигурацию, записанную в посто­янную память.

&Gn - Включение/выключение защитной частоты. n=0 - защит­ная частота выключена, n=1 - модем генерирует защитную частоту 550 Hz, 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 (Англия).

&Rn - Управление сигналом CTS: n=0 - сигнал переходит в активное состояние после получения сигнала RTS. Данные, переда­ваемые модему до поступления сигнала RTS, игнорируются. Если n=1 модем игнорирует RTS.

&Sn - Управление сигналом DSR порта RS-232-C. При n=0 сиг­нал DSR активен всегда, а при n=1 сигнал DSR активизируется только после окончания этапа установления связи между модемами.

&Tn - Тестирование модема. От n зависит вид теста.

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

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

&Zn - Используется для записи телефонного номера в энерго­независимую память модема. Количество телефонов зависит от мо­дели модема.

Основные принципы программирования модемов

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

Когда модем наберет номер удаленного абонента или когда модему в режиме автоответа придет вызов, он попытается устано­вить связь с удаленным модемом. После установления связи модем передает компьютеру через COM-порт специальное сообщение и пе­реключится из командного режима в режим передачи данных. После этого данные, передаваемые модему, перестают восприниматься им как команды и сразу передаются по телефонной линии на удаленный модем.

Итак, после установления связи с удаленным модемом, комму­никационная программа может начинать обмен данными. Обмен дан­ными так же, как и передача команд, осуществляется через COM-порт. Затем при помощи специальной Escape-последователь­ности можно переключить модем из режима передачи данных обратно в командный режим и положить трубку, разорвав связь с удаленным модемом.

Последовательность действий для установления связи

а)Инициализация 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-порт.

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

5.Протоколы обмена данными

5.1.Протоколы коррекции ошибок нижнего уровня

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

да существует вероятность, что данные, передаваемые одним моде­мом, будут приняты другим модемом в искаженном виде. Например,

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

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

Общая форма передачи данных по протоколам с коррекцией ошибок следующая: данные передаются отдельными блоками (пакета­ми) по 16-20000 байт, в зависимости от качества связи. Каждый блок снабжается заголовком, в котором указана проверочная ин­формация, например контрольная сумма блока. Принимающий компь­ютер самостоятельно подсчитывает контрольную сумму каждого бло­ка и сравнивает ее с контрольной суммой из заголовка блока. Если эти две контрольный суммы совпали, принимающая программа считает, что блок передан без ошибок. В противном случае прини­мающий компьютер передает передающему запрос на повторную пере­дачу этого блока.

Протоколы коррекции ошибок могут быть реализованы как на аппаратном уровне, так и на програмном. Аппаратный уровень реа­лизации более эффективен. Быстродействие аппаратной реализации протокола MNP примерно на 30% выше, чем програмной.

MNP-протоколы

MNP (Microcom Network Protocols) - серия наиболее расп­ространенных аппаратных протоколов, впервые реализованная на модемах фирмы Microcom. Эти протоколы обеспечивают автомати­ческую коррекцию ошибок и компрессию передаваемых данных.

Сейчас известны 10 протоколов:

MNP1. Протокол коррекции ошибок, использующий асинхронный полудуплексный метод передачи данных. Это самый простой из про­токолов MNP.

MNP2. Протокол коррекции ошибок, использующий асинхронный дуплексный метод передачи данных.

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

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

MNP4. Протокол, использующий синхронный метод передачи, обеспечивает оптимизацию фазы данных, которая несколько улучша­ет неэффективность протоколы MNP2 и MNP3. Кроме того, при изме­нении числа ошибок на линии соответственно меняется и размер блоков передаваемых данных. При увеличении числа ошибок размер блоков уменьшается, увеличивая вероятность успешного прохожде­ния отдельных блоков.

Эффективность этого метода составляет около 20% по сравне­нию с простой передачей данных.

MNP5. Дополнительно к методам MNP4, MNP5 часто использует простой метод сжатия передаваемой информации. Символы часто встречающиеся в передаваемом блоке кодируются цепочками битов меньшей длины, чем редко встречающиеся символы. Дополнительно кодируются длинные цепочки одинаковых символов. Обычно при этом текстовые файлы сжимаются до 35% своей исходной длины. Вместе с 20% MNP4 это дает повышение эффективности до 50%.

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

MNP6. Дополнительно к методам протокола MNP5 автоматически переключается между дуплексным и полудуплексным методами пере­дачи в зависимости от типа информации. Протокол MNP6 также обеспечивает совместимость с протоколом V.29.

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

MNP9. Использует протокол V.32 и соответствующий метод ра­боты, обеспечивающий совместимость с низкоскоростными модемами.

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

- многократного повторения попытки установить связь

- изменения размера пакетов в соответствии с изменением уровня помех на линии

- динамического изменения скорости передачи в соответствии с уровнем помех линии

Все протоколы MNP совместимы между собой снизу вверх. При установлении связи происходит установка наивысшего возможного уровня MNP-протокола. Если же один из связывающихся модемов не поддерживает протокол MNP, то MNP-модем работает без MNP-прото­кола.

Режимы MNP-модемов.

MNP-модем обеспечивает следующие режимы передачи данных:

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

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

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

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

Протоколы V.42 и V.42bis.

Протокол с коррекцией ошибок и преобразованием асинхрон­ный-синхронный. Протокол использует метод компрессии, при кото­ром определяется частота появления отдельных символьных строк и происходит их замена на последовательности символов меньшей длины. Этот метод компрессии носит название Lempel-Ziv. Данный метод компрессии обеспечивает 50% сжатие текстовых файлов. Вместе с 20% выигрышем от синхронного преобразования это увели­чивает эффективность на 60%.


Информация о работе «Модем»
Раздел: Информатика, программирование
Количество знаков с пробелами: 61514
Количество таблиц: 1
Количество изображений: 0

Похожие работы

Скачать
227261
8
0

... Данные авторского исследования также говорят о значительном влиянии СМИ с точки зрения самих студентов (табл. 2.6). Гипотеза 3. Усиление влияния процессов в сфере моды на социальное поведение студенчества связано с возрастающим влиянием СМИ и рекламы на поведение современной молодежи в условиях «общества потребления». Для того чтобы опровергнуть или подтвердить это гипотетическое заключение, ...

Скачать
213110
0
1

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

Скачать
27107
1
0

... приверженности старине (сознательные традиционалисты). Стихийные традиционалисты внешне ведут себя так же, как и сознательные традиционалисты. Однако их стиль потребления вытекает не из любви к прошлому, а из равнодушного отношения к моде. Традиционалисты заметны тем, что в зрелом, престарелом возрасте они воспроизводят модели модного поведения времен их молодости. Высокая мода (haute couture) и ...

Скачать
52470
0
0

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

0 комментариев


Наверх