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