Почему AT команда установлена?


15

Честно говоря, почему все коммуникационные ИС (или, по крайней мере, многие из них, или самые известные или популярные), такие как Bluetooth, WIFI, GSM или т. Д., Поддерживают набор AT-команд? почему у них нет простого контакта для D / C (данных или команд) для связи? Каковы преимущества использования набора команд AT?

Набор AT-команд велик и потребует времени и пространства памяти, что затрудняет связь, в то время как вместо этого вы можете использовать простой вывод D / C и отправлять целое число для установки регистров или отправки данных.


18
Одно слово: Legacy ... Все они притворяются совместимыми с Hayes модемами и работают с незапамятных времен (или, по крайней мере, с 80-х годов, что во многом одно и то же). И нет, это не очень хорошая причина.
brhans

4
Не только наследие, но действительно хорошая идея. Как гласит старая поговорка: «Что удивительного в стандартах, так это то, что есть из чего выбирать». Я хочу, чтобы мое оборудование и программное обеспечение работали с любым коммуникационным модулем, который я использую, не беспокоясь о том, говорит ли он на другом языке (наборе команд), чем тот, который я использовал ранее.
Дуэйн Рейд

7
Обязательный XKCD здесь .
битмак

1
Теоретически вы можете отключить модуль WIFI и заменить его другим поставщиком. И поскольку протокол тот же, вам даже не нужно корректировать код.
Пол

1
Если что-то не так с коммуникацией / битами, вы не получите правильный ответ, т. Е. «ОК». Так что, если вы справитесь с этим соответствующим образом, он будет достаточно стабильным. Это довольно легко отлаживать, так как сообщения имеют смысл в некотором роде. Обработка, однако, действительно немного сложнее в реализации. Вы должны проверить на наличие указанных сообщений. И прочитайте их таким образом, который не является обычным для MCU. Но опять же, если вы сделаете это один раз, это будет работать для других AT-устройств.
Пол

Ответы:


27

Брханс прав - Наследие.

В 1980-х Хейс начал делать «Smartmodem 1200». Он почти сразу устарел, и Хейс выбил Smartmodem 2400. В этот раз не было времени для изменений дизайна между модемами. В результате Хейс первым сделал два разных скоростных модема, которые принимали одинаковые команды программирования! Любое программное обеспечение, которое может заставить Smartmodem 1200 набирать телефонный номер, также может набирать Smartmodem 2400.

В то время для каждого нового модема требовались месяцы для написания обновленного драйвера. Когда Smartmodem 2400 появился на рынке, уже существовал работающий драйвер для Smartmodem 1200, так что месяца ожидания не было. Внезапно другие производители осознали преимущество новых модемов, имеющих те же команды, что и старые модемы. В течение шести месяцев поставщики предлагали «совместимые с Hayes» модемы как единственный выбор. Который получил их иск от Хейса. Поэтому все начали называть свои модемы «совместимыми с AT Command Set», но продолжали использовать набор команд Hayes.

К середине 80-х годов не было создано потребительских модемов, которые не могли бы использовать набор AT-команд. В результате каждый модем, такой как система связи, использует AT-команды. Есть и другие преимущества - так как набор команд - ASCII, любой может вручную ввести AT-команды в окне терминала для управления модемом. Поскольку мой собственный модем имел рискованное RJ11-соединение, я обычно начинал каждый сеанс в Procomm Plus с:

AT
OK
ATH1
[dial tone]
ATDT [phone number]

Просто чтобы убедиться, что я получил тональный сигнал готовности. Если бы я этого не сделал, я бы немного пошевелил проводами!


1
Хорошая точка зрения на отлаживаемость. Чистый двоичный протокол (такой как поток данных на ЖК-экране) требует, чтобы вы разработали аппаратное / микропрограммное обеспечение, чтобы даже начать общаться с устройством. Набор AT-команд позволяет тестировать устройство с нулевым аппаратным обеспечением. Все, что вам нужно, это последовательный порт (или в наши дни конвертер USB в последовательный порт) и эмулятор терминала.
Slebetman

1
Одно маленькое замечание ... Winmodems сохранили совместимость уровня AP с командами AT, но полностью нарушили совместимость уровня OS. До Winmodem, даже внутренние модемы взаимодействовали через стандарт UART 16550A, чья работа была хорошо известна и прозрачно поддерживалась Linux (потому что они выглядели как обычные последовательные порты ISA или PCI для ОС). Винмодемы вбросили в это обезьяну, переместив логику более высокого уровня (Lucent) или буквально все (HSP) в драйвер. Поскольку командный хост Winmodem AT был виртуальным, они были буквально пресс-папье под Linux.
Bitbang3r

1
Да, раньше я тоже их набирал вручную из-за телефонной линии с импульсным набором (но во всех приложениях связи, при условии, что у всех был тональный набор) :-)
Брайан Ноблаух

@slebetman: Мне нравится, когда устройства имеют опции для поддержки двоичных или текстовых протоколов, но «AT» команды - это отдельная проблема. В системах без автоматического определения скорости передачи нет особого преимущества для «AT» в качестве префикса команды, и я видел ряд систем, в которых команды имеют префикс «AT», но все же требуют возможности отправлять и получать символы вне принципа Набор ASCII и общие контрольные коды.
суперкат

1
IIRC, Linux со временем получили драйверы для некоторых win-модемов. Во многих случаях с помощью звуковых драйверов ALSA или OSS, поскольку наиболее урезанными программными модемами были, по сути, звуковые карты, подключенные к телефонным линиям. IIRC, у win-модемов были небольшие преимущества по задержке, потому что ваши данные не помещались в буферы UART. Заботились только геймеры. Все остальные ненавидели тратить впустую циклы от своего одноядерного процессора.
Питер Кордес

20

Вы говорите только о недостатках набора команд. Рассмотрим плюсы:

  1. Используя набор AT-команд, ваше коммуникационное устройство может быть немедленно подключено к любой IP-сети через реализацию PPP операционной системы . Альтернатива заключается в том, что в дополнение к разработке пользовательского интерфейса протокола вы должны написать свой собственный драйвер сетевого устройства для каждой ОС, которую вы хотите поддерживать, прежде чем эта ОС сможет использовать ваше устройство для подключения к Интернету.

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

  3. Хотя это правда, что протокол AT является довольно сложным и требует больше памяти для реализации, чем специализированный протокол, предназначенный для конкретной задачи, это также тот случай, когда кто-то, решивший реализовать этот протокол, получает возможность не тратить кучу времени на переизобретение идеально хороший руль. У него десятилетия опыта в дизайне. Он знает, что это сработает, прежде чем выделит на это время разработки. Хороший дизайн протокола удивительно сложен.

    (На днях я собираюсь опубликовать мой опус «Твой протокол отстой» в надежде предотвратить совершение более ужасных, наполовину продуманных одноразовых протоколов.)


1
Пока я согласен с мнением; «хорошо спроектированный»? Три слова: ATSкоманда ...
CVn

Большинство устройств, которые я видел, которые используют так называемые команды «АТ», не имеют ничего общего в своих наборах команд, кроме первых двух символов. Если модуль WiFi может принять «ATDT192,168,254,5W1234» в качестве команды для открытия TCP-соединения с портом 1234 на 192.168.254.5, то программное обеспечение, ожидающее, что модем может использовать модуль просто отлично, но я еще не видел, чтобы один сделал что-нибудь подобное.
Суперкат

@supercat: Это потому, что модем WiFi больше похож на карту Ethernet, как видно из соответствующих стандартов (серия IEEE802) и использования MAC-адресов. И хотя вопрос говорит о «коммуникационных ИС», я не думаю, что Coomon Ethernet IC используют набор AT-команд.
MSalters

@MSalters: во многих случаях основное использование модуля WiFi будет состоять в том, чтобы устанавливать одно TCP-соединение за раз; Эмуляция Хейса могла бы прекрасно с этим работать. Я видел драйвер FOSSIL, который позволял бы использовать терминальные программы на базе DOS в качестве клиентов telnet, заставляя их «набирать» номера, подобные указанным выше, и я думаю, что тот же подход будет прекрасно работать с модулями WiFi. В любом случае, я хочу сказать, что если бы продукт использовал строку, подобную приведенной выше, для установления TCP-соединения, такое использование имело бы значительные преимущества в отношении совместимости / знакомства, но ...
Supercat

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

14

Я остановлюсь на другой стороне вопроса ... почему бы просто не добавить еще одну сигнальную линию в интерфейс?

Об этом может спросить только тот, кто не прошел через все перестановки сигнальных линий на подлинном 25-контактном интерфейсе RS232. В дополнение к TXD, RXD и Gnd, уже было несколько других пар сигналов: RTS / CTS (готовность к отправке, очистка для отправки), DSR / DTR (готовность набора данных, готовность терминала данных) и аппаратный вывод зависания. И другие. И нет четкого универсального соглашения между производителями о том, что именно выполняло функцию - зачем вам в первую очередь требовалось два набора аппаратных сигналов квитирования? И программный протокол XON / XOFF в довершение всего этого (а почему принтеры Diablo настаивают - насколько я знаю, уникально - на установлении связи на контакте 11?)

Некоторое оборудование требует полного интерфейса. Некоторые были довольны TXD / RXD / Gnd. Некоторые могут быть обмануты, если закоротить контакты 4 и 6 (таким образом, возвращая свой собственный RTS к CTS). И некоторые из них, которые должны были быть DCE, были DTE или наоборот и могли бы общаться с кем-либо еще только через «нуль-модемный» кабель при каждой замененной паре соединений.

Затем, чтобы упростить все это, IBM PC представил новый 9-контактный интерфейс для RS232. Это значит, что вся ваша существующая коллекция кабелей устарела, и вам пришлось начинать заново ...

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

Это поддержало целую индустрию, построенную вокруг коммутационных блоков RS232, кабелей и инструментов тестирования / отладки.

Добавление другого сигнала, в этом контексте, вероятно, не собирался летать ...


9

Первый модем Hayes, использующий команды «AT», выбрал «A» в качестве первого символа своего префикса команды, потому что он должен был поддерживать несколько скоростей передачи, а «A» в строке выглядит так: -------_-_____-x---------- соотношение 5: 1 между самые длинные и самые короткие «низкие» времена («х» может быть высоким или низким в зависимости от настроек четности). Скорость не более 1200 бод не может справиться с «коротким» временем 833 мкс или меньше, а скорость не более 2400 не может обойтись «длинным» 4,16 мс или более, поэтому модем может с уверенностью предположить, что если он видит что-то, что выглядит как 1200 бод "А", это (и аналогично с 300 бод и т. д.). Буква «Т» имеет четность, противоположную букве «А», поэтому, если второй символ выглядит как буква «Т»,

Устройства или драйверы, которые используют команды «AT», которые работают аналогично или аналогично командам модема Hayes (например, принимают ATDTW192,168,254,123W4567в качестве команды для подключения к порту 4567 из 192.168.254.123), делают это для совместимости с программным обеспечением, которое рассчитывает на связь со старым стилем модем или совместимое устройство. Однако существует много устройств, которые используют команды, начинающиеся с «AT», из теории, что «набор команд AT» представляется полезным маркетинговым словом, даже если устройства не способны автоматически определять скорость передачи и имеют команды, отличающиеся от что-нибудь на любом другом устройстве. Использование «AT» в качестве префикса команды в таких контекстах не добавляет значения совместимости и не служит никакой полезной цели; дизайнеры делают это, потому что они видели, как другие дизайнеры делают это,

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.