Дисциплина
"Программное обеспечение систем передачи данных"

Содержание

1.11. Режимы работы модема. Сообщения и ответы модема. Функции, выполняемые модемом в различных режимах. Действия для перехода из одного режима в другой

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

      Переключение модема в режим данных. Модем автоматически переходит в режим данных после установления соединения с удаленным модемом.

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

  •       при включении питания;
  •       при разрыве соединения с удаленным модемом;
  •       если модем набирает номер, а мы нажали какую-нибудь клавишу на клавиатуре компьютера. В этом случае, перед тем как перейти в командный режим, модем аннулирует текущий вызов;
  •       после ввода оператором Escape-последовательности (ручная смена режима).

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

      Для возобновления передачи данных необходимо ввести команду ATO. Модем выдаст сообщение "CONNECT nnnn", где nnnn - параметры установленного соединения, после чего вернется в режим данных.

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

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

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

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

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

а) Инициализация COM-порта

      Проводим инициализацию COM-порта, к которому подключен модем. Для этого программируем регистры микросхемы UART, задавая формат данных и скорость обмена. Заметим, что модем будет проводить соединение с удаленным модемом как раз на этой скорости. Чем скорость выше, тем быстрее будет происходить обмен данными с удаленным модемом.

      Однако при увеличении скорости на плохих телефонных линиях сильно возрастает количество ошибок.

б) Инициализация модема

      Передавая модему AT-команды через СОМ-порт, производим его инициализацию. При помощи AT-команд можно установить различные режимы работы модема - выбрать протокол обмена, установить набор диагностических сообщений модема и т.д.

в) Соединение с удаленным модемом

      Передаем модему команду набора номера (ATD). В этом случае модем набирает номер и пытается установить связь с удаленным модемом. Или передаем модему команду AT S0=1 для перевода его в режим автоответа. После этого модем ожидает звонка от удаленного модема, а когда он приходит, пытается установить с ним связь.

г) Возможные ответы модема

      В зависимости от режима, в котором находится модем, он может передавать компьютеру различные сообщения. Например, если модем производит вызов удаленного модема (AT-команда ATD), то модем может выдать следующие сообщения:

CONNECT - Успешное соединение
BUSY - Номер занят
NO DIALTONE - На линии отсутствует сигнал коммутатора
NO ANSWER - Абонент не отвечает
NO CARRIER - Неудачная попытка установить связь

      Когда приходит звонок, модем передает компьютеру сообщение RING, если регистр модема SO равен нулю. В этом случае для ответа на звонок надо послать модему команду АТА. Если модем находится в режиме автоответа и регистр модема SO не равен нулю, то модем автоматически пытается ответить на звонок и может выдать следующие сообщения:

CONNECT - Успешное соединение
NO DIALTONE - Нет несущей частоты удаленного модема
NO CARRIER - Неудачная попытка установить связь

      Если модем передал компьютеру сообщение CONNECT, значит, он успешно произвел соединение и теперь работает в режиме передачи данных. Теперь все данные, которые вы передадите модему через СОМ-порт, будут преобразованы модемом в форму, пригодную для передачи по телефонным линиям, и переданы удаленному модему. И наоборот, данные, принятые модемом по телефонной линии, переводятся в цифровую форму и могут быть прочитаны через СОМ-порт, к которому подключен модем.

      Если модем передал компьютеру сообщения BUSY, NO DIALTONE,NO ANSWER, NO CARRIER значит, произвести соединение с удаленным модемом не удалось и надо попытаться повторить соединение.

д) Перевод модема в командный режим

      После окончания работы коммуникационная программа должна перевести модем в командный режим и передать ему команду положить трубку (АТНО) Для перевода модема в командный режим можно воспользоваться Escape-последовательностью "+++". После того, как модем перешел в командный режим, можно опять передавать ему AT-команды.

е) Сброс сигналов DTR и RTS

      Низкий уровень сигналов DTR и RTS сообщает модему, что компьютер не готов к приему данных через СОМ-порт.

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

<<< ^^^ >>>
Created by Aleksey Vishnyakov © 2002