Чому люди використовують команди AT при послідовному спілкуванні?


21

Мені потрібно знати, чому люди у вбудованих системах використовують команди AT?
Коли я попросив людей сказати, що це стандарт.

Отже, моє запитання: Що означає "AT"? Чому люди продовжують говорити, що це стандарт?


1
+++ ATH0 кому?
kinokijuf

@kinokijuf що ти означає?
xsari3x

1
why people in embedded systems use AT commands- немає нічого конкретного вбудованого у вашому запитанні або використанні AT на послідовному посиланні. Можливо, ви бачили це у вбудованій системі, але її походження пояснено нижче і не характерне для вбудованих систем. (Будьте обережні, щоб не малювати речі занадто широкою пензлем.)
Радіан

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.333ms для 300 бод, 833us для 1200 baud тощо) .). Виявивши це, вони побачать, чи буде наступний низький імпульс у п’ять разів більшим за ширину. Якщо так, вони б спостерігали за іншим високим-низьким-високим, або ще принаймні 1,5-бітним часом. Виявлення будь-якого з них свідчить про те, що модем щойно бачив 0x41 або 0xC1 (тобто "A") ідентифікованої швидкості передачі. Далі це вказуватиме, що або доданий комп'ютер використовував або 8-N-1, або 7-E-1, або що він використовував або 7-N-1, або 7-O-1. В будь-якому випадку наступним символом буде 0x54 або 0xD4 (тобто "T"). Це дозволило б модему додатково класифікувати параметри довжини та парності символів.

Зауважте, що все, що надійшло до "AT", буде ігноровано. Якщо ехо було ввімкнено, дані повертаються назад до приєднаного комп'ютера, просто відображаючи всі переходи рядків без будь-якого послідовного декодування. Якщо комп'ютер надсилав дані до "AT", наприклад, 247 бод, вони будуть повторюватися з такою швидкістю.

На сьогоднішній день декілька пристроїв використовують початкове «A» для автоматичного виявлення швидкості передачі передач, але в іншому випадку факт, що команди починаються з «AT», є в основному історичною цікавістю.


1
е-е ... що ти маєш на увазі "7-N-1" ??
xsari3x

1
Сім бітів даних, без парності, один стоп-біт. Дозволяє надсилати дані на 11% швидше, ніж 8-N-1, якщо ніхто не збирається надсилати будь-які дані з високим набором бітів.
supercat

За винятком того, що автоматичне передавання даних (як правило, робиться) в частині +++ команди +++ AT або +++ <час захисту> AT. Дивіться en.wikipedia.org/wiki/Time_Independent_Escape_Sequence
david

1
@david: Я не бачу жодної згадки про автоматичну передачу даних у статті, що не залежить від часу, і ніколи не бачив, щоб модем приймав +++ за будь-якої швидкості передачі, відмінної від тієї, яку він використовував для спілкування. Символи 0x9E 0x86, надіслані спиною до спини на 2400-8-N-1 (або ^ N ^ F в 2400-7-O-1), створюють абсолютно такі ж переходи рядка, що і символ "+" при 1200 бодах, тож я вважав би "+" незвичайним вибором для бод-тренувального персонажа.
supercat

Довідка у Вікіпедії (!) Була призначена лише для людей, які не знають про +++. Обладнання Я використовую поїзди на "U", а програмне забезпечення - на власні рядки. Ви знаєте стандарт? Всі рядки підключення, які використовуються для запуску +++, тому автоматичне передавання даних було завершено до будь-якого іншого зв'язку.
Девід

22

Це стосується набору команд Хейса, який вже давно є стандартом для видачі команд модемам (та іншому обладнанню) по послідовній лінії.

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

Подивіться на сторінку Вікі та посилання внизу - тут є багато деталей.

Однак існують всілякі розширення до оригінального набору AT, тому я б не покладався на все, що згадує AT, щоб фактично використовувати всі оригінальні команди Hayes. Наприклад, у мене є серійний чіп Bluetooth, у якому IIRC використовує власний набір типів AT.
Я не експерт з цього питання, я просто пам’ятаю, що хапався з командами в старі дні набору номера та BBS.


13

Набір команд "AT" повинен був вирішити проблему необхідності передачі інформації про управління смугами над тим самим каналом байтового потоку, що надсилалися довільні дані. Це була поширена проблема модемів, коли вони були зовнішніми коробками, підключеними до комп'ютерів через послідовний кабель.

Хейс був виробником таких модемів і здобув чималу ранню популярність. Їх рішенням для проблеми поза смуги було надсилання модему здебільшого двох літерних команд управління ASCII зі спеціальною послідовністю, щоб перевести його в режим передачі даних через режим. Щоб зменшити ймовірність випадкових матеріалів, схожих на команди, їх командні послідовності почалися з команди AT, яка виступала за "увагу".

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

В даний час ця схема використовується рідко, але, звичайно, щось таке, що було так поширене в темних кутах навіть сьогодні.


1
Мені сподобалась ця історична записка про Хейса і як вона змусила її мати власний стандарт, поєднуючи свою відповідь з вищевказаними двома відповідями більш ніж достатньо :)
xsari3x

Між іншим, багато нових модемів більше не вимагають, щоб символи "AT" були великими літерами, що збільшує частоту, з якою відключення в середині відправлення текстового файлу спричинить помилкову поведінку модему.
supercat

Код управління Band-Break становить +++ AT або +++ <час охорони>. AT є першими двома символами стандартного набору керування і означає ATtention.
Девід


0

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

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

Це означає, що ви можете використовувати один і той же канал зв'язку і для сигналізації (команди AT для управління зв’язком), і даних (фактичні дані, які ви хочете надіслати). У ATстандарті визначає , як диференціюватися між ними , щоб ви і послідовним пристроєм не заплутатися , коли говорять одне з одним.

Що означає "AT"?

ATдля уваги

Чому люди продовжують говорити, що це стандарт?

Ну, бо це так. Я б сказав , що це насправді поєднання де-факто стандартизації і пара з «реальних» стандартів і деяких рекомендацій .


Здається, це не означає нічого, про що не говорилося в інших відповідях років тому. Якщо ви збираєтесь драпати старе питання, то справді слід сказати щось важливе, про що не говорили раніше.
Кріс Страттон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.