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 сообщает
модему, что компьютер не готов к приему данных через СОМ-порт.
При работе с асинхронным последовательным
адаптером вы можете использовать механизм прерываний. Так как передача и прием
данных модемом представляют собой длительный процесс, то применение прерываний
от порта позволяет использовать процессорное время для других нужд.
|