2. Модемы и факс-модемы

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

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

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

Рис 2.1. Передача данных по телефонной линии с помощью модема

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

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

Для разработки стандартов передачи данных был создан специальный международный консультативный комитет по телеграфии и телефонии (International Consultative Committee for Telegraphy and Telephony - CCITT).

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

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

Международный консультативный комитет по телеграфии и телефонии разделил такие устройства на несколько групп. В настоящее время практически все факсимильные аппараты относятся к группе 3 (Group 3 Fax machines).

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

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

2.1. Основные понятия

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

2.1.1. Боды, биты за секунду и символы в секунду

Теперь настало время поговорить о том, как измеряется скорость передачи информации. В литературе и документации модемов фигурируют три различных единицы измерения скорости: биты за секунду (Bits Per Second - bps), боды (baud) и символы за секунду (Characters Per Second - cps). К сожалению, среди этих терминов существует путаница. Многие пользователи и даже сами разработчики модемов не делают разницы между этими понятиями. Мы придерживаемся в своем изложении следующих соглашений.

Биты за секунду

Модем обменивается данными с компьютером через порты асинхронного последовательного адаптера. Данные передаются последовательно бит за битом. Скорость, с которой происходит этот обмен, измеряется в битах за секунду (бит/с), или bps. Обычно, когда речь идет о скорости, с которой модем может передавать информацию, используется термин бит за секунду.

Например, вы можете встретить такие обозначения скорости передачи информации в документации модема - 1200 bps, 2400 bps, 9600 bps, 14400 bps. При этом подразумевается скорость, с которой происходит передача данных между компьютером и модемом.

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

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

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

Следовательно, фактическая скорость передачи информации для модема 2400 bps составит всего 240 символов за секунду, вместо 300.

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

Боды

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

Так, для модемов, соответствующих рекомендации CCITT V.32 и работающих со скоростью 9600 bps, применяется комплексный метод модуляции, в котором информация кодируется одновременным изменением фазы и амплитуды. Это позволяет закодировать в каждом значении сигнала 4 бита полезной информации. Таким образом, модем, работающий со скоростью 9600 bps, передает данные со скоростью всего 2400 бод.

2.1.2. Модуляция сигнала

Большинство современных модемов используют четыре основных метода модуляции сигнала, передаваемого по телефонной линии:

2.1.3. Дуплексный и полудуплексный режимы

Дуплексный режим работы модема позволяет одновременно передавать данные в двух направлениях. В дуплексном режиме работают модемы, соответствующие рекомендациям CCITT V.21, V.22, V.22 bis и V.32.

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

В общем случае дуплексные протоколы обладают большей производительностью, чем полудуплексные. Тем не менее, для тех приложений, в которых основной поток данных передается в одном направлении, вполне можно воспользоваться полудуплексными модемами. Так, практически все протоколы, используемые в факс-модемах для передачи факсов, полудуплексные: V.17, V.27 bis, V.27 ter, V.29.

2.1.4. Асинхронная и синхронная передача данных

Последней характеристикой, которую мы рассмотрим, определяет, какой применяется способ передачи информации между модемами - асинхронный или синхронный.

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

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

2.2. Рекомендации CCITT для модемов

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

Рекомендация Скорость передачи, бит/с
V.21 300
V.22 600, 1200
V.22 bis 1200, 2400
V.23 1200
V.32 4800, 9600
V.32 bis 7200, 12000, 14400
V.34 28800
Bell 103 300
Bell 212A 1200

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

2.2.1. CCITT V.21

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

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

2.2.2. CCITT V.22

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

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

2.2.3. CCITT V.22 bis

Дуплексный модем, со скоростью передачи данных 1200 и 2400 бит за секунду. При передаче данных со скоростью 2400 бит за секунду используется метод квадратурно-амплитудной модуляции, а при скорости 1200 бит за секунду - метод фазовой модуляции.

Модем, регламентированный CCITT V.22 bis может обмениваться данными с модемами соответствующими рекомендации CCITT V.22. Естественно скорость обмена не будет выше, чем 1200 бит за секунду.

2.2.4. CCITT V.23

Асинхронный модем, использующий метод частотной модуляции. Модем может работать в полудуплексном режиме со скоростью передачи данных по прямому каналу - 600/1200 бит за секунду, а по обратному - только 75 бит за секунду. Отметим, что этот стандарт не совместим с CCITT V.21, V.22 и V.22 bis.

2.2.5. CCITT V.32

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

2.2.6. CCITT V.32 bis

V.32 bis является расширением рекомендации V.32. Модем, работающий в соответствии с данной рекомендацией, использует асинхронно-синхронный дуплексный режим передачи данных. Для модуляции передаваемого сигнала применяется метод квадратурно-амплитудной модуляции. Позволяет передавать данные со скоростями 7200, 12000 и 14400 бит за секунду.

2.2.7. CCITT V.34

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

2.2.8. Bell 103, Bell 212A

Bell - устаревший американский стандарт, не совместимый со стандартами CCITT. Регламентирует низкоскоростные модемы, передающие данные со скоростями 300 бит за секунду и 1200 бит за секунду в дуплексном режиме.

2.3. Коррекция ошибок и сжатие информации

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

2.3.1. Протоколы коррекции ошибок

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

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

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

Протоколы коррекции ошибок могут быть реализованы не только на аппаратном, но и на программном уровне. Аппаратный уровень реализации более эффективен. Наиболее распространенны следующие протоколы коррекции ошибок, поддерживаемые модемами на аппаратном уровне - MNP1-MNP10 и V.42.

2.3.2. Протоколы компрессии передаваемых данных

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

При использовании модемов с аппаратной поддержкой протоколов сжатия информации следует установить скорость работы COM-порта, к которому подключен модем, выше скорости работы модема. Так, если модем может работать со скоростью 2400 bps, установите скорость COM-порта 9600 bps.

Среди протоколов компрессии, реализованных на аппаратном уровне, наибольшее распространение получили протоколы фирмы Microcom - MNP5 и MNP7, а также протокол, разработанный международным консультативным комитетом по телеграфии и телефонии - V.42 bis.

2.3.3. Протоколы MNP

MNP (Microcom Network Protocols) - серия наиболее распространенных аппаратных протоколов коррекции ошибок и сжатия передаваемой информации, разработанная и реализованная фирмой Microcom. На момент написания книги известны десять протоколов MNP1 - MNP10. Приведем их характеристики:

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

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

MNP3 - протокол коррекции ошибок, поддерживающий синхронный дуплексный метод передачи данных между модемами.

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

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

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

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

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

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

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

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

2.3.4. Рекомендация CCITT V.42

Вскоре после разработки фирмой Microcom протоколов коррекции ошибок MNP международный консультативный комитет по телеграфии и телефонии приступил к созданию собственного стандарта. Таким стандартом стала рекомендация CCITT V.42. Модемы, соответствующие рекомендации V.42 более устойчивы и обеспечивают большую производительность, чем модемы с поддержкой протоколов MNP. Рекомендации V.42 включают в себя протоколы MNP2-MNP4, чтобы обеспечить совместимость со старыми модемами и новый протокол коррекции ошибок LAPM (Link Access Procedure for Modems). Протокол LAPM включается только в том случае, если модем соединился с другим модемом, поддерживающим рекомендацию V.42.

Некоторые торговые фирмы пытаются продать старые модемы, которые аппаратно поддерживают только протоколы MNP, а не LAPM, как модемы, совместимые со стандартом V.42. Конечно, они совместимы, но это не имеет никакого отношения к достоинствам модема. Просто рекомендации CCITT V.42 включают в себя как часть поддерживаемые этим модемом старые протоколы MNP. Поэтому при покупке модема обратите особое внимание на то, что модем должен быть не просто совместим с CCITT V.42, а полностью соответствовать V.42 (т. е. поддерживать протокол LAPM).

2.3.5. Рекомендация CCITT V.42 bis

Протокол V.42 bis использует метод компрессии, при котором определяется частота появления отдельных символьных строк и происходит их замена на последовательности символов меньшей длины (токены). Этот алгоритм компрессии носит название Limpel-Ziv.

За счет применения алгоритма Limpel-Ziv модемы, реализующие V.42 bis, сильнее сжимают данные, чем модемы, поддерживающие MNP5.

Модемы с V.42 более "разборчивы", чем с MNP5. Если передаваемые данные не содержат избыточной информации, они не пытаются их сжать и передают в исходном виде.

2.4. Рекомендации CCITT для факс-модемов

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

Необходимо чтобы факс-модем поддерживал как минимум одну рекомендацию CCITT по передаче данных через телефонные линии - V.27 ter, V.29 или V.17.

Рекомендация Скорость передачи, бит/с
V.21 200
V.17 9600, 14400
V.27 bis 4800
V.27 ter 2400, 4800
V.29 7200, 9600

Протокол V.21 слишком медленный и применяется только на этапе установления связи. Далее начинают работу другие протоколы: V.17, V.27 ter или V.29. Эти протоколы значительно быстрее и обеспечивают прием или передачу факса в полудуплексном режиме.

Но одних этих протоколов недостаточно для обмена факсимильными сообщениями. Факс-модем должен также соответствовать рекомендациям CCITT T.4 и T.30. Рекомендация CCITT T.4 определяет различные параметры факсимильных аппаратов: размер листа передаваемого документа, разрешение, направление сканирования документа, алгоритмы сжатия передаваемой графической информации.

Рекомендация CCITT T.30 регламентирует процедуру установления соединения, согласование параметров связи, передачу образа документа и завершение связи.

И наконец, в дополнение к расширенному набору AT-команд, факс-модем должен поддерживать набор команд класса 1 или класса 2, предназначенных для управления факсом.

2.5. Управление модемами

Модем может работать в двух основных режимах - командном режиме и режиме обмена данными. В режиме обмена данными он может принимать и передавать данные между компьютером и удаленным модемом. При этом компьютер принимает и передает данные от модема через асинхронный порт (COM-порт), на котором установлен модем.

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

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

Сразу после включения питания модем находится в командном режиме. Из командного режима вы можете переключиться в режим передачи данных следующими способами:

2.5.1. Система команд hayes-модемов

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

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

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

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

Расширенный набор AT-команд

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

После префикса AT могут идти одна или сразу несколько команд. Команды могут быть отделены друг от друга символами пробела, тире, скобками. Эти символы не несут для модема никакой смысловой нагрузки и просто игнорируются.

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

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

Если вы допустили ошибку при наборе команды, можно удалить последний символ из буфера модема, передав ему код возврата (<Backspace>).

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

Теперь приведем описание расширенной системы команд hayes-модемов. Для каждой команды дано ее краткое описание и рекомендации по использованию. Маленький символ n, расположенный в команде, означает число. Значения, принимаемые переменной n зависят от конкретной команды. Символ r, встречающийся в описании команды S, означает номер регистра модема.

У разных моделей модемов наборы AT-команд имеют свои особенности, поэтому все команды полностью описаны только в документации на конкретную модель модема.

Префикс AT

AT - начало (префикс) командной строки. После получения этой команды модем автоматически подстраивает скорость передачи и формат данных к параметрам компьютера.

Ответ на вызов удаленного модема (команда A)

A - Команда заставляет модем снять трубку, подключиться к телефонной линии и ответить на вызов удаленного модема.

Данная команда особенно полезна, если режим автоматического ответа выключен (регистр S0 = 0). Она позволяет оператору ответить на телефонный вызов.

Команду можно использовать, если вы сами позвонили абоненту, и после обычного телефонного разговора желаете передать данные, не разрывая связи.

Повтор последней введенной команды (команда A/)

A/ - модем повторяет последнюю введенную команду. Команда передается модему без префикса AT и исполняется модемом немедленно, не ожидая прихода символа возврата каретки <CR>. Если вы передадите модему строку AT A/ <CR>, то модем укажет на ошибку и вернет компьютеру слово ERROR.

Выбор протокола обмена данными (команда B)

Bn - команда производит выбор стандарта, согласно которому будет происходить обмен данными между модемами. При скорости передачи 300 бит/с происходит выбор между стандартами BELL 103 и CCITT V.21, при скорости 1200 бит/с - между BELL 212A и CCITT V.22 bis.

При скорости 2400 бит/с и выше команда игнорируется и используется соответствующий стандарт (например, для скорости 2400 бит/с модем будет работать в соответствии с рекомендацией CCITT V.22).

Управление несущей частотой (команда C)

По команде C0 модем прекращает передачу несущей частоты. Команда C1 восстанавливает передачу несущей частоты. Данная команда поддерживается не всеми модемами.

Вызов абонента (команда D)

D[номер] - команда используется для набора номера. После получения этой команды модем снимает трубку, подключается к телефонной линии и начинает набор номера. Набрав номер, модем ожидает пока удаленный модем снимет трубку и затем пытается установить связь.

После установления связи модем переходит в режим передачи данных. Команда состоит из префикса AT, символа D и телефонного номера, в состав которого могут входить следующие управляющие модификаторы:

Модификатор Назначение
P или T Эти модификаторы производят выбор между импульсной и тоновой системой набора номера. Импульсная система означает, что цифры телефонного номера, идущие после символа P, модем должен набирать импульсами (символы 0..9). Тоновая система означает, что цифры телефонного номера, идущие после символа T, модем должен набирать частотными сигналами (разрешено использовать символы 0..9, A..D,* ,#). В нашей стране используется импульсная система набора номера. Если вы будете использовать префикс T, то АТС не сможет вас соединить
, Символ запятой может быть расположен в любом месте команды и вызывает паузу перед набором оставшейся части номера. Длительность паузы определяется значением регистра модема S8. По умолчанию задержка составляет две секунды
; Символ точки с запятой, который должен находится в конце командной строки набора номера, переводит модем после набора номера в командный режим. Эта возможность может быть использована, чтобы разбить длинный телефонный номер, не помещающийся в буфере модема, на несколько частей
@ Модем ожидает пятисекундной тишины на линии в течение заданного промежутка времени. Промежуток времени, в течение которого модем ожидает тишины, задается в регистре S7. Если в течение этого времени паузы тишины не было, модем отключается и отвечает NO ANSWER.
! Если знак ! стоит перед знаками последовательности набора, модем кладет трубку на 0,5 секунды, а затем снова снимает ее
S Модем набирает телефонный номер, записанный в его памяти. Эта команда выполняется только для модемов, имеющих встроенную энергонезависимую память и возможность записи в нее номеров телефонов. Для записи номера в энергонезависимую память модему предназначена команда &Z
R После набора номера переводит модем из режима вызова в режим ответа. Этот модификатор должен находиться в конце набираемого номера
W Перед дальнейшим набором телефонного номера модем ожидает длинный гудок из линии. Время ожидания гудка определяется значением регистра S7 и по умолчанию составляет 30 секунд. Если в отведенное время гудок не появился, модем прекращает набор номера и возвращает сообщение NO DIALTONE. Этот параметр может быть полезен при наборе междугородных номеров

Следующая команда набирает номер 111-22-33, используя импульсную систему набора, и пытается установить связь с модемом на другом конце телефонного номера:

ATDP 111 22 33 <CR>

Модем снимет трубку. Если на линии нет гудка, например, вы сняли трубку параллельного телефона, модем возвращает сообщение NO DIALTONE. В том случае, если номер занят, модем вернет сообщение BUSY. Если на другом конце линии не отвечают, возвращается сообщение NO ANSWER. В случае успешного соединения с удаленным модемом, он вернет сообщение CONNECT и переключится из командного режима в режим обмена данными.

Команду вызова абонента можно использовать для переключения из обычного телефонного разговора в режим передачи данных модемом. Для этого, окончив телефонный разговор, абоненты должны, не вешая трубок, запустить на своих компьютерах телекоммуникационные программы. Затем на одном компьютере надо набрать команду ATA <CR>, а на другом ATD <CR>. После этого модемы подключатся к линии и установят связь. 1

Управление эхо-выводом команд (команда E)

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

Выбор стандарта связи (команда F)

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

Команда F имеет расширенный формат для современных высокоскоростных модемов и используется для выбора рекомендации CCITT, в соответствии с которой модем будет передавать данные. Более подробную информацию вы сможете получить из документации на ваш модем.

Управление телефонной линией (команда H)

Команда Hn используется для управления телефонной линией. По команде H0, или просто H, модем вешает трубку и отключается от линии. Обычно команда H0 используется для разрыва связи с удаленным модемом. Сначала модем переводят из режима передачи данных в командный режим, а затем передают ему команду ATH0 <CR>.

Для перевода модема из режима передачи данных в командный режим модему необходимо передать Escape-последовательность "+++".

По команде H1 модем снимает трубку и подключается к линии. Эта модификация команды H используется крайне редко.

Выдача идентификационного кода модема (команда I)

Команда In выдает различную справочную информацию о модеме. Различные модемы поддерживают команду I для разных значений n. Если указать номер n больший, чем распознает модем, он возвращает ответ OK или ERROR.

В следующей таблице мы привели справочную информацию, выдаваемую модемами Yokohama, Zoltrix и Smart - One - 2400, в ответ на передачу им команд ATI1-ATI8.

Команда Ответ модема Yokohama 14400/14400 Ответ модема Zoltrix-1800 Ответ модема Smart - One - 2400
ATI, ATI0 14400 OK 248 OK 249 OK
ATI1 007 OK 000 OK 123 OK
ATI2 OK OK OK OK OK OK
ATI3 CES-03 931216 OK Sierra V4.04 - 09/28/1990 OK OK OK
ATI4 a007040284C6002F bC60000000 r1005111151012000 r3000111170000000 OK PAR-INT HYB-MAP SC11046 *NO MNP * SENDFAX 4800 * OK OK OK
ATI5 022 OK 4611 OK OK OK
ATI6 RC144DPi Rev CA OK OK OK OK
ATI7 ERROR OK OK OK
Установка громкости внутреннего динамика (команда L)

Команда Ln управляет громкостью сигнала внутреннего динамика модема. L0 и L1 соответствует низкой громкости, L2 - средней и L3 - максимальной. Для некоторых модемов команда L3 не поддерживается.

Управление внутренним динамиком (команда M)

Команда Mn управляет внутренним динамиком модема. Команда M0 (M) полностью отключает динамик модема. По команде M1 динамик включается только во время набора номера и выключается после соединения с удаленным модемом (обнаружения несущей). По команде M2 динамик остается включен все время. По команде M3 динамик включается после набора последней цифры номера и выключается после обнаружения несущей отвечающего модема.

Команда позволяет выполнять звуковой контроль за процессом набора номера, соединения с удаленным модемом и обмена данными.

Управление ответом модема на AT-команды (команда Q)

Команда Qn управляет режимом ответа модема на AT-команды. Команда Q0 разрешает передачу ответа компьютеру, команда Q1 запрещает выдачу ответа. Независимо от команды Q модем всегда сообщает содержание регистров, свой идентификационный код, контрольную сумму памяти и результаты теста (команды S, I).

Перевод модема из командного режима в режим передачи данных (команда O)

Команда On переводит модем из командного режима в режим передачи данных. При этом модем отвечает CONNECT.

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

Команда О1 переводит модем в режим передачи данных и заставляет его заново согласовать протоколы и стандарты связи с удаленным модемом.

Чтение и запись в регистры модема (команда S)

Команда S имеет два различных формата Sr? и Sr = n. Команда Sr? - производит чтение содержимого регистра модема, имеющего номер r. Команда Sr = n - записывает число n в регистр модема, имеющий номер r. Число n может принимать значения от 0 до 255.

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

Например, чтобы перевести модем в режим автоответа, ему необходимо передать следующую команду:

ATS0=0 <CR>

В ответ на денную команду, модем запишет в регистр S0 значение 0 и вернет компьютеру сообщение OK.

Выбор вида ответа модема на AT-команды (команда V)

Команда Vn производит выбор вида ответа модема на AT-команды. После того как модем получит команду V0, он возвращает компьютеру ответ цифровым кодом (например, 0, 1, 2), а после получения команды V1 модем отвечает в символьном виде на английском языке (например, CONNECT, BUSY, OK).

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

Цифровой код результата оканчивается символом перевода строки, а символьный код начинается и заканчивается символами перевода строки и возврата каретки.

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

В следующей таблице представлены различные ответы (сообщения) модема на передаваемые ему AT-команды. Современные модемы, поддерживающие протоколы коррекции ошибок и сжатия передаваемой информации, могут возвращать другие сообщения. Их полный список можно найти в документации вашего модема.

Ответ в символьном виде Ответ цифровым кодом Смысл
OK 0 Модем выполнил команду без ошибок
CONNECT 1 Модем установил связь со скоростью 300 bps (после выполнения команд X1, X2, X3, X4) или со скоростью 600, 1200, 2400 bps (после выполнения команды X0)
RING 2 Модем обнаружил сигнал звонка на телефонной линии. Это сообщение модем передает компьютеру каждый раз, когда по телефонной линии поступает сигнал вызова (звонок)
NO CARRIER 3 Модем потерял несущую частоту или не получил ответ от удаленного модема
ERROR 4 Ошибка в командной строке, командный буфер переполнен или ошибка в контрольной сумме (команда I2)
CONNECT 1200 5 Модем установил связь со скоростью 1200 bps, (см. команды X1, X2, X3, X4)
NO DIALTONE 6 Отсутствие сигнала станции при снятии трубки (см. команды X2, X4)
BUSY 7 Модем обнаружил сигнал "занято" после набора номера
NO ANSWER 8 Ответ получается в случае использования в командной строке управляющего символа @, если не выполнено условие пятисекундной тишины
CONNECT 600 9 Модем установил связь со скоростью 600 bps (см. команды X1, X2, X3, X4)
CONNECT 2400 10 Модем установил связь со скоростью 2400 bps (см. команды X1, X2, X3, X4)
Выбор набора сообщений модема (команда X)

Команда Xn определяет набор сообщений модема, управляет определением сигнала "занято" и проверкой наличия гудков на линии.

Сообщение Скорость, bps
CONNECT 300
CONNECT 600 600
CONNECT 1200 1200
CONNECT 2400 2400
CONNECT nnnn nnnn

Номер набирается модемом после паузы вне зависимости от присутствия гудка на линии. Состояние "занято" не определяется.

Ниже приводится таблица с возможными сообщениями от модема для каждой X-команды:

Сообщение\
Команды
X0 X1 X2 X3 X4 Смысл
CONNECT * * * * * Соединение
RING * * * * * Пришел звонок
NO CARRIER * * * * * Потеря или неудачная попытка связи
ERROR * * * * * Ошибка в команде, неправильная команда
CONNECT nnnn
(например, CONNECT 9600)
  * * * * Соединение на скорости nnnn
NO DIALTONE     *   * После снятия модемом телефонной трубки не обнаружен сигнал коммутатора (длинный гудок)
BUSY       * * Номер занят
NO ANSWER     * * * При использовании команды @, модем не обнаружил пятисекундной паузы (тишины) на линии или вызываемый модем не отвечает

Если модему передали команду X2 или X4, то модем разрывает связь и кладет трубку, когда передающий модем переводит телефонную линию в состояние BREAK на 1,6 сек.

Выбор способа отключения модема от линии (команда Y)

Команда Yn определяет способ отключения модема от линии. Команда Y1 принуждает модем повесить трубку, если от удаленного модема получен сигнал BREAK протяженностью больше 16 секунд. Когда модем вешает трубку, он также будет посылать сигнал BREAK удаленному модему в течение 4 секунд.

Команда Y0 не разрешает модему прервать связь при получении длительного сигнала BREAK. Этот режим включен по умолчанию.

Сброс конфигурации модема (команда Z)

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

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

ATZ1 <CR>
Escape-последовательность

Escape-последовательность +++ используется для перевода модема из режима передачи данных в командный режим. Благодаря этой команде можно перейти из режима передачи данных модемом в командный режим работы без разрыва связи. Модем требует тишины перед и после направления этой Escape-последовательности. Величина этого промежутка тишины определена в регистре S12. В заводской установке регистр S12 содержит значение 50, соответствующее 1 секунде. Десятичную величину знака ASCII, который является знаком последовательности выхода, содержит регистр S2 (в заводской установке S2 = 43, т.е. '+').

После того как модем перешел в командный режим, можно повесить трубку и разорвать сеанс связи. Для этого следует передать модему команду ATH0 <CR>.

Если вы перевели модем в командный режим, то чтобы изменить некоторые параметры связи вы можете переключить его обратно в режим передачи данных. Для этого можно передать модему команду ATO <CR>.

Управление сигналом DCD (команда &C)

Команда &Cn управляет сигналом DCD COM-порта компьютера (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). Сигнал DCD иногда также называют CD или RLSD.

Команда &C0 принудительно устанавливает сигнал DCD. По команде &C1 модем устанавливает сигнал DCD только тогда, когда модем обнаруживает несущую частоту от удаленного модема.

Управление сигналом DTR (команда &D)

Команда &Dn управляет сигналом DTR (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &D0 - модем игнорирует DTR. &D1 - при потере сигнала DTR модем переходит в командный режим работы. &D2 - при потере сигнала DTR модем прекращает связь, отключается от линии, отключает режим автоответа и переходит в командный режим работы. &D3 - при потере сигнала DTR автоматически сбрасывается конфигурация модема, как при выполнении команды ATZ. Модем обнаруживает потерю сигнала DTR, если сигнал DTR отсутствует дольше времени, определенного в регистре модема S25.

Установка конфигурации, записанной в постоянной памяти (команда &F)

Команда &F устанавливает конфигурацию, записанную в постоянной памяти модема. Для модемов, обладающих энергонезависимой памятью, команда &F загружает конфигурацию, записанную в энергонезависимой памяти.

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

Включение/выключение защитной частоты (команда &G)

Команда &Gn управляет передачей защитной частоты. Команда &G0 выключает защитную частоту, &G1 - включает защитную частоту 550 Hz, &G2 - модем генерирует защитную частоту 1800 Hz.

Использование данной команды зависит от особенностей телефонной линии и модема.

Управление потоком (команда &K)

Команда &Kn предназначена для выбора режима управления потоком между модемом и компьютером. Когда буфер модема заполняется почти полностью, модем либо передает компьютеру сигнал XOFF или отключает сигнал CTS. Это является сигналом, чтобы компьютер временно прекратил передачу данных модему. Когда модем передаст удаленному компьютеру все данные из своего буфера, и буфер станет практически пуст, модем передает компьютеру символ XON или устанавливает сигнал на линии CTS.

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

Выбор линии связи (команда &L)

Команда &Ln определяет вид линии связи. &L0 - передача по обычным телефонным линиям связи (выбрано по умолчанию), &L1 - передача по выделенным каналам связи.

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

Установка асинхронного/синхронного режима работы (команда &M)

Команда &Mn предназначена для установки асинхронного или синхронного режима работы. При n = 0 устанавливается асинхронный режим; при n = 1, 2, 3 устанавливается синхронный режим.

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

Установка импульсного коэффициента набора номера (команда &P)

Команда &Pn устанавливает импульсный коэффициент набора номера в соответствии с различными стандартами. &P0 - коэффициент заполнения замыкание/интервал 39/61 (американский стандарт), &P1 - коэффициент заполнения замыкание/интервал 33/67 (английский стандарт). В течение секунды модем может подать 10 импульсов.

Некоторые модемы поддерживают несколько значений импульсного коэффициента набора номера и могут передавать импульсы с большей частотой. Более подробно команда должна быть описана в документации вашего модема.

Управление сигналом CTS (команда &R)

Команда &Rn управляет сигналом CTS (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &R0 - сигнал CTS переходит в активное состояние после получения сигнала RTS. Данные, передаваемые модему до поступления сигнала RTS, игнорируются. &R1 - модем игнорирует RTS. Во время асинхронной передачи данных (команда &M0) сигнал CTS всегда активен. Особенности использования данной команды вы можете посмотреть в описании модема.

Управление сигналом DSR (команда &S)

Команда &Sn управляет сигналом DSR (см. главу "Асинхронный адаптер", раздел "Аппаратная реализация"). &S0 - сигнал DSR активен всегда, пока модем включен. &S1 - сигнал DSR активизируется только после окончания этапа установления связи между модемами (квитирования).

Тестирование модема (команда &T)

Команда &Tn используется для тестирования модема.

С помощью команды &T0 можно прервать выполнение теста модема в любой момент. Если модем выполняет локальный аналоговый тест или удаленный цифровой тест, то перед передачей команды &T0 надо с помощью Escape-последовательности перевести модем в командный режим.

По команде &T1 модем начинает выполнять локальный аналоговый тест. Продолжительность теста определяется регистром S18. В ходе локального аналогового теста проверяется и модем и компьютер (см. рис. 2.2).

Рис. 2.2. Локальный аналоговый тест

По команде &T3 модем выполняет локальный цифровой тест (см. рис. 2.3). Этот тест используется для проверки линии связи и удаленного модема. Во время локального цифрового теста модем направляет поступающие ему данные обратно на удаленный компьютер. Для выполнения теста соединитесь с удаленным модемом, затем переключите модем в командный режим и выполните команду &T3. Оператор удаленного модема должен передать несколько проверочных сообщений. Поступив на ваш модем, они будут отправлены обратно удаленному модему. Если принятое удаленным модемом сообщение эквивалентно переданному, значит, линия и удаленный модем исправны.

Рис. 2.3. Локальный цифровой тест

Команда &T4 дает согласие на начало удаленного цифрового теста, который запрашивает удаленный модем.

Команда &T5 не дает согласия удаленному модему на начало удаленного цифрового теста.

Команда &T6 вызывает выполнение удаленного цифрового теста (см. рис. 2.4). При этом происходит проверка локального компьютера, локального модема удаленного модема и линии связи:

Рис. 2.4. Удаленный цифровой тест

По команде &T7 модем выполняет удаленный цифровой тест с самодиагностикой (см. рис. 2.5). Модем сам генерирует тестовые сообщения и подсчитывает число ошибок.

Рис. 2.5. Удаленный цифровой тест

По команде &T8 производится локальный аналоговый тест с самодиагностикой (см. рис. 2.6). При этом модем сам генерирует тестовые сообщения и подсчитывает число ошибок.

Рис. 2.6. Локальный аналоговый тест с самодиагностикой

Чтение текущей конфигурации модема (команда &V)

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

AT&V
ACTIVE PROFILE:
B1 E1 L1 M1 N1 Q0 T V1 W0 X4 Y0 &C1 &D0 &G0 &J0 &K3 &Q5 &R1 &S0 &T4 &X0 &Y0
S00:000 S01:000 S02:043 S03:013 S04:010 S05:008 S06:002 S07:050 S08:002 S09:006
S10:014 S11:095 S12:050 S18:000 S25:005 S26:001 S36:007 S37:000 S38:020 S44:020
S46:138 S48:007 S95:000

STORED PROFILE 0:
B1 E1 L1 M1 N1 Q0 T V1 W0 X4 Y0 &C1 &D0 &G0 &J0 &K3 &Q5 &R1 &S0 &T4 &X0
S00:000 S02:043 S06:002 S07:050 S08:002 S09:006 S10:014 S11:095 S12:050 S18:000
S36:007 S37:000 S40:105 S41:131 S46:138 S95:000

STORED PROFILE 1:
B1 E1 L1 M1 N1 Q0 T V1 W0 X4 Y0 &C1 &D0 &G0 &J0 &K3 &Q5 &R1 &S0 &T4 &X0
S00:000 S02:043 S06:002 S07:050 S08:002 S09:006 S10:014 S11:095 S12:050 S18:000
S36:007 S37:000 S40:105 S41:131 S46:138 S95:000

TELEPHONE NUMBERS:
0=123 45 67                            1=987 65 43
2=102 93 84                            3=564 73 82

OK
Запись конфигурации модема в энергонезависимую память (команда &W)

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

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

Запись телефонного номера в энергонезависимую память (команда &Z)

Команда &Zn используется для записи телефонного номера в энергонезависимую память модема. Количество номеров, которое может запомнить модем, зависит от конкретной модели.

Например, для записи в энергонезависимую память номера 325-48-17 можно передать модему следующую команду:

AT &Z1 3254817 <CR>

Для набора этого номера достаточно передать модему следующую команду:

AT DP S=1 <CR>

2.5.2. Регистры модемов

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

Ниже мы даем описание 28 регистров модема. Для каждого регистра мы приводим его описание, диапазон возможных значений и значение, записываемое в него по умолчанию.

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

Регистр S0

Регистр управляет режимом ответа модема на телефонный вызов. Регистр S0 задает количество звонков, после которых модем снимает трубку, подключается к линии и отвечает на вызов удаленного модема.

Если регистр S0 содержит нулевое значение, то режим автоответа выключен. Когда режим автоответа выключен и поступает вызов от удаленного абонента модем не станет отвечать. Чтобы снять трубку, надо передать модему команду ATA.

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

Регистр S1

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

Регистр S2

Данный регистр содержит ASCII-код Escape-символа, используемого в последовательности перехода в командный режим. Обычно он имеет значение 43, что соответствует ASCII символу '+'. Вы можете переопределить Escape-символ, записав в этот регистр ASCII-код другого символа.

Если записать в регистр S2 число, больше чем 127, происходит блокировка последовательности возврата. При этом вы не сможете переключиться из режима передачи данных в командный режим без потери связи с удаленным модемом. Содержимое регистра не сохраняется в энергонезависимой памяти.

Регистр S3

Регистр содержит ASCII-код символа возврата каретки - <CR>. По умолчанию регистр содержит ASCII-код 13. Вы можете переопределить этот символ, записав в регистр новое значение.

Содержимое регистра не сохраняется в энергонезависимой памяти. Это гарантирует, что после выключения питания вы снова сможете использовать символ с ASCII-кодом, равным 13, для ввода AT-команд.

Регистр S4

Регистр содержит ASCII-код символа перевода строки - <LF>. По умолчанию регистр содержит ASCII-код 10. Вы можете переопределить этот символ, записав в регистр другое значение. Содержимое регистра не сохраняется в энергонезависимой памяти.

Регистр S5

Регистр содержит ASCII-код символа возврата <Backspace> (возврат на один символ назад). По умолчанию регистр содержит ASCII-код 8. Вы можете переопределить этот символ, записав в регистр новое значение.

Заметим, однако, что если вы запишете в регистр ASCII-код от 31 до 127, то вы не сможете использовать символ с этим кодом в командном режиме. Содержимое регистра не сохраняется в энергонезависимой памяти.

Регистр S6

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

Регистр S7

Определяет время в секундах после набора номера, в течение которого модем должен выполнить соединение (обнаружить несущую частоту от удаленного модема). По умолчанию регистр содержит значение 30. Если в течение этого времени модем установит связь, он выдает сообщение CONNECT согласно команде ATX. Если связь не будет установлена, модем отвечает NO CARRIER. В энергонезависимой памяти значение регистра не сохраняется.

Регистр S8

Содержит время задержки при наборе номера (в секундах), которая происходит по модификатору ',' команды ATD. По умолчанию время задержки две секунды. В энергонезависимой памяти регистр не сохраняется.

Регистр S9

Определяет время, в течение которого модем должен принимать несущую частоту от удаленного модема. Если несущая принималась в течение этого времени, модем передает компьютеру сигнал DCD. Содержимое регистра задает время в десятых долях секунды. По умолчанию для установки DCD модем должен принимать несущую 0,6 секунды, то есть регистр содержит число 6. В энергонезависимой памяти значение регистра не сохраняется.

Регистр S10

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

Содержимое регистра задает время в десятых долях секунды. По умолчанию несущая частота может отсутствовать 0,7 секунды, то есть регистр содержит число 7. В энергонезависимой памяти значение регистра не сохраняется. Заметим, что значение регистра S10 должно быть больше значения регистра S9, иначе связь будет невозможно установить.

Регистр S11

Используется при наборе номера по тоновой системе. Регистр определяет длительность (в миллисекундах) передачи одной цифры номера и промежутка между ними.

Регистр S12

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

Промежуток времени между передачей модему символов Escape-последовательности ('+') не должен превышать задержку, определенную регистром S12.

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

Регистр S12 задает временной промежуток в 0,02 сотых секунды. По умолчанию регистр содержит 50.

Регистр S13

Регистр не используется.

Регистр S14

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

Регистр S14 определяет состояние модема. Рассмотрим отдельные биты этого регистра.

Регистр S15

Не используется.

Регистр S16

Параметры тестирования модема.

Регистр S17

Не используется.

Регистр S18

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

Если записать в регистр S18 нулевое значение, модем будет находиться в режиме тестирования до тех пор, пока ему не будет передана команда &T0.

Регистр S19

Не используется.

Регистр S20

Не используется.

Регистр S21

Регистр имеет различные форматы для модемов различных фирм-изготовителей.

Регистр S22

Регистр управляет выбором набора ответов модема и динамиком.

Регистр S23

Регистр определяет различные параметры модема:

Регистр S24

Не используется.

Регистр S25

Регистр задает время задержки сигнала DTR в сотых долях секунды. Так, если регистр содержит число 5, то время задержки равно 5 * 0,01 = 0,05 секунды.

Регистр S26

Регистр задает время между сигналами RTS и CTS в сотых долях секунды. Зависит от команды &R0.

Регистр S27

Регистр задает различные параметры режима передачи данных модемом:

2.5.3. Коррекция ошибок и сжатием информации

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

При использовании модемов с аппаратной поддержкой протоколоа сжатия информации, например, MNP5 или CCITT V.42 bis, следует установить скорость работы последовательного порта вдвое выше скорости модема.

Команды модемов с протоколом MNP, CCITT V.42 и V.42 bis

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

На вашем модеме набор команд может несколько отличаться от представленного нами. Поэтому для получения более полных сведений обращайтесь к документации на ваш модем.

Выбор размера блоков протокола MNP (команда \A)

Команда \An устанавливает максимальный размер блоков, используемых протоколом MNP при передаче данных. Для увеличения скорости обмена по хорошим линиям увеличьте размер блока. Если связь неустойчива и возникает много ошибок, используйте более короткие блоки, так как это может уменьшить число повторных передач ошибочных блоков.

Команда Максимальный размер блока, байт
\A0 64
\A1 128
\A2 192
\A3 256

По умолчанию максимальный размер блока данных устанавливается равным 256 байтам.

Передача сигнала прерывания (команда \B)

В режиме без поддержки аппаратной коррекции ошибок, команда \Bn вызывает передачу сигнала прерывания - BREAK. Длительность сигнала прерывания определяется параметром n (n от 1 до 9) в десятых долях секунды. Режим обработки прерывания при получении сигнала BREAK определяется параметром команды \K.

Управление сжатием данных (команда %C)

Команда %Cn управляет сжатием данных при передаче их по линии связи. По умолчанию сжатие передаваемых данных разрешено.

Контроль качества связи (команда %E)

Команда %En управляет контролем качества связи. Данная команда имеет особенности на различных моделях модемов. Для получения более подробной информации обратитесь к документации на ваш модем.

Управление протоколом XON/XOFF (команда \G)

Команда \Gn устанавливает протокол обмена между модемами с использованием управляющих символов XON/XOFF. Используйте протокол XON/XOFF с осторожностью. Когда вы передаете двоичные файлы, после передачи символа XOFF передача данных приостановится до получения символа XON.

Управление скоростями передачи данных (команда \J)

Команда \Jn управляет скоростями передачи данных. Данная команда работает не на всех модемах. Для получения более подробной информации обратитесь к документации на ваш модем.

Управление обработкой сигнала BREAK от удаленного модема (команда \K)

Команда \Kn определяет действие модема после получения им сигнала BREAK от компьютера или удаленного модема.

Рассмотрим, что происходит при получении модемом сигнала BREAK от компьютера, когда модем находится в стандартном режиме или в режиме коррекции ошибок (в режиме MNP).

Более подробную информацию о команде \K можно получить из документации на ваш модем.

Выбрать потоковый или блочный метод обмена данными (команда \L)

Команда \Ln устанавливает потоковый или блочный метод обмена данными при соединении в режиме MNP.

Определить уровень сигнала на линии (команда %L)

Команда %L позволяет узнать уровень сигнала на телефонной линии. Значение, возвращаемое модемом при передаче ему команды %L, определяет уровень сигнала на линии.

Выбор режима обмена данными (команда \N)

Команда \Nn устанавливает режим обмена данными. Данная команда имеет особенности на различных моделях модемов. Для получения более подробной информации обратитесь к документации на ваш модем.

2.6. Управление факс-модемами

Подобно модемам, поддерживающим набор AT-команд управления, факс-модемы также используют специальные AT-команды. В настоящее время существуют два различных стандарта на такие команды. Они называются командами класса 1 и командами класса 2. Ваш факс-модем может поддерживать один или оба класса команд управления.

Чтобы определить без документации, является ли ваш модем факс-модемом, а также узнать, какие классы команд управления он поддерживает, введите команду AT+FCLASS=?.

В ответ на эту команду модем может вернуть строку, в которой через запятую будут перечислены цифры 0, 1 и 2. Например, можно получить строку "0,1" или "0,1,2". Цифра 0 означает, что факс-модем может работать в режиме обычного модема и передавать цифровые данные. Цифры 1 и 2 означают, что модем поддерживает команды класса 1 и 2 соответственно.

Если ваш модем вернул в ответ на команду AT+FCLASS=? строку ERROR, то, скорее всего, это означает, что он не может работать в режиме обмена факсимильными сообщениями.

Модем может вернуть в ответ на команду AT+FCLASS=? строку OK. Возможно, такой модем может быть использован в качестве факс-модема. Более подробную информацию о его возможностях можно получить из документации или с помощью команды ATI.

Обычно сразу после включения питания факс-модем работает как обычный модем и не реагирует на команды класса 1 и 2 (за исключением команды +FCLASS). Чтобы переключить факс-модем в режим факсимильной связи, предназначена команда AT+FCLASS=n.

После передачи факс-модему команды AT+FCLASS=1 он начинает воспринимать команды класса 1, но не реагирует на команды класса 2. Чтобы факс-модем начал воспринимать эти команды, ему необходимо передать команду AT+FCLASS=2. Факс-модем станет откликаться на команды класса 2, но перестанет реагировать на команды класса 1. Передав модему команду AT+FCLASS=0, вы вернете его в исходный режим обычного модема.

Чтобы узнать, какие значения n поддерживает ваш факс-модем, следует передать ему команду AT+FCLASS=?. Можно также узнать текущий режим работы факс-модема. Для этого предназначена команда AT+FCLASS?.

Если вы не собираетесь разрабатывать собственное программное обеспечение, предназначенное для обмена факсимильными сообщениями, то команды управления факс-модемом (кроме AT+FCLASS) вам не пригодятся.

Поскольку разработка такого обеспечения является достаточно сложной задачей, требующей знания рекомендаций CCITT T.4 и T.30, мы приведем только краткий список команд факс-модема класса 1 и класса 2.

В следующей таблице перечислены команды класса 1:

Команда Назначение
AT+FRH Инициализирует прием данных в соответствии с протоколом HDLC
AT+FTH Инициализирует передачу данных в соответствии с протоколом HDLC
AT+FTM Передача факсимильных данных
AT+FRM Прием факсимильных данных
AT+FTS Передача паузы
AT+FRS Прием паузы
AT+FAA Выбор режима автоматического ответа

Список команд класса 2 значительно шире, чем набор команд класса 1 и позволяет более полно задействовать все возможности факс-модема:

Команда Назначение
AT+FMFR? Выдать идентификатор фирмы-производителя факс-модема
AT+FMDL? Выдать идентификатор модели факс-модема
AT+FREV? Выдать идентификатор версии модели факс-модема
AT+FDCC? Выдать параметры устройства
AT+FDIS? Выдать параметры текущего сеанса связи
AT+FDCS? Выдать согласованные параметры текущего сеанса связи
AT+FLID? Выдать идентификатор станции
AT+FPTS Состояние передачи страницы
AT+FCR Возможность приема факсимильных сообщений
AT+FAA Режим автоответа
AT+FBUF Размер буфера факс-модема
AT+FPHCTO Определение тайм-аута
AT+FAXERR Значение кода ошибки
AT+FBOR Порядок следования бит данных
AT+FDT Передача данных
AT+FET=N Передать пунктуацию страницы
AT+FDR Начать или продолжить прием данных
AT+FK Завершить сеанс связи

В следующем примере мы показываем, как использовать команды класса 2 для определения фирмы-производителя, идентификатора и версии модели факс-модема:

AT+FMFR?
ROCKWELL
OK

AT+FMDL?
RC32ACL
OK

AT+FREV?
CES-03 931216
OK

2.7. Ваш первый модем

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

Модем как минимум должен поддерживать рекомендации CCITT V.21, V.22 и V.22 bis. В противном случае вам не удастся обмениваться данными с большинством модемов, установленных на BBS, узловых станциях глобальных сетей и т. д.

Затем вы должны убедиться, что модем поддерживает набор AT-команд фирмы Hayes. Такой модем может стоить всего около 10 - 30 долларов и вполне пригоден для передачи небольших файлов и отправки писем в глобальную сеть компьютеров.

Если вам необходимо передавать через модем большие объемы информации, то скорость 2400 бит/с, обеспечиваемая рекомендацией V.22 bis, может оказаться недостаточна, потому что на передачу будет уходить слишком много времени. Оплата за пользование большинством глобальных сетей (например, GlasNet) и междугородней связью зависит от времени подключения, поэтому медленный модем станет причиной больших затрат на оплату телефонных счетов и времени подключения.

Чтобы ускорить передачу данных, приобретайте модем, поддерживающий рекомендацию V.32 - он обеспечивает скорость 9600 бит/с. Такой модем стоит не намного дороже, зато он позволит сэкономить на оплате за время соединения.

Если вы не очень стеснены в средствах, то желательно чтобы ваш модем также соответствовал рекомендации V.32 bis. При этом вы сможете увеличить скорость обмена информацией до 14400 бит/с.

В последнее время на рынке появились новые модемы, поддерживающие рекомендацию V.34 и обеспечивающие скорость передачи данных 28800 бит/с, что в два раза быстрее, чем модем с V.32 bis.

Пока еще модемы V.34 являются достаточно дорогим приобретением и стоят около 200$. Но через некоторое время можно ожидать снижения цен на такие модемы, что будет способствовать их широкому распространению.

Весьма полезно, чтобы модем поддерживал на аппаратном уровне протоколы коррекции ошибок и протоколы сжатия информации. Лучше всего, чтобы модем соответствовал рекомендациям V.42 и V.42 bis.

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

Факс-модем обязательно должен обеспечивать возможность передачи и приема факсимильных сообщений. Он должен быть полностью совместим со всеми факсимильными аппаратами группы 3 и обеспечивать скорость обмена информации не ниже 9600 бит/с.

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

Например, модем Smart One 2400B имеет следующую интересную особенность: при выполнении команды ATZ он на короткое время устанавливает сигнал на линии DCD. В результате коммуникационные программы, использующие эту линию для определения факта соединения с удаленным модемом, будут введены в заблуждение. Так, при передаче из программы MTE модему Smart One 2400B команды ATZ вместо ответа OK на экране отображается сообщение CONNECT.

2.7.1. Внутренние и внешние модемы

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

Так как внешние и внутренние модемы реализуют одинаковые функции, то принципиальной разницы между ними не существует.

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

Внешние модемы (см. рис. 2.8) являются более мобильными, чем внутренние. Внешний модем вы легко можете отсоединить от одного компьютера и подключить к другому. Для этого надо переключить только один разъем. Если же надо переключить внутренний модем, приходится отсоединять массу разъемов, открывать корпус компьютера, вынимать плату модема. Затем надо собрать компьютер обратно.

Внутренний модем (см. рис. 2.7) ограничивает вас в выборе самого компьютера или, наоборот, сам компьютер ограничивает вас в выборе модема. Некоторые модемы выполнены в виде плат полной длины, которые можно вставить только в длинные разъемы на материнской плате компьютеров IBM PC/XT/AT. Если же у вас компьютер в миникорпусе, например, Tandy 1000, или вы переходите от IBM PC/XT/AT к IBM PS/2, то вы уже не сможете использовать свой старый модем. Кроме того, если вы имеете компьютер типа Laptop или Notebook, то вы принципиально не сможете подключить к нему внутренний модем, рассчитанный на настольный вариант компьютера (правда, такие компьютеры, как правило, уже имеют встроенные модемы). В этом случае вам нужен внешний модем.

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

Рис. 2.7. Внутренний модем

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

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

Рис. 2.8. Внешний модем

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

Индикатор Назначение
MR Modem Ready Модем готов к обмену данными. Если этот индикатор не горит, то надо проверить линию питания модема
HS High Speed Модем работает на максимально возможной для него скорости
AA Auto Answer Модем находится в режиме автоответа. То есть модем автоматически будет отвечать на приходящие звонки. Когда модем обнаружит звонок (вызов) на телефонной линии, этот индикатор замигает
CD Carrier Detect Индикатор зажигается, когда модем обнаружил несущую частоту на линии. Индикатор должен гореть на протяжении всего сеанса связи и гаснуть, когда один из модемов освободит линию (положит трубку)
OH Off-Hook Этот индикатор горит, когда модем снял трубку (занимает линию)
SD Send Data Индикатор мигает, когда модем предает данные в телефонную линию
RD Receive Data Индикатор мигает, когда модем принимает данные из телефонной линии
TR Terminal Ready Компьютер готов к обмену данными с модемом. Этот индикатор горит, когда модем получил от компьютера сигнал DTR.

С другой стороны, внутренние модемы, как правило, дешевле внешних на несколько десятков долларов. Для них не нужен специальный корпус, дополнительный блок питания и соединительный кабель. У вас не будет путаницы проводов, внутренний модем не отнимет места на вашем столе. Вам не надо будет помнить о необходимости выключить питание у внешнего модема после окончания работы.

Последним важным доводом в пользу использования внутреннего модема является то, что он содержит все схемы COM-порта, в том числе и его "сердце" - микросхему UART. При этом, как правило, применяются современные модификации UART, например, UART 16550A, поддерживающие внутреннюю буферизацию. Использование внутренних буферов играет важную роль при скоростях обмена выше 9600 бит за секунду.

Внешний модем подключается к любому COM-порту компьютера. Этот порт располагается либо на материнской плате, либо на специальной плате расширения, и для него обычно используются микросхемы UART без буферизации, например, 8250 или 16450.