Набор команд Hayes (также известный как набор команд AT ) специальный командный язык, первоначально разработанный Деннисом Хейсом для Hayes Smartmodem 300 бод модема в 1981 году.
Набор команд состоит из серии коротких текстовых строк, которые можно комбинировать для создания команд для таких операций, как набор номера, завершение вызова и изменение параметров соединения. Подавляющее большинство модемов коммутируемого доступа используют набор команд Hayes во многих вариантах.
Набор команд охватывал только те операции, которые поддерживались самыми ранними модемами со скоростью 300 бит / с. Когда потребовались новые команды для управления дополнительными функциями в высокоскоростных модемах, от каждого из основных поставщиков появилось множество одноразовых стандартов. Они по-прежнему использовали базовую структуру и синтаксис команд, но добавили любое количество новых команд с использованием какого-либо префиксного символа - для Hayes и USR и
\
для Microcom, например. Многие из них были повторно стандартизированы в расширениях Hayes после введения SupraFAXModem 14400 и последовавшей за этим консолидации рынка.
Термин «Hayes-совместимый» был и по состоянию на 2018 год по-прежнему важен в отрасли.
До внедрения системы досок объявлений (BBS) модемы обычно работали на телефонных линиях с прямым набором номера, которые всегда начинались и заканчивались известным модемом на каждой конец. Модемы работали в режимах «исходящий» или «ответный», вручную переключаясь между двумя наборами частот для передачи данных. Как правило, пользователь, выполняющий вызов, переключает свой модем на «исходный», а затем набирает номер вручную. Когда удаленный модем ответил, уже установленный в режим «ответа», телефонная трубка была выключена, и связь продолжалась до тех пор, пока вызывающий абонент не отключился вручную.
Когда требовалась автоматизация, она обычно требовалась только на стороне ответа - например, банку могло потребоваться принимать звонки из нескольких филиалов для обработки в конце дня. Для выполнения этой роли некоторые модемы включали возможность автоматически поднимать трубку, когда он был в режиме ответа, и очищать линию, когда другой пользователь вручную отключался. Необходимость в автоматическом исходящем наборе номера была значительно реже и решалась с помощью отдельного периферийного устройства, «дозвона». Обычно он подключается к отдельному порту ввода / вывода на компьютере (обычно это порт RS-232 ) и программируется отдельно от самого модема.
Этот метод работы удовлетворительно работал в 1960-х и начале 1970-х годов, когда модемы обычно использовались для подключения «глупых» устройств, таких как компьютерные терминалы (набор номера), с интеллектуальными мэйнфреймами (отвечая). Однако революция микрокомпьютеров 1970-х годов привела к появлению недорогих модемов, и идея полу-выделенного соединения точка-точка больше не подходила. Потенциально были тысячи пользователей, которые могли захотеть позвонить любому из тысяч других пользователей, и единственное решение в то время заключалось в том, чтобы заставить пользователя набирать номер вручную.
компьютерной индустрии требовался способ сообщить модему, какой номер набирать через программное обеспечение. Более ранние отдельные программы дозвона имели такую возможность, но только за счет отдельного порта, который микрокомпьютер мог не иметь. Другое решение заключалось в использовании отдельного набора «командных выводов», предназначенных для отправки и получения команд, другое могло бы использовать сигнальный вывод, указывающий, что модем должен интерпретировать входящие данные как команду. Оба они имели аппаратную поддержку стандарта RS-232. Тем не менее, многие реализации порта RS-232 на микрокомпьютерах были чрезвычайно простыми, и в некоторых из них не использовались многие из этих контактов в целях экономии.
Hayes Communications представила решение в своем Smartmodem 1981 года с использованием существующих выводов данных без каких-либо изменений. Вместо этого сам модем может переключаться между одним из двух режимов:
Чтобы переключиться из режима данных в командный режим, сеансы отправили escape-последовательность строку из трех знаков плюс ("+++") с последующей паузой около секунды. Пауза в конце escape-последовательности была необходима для уменьшения проблемы, вызванной внутриполосной сигнализацией : если в течение одной секунды из трех знаков плюс были получены какие-либо другие данные, это не была escape-последовательность и будут отправлены как данные. Для обратного переключения они отправили онлайн-команду «АТО». На практике многие команды автоматически переключаются в онлайн-режим после завершения, и пользователь редко использует онлайн-команду явно.
Чтобы избежать лицензирования патента Хейса, некоторые производители реализовали escape-последовательность без временного защитного интервала (Time Independent Escape Sequence (TIES)). Это имело серьезное значение для безопасности отказ в обслуживании, поскольку это привело бы к тому, что модем прервал соединение, если бы компьютер когда-либо попытался передать последовательность байтов "+++ ATH0" в режиме данных. Для любого компьютера, подключенного к Интернету через такой модем, это можно легко использовать, отправив ему запрос ping of death, содержащий последовательность «+++ ATH0» в полезной нагрузке. Операционная система компьютера автоматически попытается ответить отправителю той же полезной нагрузкой, немедленно отключившись от Интернета, поскольку модем интерпретирует полезную нагрузку данных пакета ICMP как команду Хейса. Та же ошибка также может возникнуть, если, например, пользователь компьютера когда-либо попытается отправить электронное письмо, содержащее вышеупомянутую строку.
Набор команд Hayes включает команды для различных операций с телефонной линией, таких как набор номера и повешение. Он также включает различные элементы управления для настройки модема, в том числе набор команд регистрации, которые позволяют пользователю напрямую устанавливать различные ячейки памяти в исходном модеме Hayes. Набор команд был скопирован в значительной степени дословно, включая значение регистров, почти всеми производителями модемов со скоростью 300 бод, которых было довольно много.
Расширение до 1200 и 2400 бод потребовало добавления небольшого набора новых команд, некоторые из которых имеют префикс с амперсандом («») для обозначения команд, предназначенных для новых функций. Сам Hayes был вынужден быстро внедрить модель на 2400 бод вскоре после их 1200, и наборы команд были идентичны для экономии времени. По сути, случайно это позволило пользователям существующих модемов на 1200 бод использовать новые модели Hayes 2400 без изменения своего программного обеспечения. Это вновь подтолкнуло к использованию версий этих команд Hayes. Спустя годы Ассоциация телекоммуникационной промышленности (TIA) / Альянс электронной промышленности (EIA) превратили набор команд со скоростью 2400 бод в формальный стандарт под названием Системы передачи данных и Оборудование - последовательный асинхронный автоматический набор номера и управление, TIA / EIA-602 .
Однако Hayes Communications не спешила выпускать модемы, поддерживающие более высокие скорости или сжатие, и здесь первыми стали три другие компании - Microcom, США Робототехника и Телебит. Каждый из этих троих использовал свои собственные дополнительные наборы команд вместо того, чтобы ждать, пока Хейс укажет путь. К началу 1990-х годов использовалось четыре основных набора команд и несколько версий, основанных на одном из них. Ситуация снова стала проще во время широкого внедрения модемов 14,4 и 28,8 кбит / с в начале 1990-х годов. Постепенно набор команд, в значительной степени основанный на оригинальном расширенном наборе Hayes с использованием команд «», стал популярным, а затем и универсальным. Лишь один другой набор команд остался популярным, это набор US Robotics из популярной линейки модемов.
В следующем тексте перечисляется часть набора команд Hayes, также называемая AT-командами : «AT» означает «внимание». Каждая командная строка имеет префикс «AT», и после «AT» может быть добавлен ряд дискретных команд.
Набор команд Hayes можно разделить на четыре группы:
Хотя синтаксис набора команд определяет большинство команд комбинацией букв и цифр (L0, L1 и т. Д.), использование нуля необязательно. В этом примере «L0» соответствует простой «L». Имейте это в виду, читая таблицу ниже.
В режиме данных escape-последовательность может вернуть модем в командный режим. Обычная escape-последовательность - это три знака плюс ("+++"), и для того, чтобы отличить ее от возможных реальных данных, используется защитный таймер: ему должна предшествовать пауза, не должно быть пауз между знаками плюс и быть с последующей паузой; по умолчанию «пауза» составляет одну секунду, а «без паузы» - меньше.
Применяются следующие синтаксические определения:
Строка может содержать множество команд Hayes, помещенных вместе, чтобы оптимально подготовить модем к дозвону или ответу, например ATFD2C1S0 = 0X4
. Большинство программного обеспечения модемов поддерживало вводимую пользователем строку инициализации, которая обычно представляла собой длинную объединенную AT-команду, которая отправлялась модему при запуске. Спецификация V.250 требует, чтобы все DCE принимали тело (после «AT») из не менее 40 символов связанных команд.
Ниже представлены два компьютера, компьютер A и компьютер B, оба с подключенными модемами, и пользователь, управляющий модемами с помощью программного обеспечения эмулятор терминала. Программное обеспечение эмулятора терминала обычно позволяет пользователю отправлять команды Hayes прямо на модем и видеть ответы. В этом примере пользователь компьютера A заставляет модем набирать телефонный номер модема B по номеру телефона 555-1234 (междугородний). После каждой команды и ответа отправляется возврат каретки для завершения команды.
Модем A | Модем B | Комментарий |
---|---|---|
ATDT15551234 | Пользователь у модема A выдает команду набора номера: AT-Получить внимание модема; D-Dial; T-Touch-Tone; 15551234-Позвоните по этому номеру | |
RING | Модем A начинает набор. Телефонная линия модема B звонит, и модем сообщает об этом. | |
ATA | Компьютер на модеме B выдает команду ответа. | |
CONNECT | CONNECT | Модемы подключаются, и оба модема сообщают о «подключении». (На практике большинство модемов сообщают больше информации после слова CONNECT - указывающего скорость соединения.) Кроме того, в это время оба модема будут повышать сигнал DCD или Data Carrier Detect на последовательном порту. |
abcdef | abcdef | Когда модемы подключены, любые символы, набранные с обеих сторон, появятся на другой стороне. Человек за компьютером А начинает печатать. Персонажи проходят через модем и появляются на экране компьютера B. (Пользователь A может не видеть свои собственные набранные символы - в зависимости от настройки программного обеспечения терминала local echo ). |
+++ | Человек на компьютере B выдает команду выхода из модема. (В качестве альтернативы и чаще компьютер B может отбросить сигнал DTR или Data Terminal Ready, чтобы добиться зависания, без необходимости использовать +++ или ATH.) | |
OK | Модем подтверждает это. | |
ATH | Человек на компьютере B выдает команду отбоя. | |
NO CARRIER | OK | Оба модема сообщают, что соединение разорвано. Модем B отвечает «ОК» как ожидаемый результат команды; модем A сообщает NO CARRIER, чтобы сообщить, что удаленная сторона прервала соединение. Модемы с обеих сторон также сбрасывают свои сигналы DCD. |
В то время как исходный набор команд Hayes представлял собой огромный скачок вперед в модемной связи, со временем возникло множество проблем, почти ни одна из которых не была вызвана Хейсом как таковым:
В результате всего этого в конечном итоге многим коммуникационным программам пришлось отказаться от всякой возможности чтобы разговаривать со всеми "совместимыми с Hayes" модемами, и вместо этого программы должны были попытаться определить тип модема по его ответам или предоставить пользователю некоторую опцию, с помощью которой они могли бы вводить любые специальные команды, которые потребовались для принуждения их конкретного модема к действию должным образом.
Набор команд Hayes упростил автоматическое определение скорости передачи, поскольку «A» и «T» имеют очень регулярные битовые последовательности; «A» равно «100 0001» и поэтому имеет 1 бит в начале и в конце, а «T» - «101 0100», который имеет шаблон с (почти) каждым установленным другим битом. Поскольку интерфейс RS-232 сначала передает младший значащий бит, соответствующий шаблон строки с 8-N-1 (восемь битов данных, без бита четности, один стоповый бит) составляет 01000001010001010101 ( начальный и стоповый биты выделены курсивом), который используется как синкорд.
Следующие команды понимаются практически всеми модемами, поддерживающими набор команд AT, старыми или новыми.
Команда | Описание | Комментарии |
---|---|---|
A0или A | Ответить на входящий звонок | |
A/ | Повторить последнюю команду | Не начинать с AT, не используйте возврат каретки. Ввод обычно прерывается. |
D | Наберите | Наберите следующий номер и затем подтвердите. P - Импульсный набор. T - Сенсорный тональный набор. W - Дождитесь второго тонального сигнала ответа станции. R - возврат в режим ответа после набора. @ - ожидание до 30 секунд для одного или нескольких обратных вызовов., - пауза на время, указанное в регистре S8 (обычно 2 секунды). ; - Оставайтесь в командном режиме после набора.. ! - Мигающий переключатель-крючок (положите трубку на полсекунды, как при переводе вызова.). L - Наберите последний номер |
E0или E | Без эха | Не будет выводить команды на компьютер |
E1 | Echo | Будет выводить команды на компьютер (чтобы можно было видеть, какие из них вводятся, если компьютерное программное обеспечение не поддерживает эхо) |
H0или H | Hook Status | На трубке. Вешает трубку, завершая текущий разговор. |
H1 | Состояние снятия трубки | Трубка снята. Поднимает трубку (обычно вы слышите тональный сигнал набора) |
I0- I9 | Запрос, Информация или Допрос | Эта команда возвращает информацию о модели, такую как ее прошивка или торговая марка. Каждое число (от 0 до 9, а иногда и от 10 и выше) возвращает одну строку информации, относящейся к модему, или слово ERROR, если строка не определена. Сегодня Windows использует это для Plug-and-play обнаружения определенных типов модемов. |
L0или Ln (n = от 1 до 3) | Громкость динамика. Поддерживается только некоторыми модемами с динамиками. Модемы без динамиков, с физическими регуляторами громкости или те, звук которых выводится через звуковую карту, не будут поддерживать эту команду. | 0 отключает динамик, от 1 до 3 - для увеличения громкости. |
M0или M | Динамик выключен, при наборе номера полностью бесшумно | M3также распространено, но отличается для многих марок |
M1 | Динамик включен, пока не будет обнаружен удаленный оператор связи (пользователь услышит набор номера и подтверждение модема, но после полного соединения установлен, динамик отключен) | |
M2 | Динамик всегда включен (звуки данных слышны после CONNECT) | |
O | Return Online | Возвращает модем обратно в нормальное состояние подключения после прерывания "+" ++ "escape-код. |
Q0или Q | Тихий режим | Выкл. - отображает коды результатов, пользователь видит ответы на команды (например, OK) |
Q1 | Тихий режим | Вкл. - Коды результатов подавляются, пользователь не видит ответов. |
Sn | Выбрать текущий регистр Обратите внимание, что Sn, ?и = rна самом деле являются тремя отдельными командами и могут быть заданы отдельными командами AT . | Выбрать регистр n как текущий регистр |
Sn? | Выбрать регистр n как текущий регистр и запросить его значение. Использование ? само по себе будет запрашивать тот регистр, который был выбран последним. | |
Sn=r | Выберите регистр n в качестве текущего регистра и сохраните в нем r. Использование =rсамо по себе приведет к сохранению в регистре, который был выбран последним. | |
V0или V | Подробный | Числовые коды результатов |
V1 | Английские коды результатов (например, CONNECT, BUSY, NO CARRIER и т. Д.) | |
X0или X | Smartmodem | Коды результатов, совместимые с Hayes Smartmodem 300 |
X1 | Обычно добавляет скорость соединения к основным результирующим кодам (например, CONNECT 1200) | |
X2 | Обычно добавляет обнаружение гудка (предотвращение слепого набор, а иногда и предотвращение ATO ) | |
X3 | Обычно добавляет обнаружение сигнала занятости. | |
X4 | Обычно добавляет и сигнал занятости, и обнаружение тонального сигнала ответа станции | |
Z0или Z | Сброс | Сброс модема до сохраненной конфигурации и обычно также физически выключает и выключает модем (в течение которого он не отвечает). Z0 ', Z1 и т. д. предназначены для нескольких сохраненных профилей. F аналогичен тем, что возвращается на завод настройки по умолчанию на модемах без NVRAM (энергонезависимая память), но он не сбрасывает модем |
Примечание: строка команды заканчивается символом CR (\ r)
Хотя не является частью набора команд, тильда символ ~ - это комо Используется только в последовательностях команд модема. ~ заставляет многие приложения приостанавливать отправку потока команд на устройство (обычно на полсекунды), например после сброса. ~ не отправляется на модем.
Регистр | Описание | Диапазон | По умолчанию значение |
---|---|---|---|
S0 | Количество звонков до автоответа | 0–255 (0 = никогда) | 0 |
S1 | Счетчик звонков | 0–255 звонков | 0 |
S2 | escape-символ | 0–255, десятичный ASCII | 43 ("+") |
S3 | Символ возврата каретки | 0–127, десятичный ASCII | 13 (возврат каретки) |
S4 | Символ перевода строки | 0–127, ASCII десятичный | 10 (перевод строки) |
S5 | символ возврата | 0–32, десятичный ASCII | 8 (возврат) |
S6 | Время ожидания перед слепым набором | 2–255 секунд | 2 |
S7 | Ожидание оператора связи после набора | 1–255 секунд | 50 |
S8 | Время паузы для запятой (задержка набора) | 0–255 секунд | 2 |
S9 | Время отклика при обнаружении несущей | 1–255 десятых секунды | 6 (0,6 секунды) |
S10 | Задержка между ru Потеря связи и зависание | 1–255 десятых секунды | 14 (1,4 секунды) |
S11 | Длительность сигнала DTMF | 50–255 миллисекунд | 95 миллисекунд |
S12 | Escape Code Guard Time | 0–255 пятидесятых секунды | 50 (1 секунда) |
S18 | Таймер проверки | 0–255 секунд | 0 секунд |
S25 | Задержка до DTR | 0–255 (секунды в синхронном режиме, сотые доли секунды во всех других режимах) | 5 |
S26 | Интервал задержки RTS в CTS | 0–255 сотых секунды | 1 сотая секунды |
S30 | Таймер отключения при бездействии | 0–255 десятков секунд | 0 (отключить) |
S37 | Желаемая скорость телефонной линии | 0–10 Параметры команды:
| 0 |
S38 | Задержка перед принудительным отключением | 0–255 секунд | 20 секунд |
ITU-T установил стандарт в своих Рекомендациях серии V, V.25 ter, в 1995 году в попытке установить снова стандарт для набора команд. Он был переименован в V.250 в 1998 году с приложением, которое не касалось набора команд Hayes, переименованного в V.251. Модем, совместимый с V.250, реализует команды A, D, E, H, I, L, M, N, O, P, Q, T, V, X, Z, C, D и F способом, указанным в стандарт. Он также должен реализовывать регистры S и должен использовать регистры S0, S3, S4, S5, S6, S7, S8 и S10 для целей, указанных в стандарте. Он также должен реализовывать любую команду, начинающуюся со знака плюс, «+», за которым следует любая буква от A до Z, только в соответствии с рекомендациями ITU. Производители модемов могут реализовывать другие команды и S-регистры по своему усмотрению и могут добавлять опции к стандартным командам.
Начальные. символы | Включает команды, относящиеся к |
---|---|
+A | проблемам управления вызовом (сетевой адресации), общие, PSTN, ISDN, ITU-T Rec. X.25, цифровое переключение |
+C | Расширения цифровой сотовой связи |
+D | Сжатие данных, Рек. МСЭ-Т Рек. V.42 bis |
+E | Контроль ошибок, Рек. МСЭ-Т Рек. V.42 |
+F | Факс, Рек. МСЭ-Т Рек. T.30 и т. Д. |
+G | Общие вопросы, такие как идентичность и возможности |
+I | Проблемы интерфейса DTE-DCE, Рек. V.24 и т. Д. |
+M | Модуляция, Рек. V.32 bis и т. Д. |
+P | Команды PCM DCE, Рек. V.92 |
+S | Переключаемые или одновременные типы данных |
+T | Проблемы тестирования |
+V | Расширения голосовой связи |
+W | Расширения беспроводной сети |
ETSI GSM 07.07 (3GPP TS 27.007) определяет команды стиля AT для управление телефоном или модемом GSM. ETSI GSM 07.05 (3GPP TS 27.005) определяет команды в стиле AT для управления функцией службы коротких сообщений (SMS) GSM.
Примеры команд GSM:
Команда | Описание |
---|---|
AT+CPIN=1234 | Введите PIN-код |
AT + CPWD = " SC »,« старый »,« новый » | Изменить PIN-код со« старого »на« новый » |
AT+CLCK="SC",0,"1234" | Удалить PIN-код |
ATV | Статус |
ATI | Статус (производитель, модель, версия, IMEI, возможности) |
AT + COPS =? | Список доступных сетей 0-Неизвестно / 2-Текущие / 3-Запрещено, Длинное имя, Короткое имя, Числовой-ID, «AcT» |
AT+CSQ | Получить мощность сигнала. Ответ: + CSQ: <rssi (больше = лучше)>, <ber, меньше = лучше> |
ATD * 99 # | Точка доступа для набора номера |
AT + CGDCONT = 1, «IP», «access.point.name» | Определяет контекст PDP |
Модемы GSM / 3G обычно поддерживают расширения набора команд ETSI GSM 07.07 / 3GPP TS 27.007 AT, хотя количество реализованных команд варьируется.
Большинство производителей USB-модемов, например Huawei, Sierra Wireless, Option, также определили собственные расширения для выбора режима радиосвязи (предпочтение GSM / 3G) или аналогичные. Некоторые недавние высокоскоростные модемы предоставляют интерфейс виртуального Ethernet вместо использования Point-to-Point Protocol (PPP) для подключения к данным из-за соображений производительности (PPP-соединение используется только между компьютером и модемом, не по сети). Для настройки требуются расширения AT-команд конкретного производителя. Иногда спецификации для этих расширений доступны в открытом доступе, в других случаях поставщик требует NDA для доступа к ним.
Модемы с функциями голосовой связи или автоответчика поддерживают надмножество этих команды для включения воспроизведения и записи цифрового звука.
В Wikibook Последовательное программирование есть страница по этой теме of: Последовательное программирование:. Модемы и AT-команды |