Respuesta ATD SIM900.

0

Estoy diseñando una aplicación en la que estoy interconectando SIM900 con PIC18F2520. Estoy haciendo una llamada a un número usando ATD . Ahora si el receptor no responde la llamada, o si está ocupado, o la llamada no se puede realizar. Por lo tanto, la llamada actual debe desviarse a otro número. A continuación se presenta la respuesta de ATD

OK         Command Executed
ERROR      Invalid Command
BUSY       Receiving end is currently on other call
NO ANSWER  Connection failed upto time out
NO CARRIER Call failed to connect or disconnected
CONNECT    Connection set up(ATX=0)

Entonces, en mi condición, necesito verificar si el extremo del receptor es BUSY o NO ANSWER o NO CARRIER y luego hacer otra llamada.

if(
     (strstrrampgm(rxData,(const far rom char *)"NO CARRIER") != NULL) || 
     (strstrrampgm(rxData,(const far rom char *)"BUSY") != NULL) ||
     (strstrrampgm(rxData,(const far rom char *)"NO ANSWER") != NULL)
  )
{
   serialSendString("ATD91xxxxxx78;\r");
}

Ahora, lo que está sucediendo es cuando no contesté la llamada actual NO ANSWER o BUSY o NO CARRIER , por lo que la condición if se convierte en realidad hace otra llamada. Pero si acepto la primera llamada, GSM no envía CONNECT response mientras desconecta la llamada que envía NO CARRIER debido a lo cual, la condición if se convierte en verdadera y se realiza la segunda llamada (lo cual no es necesario). Lo busqué y descubrí que necesitamos habilitar ATX usando ATX0 , luego muestra la respuesta CONNECT . Lo probé pero no apareció el CONNECT .

También quiero saber en qué casos se recibe NO CARRIER . Siempre que hay un problema de red, dice NO CARRIER . Si después de conectar la llamada, la desconectamos, nuevamente muestra NO CARRIER . Si corto la llamada, a veces muestra BUSY pero a veces (en otra SIM) muestra NO CARRIER . ¿Qué significa realmente NO CARRIER ? ¿Qué condiciones debo verificar en mi solicitud? Por favor ayuda!

    
pregunta S Andrew

1 respuesta

0

Primer

Utilice sitio del fabricante original como fuente de información sobre lo que sucede, cuándo y por qué. Puede usar los manuales de SIM800, generalmente todos los módulos GSM / GPRS son similares. Y luego intente hacer todas las variantes posibles de comandos AT a mano para formar su algoritmo.

Segundos

Existe el comando AT+CLCC y su respuesta no solicitada +CLCC se puede habilitar con el comando AT+CLCC=1\r\n . Esta respuesta proporciona información completa sobre el estado de la llamada entrante o saliente y las llamadas entrantes en espera también. Formato de respuesta según se describe en SIM800 Series_AT Command Manual_V1.09

+CLCC: <id1>,<dir>,<stat>,<mode>,<mpty>[,<number>,<type>,<alphaID>]

donde:

  • id es el número de identificación de llamada 1..7
  • dir es llamada cirection 0 - es saliente, 1 - es entrante
  • stat es el estado actual de la llamada que puede ser: active (conectado), held , dialing (para llamadas salientes), alert (después de la conexión originada o terminada), inconimg (mientras suena el timbre), wait (estado de la llamada entrante cuando otra llamada ya está activa), disconnected (fin de llamada)
  • mode es una llamada de voz o de datos
  • mpty es una llamada multipartita (conferencia) o no

y además

  • number , type es el número de móvil terminado y alphaID es el nombre relacionado de la guía telefónica si se encuentra.

Tercer

Y ahora necesita implementar su propio algoritmo para el mantenimiento de llamadas entrantes y salientes en lo profundo que necesita. Puede haber modelos de eventos y temporizadores y mucho más.

De todos modos, necesita un buen analizador y un algoritmo de monitor de estado del módem, ya que, según mi experiencia, este módem puede detener el envío de respuestas solicitadas, en cualquier momento, por alguna causa indefinida. Y a veces solo el ciclo de energía puede ayudar = -).

    
respondido por el imbearr

Lea otras preguntas en las etiquetas