Почему люди используют AT-команды в последовательной связи?

21

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

Итак, мой вопрос: что означает «AT»? Почему люди продолжают говорить, что это стандарт?

xsari3x
источник
1
+++ ATH0 кто-нибудь?
kinokijuf
@kinokijuf что ты имеешь в виду?
xsari3x
1
why people in embedded systems use AT commands- в вашем вопросе или использовании AT по последовательному каналу нет ничего конкретного. Возможно, вы видели это во встроенной системе, но ее происхождение объяснено ниже и не относится к встроенным системам. (Будьте осторожны, чтобы не покрасить вещи слишком широкой кистью.)
Radian
1
AT-команда была даже реализована в нечто, называемое modemu: Unix-программа, которая создает псевдо-tty-устройство master / slave и имитирует модем, который фактически переходит через telnet. Вы "набираете" хост с ATD<hostname>. Самое смешное, что программа вышла почти в то время, когда она мне понадобилась, примерно в 1996 году: версия 0.0.1. Я не нуждался в этом с тех пор. И это все еще 0.0.1! Я использовал его вместе с minicom для передачи zmodem через telnet на удаленные хосты, которые могли быть доступны только таким способом.
Каз
@kinokijuf Пожалуйста, не помещайте это в комментарии. Вы только что заставили StackOverflow повесить трубку на меня! :-)
Курт Дж. Сэмпсон

Ответы:

31

Одна из редко встречающихся подробностей о командах «AT» заключается в том, что многие модемы запускаются в режиме «auto-baud / auto-parity». Первоначально модем сначала не пытался декодировать какие-либо последовательные данные, а просто наблюдал бы последовательный низкий импульс и высокий импульс, ширина которых соответствовала одному и тому же действительному битовому периоду (например, 3,333 мс для 300 бод, 833 мкс для 1200 бод и т. Д. .). Найдя это, они увидят, будет ли следующий низкий импульс в пять раз больше этой ширины. Если это так, они будут ожидать либо другого хай-лоу-хай, либо еще как минимум 1,5-битного максимума. Обнаружение любого из них будет означать, что модем только что увидел 0x41 или 0xC1 (то есть «A») идентифицированной скорости передачи. Это также указывает на то, что подключенный компьютер использует либо 8-N-1 или 7-E-1, либо использует 7-N-1 или 7-O-1. В любом случае будет выглядеть следующий символ 0x54 или 0xD4 (т. Е. «T»). Это позволило бы модему дополнительно классифицировать длину символов и настройки четности.

Обратите внимание, что все, что получено до «AT», будет игнорироваться. Если эхосигнал включен, данные будут возвращаться обратно на подключенный компьютер, просто отражая все переходы строк без последовательного декодирования. Если компьютер отправлял данные до «AT», например, со скоростью 247 бод, они возвращались бы с той же скоростью.

В настоящее время несколько устройств используют начальную букву «А» для автоматического определения скорости передачи, но в остальном тот факт, что команды начинаются с «АТ», является историческим курьезом.

Supercat
источник
1
эм ... что ты имеешь в виду "7-N-1" ??
xsari3x
1
Семь бит данных, без проверки четности, один стоповый бит. Позволяет отправлять данные на 11% быстрее, чем 8-N-1, если вы не собираетесь отправлять данные с установленным старшим битом.
Суперкат
За исключением того, что автоматическая передача данных была (и есть) обычно выполняется на части +++ AT + +++ или +++ <guard time> AT-команды. См. En.wikipedia.org/wiki/Time_Independent_Escape_Sequence
Дэвид
1
@ david: я не вижу упоминания об автоматической настройке скорости в статье, не зависящей от времени, и никогда не видел, чтобы модем принимал +++ со скоростью, отличной от той, которую он использовал для связи. Символы 0x9E 0x86, отправленные вплотную в 2400-8-N-1 (или ^ N ^ F в 2400-7-O-1), произведут точно такие же линейные переходы, что и символ "+" при 1200 бод, так что я бы расценил "+" как странный выбор для персонажа, обучающего боди.
суперкат
Ссылка на Википедию (!) Была только для людей, которые не знают о +++. Аппаратное обеспечение Я использую поезда на 'U', программные поезда на пользовательских строках. Знаете ли вы о стандарте? Все строки подключения использовались для запуска +++, поэтому автоматическая передача была завершена до любого другого соединения.
Дэвид
22

Он относится к набору команд Hayes, который долгое время был стандартом для подачи команд модемам (и другому оборудованию) по последовательной линии.

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

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

Есть все виды расширений к первоначальному набору AT, поэтому я бы не стал рассчитывать на все, что упоминает AT, чтобы фактически использовать все оригинальные команды Хейса. Например, у меня есть последовательный чип Bluetooth, который IIRC использует свой собственный набор типов AT.
Я не эксперт в этом, хотя, я просто помню, как хакнул с командами в старые времена дозвона и BBS.

Оли Глейзер
источник
13

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

Хейс был производителем таких модемов и приобрел большую популярность на ранних этапах. Их решение для внешней проблемы состояло в том, чтобы посылать модему в основном две буквенные команды управления ASCII со специальной последовательностью, чтобы перевести его в режим передачи данных. Чтобы уменьшить вероятность случайных вещей, похожих на команды, все их последовательности команд начинались с команды AT, которая обозначала «внимание».

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

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

Олин Латроп
источник
1
Мне понравилась эта историческая заметка о Хейсе и о том, как он вынудил свой собственный стандарт, объединить ваш ответ с двумя приведенными выше ответами более чем достаточно :)
xsari3x
Между прочим, многие более новые модемы больше не требуют, чтобы символы «AT» были заглавными, что увеличивает частоту, с которой разъединение в середине отправки текстового файла вызовет ошибочное поведение модема.
суперкат
Управляющий код Band-Break - +++ AT или +++ <время защиты>. AT - это первые два символа стандартного набора управления и означает ATtention.
Дэвид
0

почему люди во встроенных системах используют AT-команды?

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

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

Что означает «АТ»?

ATдля внимания

Почему люди продолжают говорить, что это стандарт?

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

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