Для модемов класса 2.0 командный синтаксис, предназначенный для установки значения параметра или передачи параметра, контролирующего работу модема, может поддерживать числовые или строковые значения. Однако, в опичие от команд класса 1. числовые константы для класса 2.0 должны быть заданы в шестнадцатеричь '.i системе. Числовая константа может быть состав-юна только из символов <0> — <9> (ASCII-коды от 30h до 39h) и символов <А> <F> (ASCII-коды от 41h до 46h). Десятичная константа 255, эквивалентная шестнадцатеричной константе FFh, посылалась бы как два символа <F>. Символ h используется в тексте для обозначения шестнадцатеричных чисел и не посылается модему.
Строковые константы состоят из последовательности печатных ASCII-сим-волов, перед которой и за которой стоит символ двойной кавычки <">. Нулевая строка константы задается с помощью двух последовательных двойных кавычек <" ">.
. В дополнение к величинам, принимающим одно значение, факс-модемы класса 2.0 могут передаваться и возвращать в качестве аргументов целые области значений. Этот синтаксис отличается от синтаксиса для модемов класса 1. В ответ на запрос о возможностях модем возвращает набор значений в виде упорядоченного списка. Этот список начинается с символа левой скобки <(> и заканчивается символом правой скобки <)>. В списке может быть указана одна величина, несколько величин или интервал величин. Для того чтобы обеспечить совместимость с модемами класса 1, ответ модема класса 2.0 на команду AT+FCLASS=? не следует этому соглашению.
Несколько величин, содержащихся в упорядоченном списке, разделяются символом запятой <,>. Пример такого ответа <(0, 2, 4, 8)>. Интервал значений выражается как две величины, разделяемые символом переноса <—>. Например, интервал десятичных чисел от 0 до 255 выражался бы в виде <(0—FF)>. Команды для модемов класса 2.0 могут также допускать составные величины, состоящие из серий значений, заключенных в круглые скобки и разделенных запятыми. Вносимые пробелы игнорируются. Следующая строка представляет типичную составную величину:
(0,1,2), (0), (0-3).
Команды класса 2 выполняются слева направо внутри командной строки. Каждая команда выполняется отдельно, независимо от того, что следует за ней на командной строке. Если все команды выполнены правильно, выдается единственный код результата. Если команда приводит к ошибке или если обнаружена недопустимая команда, выполнение командной строки прекращается и все необработанные команды в командной строке игнорируются. Факс-модемы группы 2 поддерживают следующие ответные коды:
О ОК
1 CONNECT
2 RING
3 NO CARRIER
4 ERROR
6 NO DIALTONE
7 BUSY
8 NO ANSWER
Разработка спецификации для факс-модемов класса 2.0 проводится подкомитетом TR-29.2 по факсимильным цифровым интерфейсам. В августе .1990 г. этот подкомитет выпустил стандарт SP-2388-A, первый проект которого в конце концов стал стандартом TIA/EIA-592 для факс-модемов класса 2.0. Группа изготовителей микросхем, включая фирмы Sierra, Rockwell и Ехаг, разработала и выпустила свыше миллиона модулей, реализующих стандарт класса 2, описанный в первом проекте стандарта, датированном августом 1990 г.
Основываясь на отзывах, полученных о стандарте SP-2388-A, подкомитет решил существенно модифицировать данный документ (например, сообщение об установлении факсимильной связи было изменено с +FCON на +FCO), несмотря на то, что большое число установленных модулей базируется на этом стандарте. Стандарт SP-2388-A был отменен и вместо него выпущен стандарт SP-2388-B. Чтобы учесть широкое распространение модемов класса 2, основанных на стандарте, выпущенном в августе 1990 г., команда CLASS была переопределена для возврата следующих ответов:
О Обычный модем
1 EIA/TIA-578
2 SP-2388-A (резервный для производителя) 2.0 TIA/EIA-592
4.6.4. Сеанс факсимильной связи модемов класса 1
Проведение сеанса факсимильной связи для модемов класса 1 требует большого внимания со стороны DTE. Управляющая и передаваемая информация должна быть отформатирована в DTE и затем передана модему. Подобным же образом данные, получаемые модемом, направляются к DTE для декодирования и интерпретации. В табл. 4.6 иллюстрируется хронология сеанса факсимильной связи, когда модем класса 1 инициирует вызов и посылает данные (без ошибок), представляющие одну страницу изображения.
Сеанс начинается, когда DTE переводит локальный модем в режим факсимильной связи (факс-режим) и набирает номер удаленного факс-терминала. Локальный модем генерирует сигнал CNG — последовательность посылок тонального сигнала частотой 1100 Гц, длительностью 0,5 с с интервалом 3 с. Удаленный факс-терминал выдает CED-сигнал (идентификационный сигнал вызываемой станции) — тональный сигнал с частотой 2100 Гц в течение 2,6—4 с.
Удаленный факс-терминал вырабатывает несущую, используя протокол модуляции V.21 (канал 2, 300 бит/с), и посылает HDLC-флаги. Для использования метода модуляции V.21 неявным образом локальный модем конфигурируется командой AT+FCLASS=1. При получении HDLC-флагов локальный модем возвращает код результата CONNECT к DTE.
Далее, локальный модем получает HDLC-кадр от удаленного факса и посылает данные, показанные на рис. 4.4, к DTE. Первый байт этого кадра представляет адресное HDLC-поле и при связи по коммутируемой телефонной сети всегда имеет значение FFh.
За полем адреса сразу же следует управляющее HDLC-поле, содержимое которого может принимать одно из двух значений. Если это значение COh, то данный кадр - не последний кадр в данной процедуре. Значение C8h указывает на последний кадр. Заметим, что этот байт передается к DTE с обратным порядком следования разрядов по отношению к описаниям стандарта Т. 30. Таким образом, принимаемому байту 03h (0000001 lb), показанному на рис. 4.4, соответствует байт COh (llOOOOOOb).
Таблица 4.6. Сеанс факсимильной связи для модема класса 1 при передаче одной страницы к удаленному факс-терминалу
DTE | Локальный модем (передающий) | Удаленный факс-терминал (принимающий) |
AT+FCLASS-1-> | <--ОК" | |
ATDs—> | Набор номера | |
Ответ | ||
CNQ—> | ||
<—CED | ||
<— Несущая V.21 | ||
<— HDLC—флаги | ||
<-"CONNECT" | ||
<— NSF—кадр | ||
<— NSF—данные | ||
<— <DLExETX> | ||
<— "OK" | ||
AT+FRH-3—> | ||
<— "CONNECT" | ||
<— CSI—кадр | ||
<— CSI—данные | ||
<— <DLExETX> | ||
<— "OK" | ||
AT+FRH-3—> | ||
<— "CONNECT" | ||
<— DIS—кадр | ||
Сброс несущей | ||
<— DIS— данные | ||
<— <DLExETX> | ||
<- "OK" | ||
AT+FRH-3—> | ||
<— "NO CARRIER" | ||
AT+FTS-20 -> | (200 MC молчания) | |
AT+FRH-3-> | Несущая V.21 —> | |
<— "CONNECT" | ||
TSI—данные —> | ||
<DLExETX> —> | TSI—кадр —> | |
<— "CONNECT" | ||
DCS—данные —> | ||
<DLExETX> —> | DCS—кадр —> | |
Сброс несущей | ||
<— "OK" | ||
AT+FTS-8 —> | Ждать 80 мс | |
AT+FTM»96 -> | Несущая V.29 | |
<— "CONNECT" | ||
TCP—данные —> | TCF—кадр —> | |
<DLExETX> | Сброс несущей | |
<— "OK" | ||
<— Несущая V.21 | ||
AT+FRH°3 —> | ||
<— "CONNECT" | ||
<— CFR—кадр |
Сброс несущей | |
<— CFR—данные | |
<— <DLExETX> | |
<— "OK" | |
AT+FRH=3 —> | |
<— "NO CARRIER" | |
AT+FTS-20 —> | (200 MC молчания) |
AT+FTM=96 —> | Несущая V.29 |
<— "CONNECT" | |
<изображение>—> | |
<DLExETX>—> | <изображение> —> |
Сброс несущей | |
<— "OK" | |
AT+FTS=8-> | Ждать 80 мс |
AT+FTS=3 —> | Несущая V.21 —> |
<— "CONNECT" | |
EOP—данные —> | |
<DLExETX> —> | EOP—кадр—> |
Сброс несущей | |
<— "OK" | |
<— Несущая V.21 | |
AT+FRH=3 —> | |
<— "CONNECT" | |
<— MCF—кадр | |
Сброс несущей | |
<— MCF—данные | |
<— <DLExETX> | |
<—"OK" | |
AT+FRH=3 —> | |
<— "NO CARRIER" | |
AT+FTS°20 —> | (200 мс молчания) |
AT+FTH-3 —> | Несущая V.21 —> |
<—"CONNECT" | |
DCN—данные —> | DCN—кадр —> |
Сброс несущей | |
<-"ОК" | |
ATHO | Повесить трубку |
Рис. 4.4. Структура необязательного NSF-кадра
Следующий принимаемый байт — факсимильное управляющее поле (FCF), определяет тип передаваемой информации. Как и раньше, порядок следования разрядов в принимаемом байте нужно изменять на обработанный для декодирования этого поля в соответствии со стандартом Т.30. Величина 20h преобразуется в код 04h, идентифицирующий данные как NSF-кадр (кадр нестандарч HOI о устройства). Формат данных в этом кадре устанавливается каждым изготовше-лем отдельно и может быть использован для указания конкретных требовании или возможностей, которые не отмечены в стандарте Т.30. На рис. 4.4 эти данные опущены, поскольку DTE просто игнорирует данный кадр.
За данными кадра к DTE передается 16-разрядная контрольная последовательность кадра (FCS/CRC-16). Эта последовательность посылается в виде двух байтов. Старший байт передается первым, за ним следует младший байт, при этом порядок следования разрядов внутри каждого байта изменяется на обратный. Контрольная последовательность используется только для информационного поля. DTE не нужно проверять ее, так как модем уже пересчитал контрольную последовательность кадра и сравнил ее с той последовательностью, которая получена вместе с кадром. Кадр заканчивается двухбайтной последовательностью <DLE> (10h) <ETX> (03h).