Clase GSM_SMS

Clase GSM_SMS Facilita el envío y recepción de servicio de mensajes cortos (SMS).

GSM_SMS

GSM_SMS es la clase base para todas las funciones GSM relacionadas
con la  recepción y el envío de mensajes SMS.
FUNCIONES
beginSMS()
Descripción Identifica el número de teléfono para enviar un mensaje SMS.
Sintaxis SMS.beginSMS(number)
Parámetros number: matriz de caracteres, el número de teléfono para enviar el SMS
Retornos
int
En el modo asíncrono, beginSMS () devuelve 0 si el último comando se
sigue ejecutando, si tiene éxito 1 y > 1 si hay un error.
En el modo síncrono, devuelve 1 si se ejecuta correctamente, y 0 si no lo
hace.
 Ejemplo
Ver abajo Ejemplo 1
____________________ ________________________________________________________

ready()
Descripción Obtiene el estado del último comando SMS de GSM.
Sintaxis SMS.ready()
Parámetros Ninguno
Retornos

 


 
int
En el modo asíncrono, ready() devuelve 0 si el último comando se sigue

ejecutando, 1 si tuvo éxito, y > 1 si hay un error.
En el modo síncrono, devuelve 1 si el anterior comando ejecutado ha tenido
éxito, y 0 si no lo tiene.
______________________ ________________________________________________________________

endSMS()
Descripción Le indica al módem que el mensaje SMS está completo y lo envía.
Sintaxis SMS.endSMS()
Parámetros Ninguno
Retornos int
En el modo asíncrono, endSMS () devuelve 0 si aún se está ejecutando,

1 si tiene éxito, y > 1 si hay un error.
En el modo síncrono, devuelve 1 si se ha ejecutado con éxito, y 0 si no lo
hace.
 Ejemplo Ver abajo Ejemplo 1
______________________ ________________________________________________________________

available()


 
Descripción
Comprueba si hay un mensajes SMS en la tarjeta SIM para ser leídos,  y
notifica la cantidad de caracteres del mensaje.
Sintaxis SMSavailable()
Parámetros Ninguno
Retornos int: el número de caracteres en el mensaje
 Ejemplo
Ver abajo Ejemplo 2
______________________ ________________________________________________________________

SMSremoteNumber
()
Descripción
Recupera el número de teléfono de un mensaje SMS entrante y lo almacena en una matriz de llamadas.
Sintaxis SMS.remoteNumber(number, size)
Parámetros number: matriz de caracteres, una matriz designada que contendrá el
                 número del    remitente:
size: int, el tamaño de la matriz
Retornos int
En modo asíncrono, remoteNumber () devuelve 0 si el último comando se sigue ejecutando,

si es con éxito 1 y > 1 si hay un error.
En el modo síncrono, devuelve 1 si se ejecuta correctamente, y 0 si no lo
hace.
 Ejemplo
Ver abajo Ejemplo 2
______________________ ________________________________________________________________

read()
Descripción Lee un byte de un mensaje SMS. read() hereda de la clase  Stream
Sintaxis SMS.read()
Parámetros Ninguno
Retornos int - el primer byte de datos disponible en la entrada serie (o -1 si no hay
        datos disponibles)les)
 Ejemplo  Ver abajo Ejemplo 2
______________________ ________________________________________________________________

write()
Descripción Escribe un carácter en un mensaje SMS.
Sintaxis SMS.write(val)
Parámetros val: un carácter para enviar en el mensaje
Retornos byte - write() devolverá el número de bytes escritos, aunque la lectura de
           ese número es opcional
 Ejemplo  Ver abajo Ejemplo 2
______________________ ________________________________________________________________

print()
Descripción Escribe una matriz de caracteres en un mensaje SMS
Sintaxis SMS.print(message)
Parámetros messaje - matriz de caracteres, el mensaje a enviar
Retornos int: el número de bytes impresos
 Ejemplo  Ver abajo Ejemplo 2
______________________ ________________________________________________________________

peek()
Descripción
Devuelve el siguiente byte (carácter) de un SMS entrante sin quitarlo del
mensaje. Es decir, las llamadas sucesivas a PEEK () devolverán
el mismo carácter, por ejemplo:  la siguiente llamada a read ().
peek () hereda de la clase 
 Stream.
Sintaxis SMS.peek()
Parámetros Ninguno
Retornos int- el primer byte disponible de un mensaje SMS (o -1 si no hay datos
       disponibles)
 Ejemplo  Ver abajo Ejemplo 2
______________________ ________________________________________________________________

flush()
Descripción
flush () borra la memoria del módem de los mensajes enviados una vez
que  todos los caracteres salientes han sido enviados.
flush () hereda de la clase Stream.
Sintaxis SMS.flush()
Parámetros Ninguno
Retornos Ninguno
Ejemplo Ver abajo Ejemplo 2
Ejemplo 1
#include <GSM.h>
#define PINNUMBER ""
// initializa la biblioteca
GSM gsmAccess; // incluye un parametro 'true' para permitir la depuracion
GSM_SMS sms;

void setup()
{
  // initializa la comunicacion serie
  Serial.begin(9600);
  Serial.println("Mensajes SMS remitente");
  // estado de la conexion
  boolean notConnected = true;
  // Inicia el escudo GSM 
  // Si su tarjeta SIM tiene PIN, pasarlo como un parámetro de begin () 
  //entre comillas
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("No conectado");
      delay(1000);
    }
  }
  Serial.println("GSM inicializado");
}

void loop()
{
  Serial.print("Introducir numero de movil: ");
  char remoteNumber[20];  // numero de telefono al que enviar sms
  readSerial(remoteNumber);
  Serial.println(remoteNumber);
  // sms text
  Serial.print("Ahora introduzca el mensaje: ");
  char txtMsg[200];
  readSerial(txtMsg);
  Serial.println("ENVIANDO");
  Serial.println();
  Serial.println("Mensaje:");
  Serial.println(txtMsg);
  // evia el mensaje
  sms.beginSMS(remoteNumber);
  sms.print(txtMsg);
  sms.endSMS(); 
  Serial.println("\nCOMPLETO!\n");
}
// Lee la entrada serie
int readSerial(char result[])
{
  int i = 0;
  while(1)
  {
    while (Serial.available() > 0)
    {
      char inChar = Serial.read();
      if (inChar == '\n')
      {
        result[i] = '\0';
        Serial.flush();
        return 0;
      }
      if(inChar!='\r')
      {
        result[i] = inChar;
        i++;
      }
    }
  }
}

Ejemplo 2
 
#include <GSM.h>
#define PINNUMBER ""
// initializa la biblioteca
GSM gsmAccess; // incluye un parametro 'true' para permitir la depuracion
GSM_SMS sms;
char remoteNumber[20];  // Contiene el numero del remitente

void setup()
{
  // initializa la comunicacion serie
  Serial.begin(9600);
  Serial.println("Receptor de mensajes SMS");
  // estado de la conexion
  boolean notConnected = true;
  // Inicia el escudo GSM 
  // Si su tarjeta SIM tiene PIN, pasarlo como un parámetro de begin ()

  // entre comillas
  while(notConnected)
  {
    if(gsmAccess.begin(PINNUMBER)==GSM_READY)
      notConnected = false;
    else
    {
      Serial.println("No conectado");
      delay(1000);
    }
  }
  Serial.println("GSM inicializado");
  Serial.println("Esperando mensajes");
}

void loop()
{
  char c;
  // Si existe cualquier SMSs disponible  
  if (sms.available())
  {
    Serial.println("Mensaje recibido de:");
    // Obtiene el numero remoto
    sms.remoteNumber(remoteNumber, 20);
    Serial.println(remoteNumber);
    // Esto es sólo un ejemplo de disposición de mensajes 
    // Los mensajes empezando por # deben desecharse
    if(sms.peek()=='#')
    {
      Serial.println("SMS descartado");
      sms.flush();
    }
    // Lee los bytes del mensaje y lo imprime
    while(c=sms.read())
      Serial.print(c);
    Serial.println("\nFIN DE MENSAJE");
    // Borra los mensajes de la memoria del modem
    sms.flush();
    Serial.println("MENSAJE BORRADO");
  }
  delay(1000);
}


 



No hay comentarios:

Publicar un comentario