¿Necesito saber por qué las personas en sistemas integrados usan comandos AT?
Cuando he preguntado a la gente dice que es un estándar.
Entonces mi pregunta es: ¿Qué significa "AT"? ¿Por qué la gente sigue diciendo que es un estándar?
Un detalle poco apreciado sobre los comandos "AT" es que muchos módems comenzarían en el modo "auto-baud/auto-parity". Inicialmente, el módem comenzaría sin tratar de decodificar ningún dato en serie, sino que simplemente buscaría un pulso bajo y un pulso alto consecutivos cuyos anchos coincidieran con el mismo período de bit válido (por ejemplo, 3.333ms para 300 baudios, 833us para 1200 baudios, etc. .). Al encontrar eso, verían si el siguiente pulso bajo era cinco veces ese ancho. Si es así, buscarían otro alto-bajo-alto o bien por al menos 1,5 bits de tiempo alto. Encontrar cualquiera de ellos indicaría que el módem acaba de ver un 0x41 o 0xC1 (es decir, "A") de la velocidad de transmisión identificada. Indicaría además que la computadora conectada estaba usando 8-N-1 o 7-E-1, o que estaba usando 7-N-1 o 7-O-1. En cualquier caso, buscaría que el siguiente carácter sea 0x54 o 0xD4 (es decir, "T"). Eso permitiría al módem categorizar aún más la longitud de los caracteres y la configuración de paridad.
Tenga en cuenta que todo lo recibido antes del "AT" sería ignorado. Si se activó el eco, los datos se devolverían a la computadora adjunta simplemente reflejando todas las transiciones de línea sin ninguna decodificación en serie. Si una computadora envió datos antes del "AT" a, por ejemplo, 247 baudios, se repetiría a esa velocidad.
Hoy en día, algunos dispositivos usan una "A" inicial para la detección automática de velocidad en baudios, pero por lo demás, el hecho de que los comandos comiencen con "AT" es básicamente una curiosidad histórica.
Hace referencia al conjunto de comandos de Hayes, que ha sido el estándar durante mucho tiempo para emitir comandos a módems (y otros equipos) a través de una línea serie.
En lugar de que los comandos y los datos tengan dos líneas separadas, solo se usa una línea y para cambiar al modo de comando desde los datos se envía una determinada secuencia, por ejemplo, +++ seguido de una pausa de duración determinada. Luego, los siguientes datos son vistos como un comando por el equipo receptor.
La razón para usar algo como esto es el hecho de que evita la necesidad de otro par de líneas, que en muchos casos simplemente no están disponibles, especialmente en pequeños sistemas embebidos.
Eche un vistazo a la página Wiki y los enlaces en la parte inferior: hay muchos detalles allí.
Sin embargo, hay todo tipo de extensiones para el conjunto AT original, por lo que no confiaría en todo lo que menciona AT para usar todos los comandos originales de Hayes. Por ejemplo, aquí tengo un chip serial bluetooth que IIRC usa su propio conjunto de tipos AT.
Sin embargo, no soy un experto en eso, solo recuerdo piratear los comandos en los viejos días de acceso telefónico y BBS.
El conjunto de comandos "AT" fue para resolver un problema de necesidad de información de control fuera de banda sobre el mismo canal de flujo de bytes que se enviaban datos arbitrarios. Este era un problema común de los módems, cuando eran cajas externas conectadas a computadoras a través de un cable serie.
Hayes era un fabricante de tales módems y ganó mucha popularidad desde el principio. Su solución para el problema fuera de banda fue enviar al módem principalmente comandos de control ASCII de dos letras con una secuencia especial para ponerlo en modo de transferencia de datos. Para reducir la probabilidad de que cosas aleatorias parecieran comandos, todas sus secuencias de comandos comenzaban con el comando AT, que significaba "atención".
Hayes ganó tanta participación de mercado que otros fabricantes de módems tuvieron que implementar el mismo conjunto de comandos para ser compatibles. De esa manera, los clientes podían usar sus módems sin tener que volver a escribir el software, que ya estaba configurado para controlar un módem Hayes.
Hoy en día, este esquema rara vez se usa, pero, por supuesto, algo que estaba tan generalizado se mantiene en los rincones oscuros incluso hoy.
Hay un documento especialmente bueno que describe la historia de los comandos "AT" que se puede encontrar aquí:
http://nemesis.lonestar.org/reference/telecom/modems/at/history.html
Contiene muchas páginas de buena "historia" sobre cómo surgió el protocolo.
No soy una de esas "personas en sistemas integrados", pero diría que AT
los comandos todavía están en uso porque provienen de un estándar de baja sobrecarga bien definido para la señalización en línea.
Lo que eso significa es que puede usar el mismo canal de comunicación tanto para señalización (comandos AT para administrar la comunicación) como para datos (datos reales que desea enviar). El AT
estándar especifica cómo diferenciar entre los dos para que usted y su dispositivo serie no se confundan al hablar entre sí.
AT
es para atencion
Bueno, porque lo es. Yo diría que en realidad es una mezcla de estandarización de facto y un par de estándares "reales" y algunas recomendaciones .
kinokijuf
xsari3x
Radián
why people in embedded systems use AT commands
- no hay nada incrustado específico sobre su pregunta o el uso de AT en un enlace serial. Es posible que haya visto esto en un sistema integrado, pero su origen se explica a continuación y no es específico de los sistemas integrados. (Tenga cuidado de no pintar las cosas con un pincel demasiado ancho).Kaz
modemu
: un programa Unix que crea un dispositivo pseudo-tty maestro/esclavo y simula un módem que en realidad pasa por telnet. Usted "marca" un host conATD<hostname>
. Lo curioso es que ese programa salió casi exactamente en el momento en que lo necesitaba, allá por 1996: la versión 0.0.1. No lo he necesitado desde entonces. ¡Y sigue siendo 0.0.1! Lo usé junto con minicom para hacer transferencias zmodem a través de telnet a hosts remotos a los que solo se podía acceder de esa manera.cjs