GSMVoiceCall class | Permite la comunicación de voz a
través del módem. Hay que añadir un micrófono y un altavoz para poder
utilizarlo. |
GSMVoiceCall constructor | GSMVoiceCall es la clase base para todas las funciones relacionadas con recibir y realizar llamadas de voz GSM . |
FUNCIONES |
|
getVoiceCallStatus() | |
Descripción | Devuelve el estado de la llamada de voz. |
Sintaxis | voice.getVoiceCallStatus() |
Parámetros | Ninguno |
Retornos | char : IDLE_CALL, CALLING, RECEIVINGCALL, TALKING |
Ejemplo |
Ver abajo
________________________________________________________________
|
ready() | |
Descripción | Informa si el comando previo voz se ha ejecutado con éxito |
Sintaxis | voice.Ready() |
Parámetros | Ninguno |
Retornos |
int En el modo asíncrono, ready () devuelve 0 si el último comando se sigue ejecutando, 1 si hay éxito, y > 1 en caso de error. En el modo síncrono, devuelve 1 si se ha ejecutado correctamente, 0 si no. ________________________________________________________________ |
voiceCall() | |
Descripción |
Realiza una llamada de voz a un número especificado. El
método devuelve una información diferente dependiendo del modo de
conexión GSM (síncrona o asíncrona). Véase más abajo para más detalles.
|
Sintaxis | voice.voiceCall(number) |
Parámetros | number: char array. El número a llamar. |
Retornos | int En el modo asíncrono, voiceCall () devuelve 0 si la última orden se sigue ejecutando, 1 si tiene éxito, y > 1 en caso de error. En el modo síncrono, devuelve 1 si se realiza la llamada, 0 en caso contrario. |
Ejemplo |
#include <GSM.h>
// Numero de PIN
#define PINNUMBER ""
// initializa la biblioteca
GSM gsmAccess; // incluye un parametro 'true' para habilitar la depuracion
GSMVoiceCall vcs;
String remoteNumber = ""; // el numeo al que se quiere llamar
char charbuffer[20];
void setup()
{
// initializa la comunicacion serie
Serial.begin(9600);
Serial.println("Hace una llamada de voz");
// estado de la conexion
boolean notConnected = true;
// Arranca el escudo GMS
// 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("Introduzca el numero de telefono.");
}
void loop()
{
// añade cualquier caracter entrante a la cadena:
while (Serial.available() > 0)
{
char inChar = Serial.read();
// si se trata de una nueva línea, significa que usted debe hacer la llamada:
if (inChar == '\n')
{
// asegúrese de que el número de teléfono no es demasiado largo:
if (remoteNumber.length() < 20)
{
// que el usuario sepa que está llamando:
Serial.print("Llamando : ");
Serial.println(remoteNumber);
Serial.println();
// Llama al número remoto
remoteNumber.toCharArray(charbuffer, 20);
// Compruebe si el receptor ha recogido la llamada
if(vcs.voiceCall(charbuffer))
{
Serial.println("Llamada establecida. Introduzca una linea para terminar");
// Espera que entre alguna linea
while(Serial.read() !='\n' && (vcs.getvoiceCallStatus()==TALKING));
// Y colgar
vcs.hangCall();
}
Serial.println("Llamada terminada");
remoteNumber="";
Serial.println("Introduzca el numero al que quiere llamar.");
}
else
{
Serial.println("Demasiado tiempo para un numero de telefono");
remoteNumber = "";
}
}
else
{
// añada el último carácter al mensaje que desea enviar:
if(inChar!='\r')
remoteNumber += inChar;
}
}
}
________________________________________________________________
|
answerCall() | |
Descripción |
Acepta una llamada de voz entrante. El método devuelve
una información diferente dependiendo del modo del módem (síncrono o
asíncrono), ver los detalles a continuación.
|
Sintaxis | voice.answerCall() |
Parámetros | Ninguno |
Retornos | int En modo asíncrono, answerCall () devuelve 0 si la última orden se sigue ejecutando, 1 si tiene éxito, y > 1 en caso de error. En el modo síncrono, devuelve 1 si la llamada es contestada, 0 en caso contrario. |
Ejemplo | Ver abajo
_________________________________________________________________
|
hangCall() | |
Descripción | Colgar una llamada establecida o durante el timbre entrante. Dependiendo del modo de módem (síncrono o asíncrono) el método devolverá información diferente, ver más abajo para obtener más detalles. |
Sintaxis | voice.hangCall() |
Parámetros | Ninguno |
Retornos |
int
En el modo asíncrono, hangCall () devuelve 0 si el último comando se sigue ejecutando, 1 si hay éxito, y > 1 en caso de error. En el modo síncrono, devuelve 1 si se cuelga la llamada, 0 en caso contrario. |
Ejemplo | Ver abajo
__________________________________________________________________
|
retrieveCallingNumber() | |
Descripción | Recupera el número que llama, y lo almacena. |
Sintaxis | voice.retrieveCallingNumber(number, size) |
Parámetros | number: matriz de caracteres para contener el
número size: el tamaño de la matriz |
Retornos |
int En modo asíncrono, retrieveCallingNumber () devuelve 0 si el último comando se sigue ejecutando, si éxito 1 y > 1 si hay un error. En el modo síncrono, devuelve 1 si se obtiene el número 0 en caso contrario. |
Ejemplo Ejemplo |
Ver abajo
#include <GSM.h>
// Numero de PIN
#define PINNUMBER ""
// initializa la biblioteca
GSM gsmAccess; // incluye un parametro 'true' para habilitar la depueracion
GSMVoiceCall vcs;
char numtel[20]; // buffer para la llamada entrante
void setup()
{
// initializa la cmunicacion serie
Serial.begin(9600);
Serial.println("Recibe una llamada de xoz");
// estado de la conexion
boolean notConnected = true;
// Arranca 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);
}
}
// Esto hace que el módem notifique correctamente próximos eventos
vcs.hangCall();
Serial.println("Esperando llamada");
}
void loop()
{
// Comprueba es estado de la llamada de voz
switch (vcs.getvoiceCallStatus())
{
case IDLE_CALL: // Nada esta pasando
break;
case CALLING: // Esto no debería ocurrir, ya que no va a poner una llamada
Serial.println("LLAMANDO");
break;
case RECEIVINGCALL: // ¡Sí! Alguien nos está llamando
Serial.println("RECIBIENDO LLAMADA");
// Recupera el numero que llama
vcs.retrieveCallingNumber(numtel, 20);
// Imprime el numeo que llama
Serial.print("Numero:");
Serial.println(numtel);
// Responder a la llamada, establecer la llamada
vcs.answerCall();
break;
case TALKING: // In this case the call would be established
Serial.println("LLAMAND. Introducier una linea para interrumpir.");
while(Serial.read()!='\n')
delay(100);
vcs.hangCall();
Serial.println("COLGAR. Llamada en espera.");
break;
}
delay(1000);
}
|
Clase GSMVoiceCall
Suscribirse a:
Entradas (Atom)
No hay comentarios:
Publicar un comentario