Dlaczego ludzie używają komend AT w komunikacji szeregowej?

21

Muszę wiedzieć, dlaczego ludzie w systemach wbudowanych używają poleceń AT?
Kiedy zapytałem, ludzie mówią, że to standard.

Więc moje pytanie brzmi: co oznacza „AT”? Dlaczego ludzie mówią, że to standard?

xsari3x
źródło
1
+++ ATH0 ktoś?
kinokijuf
@kinokijuf co masz na myśli?
xsari3x
1
why people in embedded systems use AT commands- nie ma nic wbudowanego w twoje pytanie lub użycie AT w łączu szeregowym. Możliwe, że widziałeś to w systemie wbudowanym, ale jego pochodzenie wyjaśniono poniżej i nie jest ono specyficzne dla systemów wbudowanych. (Uważaj, aby nie malować rzeczy zbyt szerokim pędzlem).
Radian
1
Polecenie AT zostało nawet zaimplementowane w czymś o nazwie modemu: program uniksowy, który tworzy urządzenie pseudo-tty master / slave i symuluje modem, który faktycznie przechodzi przez telnet. „Wybierz” hosta za pomocą ATD<hostname>. Zabawne jest to, że program wyszedł prawie dokładnie w czasie, gdy go potrzebowałem, około 1996 roku: wersja 0.0.1. Od tego czasu nie potrzebowałem tego. I wciąż jest to 0.0.1! Użyłem go w połączeniu z minicomem, aby wykonać transfery zmodem przez telnet do zdalnych hostów, do których można było dotrzeć tylko w ten sposób.
Kaz
@kinokijuf Proszę nie umieszczać tego w komentarzach. Właśnie kazałeś mi się zawiesić StackOverflow! :-)
Curt J. Sampson

Odpowiedzi:

31

Rzadko doceniany szczegół na temat poleceń „AT” polega na tym, że wiele modemów zaczynałoby w trybie „auto-baud / auto-parzystość”. Początkowo modem zaczynałby nie próbować dekodować żadnych danych szeregowych, ale po prostu szukał następujących po sobie niskich i wysokich impulsów, których szerokości pasowały do ​​tego samego ważnego okresu bitów (np. 3,333 ms dla 300 bodów, 833us dla 1200 bodów itp. .). Po stwierdzeniu tego, zobaczą, czy następny niski puls był pięć razy większy niż szerokość. Jeśli tak, to sprawdziliby albo kolejny wysoki-niski-wysoki lub przynajmniej 1,5-bitowy czas wysokiego. Znalezienie jednego z nich wskazywałoby, że modem właśnie widział 0x41 lub 0xC1 (tj. „A”) zidentyfikowanej prędkości transmisji. Oznaczałoby to ponadto, że albo podłączony komputer używa 8-N-1 lub 7-E-1, albo że używa albo 7-N-1 albo 7-O-1. W obu przypadkach następnym znakiem będzie 0x54 lub 0xD4 (tj. „T”). Umożliwiłoby to modemowi dalsze kategoryzowanie ustawień długości i parzystości znaków.

Zauważ, że wszystko otrzymane przed „AT” zostanie zignorowane. Jeśli echo było włączone, dane byłyby wysyłane z powrotem do podłączonego komputera, po prostu odbijając wszystkie przejścia linii bez żadnego szeregowego dekodowania. Gdyby komputer wysłał dane przed „AT” przy np. 247 bodach, echo to byłoby powtórzone z tą prędkością.

Obecnie kilka urządzeń używa początkowego „A” do automatycznego wykrywania prędkości transmisji, ale poza tym fakt, że polecenia zaczynają się od „AT”, jest w zasadzie historyczną ciekawostką.

supercat
źródło
1
ehm ... co masz na myśli mówiąc „7-N-1” ??
xsari3x
1
Siedem bitów danych, bez parzystości, jeden bit stopu. Pozwala na wysyłanie danych o 11% szybciej niż 8-N-1, jeśli nie zamierzasz wysyłać żadnych danych z ustawionym wysokim bitem.
supercat
Tyle, że automatyczne przesyłanie danych było (i jest) zwykle wykonywane w części +++ polecenia +++ AT lub +++ <czas ochronny> AT. Zobacz en.wikipedia.org/wiki/Time_Independent_Escape_Sequence
David
1
@ David: Nie widzę żadnej wzmianki o automatycznej transmisji w niezależnym od czasu artykule sekwencji ucieczki, ani też nie widziałem, aby modem akceptował +++ przy dowolnej szybkości transmisji innej niż ta, której używał do komunikacji. Znaki 0x9E 0x86 wysłane z powrotem do tyłu przy 2400-8-N-1 (lub ^ N ^ F przy 2400-7-O-1) spowodowałyby dokładnie takie same przejścia linii jak znak „+” przy 1200 bodach, więc uważam „+” za dziwny wybór dla postaci trenującej bodę.
supercat,
Odniesienia do Wikipedii (!) Były tylko dla osób, które nie wiedzą o +++. Sprzęt Używam pociągów na „U”, oprogramowanie pociągów na niestandardowych ciągach. Czy znasz standard? Wszystkie ciągi połączenia używane do uruchomienia +++, więc automatyczne przesyłanie danych zostało zakończone przed jakąkolwiek inną komunikacją.
David
22

Odnosi się do zestawu poleceń Hayesa, który od dawna jest standardem do wydawania poleceń modemom (i innym urządzeniom) przez linię szeregową.

Zamiast poleceń i danych posiadających dwie oddzielne linie, używana jest tylko jedna linia, a do przełączenia z trybu danych do trybu poleceń wysyłana jest pewna sekwencja, np. +++, po której następuje pauza o ustalonej długości. Następnie następne dane są postrzegane jako polecenie przez urządzenie odbierające.
Powodem użycia czegoś takiego jest fakt, że unika się potrzeby kolejnej pary linii, które w wielu przypadkach są po prostu niedostępne, szczególnie w małych systemach wbudowanych.

Zajrzyj na stronę Wiki i linki na dole - jest tam mnóstwo szczegółów.

Istnieją jednak różnego rodzaju rozszerzenia oryginalnego zestawu AT, więc nie opierałbym się na wszystkim, co wspomina AT, aby używać wszystkich oryginalnych poleceń Hayesa. Na przykład mam tutaj szeregowy układ Bluetooth, który IIRC używa własnego zestawu AT.
Nie jestem jednak ekspertem w tej dziedzinie, po prostu pamiętam hakowanie za pomocą poleceń w dawnych czasach telefonowania i BBS.

Oli Glaser
źródło
13

Zestaw poleceń „AT” miał rozwiązać problem z potrzebą informacji o kontroli poza pasmem w tym samym wysłanym arbitralnym kanale strumienia bajtów. Był to powszechny problem modemów, gdy były zewnętrznymi urządzeniami podłączonymi do komputerów kablem szeregowym.

Hayes był producentem takich modemów i zyskał dużą popularność na początku. Rozwiązaniem problemu poza pasmem było wysłanie modemowi głównie dwóch liter poleceń sterujących ASCII ze specjalną sekwencją, aby wprowadzić go w tryb przekazywania danych. Aby zmniejszyć prawdopodobieństwo losowych rzeczy wyglądających jak polecenia, ich sekwencje poleceń zaczęły się od polecenia AT, które oznaczało „uwagę”.

Hayes zyskał tak duży udział w rynku, że inni producenci modemów musieli wdrożyć ten sam zestaw poleceń, aby był kompatybilny. W ten sposób klienci mogli korzystać z modemów bez konieczności ponownego pisania oprogramowania, które zostało już skonfigurowane do obsługi modemu Hayes.

W dzisiejszych czasach ten schemat jest rzadko używany, ale oczywiście coś, co było tak wszechobecne, krąży nawet w ciemnych zakątkach.

Olin Lathrop
źródło
1
Podobała mi się ta historyczna notatka na temat Hayesa i tego, jak wymusiła swój własny standard, łączenie twojej odpowiedzi z powyższymi dwoma odpowiedziami jest więcej niż wystarczające :)
xsari3x
Nawiasem mówiąc, wiele nowszych modemów nie wymaga już, aby litery „AT” były pisane wielkimi literami, co zwiększa częstotliwość, z jaką rozłączenie w trakcie wysyłania pliku tekstowego spowoduje nieprawidłowe zachowanie modemu.
supercat
Kod kontrolny Band-Break to +++ AT lub +++ <czas ochronny>. AT to pierwsze dwa znaki standardowego zestawu kontrolnego i oznacza ATtention.
David
0

dlaczego ludzie w systemach wbudowanych używają poleceń AT?

Nie jestem jednym z tych „ludzi w systemach wbudowanych”, ale powiedziałbym, że ATpolecenia są nadal w użyciu, ponieważ pochodzą z dobrze zdefiniowanego standardu niskiego narzutu dla sygnalizacji w linii.

Oznacza to, że możesz używać tego samego kanału komunikacyjnego zarówno do sygnalizacji (komendy AT do zarządzania komunikacją), jak i danych (rzeczywiste dane, które chcesz wysłać). The ATStandard specyfikuje jak rozróżniać między nimi tak Ciebie i Twojego urządzenia szeregowego nie daj się mylić, gdy rozmawiają ze sobą.

Co oznacza „AT”?

AT jest dla uwagę

Dlaczego ludzie mówią, że to standard?

Cóż, bo tak jest. Powiedziałbym, że to jest rzeczywiście mieszanka de facto standaryzacji i para od „prawdziwych” standardów i kilka zaleceń .

Luke404
źródło
Wydaje się, że nie mówi nic, co nie zostało powiedziane w innych odpowiedziach lata temu. Jeśli zamierzasz pogłębić stare pytanie, naprawdę powinno być powiedzenie czegoś ważnego, czego nie powiedziano wcześniej.
Chris Stratton