Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Назначение и использование S-регистров модема



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

Регистр S0 – количество звонков до ответа

Определяет, после какого числа вызывных звонков модем отвечает на входящий вызов, то есть подключается к телефонной линии. Введение значения от 1 до 255 переводит модем в режим автоответа. Например, если S0 = 3, модем ожидает три звонка и затем начинает передачу последовательности ответа (снимает трубку, подключается к линии и отвечает на вызов удаленного модема). Если S0 = 0, автоматический ответ запрещен. Возможно считывание и изменение значений в регистре.

Регистр S1 – подсчет звонков

Значение в данном регистре увеличивается на 1 при каждом обнаружении модемом сигнала звонка из телефонного канала. Значение сбрасывается в 0, если сигнал звонка не обнаруживается в течение 8-секундного интервала. Когда значение в регистре S1 становится равным значению в регистре S0, модем начинает передачу последовательности ответа. Возможно только считывание значения в регистре.

Регистр S2 – знак кода перехода

В данном регистре хранится значение ASCII кода перехода (ESCAPE-символ). Этот код перехода позволяет пользователю переключить модем из режима передачи данных в командный режим без разрыва связи с удаленным модемом. Значение по умолчанию равно 43, что соответствует знаку «+» кода ASCII. При значениях, больших 127, обнаружение кода перехода запрещается. Возможны считывание и изменение знака кода перехода. Для изменения его, например, на «-», необходимо ввести команду ATS2 = 45 (45 является десятичным значением кода ASCII для «-»). После этого переход в командный режим будет производиться с помощью «---» вместо «+++», как это было ранее.

Регистр S3 – знак возврата каретки

В регистре S3 хранится десятичное значение кода ASCII знака «возврат каретки» <CR>. Этот знак служит завершающим знаком командной строки и кода ответа. По умолчанию используется значение 13, но если применяется нестандартное оконечное оборудование данных, можно переопределить этот знак, дописав в регистр новое значение.

Примечание. Обычно значение S3 не сохраняется в энергонезависимой u1087 памяти. Оно инициализируется значением 13 при включении модема или после приема команды ATZ.

Регистр S4 – знак перевода строки

В регистре S4 хранится десятичное значение кода ASCII знака «перевод строки» <LF>. По умолчанию используется значение 10. Этот знак является выходным после знака «возврат каретки», если разрешены коды ответа в развернутой форме (команда ATV1). Возможны считывание и изменение значений в регистре.

Примечание. Обычно значение S4 не сохраняется в энергонезависимой памяти. Оно инициализируется значением 10 при включении модема или после приема команды ATZ.

Регистр S5 – знак возврата на одну позицию

В регистре S5 хранится десятичное значение кода ASCII знака «возврат на одну позицию» <Backspace>. По умолчанию используется значение 8. Этому знаку не должно присваиваться значение, соответствующее печатаемому знаку кода ASCII (от 31 до 126). В случае присвоения указанных значений модем их не распознает. Когда принят знак «возврат на одну позицию» во время ввода команды, производятся следующие операции:

1) модем возвращает эхо знака на терминал;

2) на терминал выводится знак пробела в коде ASCII (20);

3) на терминал выводится еще один знак «возврат на одну позицию».

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

Примечание. Обычно значение S5 не сохраняется в энергонезависимой памяти. Оно инициализируется значением 8 при включении модема или после приема команды ATZ.

Регистр S6 – ожидание тона станции

Определяет время ожидания модема после подключения к линии до момента набора им первой цифры номера. Эта задержка обеспечивает телефонной станции время для обнаружения подключения к линии и посылки в линию ответного тона станции «приглашение к набору». Если введены команды АТХ3 или АТХ4, значение в S6 игнорируется. Минимальный период ожидания равен 2 с – модем игнорирует любое меньшее значение в регистре S6. Возможны считывание и изменение значений в регистре. Единица измерения – секунда. Значение по умолчанию обычно равно 002 (0,2 с).

Регистр S7 – ожидание несущей после набора номера

Определяет время после набора номера, в течение которого модем должен выполнить соединение (обнаружить несущую частоту от удаленного модема). Если в течение этого времени модем установит связь, то он выдаст сообщение CONNECT согласно команде ATXn. Если связь не будет установлена, модем отвечает NO CARRIER. Возможны считывание и изменение значений в регистре. Единица измерения – секунда. Значение по умолчанию обычно равно 030 (3 с).

Регистр S8 – время паузы в наборе по модификатору «запятая»

Задает длительность паузы в наборе номера при введении в команду ATD модификатора «,» («запятая»). В общем случае эта пауза используется для ожидания второго тона станции при вызове с АТС или когда привлекаются специальные телефонные службы. Возможны считывание и изменение значений в регистре. Единица измерения – секунда. Значение по умолчанию обычно равно 002 (0,2 с).

Регистр S9 – время ответа схемы обнаружения несущей

Определяет время, в течение которого модем должен принимать несущую от удаленного модема. Если несущая частота принималась в течение этого времени, модем передает в компьютер сигнал DCD. С увеличением этого времени уменьшается вероятность ложного обнаружения несущей при наличии шумов, таких как сигнал «занято», речь и т.п. Возможны считывание и изменение значений в регистре. Единица измерения – 0,1 с. Значение по умолчанию обычно равно 006 (0,6 с).

Регистр S10 – задержка между пропаданием несущей и отключением от линии

Задает задержку между обнаружением пропадания несущей частоты от удаленного модема и моментом разъединения связи. Эта задержка позволяет приемнику переносить кратковременные пропадания несущей без отключения от линии местного модема. Если S10 = 255, то модем игнорирует состояние несущей и функционирует, как будто несущая все время присутствует. Значение регистра S10 должно быть больше значения регистра S9, иначе связь установить нельзя. Возможны считывание и изменение значений в регистре. Единица измерения – 0,1 с. Значение по умолчанию обычно равно 014 (1,4 с).

 

 

2.8. Режимы работы модема. Сообщения и ответы модема

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

Переключение модема в режим данных

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

Переключение модема в командный режим

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

при включении питания;

при разрыве соединения с удаленным модемом;

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

после ввода оператором Escape-последовательности (ручная смена режима).

Ручная смена режима

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

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

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

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

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

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

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

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

2. Инициализация модема.

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

3. Соединение с удаленным модемом.

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

4. Возможные ответы модема.

В зависимости от режима, в котором находится модем, он может передавать компьютеру различные сообщения. Например, если модем производит вызов удаленного модема (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, значит, произвести соединение с удаленным модемом не удалось и надо попытаться повторить соединение.

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

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

6. Сброс сигналов DTR и RTS.

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

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

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.