Мне нужно знать, почему люди во встроенных системах используют AT-команды?
Когда я спрашивал, люди говорили, что это стандарт.
Итак, мой вопрос: что означает «АТ»? Почему люди продолжают говорить, что это стандарт?
Одна редко оцениваемая деталь в командах «AT» заключается в том, что многие модемы начинают работу в режиме «авто-скорость/авто-четность». Изначально модем не пытался фактически декодировать какие-либо последовательные данные, а просто наблюдал за последовательными низким и высоким импульсами, ширина которых соответствовала одному и тому же действительному битовому периоду (например, 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 бод, они возвращались обратно на этой скорости.
В настоящее время некоторые устройства используют начальную букву «А» для автоматического определения скорости передачи, но в остальном тот факт, что команды начинаются с «АТ», в основном является историческим курьёзом.
Он относится к набору команд Hayes, который долгое время был стандартом для выдачи команд модемам (и другому оборудованию) по последовательной линии.
Вместо команд и данных, имеющих две отдельные строки, используется только одна строка, а для перехода в командный режим из данных посылается определенная последовательность, например, +++ с последующей паузой заданной длины. Затем следующие данные воспринимаются принимающим оборудованием как команда.
Причина использования чего-то подобного заключается в том, что это позволяет избежать необходимости в еще одной паре линий, которые во многих случаях просто недоступны, особенно в небольших встроенных системах.
Взгляните на страницу Wiki и ссылки внизу — там много подробностей.
Однако есть всевозможные расширения исходного набора AT, поэтому я бы не стал полагаться на все, что упоминает AT, чтобы фактически использовать все оригинальные команды Hayes. Например, у меня есть последовательный чип Bluetooth, который IIRC использует свой собственный набор типов AT.
Хотя я не эксперт в этом, я просто помню, как ковырялся с командами в те старые времена коммутируемого доступа и BBS.
Набор команд «AT» должен был решить проблему, связанную с необходимостью внеполосной управляющей информации по тому же каналу потока байтов, в котором отправлялись произвольные данные. Это была обычная проблема модемов, когда они были внешними блоками, подключенными к компьютерам через последовательный кабель.
Hayes был производителем таких модемов и с самого начала приобрел большую популярность. Их решение проблемы вне полосы частот заключалось в том, чтобы посылать модему в основном двухбуквенные управляющие команды ASCII со специальной последовательностью, чтобы перевести его в режим сквозной передачи данных. Чтобы уменьшить вероятность появления случайных вещей, похожих на команды, все их последовательности команд начинались с AT-команды, которая означала «внимание».
Hayes завоевал такую большую долю рынка, что другим производителям модемов пришлось реализовать тот же набор команд, чтобы быть совместимыми. Таким образом, клиенты могли использовать свои модемы без необходимости переписывать программное обеспечение, которое уже было настроено для управления модемом Hayes.
В настоящее время эта схема используется редко, но, конечно, то, что было настолько широко распространено, даже сегодня бродит по темным углам.
Существует особенно хороший документ, описывающий историю команд «AT», который можно найти здесь:
http://nemesis.lonestar.org/reference/telecom/modems/at/history.html
Он содержит много страниц хорошей «истории» о том, как появился протокол.
Я не из тех «людей во встроенных системах», но я бы сказал, что AT
команды все еще используются, потому что они исходят из четко определенного стандарта с низкими издержками для встроенной сигнализации.
Это означает, что вы можете использовать один и тот же канал связи как для сигнализации (AT-команды для управления связью), так и для данных (фактических данных, которые вы хотите отправить). Стандарт AT
определяет, как различать их, чтобы вы и ваше последовательное устройство не путались при общении друг с другом.
AT
для ВНИМАНИЯ
Ну, потому что это так. Я бы сказал, что на самом деле это смесь стандартизации де-факто , пары « настоящих» стандартов и некоторых рекомендаций .
кинокиджуф
ксари3х
Радиан
why people in embedded systems use AT commands
- в вашем вопросе или использовании AT в последовательном канале нет ничего особенного. Возможно, вы видели это во встроенной системе, но его происхождение объясняется ниже и не является специфичным для встроенных систем. (Будьте осторожны, чтобы не рисовать слишком широкой кистью.)Каз
modemu
: Unix-программа, которая создает псевдо-tty-устройство master/slave и имитирует модем, который на самом деле работает через telnet. Вы «набираете» хост с помощьюATD<hostname>
. Самое смешное, что программа вышла почти ровно тогда, когда она мне была нужна, примерно в 1996 году: версия 0.0.1. С тех пор он мне не нужен. И это все еще 0.0.1! Я использовал его в сочетании с minicom для передачи zmodem через telnet на удаленные хосты, до которых можно было добраться только таким образом.cjs