Warum verwenden die Benutzer AT-Befehle für die serielle Kommunikation?


21

Ich muss wissen, warum Benutzer in eingebetteten Systemen AT-Befehle verwenden.
Wenn ich gefragt habe, sagen die Leute, dass es ein Standard ist.

Meine Frage lautet also: Was bedeutet "AT"? Warum sagen die Leute immer wieder, es sei ein Standard?


1
+++ ATH0 jemand?
Kinokijuf

@kinokijuf was meinst du?
xsari3x

1
why people in embedded systems use AT commands- Ihre Frage oder die Verwendung von AT auf einer seriellen Verbindung ist nicht spezifisch eingebettet. Es könnte sein, dass Sie dies auf einem eingebetteten System gesehen haben, aber der Ursprung wird unten erklärt und ist nicht spezifisch für eingebettete Systeme. (Achten Sie darauf, die Dinge nicht mit einem zu breiten Pinsel zu malen.)
Radian

1
Der AT-Befehl wurde sogar in einem so genannten modemuUnix-Programm implementiert , das ein Master / Slave-Pseudo-Gerät erstellt und ein Modem simuliert, das tatsächlich über Telnet übertragen wird. Sie "wählen" einen Host mit ATD<hostname>. Das Komische ist, dass das Programm fast genau zu einer Zeit herauskam, als ich es brauchte, etwa 1996: Version 0.0.1. Ich habe es seitdem nicht mehr gebraucht. Und es ist immer noch 0.0.1! Ich habe es in Verbindung mit minicom verwendet, um zmodem-Übertragungen über Telnet an Remote-Hosts durchzuführen, die nur auf diese Weise erreicht werden konnten.
Kaz

@kinokijuf Bitte nicht in Kommentare einfügen. Du hast StackOverflow gerade dazu gebracht, mich aufzuhängen! :-)
Curt J. Sampson

Antworten:


31

Ein selten geschätztes Detail bei "AT" -Befehlen ist, dass viele Modems im "Auto-Baud / Auto-Parity" -Modus starten. Anfänglich versuchte das Modem nicht, serielle Daten zu dekodieren, sondern suchte einfach nach einem aufeinanderfolgenden Tiefpuls und Hochpuls, deren Breite mit der gleichen gültigen Bitperiode übereinstimmte (z. B. 3,333 ms für 300 Baud, 833 us für 1200 Baud usw.) .). Wenn sie das fanden, würden sie sehen, ob der nächste niedrige Puls fünfmal so breit war. In diesem Fall würden sie entweder nach einem anderen High-Low-High oder nach mindestens 1,5 Bit-Times-High Ausschau halten. Wenn Sie einen dieser Werte finden, hat das Modem gerade 0x41 oder 0xC1 (dh "A") der identifizierten Baudrate erkannt. Es würde ferner anzeigen, dass der angeschlossene Computer entweder 8-N-1 oder 7-E-1 oder 7-N-1 oder 7-O-1 verwendete. In beiden Fällen würde das nächste Zeichen entweder 0x54 oder 0xD4 sein (dh "T"). Auf diese Weise könnte das Modem die Einstellungen für Zeichenlänge und Parität weiter kategorisieren.

Beachten Sie, dass alles, was vor dem "AT" empfangen wurde, ignoriert wird. Wenn das Echo aktiviert ist, werden die Daten einfach durch Spiegeln aller Leitungsübergänge ohne serielle Dekodierung an den angeschlossenen Computer zurückgesendet. Wenn ein Computer Daten vor dem "AT" mit beispielsweise 247 Baud sendet, wird dies mit dieser Geschwindigkeit zurückgesendet.

Heutzutage verwenden einige Geräte ein anfängliches "A" für die automatische Baudratenerkennung, aber ansonsten ist die Tatsache, dass Befehle mit "AT" beginnen, im Grunde eine historische Kuriosität.


1
ehm ... was meinst du mit "7-N-1" ??
xsari3x

1
Sieben Datenbits, keine Parität, ein Stoppbit. Ermöglicht das Senden von Daten um 11% schneller als 8-N-1, wenn keine Daten mit gesetztem High-Bit gesendet werden sollen.
Supercat

Abgesehen davon, dass das automatische Bauding in der Regel im +++ - Teil eines +++ AT- oder +++ <guard time> AT-Befehls ausgeführt wurde (und wird). Siehe en.wikipedia.org/wiki/Time_Independent_Escape_Sequence
David

1
@david: In dem Artikel über zeitunabhängige Escape-Sequenzen wird Auto-Baud nicht erwähnt. Ich habe auch noch nie gesehen, dass ein Modem +++ mit einer anderen Baudrate als der für die Kommunikation verwendeten akzeptiert. Die Zeichen 0x9E 0x86, die bei 2400-8-N-1 hintereinander gesendet werden (oder ^ N ^ F bei 2400-7-O-1), erzeugen genau die gleichen Zeilenübergänge wie ein "+" - Zeichen bei 1200 Baud. Daher würde ich "+" als ungerade Wahl für ein Baud-Training-Zeichen betrachten.
Supercat

Die Wikipedia (!) Referenz war nur für Leute, die nichts über +++ wissen. Hardware Ich benutze U-Züge, Software-Züge für benutzerdefinierte Zeichenfolgen. Kennen Sie einen Standard? Alle Verbindungszeichenfolgen, die zum Starten von +++ verwendet wurden, sodass das automatische Bauding vor jeder anderen Kommunikation abgeschlossen war.
David

22

Es bezieht sich auf den Hayes-Befehlssatz, der seit langem der Standard für die Ausgabe von Befehlen an Modems (und andere Geräte) über eine serielle Leitung ist.

Anstelle der Befehle und Daten mit zwei getrennten Zeilen wird nur eine Zeile verwendet, und um von Daten in den Befehlsmodus zu wechseln, wird eine bestimmte Sequenz gesendet, z. B. +++, gefolgt von einer Pause mit festgelegter Länge. Dann werden die nächsten Daten vom empfangenden Gerät als Befehl angesehen.
Der Grund für diese Verwendung ist die Tatsache, dass kein weiteres Leitungspaar erforderlich ist, das in vielen Fällen, insbesondere in kleinen eingebetteten Systemen, einfach nicht verfügbar ist.

Schauen Sie sich die Wiki-Seite und die Links unten an - dort gibt es jede Menge Details.

Es gibt jedoch alle möglichen Erweiterungen des ursprünglichen AT-Satzes, sodass ich mich nicht auf alles verlassen würde, was AT erwähnt, um tatsächlich alle ursprünglichen Hayes-Befehle zu verwenden. Zum Beispiel habe ich hier einen seriellen Bluetooth-Chip, für den IIRC einen eigenen AT-Typ-Satz verwendet.
Ich bin allerdings kein Experte, ich erinnere mich nur daran, wie ich in den vergangenen Tagen mit Befehlen wie DFÜ und BBS herumgehackt habe.


13

Der "AT" -Befehlssatz sollte das Problem lösen, dass über denselben Byte-Stream-Kanal beliebige Daten gesendet werden mussten, die außerhalb des Bandes lagen. Dies war ein häufiges Problem von Modems, als es sich um externe Boxen handelte, die über ein serielles Kabel mit Computern verbunden waren.

Hayes war ein Hersteller solcher Modems und erfreute sich schon früh großer Beliebtheit. Ihre Lösung für das Out-of-Band-Problem bestand darin, dem Modem zumeist aus zwei Buchstaben bestehende ASCII-Steuerbefehle mit einer speziellen Sequenz zu senden, um es in den Datenübertragungsmodus zu versetzen. Um die Wahrscheinlichkeit von zufälligen Dingen zu verringern, die wie Befehle aussehen, begannen ihre Befehlssequenzen alle mit dem AT-Befehl, der für "Aufmerksamkeit" stand.

Hayes gewann so viel Marktanteil, dass andere Modemhersteller denselben Befehlssatz implementieren mussten, um kompatibel zu sein. Auf diese Weise konnten Kunden ihre Modems verwenden, ohne Software neu schreiben zu müssen, die bereits für die Steuerung eines Hayes-Modems eingerichtet wurde.

Heutzutage wird dieses Schema nur noch selten angewendet, aber natürlich war es auch heute noch so verbreitet in dunklen Ecken.


1
Ich mochte diese historische Notiz über Hayes und wie sie den eigenen Standard erzwang, Ihre Antwort mit den obigen zwei Antworten zu verketten ist mehr als genug :)
xsari3x

Übrigens scheinen viele neuere Modems nicht mehr die Großschreibung der Zeichen "AT" zu erfordern, was die Häufigkeit erhöht, mit der eine Unterbrechung beim Senden einer Textdatei ein fehlerhaftes Modemverhalten verursacht.
Supercat

Der Band-Break-Steuercode lautet +++ AT oder +++ <Guard Time>. AT sind die ersten beiden Zeichen eines Standardkontrollsatzes und stehen für ATtention.
David


0

Warum verwenden Benutzer in eingebetteten Systemen AT-Befehle?

Ich gehöre nicht zu diesen "Leuten in eingebetteten Systemen", aber ich würde sagen, dass ATBefehle immer noch verwendet werden, da sie von einem genau definierten Low-Overhead-Standard für Inline-Signalisierung stammen.

Das bedeutet, dass Sie denselben Kommunikationskanal sowohl für die Signalisierung (AT-Befehle zum Verwalten der Kommunikation) als auch für Daten (tatsächliche Daten, die Sie senden möchten) verwenden können. Der ATStandard legt fest, wie Sie zwischen beiden unterscheiden müssen, damit Sie und Ihr serielles Gerät nicht durcheinander geraten, wenn Sie miteinander sprechen.

Was bedeutet "AT"?

ATist für Aufmerksamkeit

Warum sagen die Leute immer wieder, es sei ein Standard?

Nun, weil es so ist. Ich würde sagen , es ist eigentlich eine Mischung aus ist de-facto - Standardisierung und ein Paar von „echten“ Standards und einigen Empfehlungen .


Dies scheint nichts zu sagen, was vor Jahren in anderen Antworten noch nicht gesagt wurde. Wenn Sie eine alte Frage aufgreifen wollen, sollte es wirklich wichtig sein, etwas zu sagen, das vorher nicht gesagt wurde.
Chris Stratton
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.