Синтаксис сценария CCL
Модемный сценарий является рядом инструкций, который говорит компьютер, как взаимодействовать с модемом так, чтобы вызовы могли инициироваться и получаться. Для установления соединения сценарий обычно конфигурирует и затем подключает модем. Для завершения соединения сценарий разъединяет модем, вешая трубку и затем восстанавливает настройки модема, имевшие силу перед вызовом.
Каждый тип модема, используемого с OS X, требует модемного сценария. Много сценариев предоставлены OS X. (См. Доступные Модемные Сценарии во Введении этого документа для получения дополнительной информации.)
Если никакой сценарий не предоставлен для Вашего модема, необходимо записать одному использованию Communication Command Language (CCL), язык программирования, конфигурирующий и управляющий модемом. В этом разделе описываются основные элементы и структуру файла CCL.
Команды CCL
Каждая строка кода CCL состоит из одной инструкции, составленной из команды и ее параметров, если таковые имеются. Модемные команды используются в качестве параметров команд CCL. Например, команда write "ATDT^1\13" включает следующее:
команда CCL,
writeмодемная команда,
ATDTмодемный параметр команды,
^1\13
Эта команда говорит интерпретатору CCL отправлять в модем модемную команду ATDT сопровождаемый переменной строкой № 1 и возврат каретки (код ASCII 13).
Интерпретатор CCL читает сценарии слева направо и сверху донизу. Это читает сквозной, с начала до конца, если Вы не говорите его иначе (например, при помощи JUMP команда).
Для полного списка команд и их использования, посмотрите Ссылку Команды CCL.
Комментарии
Можно вставить пояснительные тексты в сценарий. Для ввода комментария запустите строку с восклицательного знака (!).
Можно также хотеть использовать пустую строку комментария для создания сценария более читаемым; для этого введите восклицательный знак без текста и нажмите Return.
Капитализация
Интерпретатор CCL не чувствителен к регистру. Поэтому @LABEL 1, @Label 1, @label 1, и @laBel 1 все допустимы (и эквивалентны), инструкции.
Метки
Метки используются для маркировки расположений в сценарии. Другие команды сценария, такой как JUMP, передайте управление расположениям в сценарии, отмеченном @LABEL команда. Например, JUMP 13 говорит интерпретатору CCL переходить к метке 13 и начинать выполнять команды после @LABEL 13 команда. Сценарий может использовать до 128 меток, пронумерованных 1–128.
Форматы строки
Для разграничивания строки в коде CCL можно использовать единственные кавычки (') или удвойте кавычки ("). Если Вы не запускаете строку с единственной или двойной кавычки, любой из следующих символов определяет конец строки: пространство, возвратите, снабдите вкладками, запятая или точка с запятой.
Строки CCL могут включать ссылки на переменные строки. Посмотрите Переменные строки (varStrings) далее в этой главе для подробных данных.
Строки CCL могут включать непечатаемые символы, такие как нуль, вкладка и возврат. Для поддержки этих непечатаемых символов интерпретатор CCL распознает два специальных символа: наклонная черта влево (\) и каре (^).
Наклонная черта влево является символом кавычки. Можно использовать наклонную черту влево для включения непечатаемого символа путем указания десятичного представления символа ASCII (десятичные числа 00 к 99 допустимы) или явно включать наклонную черту влево или символ вставки в строке.
Каре является переменным символом-разделителем. Можно использовать его для вставки переменной строки или строки ASK в другую строку. (Для получения дополнительной информации посмотрите Переменные строки (varStrings) далее в этой главе.)
Вот некоторые примеры того, как используются наклонная черта влево и каре:
Строка | Результат |
|---|---|
| вставляет возврат каретки (0x0D) в строку |
| вставляет нулевой символ (0x00) в строку |
| вставляет наклонную черту влево (\) символ (0x5C) в строку |
| вставляет каре (^) символ (0x5E) в строку |
| вставляет переменную строку 1 в строку |
| вставляет строку ASK в строку |
Вот некоторые строковые примеры:
Строковое содержание | Распечатанный вывод |
|---|---|
'this is a test' | this is a test |
thisisatest | thisisatest |
"this is a test" | this is a test |
this is a test | this |
"this \34\73\83\34 a test" | this "IS" a test |
"ATDT^1" | ATDT555-1212(если переменная строка 1 555-1212), |
Переменные строки (varStrings)
Строки CCL могут включать ссылки на переменные строки, которые являются строками, переданными сценарию как параметры. Большинство этих значений предоставлено OS X на основе указанных пользователями параметров.
OS X использует следующие переменные строки:
Переменная строка | Содержание | Значения |
|---|---|---|
|
Полная строка набора (телефонный номер для набора номера, с необходимыми префиксами и суффиксами). | |
|
Модемный флаг динамика: |
|
|
Селектор тона/импульсного набора: |
|
|
Флаг исправления ошибки модема: |
|
|
Зарезервированный для будущего использования. | |
|
Флаг режима набора: |
|
|
Повреждение переменных строк 7–9 долгая строка набора в более короткие строки для использования с модемами, которые могут принять только ограниченный размер командной строки. Они автоматически сгенерированы OS X. | Переменные Если один или больше этих три переменные не использованы, пустые переменные содержат пустую строку (ASCII |
|
Определенный в информационном списке свойств в Вашем пакете сценария CCL. Посмотрите Пакеты CCL и Списки свойств для получения информации. |
Все восемь переменных строк передаются сценарию, когда он работает в режиме исходящих звонков. Модемный флаг динамика (varString2) и флаг коррекции ошибок (varString4) передаются сценарию, когда он работает в режиме ответа.
Строки совпадения
Интерпретатор CCL имеет буфер, который может содержать до 32 строк, загруженных MATCHSTR команда. MATCHCLR команда стирает содержание буфера. MATCHREAD ввод чтений команды от модема или другого коммуникационного устройства и сравнивает ввод со строками в настоящее время в буфере. Если соответствие найдено в требуемое время, выполнение продолжается в метке, связанной с той строкой совпадения.
Рекомендуемая стратегия отправки команд к модему следующие:
Использовать
MATCHCLRочистить все строки совпадения.Использовать
MATCHSTRзагрузить строки совпадения надлежащими ответами.Использовать
WRITEотправить команды в модем.Использовать
MATCHREADпроверять на определенные модемные ответы. Если надлежащий ответ получен, ответвление, как определено соответствиемMATCHSTRкоманда.Использовать
SETTRIES,INCTRIES, иIFTRIESциклично выполняться несколько раз.Если надлежащий ответ не получен, ответвление, чтобы выйти или чередовать код, как определено
MATCHREADкоманда.
Размер сценария
Сценарии могут быть максимумом 32 000 байтов. Это является достаточно большим для относительно сложных сценариев набора. Однако, если Ваш сценарий является слишком большим, можно быть в состоянии сделать его достаточно маленьким путем минимизации числа и длины комментариев.