¿Es posible enviar comandos AT a través de TCP?

1

Tengo un dispositivo SIM900 GSM / GPRS, puedo enviar comandos AT a través de HyperTerminal y todo está bien. Puedo configurar la conexión GPRS a través de comandos AT:

AT+CGATT=1
AT+CIPMUX=0
AT+CSTT="INTERNET","",""
AT+CIICR
AT+CIFSR
AT+CIPSTART="TCP","IP","PORT"

Con estas configuraciones puedo hacer que conecte mi PC (usando el reenvío de puertos en el enrutador doméstico). Creé un servidor TCP en C # y el servidor aceptó la conexión TCP desde el dispositivo. Mi pregunta es, ¿es posible enviar comandos AT a través de TCP y ejecutarlos? El servidor envía comandos AT al dispositivo y se reciben, pero como datos no comandos.

    
pregunta 3bdalla

2 respuestas

4

Todos los módems GSM que conozco tienen dos modos: comando y datos. Y eso incluye el SIM900. El módem comienza en el modo de comando, donde escucha los comandos AT, generalmente a través de una conexión UART en serie con un microcontrolador.

Los comandos AT se modelan después de los módems telefónicos Hayes de los años 80 y 90. AT significa atención. Se utilizan para configurar los parámetros de la conexión y luego iniciar la conexión, en el caso de SIM900, esto se hace con el comando AT + CIPSTART. Si la conexión es exitosa, el módem responde CONECTAR OK y cambia al modo de datos.

En ese punto, se establece una conexión de datos binarios entre el módem GSM y una toma de extremo lejano. Los bytes se pueden enviar de manera transparente. El módem solo puede volver a cambiarse al modo de comando si ocurre cualquiera de las tres cosas: la secuencia de escape +++ (patentada por Hayes) se envía desde el microcontrolador local, o se desactiva el cable DTR (solo si ha sido configurado para actuar de esta manera), o la conexión se interrumpe.

Solo en el primer caso (+++ secuencia de escape) la conexión se mantiene. Sin embargo, mientras el módem está en secuencia de comandos, ya no puede "ver" el extremo lejano.

Entonces, lo que quería hacer, es decir, enviar comandos AT desde el otro extremo y hacer que el módem los ejecute, es imposible porque el módem solo escucha los comandos de su microcontrolador local y solo cuando está en el modo de comando. Incluso si tuviera que enviar comandos AT a través del enlace en modo de datos, el módem GSM simplemente los reenviaría al microcontrolador al que está conectado.

Sería posible ejecutar indirectamente comandos AT desde el otro extremo con ayuda del microcontrolador local. El extremo lejano enviaría los comandos AT a través del enlace en modo de datos, y el microcontrolador local los pondría en cola. El extremo distante debería tener alguna forma de decirle al microcontrolador local cuando se hizo y debería comenzar a ejecutar los comandos. En ese momento, el microcontrolador enviaría la secuencia de escape +++ y luego enviaría los comandos AT en cola. Cuando se hiciera, volvería al modo de datos utilizando el comando ATO, y tal vez enviaría los resultados de los comandos al otro extremo.

    
respondido por el tcrosley
1

Bueno, esto no es directamente posible.

Es indirectamente, pero no recomendado. Podría recibir los comandos AT con interfaz TCP y luego reenviarlos al módem.

Esto es mucho trabajo por hacer, no es necesario, y se considera un agujero de seguridad. Sería mejor enviar comandos de "nivel superior" a través de TCP, y luego el receptor emitirá los comandos AT correctos al módem.

    
respondido por el user3634713

Lea otras preguntas en las etiquetas