Voy a ampliar la otra parte de la pregunta... ¿por qué no añadir otra línea de señalización a la interfaz?
Eso sólo se lo puede preguntar alguien que no haya vivido todas las permutaciones de líneas de señalización en una auténtica interfaz RS232 de 25 pines. Además de TXD, RXD y Gnd, ya había otros pares de señales, RTS/CTS (Ready to Send, Clear To Send) DSR/DTR (Data Set Ready, Data Terminal Ready) y un pin hardware de Hangup. Y otros. Y no hay un acuerdo universal claro entre los fabricantes sobre qué hacía qué función - ¿por qué se necesitaban dos conjuntos de señales hardware de handshaking en primer lugar? Y un protocolo de software XON/XOFF encima) (¿Y por qué las impresoras Diablo insistieron - de forma única hasta donde yo sé - en el handshaking en el pin 11?)
Algunos equipos requerían una interfaz completa. Algunos se conformaban con TXD/RXD/Gnd. A algunos se les podía engañar para que funcionaran cortocircuitando los pines 4 y 6 (haciendo así un bucle de su propio RTS a CTS). Y algunos que debían ser DCE eran DTE o viceversa y sólo se comunicaban con cualquier otra cosa a través de un cable de "módem nulo" con cada par de conexiones intercambiadas.
Luego, para simplificar todo esto, el PC de IBM introdujo una nueva interfaz de 9 pines para RS232. Lo que significaba que toda tu colección de cables estaba obsoleta y tenías que empezar de nuevo...
Todo ello nos complicaba la vida incluso sin tener en cuenta que ambos extremos podían estar configurados con diferentes velocidades de transmisión...
De este modo, se creó toda una industria en torno a las cajas de conexión RS232, los cables y las herramientas de prueba y depuración.
Añadir otra señal, en este contexto, probablemente no iba a volar...
18 votos
Una palabra: Legado ... Todos pretenden ser módems compatibles con Hayes y lo han sido desde el principio de los tiempos (o al menos desde los años 80, que es prácticamente lo mismo). Y no, no es una buena razón.
0 votos
@brhans Lo más probable es que tengas razón.
4 votos
No sólo el legado, sino un realmente buena idea. Como dice el viejo refrán: "Lo maravilloso de los estándares es que hay muchos para elegir". Quiero que mi hardware y mi software funcionen con cualquier módulo de comunicaciones que esté utilizando sin tener que preocuparme de si habla un idioma diferente (conjunto de comandos) del que estaba usando antes.
7 votos
XKCD obligatorio aquí .
1 votos
En teoría, podrías desenchufar tu módulo WIFI y sustituirlo por uno de otro proveedor. Y como el protocolo es el mismo, ni siquiera tienes que ajustar el código.
0 votos
@FuaZe ¡Buena observación!
0 votos
Ohhhh este dolor implementando el conjunto de comandos AT en una comunicación de dispositivo a dispositivo donde todos los errores y respuestas tienen que ser procesados. No hay suma de comprobación, no hay encuadre de comandos, no hay consistencia. Un dispositivo compatible con comandos AT que utilicé lo hizo bien y añadió un protocolo "binario" adicional para facilitar la comunicación M2M.
1 votos
Si algo va mal en la comunicación/los bits no obtendrás la respuesta correcta, es decir: "OK" Así que si lo manejas como corresponde, es bastante estable. Es bastante fácil de depurar, ya que los mensajes tienen algún sentido. El manejo, sin embargo, es un poco más difícil de implementar. Tienes que comprobar dichos mensajes. Y leerlos, de una manera que no es regular para un MCU. Pero de nuevo, si haces esto una vez, funcionará para otros dispositivos AT.