Программирование модемов© Александр Фролов, Григорий ФроловТом 4, М.: Диалог-МИФИ, 1993, 236 стр. 4.6. Регистры модемовHayes-совместимые модемы имеют набор регистров, определяющих различные характеристики модема. Содержимое большинства этих регистров можно считывать и изменять программным способом. Как мы рассказали в предыдущей главе, для чтения и записи регистров модема можно использовать соответственно AT-команды ATSr? и ATSr = n, где r - номер регистра, а n - число, которое в него записывается. Ниже мы даем описание 28 регистров модема. Для каждого регистра мы приводим его описание, диапазон возможных значений и значение, записываемое в него по умолчанию. S0 (0..255) Регистр управляет режимом автоответа. Регистр задает количество звонков, которое модем ждет до ответа на вызов. Если S0 = 0, то режим автоответа выключен. Когда режим автоответа выключен и приходит звонок, чтобы снять трубку, надо специально передать модему команду ATA. Содержимое регистра сохраняется в энергонезависимой памяти (если, конечно, она есть у вашего модема). S1 - Счетчик сигналов звонка. Значение регистра увеличивается каждый раз, когда модему поступает сигнал звонка из телефонной линии. По истечении восьми секунд с момента последнего звонка содержимое регистра сбрасывается. Значение регистра не сохраняется в энергонезависимой памяти. S2 (0..255) - Данный регистр содержит ASCII-код Escape-символа, используемого в последовательности перехода в командный режим ("+++"). Обычно он имеет значение 43, что соответствует ASCII символу '+'. Вы можете переопределить Escape-символ, записав в этот регистр ASCII-код другого символа. В случае, если значение регистра S2 больше чем 127, происходит блокировка последовательности возврата. При этом вы не сможете переключиться из режима передачи данных в командный режим без потери связи с удаленным модемом. Содержимое регистра не сохраняется в энергонезависимой памяти. S3 (0..127) - Регистр содержит ASCII-код символа возврата каретки - <CR>. По умолчанию регистр содержит ASCII-код 13 (Control-M). Вы можете переопределить этот символ, записав в регистр новое значение. Содержимое регистра не сохраняется в энергонезависимой памяти. Это гарантирует, что после выключения питания вы снова сможете использовать символ с ASCII-кодом, равным 13, для ввода команд. S4 (0..127) - Регистр содержит ASCII-код символа перевода строки - <LF>. По умолчанию регистр содержит ASCII-код 10 (Control-J). Вы можете переопределить этот символ, записав в регистр другое значение. При задании S4 = 0 символ <LF> не используется. Содержимое регистра не сохраняется в энергонезависимой памяти. S5 (0..127) - Регистр содержит ASCII-код символа Backspace (возврат на один символ назад). По умолчанию регистр содержит ASCII-код 8 (Control-H). Вы можете переопределить этот символ, записав в регистр новое значение. Заметим, однако, что если вы запишете в регистр ASCII-код от 31 до 127, то вы не сможете использовать символ с этим кодом в командном режиме. Содержимое регистра не сохраняется в энергонезависимой памяти. S6 (2..255) - Определяет время в секундах, в течении которого при снятии трубки на линии должен появиться гудок . По умолчанию регистр содержит значение два. В энергонезависимой памяти регистр не сохраняется. S7 (1..255) - Определяет время в секундах после набора номера, в течение которого модем должен выполнить соединение (обнаружить несущую частоту от удаленного модема). По умолчанию регистр содержит значение 30. Если в течение этого времени модем установит связь, он выдает сообщение CONNECT согласно команде ATXn. Если связь не будет установлена, модем отвечает NO CARRIER. В энергонезависимой памяти регистр не сохраняется. S8 (0..255) - Время задержки при наборе номера (в секундах), которая происходит по модификатору ',' команды ATD. По умолчанию время задержки две секунды. В энергонезависимой памяти регистр не сохраняется. S9 (1..255) Определяет время, в течение которого для установки связи должна приниматься несущая частота от удаленного модема. Если несущая принималась в течение этого времени, модем передает компьютеру сигнал DCD. Содержимое регистра задает время в десятых долях секунды. По умолчанию для установки DCD модем должен принимать несущую 0,6 секунды, то есть регистр содержит число 6. В энергонезависимой памяти значение регистра не сохраняется. S10 (1..255) Определяет промежуток времени, в течение которого может отсутствовать несущая от удаленного модема и при этом не произойдет разрыв связи. Содержимое регистра задает время в десятых долях секунды. По умолчанию несущая частота может отсутствовать 0,7 секунды, то есть регистр содержит число 7. В энергонезависимой памяти значение регистра не сохраняется. Заметим, что значение регистра S10 должно быть больше значения регистра S9, иначе связь будет невозможно установить. S11 (50..255) Используется при наборе номера по тоновой системе. Регистр определяет длительность (в миллисекундах) передачи одной цифры номера и промежутка между ними. Значение регистра не оказывает влияния на набор номера в импульсном режиме. В импульсном режиме модем набирает номер со скоростью 10 импульсов в секунду. S12 (20..255) Регистр определяет задержку, которую необходимо выдержать при передаче модему Escape-последовательности "+++" для перевода модема из режима передачи данных в командный режим. Регистр задает временной промежуток в 0,02 сотых секунды. По умолчанию регистр содержит 50. S13 - Регистр не используется. Теперь мы рассмотрим битовые регистры модемов. Вы можете использовать эти регистры для определения текущего состояния модема. Все они сохраняются в энергонезависимой памяти модема, если она установлена в модеме. S14 - состояние модема. 7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ ¦ ¦ L== Не используется ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L==== Эхо-вывод. При D1 = 0 эхо-вывод не ¦ ¦ ¦ ¦ ¦ ¦ выполняется, при D1 = 1 выполняется ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L====== Управление ответом модема; при D2 = 0 ¦ ¦ ¦ ¦ ¦ вывод разрешен, при D2 = 1 - запрещен. ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======== Управление формой ответа модема. Если ¦ ¦ ¦ ¦ данный бит равен нулю, ответ выполняется ¦ ¦ ¦ ¦ в сокращенной (цифровой) форме. В ¦ ¦ ¦ ¦ противном случае модем отвечает словами ¦ ¦ ¦ ¦ на английском языке ¦ ¦ ¦ ¦ ¦ ¦ ¦ L========== Не используется ¦ ¦ ¦ ¦ ¦ L============ Система набора номера. При D4 = 0 модем ¦ ¦ использует тоновую систему, а при ¦ ¦ D4 = 1 - импульсную ¦ ¦ ¦ L============== Не используется ¦ L================ Данный бит отражает текущее состояние модема. При D7 = 0 модем находится в состоянии ответа, а при D7 = 1 - в состоянии вызова другого модема S15 - Не используется. S16 - Параметры тестирования модема. S17 - Не используется. S18 (0..255) - Данный регистр задает длительность теста модема в секундах. S19 - Не используется. S20 - Не используется. S21 - Регистр имеет различные форматы для модемов различных фирм-изготовителей. 7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ LT- ¦ ¦ L== Тип используемого для телефонной ¦ ¦ ¦ ¦ ¦ ¦ линии разъема ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L==== Не используется ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L====== Управление сигналами RTS/CTS ¦ ¦ ¦ ¦ ¦ ¦ ¦ L========= Управление сигналом DTR ¦ ¦ ¦ ¦ ¦ L============ Управление сигналом DCD ¦ ¦ ¦ L============== Управление сигналом DSR ¦ L================ Управление режимом разрыва связи по тайм- ауту (по истечении лимита времени при потере несущей) S22 - Регистр управляет выбором набора ответов модема и динамиком. 7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ LT+T+-+T+T+T+T+T- ¦ L=T=- LT- L=¦ ¦ ¦ ¦ L== Эти биты устанавливают уровень громкости ¦ ¦ ¦ на встроенном динамике модема: ¦ ¦ ¦ 00 - не используется; ¦ ¦ ¦ 01 - низкий уровень звука; ¦ ¦ ¦ 10 - средний уровень звука; ¦ ¦ ¦ 11 - высокий уровень звука ¦ ¦ ¦ ¦ ¦ L======= Управление динамиком: ¦ ¦ 00 - динамик отключен все время; ¦ ¦ 01 - динамик включен до момента ¦ ¦ определения несущей; ¦ ¦ 10 - динамик включен все время; ¦ ¦ 11 - динамик включается после набора ¦ ¦ номера до определения несущей ¦ ¦ ¦ L============ Данные биты определяют набор ответов, ¦ используемых модемом: ¦ 000 - набор соответствует X0; ¦ 100 - набор соответствует X1; ¦ 101 - набор соответствует X2; ¦ 110 - набор соответствует X3; ¦ 111 - набор соответствует X4 ¦ L================ Бит управляет скоростью набора номера при тональной системе вызова: 0 - американский стандарт; 1 - английский (европейский) стандарт S23 - Регистр определяет различные параметры модема: 7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- LT- LT- ¦ LT- ¦ ¦ ¦ ¦ ¦ L== Управление удаленным тестированием ¦ ¦ ¦ ¦ модема. D0 = 0 - тестирование ¦ ¦ ¦ ¦ запрещено. D0 = 1 тестирование ¦ ¦ ¦ ¦ разрешено ¦ ¦ ¦ ¦ ¦ ¦ ¦ L===== Отражает скорость передачи данных ¦ ¦ ¦ модемом: ¦ ¦ ¦ 00 - скорость 0..300 бит/сек; ¦ ¦ ¦ 01 - скорость 600 бит/сек; ¦ ¦ ¦ 10 - скорость 1200 бит/сек; ¦ ¦ ¦ 11 - скорость 2400 бит/сек ¦ ¦ ¦ ¦ ¦ L======== Не используется ¦ ¦ ¦ L=========== Управление контролем четности ¦ передаваемых данных: ¦ 00 - проверка на четность; ¦ 01 - бит четности всегда равен 0; ¦ 10 - проверка на нечетность; ¦ 11 - бит четности всегда равен 1 ¦ L=============== Устанавливает частоту защитного сигнала: 00 - защитный сигнал не генерируется; 01 - защитный сигнал 550 герц; 10 - защитный сигнал 1800 герц; 11 - не используется S24 - Не используется. S25 - Регистр задает время задержки сигнала DTR в сотых долях секунды. Так, если регистр содержит число 5, то время задержки равно 5 * 0,001 = 0,005 секунды. S26 - Регистр задает время между сигналами RTS и CTS в сотых долях секунды. Зависит от команды &R0. S27 - Регистр задает различные параметры режима передачи данных модемом: 7 6 5 4 3 2 1 0 --T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ LT- ¦ ¦ L=¦ ¦ ¦ ¦ ¦ ¦ L== Управляет режимом передачи данных: ¦ ¦ ¦ ¦ ¦ 00 - асинхронный; ¦ ¦ ¦ ¦ ¦ 01 - синхронный; ¦ ¦ ¦ ¦ ¦ 10 - синхронный с набором номера из ¦ ¦ ¦ ¦ ¦ памяти; ¦ ¦ ¦ ¦ ¦ 11 - синхронный с набором номера ¦ ¦ ¦ ¦ ¦ AT-командой ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L====== D2 = 0 при передаче по телефонной линии, ¦ ¦ ¦ ¦ D2 = 1 при передаче по выделенному ¦ ¦ ¦ ¦ каналу ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======== Не используется ¦ ¦ ¦ ¦ ¦ L=========== Зарезервирован ¦ ¦ ¦ L============== Выбор протокола обмена: ¦ 0 - CCITT; ¦ 1 - Bell ¦ L================ Не используется |