Pourquoi les gens utilisent-ils les commandes AT dans la communication série?

21

J'ai besoin de savoir pourquoi les gens des systèmes embarqués utilisent des commandes AT?
Quand j'ai demandé aux gens de dire que c'était une norme.

Ma question est donc la suivante: que signifie «AT»? Pourquoi les gens continuent-ils à dire que c'est une norme?

xsari3x
la source
1
+++ ATH0 quelqu'un?
kinokijuf
@kinokijuf que voulez-vous dire?
xsari3x
1
why people in embedded systems use AT commands- il n'y a rien de spécifique à votre question ou à l'utilisation d'AT sur une liaison série. Il se peut que vous ayez vu cela sur un système embarqué, mais son origine est expliquée ci-dessous et n'est pas spécifique aux systèmes embarqués. (Faites attention à ne pas peindre les choses avec un pinceau trop large.)
Radian
1
La commande AT a même été implémentée dans quelque chose appelé modemu: un programme Unix qui crée un périphérique pseudo-tty maître / esclave et simule un modem qui passe réellement par telnet. Vous "composez" un hôte avec ATD<hostname>. Le plus drôle, c'est que ce programme est sorti presque exactement au moment où j'en avais besoin, vers 1996: version 0.0.1. Je n'en ai plus eu besoin depuis. Et c'est toujours 0.0.1! Je l'ai utilisé conjointement avec minicom pour effectuer des transferts zmodem via telnet vers des hôtes distants qui ne pouvaient être atteints que de cette façon.
Kaz
@kinokijuf Veuillez ne pas mettre cela dans les commentaires. Vous venez de faire raccrocher StackOverflow sur moi! :-)
Curt J. Sampson

Réponses:

31

Un détail rarement apprécié sur les commandes "AT" est que de nombreux modems démarreraient en mode "auto-baud / auto-parité". Initialement, le modem ne tentait pas de décoder réellement les données série, mais surveillait simplement une impulsion basse et une impulsion haute consécutives dont les largeurs correspondaient à la même période de bits valide (par exemple 3,333 ms pour 300 bauds, 833us pour 1200 bauds, etc.). .). En trouvant cela, ils verraient si la prochaine impulsion basse était cinq fois cette largeur. Si c'est le cas, ils surveilleraient soit un autre haut-bas-haut, soit au moins 1,5 fois des temps de haut. La découverte de l'un ou l'autre indique que le modem vient de voir un 0x41 ou 0xC1 (c'est-à-dire "A") du débit en bauds identifié. Cela indiquerait en outre que l'ordinateur connecté utilisait soit 8-N-1 ou 7-E-1, soit qu'il utilisait 7-N-1 ou 7-O-1. Dans les deux cas, il chercherait que le caractère suivant soit 0x54 ou 0xD4 (c'est-à-dire "T"). Cela permettrait au modem de catégoriser davantage les paramètres de longueur et de parité des caractères.

Notez que tout ce qui a été reçu avant le "AT" sera ignoré. Si l'écho était activé, les données seraient renvoyées à l'ordinateur connecté simplement en mettant en miroir toutes les transitions de ligne sans décodage série. Si un ordinateur envoyait des données avant le "AT" à 247 bauds par exemple, elles seraient renvoyées à cette vitesse.

De nos jours, quelques appareils utilisent un "A" initial pour la détection automatique de la vitesse de transmission, mais sinon le fait que les commandes commencent par "AT" est fondamentalement une curiosité historique.

supercat
la source
1
ehm ... que voulez-vous dire "7-N-1" ??
xsari3x
1
Sept bits de données, pas de parité, un bit d'arrêt. Permet d'envoyer des données 11% plus rapidement que 8-N-1, si l'on ne va pas envoyer de données avec le bit élevé.
supercat
Sauf que le bauding automatique était (et est) généralement effectué sur la partie +++ d'une commande +++ AT ou +++ <temps de garde> AT. Voir en.wikipedia.org/wiki/Time_Independent_Escape_Sequence
david
1
@david: Je ne vois aucune mention du bauding automatique dans l'article sur la séquence d'échappement indépendante du temps, et je n'ai jamais vu un modem accepter +++ à une vitesse de transmission autre que celle qu'il utilisait pour la communication. Les caractères 0x9E 0x86 envoyés consécutivement à 2400-8-N-1 (ou ^ N ^ F à 2400-7-O-1) produiraient exactement les mêmes transitions de ligne qu'un caractère "+" à 1200 bauds, donc je considérerais "+" comme un choix étrange pour un personnage d'entraînement en bauds.
supercat
La référence à Wikipédia (!) Était réservée aux personnes qui ne connaissent pas +++. Matériel J'utilise des trains sur 'U', des trains de logiciels sur des chaînes personnalisées. Connaissez-vous une norme? Toutes les chaînes de connexion utilisées pour démarrer +++, donc le bauding automatique était terminé avant toute autre communication.
david
22

Il fait référence au jeu de commandes Hayes qui est depuis longtemps la norme pour l'émission de commandes vers des modems (et d'autres équipements) sur une ligne série.

Au lieu que les commandes et les données aient deux lignes distinctes, une seule ligne est utilisée et pour passer en mode commande à partir des données, une certaine séquence est envoyée, par exemple +++ suivie d'une pause de durée définie. Ensuite, les données suivantes sont considérées comme une commande par l'équipement récepteur.
La raison d'utiliser quelque chose comme ça est le fait qu'il évite le besoin d'une autre paire de lignes, qui dans de nombreux cas ne sont tout simplement pas disponibles, en particulier dans les petits systèmes embarqués.

Jetez un œil à la page Wiki et aux liens en bas - il y a beaucoup de détails là-bas.

Il existe cependant toutes sortes d'extensions à l'ensemble AT d'origine, donc je ne miserais pas sur tout ce qui mentionne AT pour utiliser réellement toutes les commandes Hayes originales. Par exemple, j'ai ici une puce série Bluetooth que l'IIRC utilise son propre ensemble de types AT.
Je ne suis pas un expert en la matière cependant, je me souviens juste d'avoir piraté avec des commandes dans le temps de la numérotation et du BBS.

Oli Glaser
la source
13

L'ensemble de commandes "AT" devait résoudre un problème de transmission d'informations de contrôle hors bande sur le même canal de flux d'octets. C'était un problème commun des modems, à l'époque où ils étaient des boîtiers externes connectés à des ordinateurs via un câble série.

Hayes était un fabricant de tels modems et a gagné beaucoup de popularité au début. Leur solution pour le problème hors bande était d'envoyer au modem principalement des commandes de contrôle ASCII à deux lettres avec une séquence spéciale pour le mettre en mode de transmission de données. Pour réduire la probabilité de choses aléatoires ressemblant à des commandes, leurs séquences de commandes ont toutes commencé par la commande AT, qui signifiait «attention».

Hayes a gagné tellement de parts de marché que d'autres fabricants de modems ont dû implémenter le même jeu de commandes pour être compatibles. De cette façon, les clients pouvaient utiliser leurs modems sans avoir à réécrire le logiciel, qui était déjà configuré pour piloter un modem Hayes.

De nos jours, ce schéma est rarement utilisé, mais bien sûr quelque chose qui était si omniprésent dans les coins sombres, même aujourd'hui.

Olin Lathrop
la source
1
J'ai aimé cette note historique sur Hayes et la façon dont elle a forcé son propre standard, concaténer votre réponse avec les deux réponses ci-dessus est plus que suffisant :)
xsari3x
Soit dit en passant, de nombreux modems plus récents ne semblent plus exiger que les caractères "AT" soient en majuscules, ce qui augmente la fréquence à laquelle une déconnexion au milieu de l'envoi d'un fichier texte provoquera un comportement de modem errant.
supercat
Le code de contrôle Band-Break est +++ AT ou +++ <temps de garde>. AT est les deux premiers caractères d'un ensemble de contrôle standard et signifie ATtention.
david
0

pourquoi les gens dans les systèmes embarqués utilisent des commandes AT?

Je ne fais pas partie de ces "personnes dans les systèmes embarqués", mais je dirais que les ATcommandes sont toujours utilisées car elles proviennent d'une norme à faible surcharge bien définie pour la signalisation en ligne.

Cela signifie que vous pouvez utiliser le même canal de communication à la fois pour la signalisation (commandes AT pour gérer la communication) et les données (données réelles que vous souhaitez envoyer). La ATnorme spécifie comment faire la différence entre les deux pour que vous et votre périphérique série ne soyez pas confus lorsque vous vous parlez.

Que signifie "AT"?

ATest pour ATtention

Pourquoi les gens continuent-ils à dire que c'est une norme?

Eh bien, parce que ça l'est. Je dirais que c'est en fait un mélange de normalisation de fait et un couple de « vrais » des normes et des recommandations .

Luke404
la source
Cela semble ne rien dire qui n'ait déjà été dit dans d'autres réponses il y a des années. Si vous voulez soulever une vieille question, ce devrait vraiment être de dire quelque chose d'important qui n'a pas été dit auparavant.
Chris Stratton