Envía la palabra Coordenadas o coordenadas y retorna un link de google maps con la ubicación actual del celular usando GPS virtual

Dependencies:   GPS_G mbed

/media/uploads/jufzapataov/foto_de_juan_fernando_zapata.jpg

Files at this revision

API Documentation at this revision

Comitter:
jufzapataov
Date:
Tue Jun 05 02:52:23 2018 +0000
Parent:
2:ea6275d1222f
Commit message:
Env?a palabra Coordenadas o coordenada y retorna un link de google maps con la localizaci?n mediante un GPS virtual

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r ea6275d1222f -r 9a7f48bbfbaa main.cpp
--- a/main.cpp	Fri Nov 18 21:27:40 2016 +0000
+++ b/main.cpp	Tue Jun 05 02:52:23 2018 +0000
@@ -1,43 +1,29 @@
-// Programa para establecer la comunicación con un módem Siemens A56 por una de las UART.
-// Por otra UART se envían datos de GPS de una región seleccionada de la aplicación de 
-// Google Earth en formato .kml leídos por el programa SatGen de NMEA por un puerto COM 
-// del Micro hacia un Dongle USB. Se deberá enviar un mensaje de texto al módem el cual
-// podrá ser la palabra "coordenadas" o "voltaje". Si se envía "coordenadas" el programa
-// calcula la latitud y la longitud de la coordenada actual de GPS y envía un mensaje de 
-// texto al mismo número con las coordenadas en formato de Google Maps. Si se envía 
-// "voltaje" se lee el voltaje de un puerto que se puede variar con un potenciómetro y 
-// envía un mensaje de texto con la medida. Los mensajes de texto recibidos se interpretan
-// y decodifican de formato PDU a caracteres y los mensajes enviados se codifican de 
-// caracteres a formato PDU para ser enviados.
+//* EL PROGRAMA UN CELULAR SIEMENS  A56i COMO MODULO GSM DE COMUNICACIONES, SE USA UNA DE LAS UART DE LA TARJETA PARA EMULAR UN GPS
+//AL ENVIAR UN MENSAJE AL MODEM ESTE SE ENCARGA DE DEVOLVER UN MENSAJES CON LAS COORDENADAS DEL DISPOSITIVO CON UN LINK DE GOOGLE MAPS
+//HECHO POR SANTIAO GOMEZ ESTRADA, JUAN ERNANDO ZAPATA Y MATEO
 
-// Oswaldo Andrés Giraldo Giraldo - C.C.: 1152458465
-// Héctor Andrés Hoyos Ceballos - C.C.: 1039466317
-// Jose Fernando Montoya Vargas - C.C.: 1039468676
-// María Fernanda Villa Tamayo - C.C.: 1152457490
+
 
+// LIBRERIAS QUE SE USARON
 #include "mbed.h"
 #include "DebouncedIn.h"
 #include "stdio.h"
 #include "string.h"
 #include "GPS.h"
 
-//Salidas digitales
+//LEDS PARA VER EL ESTADO DEL PROGRAMA
 Timer t;
 DigitalOut LedVerde(LED2);
 DigitalOut LedRojo(LED1);
 DigitalOut LedAzul(LED3);
 
-// Entrada análoga
-AnalogIn v(PTB0);
-float medi;
+// PUERTOS PARA LA COMUNICACION SERIAL
+Serial GSM(PTE0,PTE1);  // MODEM
+Serial pc(USBTX,USBRX); // VISUALIZACIモN DEL ESTADO DEL PROGRAMA EN EL PC
+GPS gps(PTE22, PTE23);   // RECEPCIモN DE DATOS GPS.
 
-// Declaración de los puertos de la FRDM, Módem y GPS.
-Serial GSM(PTE0,PTE1);  // Puertos del FRDM para el Módem.
-Serial pc(USBTX,USBRX);
-GPS gps(PTE22, PTE23);   // Puerto del FDRM para el GPS.
-
-// Declaración de variables
-// Cadenas de caracteres con las que se va a trabajar.
+// DECLARACION DE VARIABLES
+// CADENAS QUE SE USARON DURANTE EL PROGRAMA
 char DE1[255];
 char DS1[255];
 char DE2[255];
@@ -47,7 +33,7 @@
 char tam[2];
 char mensaje[100];
 
-//Variables enteras y caracteres
+//Variables enteras y caracteres ----------------------------------------------- REVISAR
 int count;
 int i, K, LENOUT1, LENIN1, LENOUT2, LENIN2, C;
 int c=0;
@@ -59,95 +45,24 @@
 char outmed[16], outmedn[16];
 int ret = 1;
 
-// Adquisición de números de teléfono, emisor - receptor
+// DEDICADA PARA EL TELEFONO QUE ENVIA Y RECIBIRチ
 char tel[15];
 
-// El GPS entregará al celular coordenadas expresadas en latitud y longitud 
-// según la ubicación que encuentre, por lo tanto se declaran estas variables.
+// COORDENADAS GPS EN LATITUD Y LONGITUD
 float lo,la;
-char clo[255], cla[255]; // Cadenas a capturar para latitud y longitud.
-char la_lo[255], volt[255];
+char clo[255], cla[255]; // CADENAS PARA LATITUD Y LONGITUD
+char la_lo[255];//---------------------------------------------------  REVISAR
 
-// Cadena de google maps
+// LINK DE GOOGLE MAPS
 char http2[255];
 char http[] = "http://maps.google.com/maps?q=";
 char buf[100];
 
-// Relleno de datos propio del protocolo de SMS.
+// DATOS DE RELLENO PROPIOS DEL SMS.
 char relle1[] = "0011000A91";
 char relle2[] = "0000AA";
 
-// Reverses a string 'str' of length 'len'
-// driver program to test above funtion.
-void reverse(char *str, int len)
-{
-    int i=0, j=len-1, temp;
-    while (i<j)
-    {
-        temp = str[i];
-        str[i] = str[j];
-        str[j] = temp;
-        i++; j--;
-    }
-}
- 
- // Converts a given integer x to string str[].  d is the number
- // of digits required in output. If d is more than the number
- // of digits in x, then 0s are added at the beginning.
-int intToStr(int x, char str[], int d)
-{
-    int i = 0;
-    while (x)
-    {
-        str[i++] = (x%10) + '0';
-        x = x/10;
-    }
- 
-    // If number of digits required is more, then
-    // add 0s at the beginning
-    while (i < d)
-        str[i++] = '0';
- 
-    reverse(str, i);
-    str[i] = '\0';
-    return i;
-}
-
-// Converts a floating point number to string.
-void ftoa(float n, char *res, int afterpoint)
-{
-    // Extract integer part
-    int ipart = (int)n;
- 
-    // Extract floating part
-    float fpart = n - (float)ipart;
- 
-    // convert integer part to string
-    int i = intToStr(ipart, res, 0);
- 
-    // check for display option after point
-    if (afterpoint != 0)
-    {
-        res[i] = '.';  // add dot
- 
-        // Get the value of fraction part upto given no.
-        // of points after dot. The third parameter is needed
-        // to handle cases like 233.007
-        float fp=10;
-        fpart =fpart * pow(fp,afterpoint);
-        
-        intToStr((int)fpart, res + i + 1, afterpoint);
-    }
-}
-
-void FlushGSM(void) { 
-    char1 = 0;
-    while (GSM.readable()){
-        char1 = GSM.getc();
-    }
-        return;
-}
-
+// DEFINICION DE FUNCIONES
 void callback(){
     // Note: you need to actually read from the serial to clear the RX interrupt
     pc.printf("%c\n", GSM.getc()); 
@@ -180,7 +95,7 @@
     return 0;
 }
 
-// Esta función de abajo limpia o borra todo un "buffer" de tamaño "count",
+// Esta funcion de abajo limpia o borra todo un "buffer" de tama "count",
 // lo revisa elemento por elemento y le mete el caracter null que indica fin de cadena.
 // No retorna nada.
 void cleanBuffer(char *buffer, int count){
@@ -189,13 +104,13 @@
     }
 }
 
-// Esta función de abajo envia un comando parametrizado como cadena
+// Esta funcion de abajo envia un comando parametrizado como cadena
 // puede ser un comando tipo AT.
 void sendCmd(char *cmd){
     GSM.puts(cmd);
 }
 
-// Esta función de abajo espera la respuesta de un comando que debe ser idéntica a la cadena "resp" y un tiempo "timeout",
+// Esta funcion de abajo espera la respuesta de un comando que debe ser id駭tica a la cadena "resp" y un tiempo "timeout",
 // si todo sale bien retorna un cero que en la programacion hay que validar,
 // si algo sale mal (no se parece o se demora mucho) retorna -1 que debera validarse con alguna expresion logica.
 int waitForResp(char *resp, int timeout){
@@ -223,22 +138,21 @@
     return 0;
 }
 
-// Esta función de abajo es muy completa y útil, se encarga de enviar el comando y esperar la respuesta.
-// Si todo sale bien retorna un cero (herencia de las funciones contenedoras) que en la programacion hay que validar
-// con alguna expresion lógica.
+// Esta funcion es muy completa y 偀il, se encarga de enviar el comando y esperar la respuesta.
+// Si todo sale bien retorna un cero
 int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout){
     sendCmd(cmd);
     return waitForResp(resp,timeout);
 }
 
-// Esta función de abajo chequea que el módem este vivo, envia AT, le contesta con OK y espera 2 segundos.
-int powerCheck(void){ // Este comando se manda para verificar si el módem esta vivo o conectado.
+// Esta funcion chequea que el mem este vivo, envia AT, le contesta con OK y espera 2 segundos.
+int powerCheck(void){ // Este comando se manda para verificar si el mem esta vivo o conectado.
     return sendCmdAndWaitForResp("AT\r\n", "OK", 2);    
 }
 
-// Esta función de abajo chequea el estado de la sim card
+// Esta funcion de abajo chequea el estado de la sim card
 // y si todo sale bien retorna un cero que en la programacion hay que validar
-// con alguna expresión lógica.
+// con alguna expresion lica.
 int checkSIMStatus(void){
     char gprsBuffer[30];
     int count = 0;
@@ -259,9 +173,9 @@
     return 0;
 }
 
-// Esta función de abajo chequea la calidad de la señal
-// y si todo sale bien retorna con el valor de señal útil o un -1 si no es aceptable, en la programacion hay que validar
-// con alguna expresión lógica.
+// Esta funcion de abajo chequea la calidad de la sel
+// y si todo sale bien retorna con el valor de sel 偀il o un -1 si no es aceptable, en la programacion hay que validar
+// con alguna expresion lica.
 int checkSignalStrength(void){
     char gprsBuffer[100];
     int index, count = 0;
@@ -281,13 +195,13 @@
     return index;
 }
  
-// Esta funcion de abajo inicaliza el módem. Se compone de un grupo de subfunciones ya definidas previamente
+// Esta funcion inicaliza el mem. 
+// Se compone de un grupo de subfunciones ya definidas previamente:
 // primero chequea que este vivo,
 // segundo chequea el estado de la simcard,
-// tercero chequea la intencidad de señal celular,
+// tercero chequea la intencidad de sel celular,
 // cuarto aplica la configuracion
-// y si todo sale bien retorna un cero que en la programacion hay que validar
-// con alguna expresión lógica.
+// y si todo sale bien retorna un cero
 int init(){
     if (0 != sendCmdAndWaitForResp("AT\r\n", "OK", 3)){
         return -1;
@@ -298,7 +212,7 @@
     if (0 != sendCmdAndWaitForResp("AT+CMGF=0\r\n", "OK", 3)){
         return -1;
     }
-    if (0 != sendCmdAndWaitForResp("AT+CBST=7,0,1\r\n", "OK", 3)){ //velocidad fija a 9600, modem asincronico no transparente
+    if (0 != sendCmdAndWaitForResp("AT+CBST=7,0,1\r\n", "OK", 3)){ //velocidad fija a 9600
         return -1;
     }
     if (0 != sendCmdAndWaitForResp("ATE\r\n", "OK", 3)){ //se le quita el eco al modem GSM
@@ -310,7 +224,7 @@
   
 // Esta funcion de abajo intenta leer un mensaje de texto en formato PDU o HEX
 // y si todo sale bien retorna un cero que en la programacion hay que validar
-// con alguna expresión lógica.
+// con alguna expresion lica.
 int readSMSpdu(char *message, int index){
     int i = 0;
     char gprsBuffer[100];
@@ -331,7 +245,7 @@
     return 0;
 }
 
-// Esta función de abajo borra mensajes SMS del modem
+// Esta funcion de abajo borra mensajes SMS del modem
 // y si todo sale bien retorna un cero que en la programacion hay que validar
 // con alguna expresion logica.
 int deleteSMS(int index){
@@ -341,36 +255,23 @@
     return 0;
 }
 
-// Esta función devuelve la confirmacion del mensaje a quien lo envio.
-int recibe_ok(){
-    GSM.printf("AT+CMGS=27\n\r");
-    pc.printf("AT+CMGS=27\n\r");
-    wait_ms(100);
-    GSM.printf("0011000A91%s0000AA10CDB27B1E569741F2F2382D4E93DF",tel);
-    pc.printf("0011000A91%s0000AA10CDB27B1E569741F2F2382D4E93DF",tel);
-    wait_ms(100);
-    GSM.putc((char)0x1A);
-    return 0;
-}
-
-// Programas a ejecutar.
+////////////////////////////////////////////// FUNCIモN PRINCIPAL //////////////////////////////////////////////////////////
 int main(){
-    //configuramos los puertos seriales    
+    //configuramos los puertos seriales     
     GSM.baud(9600);//configura los baudios de la FRDMKL25Z en 9600
-    GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART     
+    GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART  
     LedVerde = 1; // APAGO LOS LEDS
     LedRojo = 1; 
     LedAzul = 1;
     LedRojo = 0; // PRENDO EL LED ROJO
-    // Quito el eco del modem
     
-    // CONFIGURACIÓN DEL MODEM GSM (TELEFONO CELULAR SIEMENS A56i).
+    // CONFIGURACIモN DEL MODEM GSM (TELEFONO CELULAR SIEMENS A56i).
     inicio1:        
         ret = init();
         if(ret==0){
             LedRojo = 1;
-            LedVerde = 0; // Apagar LED Verde para confirmar la comunicación con el módem.
-            pc.printf("Modem configurado\n");
+            LedVerde = 0; //ENCENDER LED VERDE PARA CONFIRMAR LA CONEXIモN
+            pc.printf("El Modem se ha configurado correctamente\n");
         }
         else{
             wait(1);
@@ -380,81 +281,72 @@
     while(1){ 
         if (GSM.readable()){
             readBuffer(buffer,110);
-            pc.printf("%s\r\n",buffer);
             for(i=0; i<5; i++){
                 resp[i] = buffer[i];
             }  
              
-            pc.printf("%s\r\n", resp);
-            if(strcmp("$$+CM", resp) == 0){  //COMPARA resp con "+CMTI"
-                pc.printf("Llego MSG\r\n");
+            if(strcmp("$$+CM", resp) == 0){  //COMPARA resp CON "+CMTI"
+                pc.printf("\nHa llegado un mensaje!\r\n");
                 cleanBuffer(buffer,10);
-                GSM.printf("AT+CMGL=0\r\n"); // Envío comando para leer mensaje
-                pc.printf("AT+CMGL=0\r\n");
-                //GSM.printf("AT+CMGD=0\r\n"); // Envío comando para borrar el mensaje.
+                GSM.printf("AT+CMGL=0\r\n"); // Env卲 comando para leer mensaje
                 readBuffer(buffer,110);
-                pc.printf("%s\r\n",buffer);
                 
-                // Lectura el teléfono emisor
+                // LECTURA DEL TELEFONO QUE ENVIモ EL MENSAJE
                 for(i=0; i<10; i++){
                     tel[i] = buffer[i+40];
                 }
-                pc.printf("Telefono: %c%c%c%c%c%c%c%c%c%c\r\n", tel[1], tel[0], tel[3], tel[2], tel[5], tel[4], tel[7], tel[6], tel[9], tel[8]);  
+                pc.printf("\nTelefono que envio el mensaje: %c%c%c%c%c%c%c%c%c%c\r\n", tel[1], tel[0], tel[3], tel[2], tel[5], tel[4], tel[7], tel[6], tel[9], tel[8]);  
                 
-                // Lectura del tamaño
+                // LECTURA DEL TAMAムO
                 for(i=0;i<2;i++){
                     tam[i] = buffer[i + 68];
-                }
-                pc.printf("%s-\r\n", tam);        
+                }      
                 
-                // Lectura del mensaje
+                // LECTURA DEL MENSAJE
                 for(i=0;i<26;i++){
-                   msg[i] = buffer[i+70]; // Lee un mensaje de 26 caracteres máximo desde la posición 70 del buffer.
+                   msg[i] = buffer[i+70]; // Lee un mensaje de 26 caracteres m痊imo desde la posicion 70 del buffer.
                 }
-                pc.printf("%s-\r\n", msg);
+                
+                // DECODIFICACIモN DEL MENSAJE
                 
-                // Decodificación del mensaje
-                
-                // Comparar el mensaje
-                deleteSMS(1); // Se borran los mensajes por medio de una función
+                deleteSMS(1); // Se borran los mensajes por medio de una funcion
                 readBuffer(buffer, 200);
-                // COMPARA resp con "E3F75B4E2EBBC3E4F01C" que es "coordenadas", o "C3F75B4E2EBBC3E4F01C" que es "Coordenadas".
+                
+                 // COMPARA resp con "E3F75B4E2EBBC3E4F01C" que es "coordenadas", o "C3F75B4E2EBBC3E4F01C" que es "Coordenadas".
                 if((strncmp("E3F75B4E2EBBC3E4F01C", msg, 20) == 0) || (strncmp("C3F75B4E2EBBC3E4F01C", msg, 20) == 0)){  
-                    //recibe_ok();
-                    LedVerde = 1; // Encender LED azul.
-                    LedAzul = 0;
+                    
+                    LedVerde = 1; 
+                    LedAzul = 0; // ENCENDER LED AZUL
+                    LedRojo=0; // ENCENDER LED ROJO
                     wait(2);
                     
-                    if(gps.sample()){
+                    if(gps.sample()){ // SE RECIBEN COORDENADAS DEL GPS
                         lo = gps.longitude;
-                        la = gps.latitude;
-                        pc.printf("\nLongitud entera = %f, Latitud entera = %f\n", lo, la);
-                        //wait(0.5);   
+                        la = gps.latitude; 
                             
                         //LONGITUD
                         sprintf (clo, "%f", lo); 
                         pc.printf ("\nLongitud = %s\n",clo);
-                        //wait(0.5);
+                        wait(0.5);
                     
                         // LATITUD
                         sprintf (cla, "%f", la); 
                         pc.printf ( "\nLatitud = %s\n",cla);
-                        //wait(0.5);
+                        wait(0.5);
                         
-                        // Concatenando las cadenas de Latitud y Longitud
+                        // SE CONCATENAN LAS COORDENADAS DE LATITUD Y LONGITUD
                         strcpy(la_lo,cla);
                         strcat(la_lo,",");
                         strcat(la_lo,clo);
-                        pc.printf("\nLatitud, Longitud: %s\n",la_lo);
                         
-                        //Ahora se juntan las cadenas obtenidas y se agrega el protocolo de transferencia de hipertextos http
+                        //SE UNEN LAS CADENAS Y SE ARMA EL URL
                         strcpy(DE1,http);
                         strcat(DE1,la_lo);         
-                        pc.printf("\nDireccion: %s\n",DE1);
+                        pc.printf("\nDireccion URL que se enviara: %s\n",DE1);
                         pc.printf("\n");
                         LENIN1 = strlen(DE1);
                         
-                        //Conversión a octetos.
+                        //CONVERSIモN A OCTETOS
                         K = 0;
                         C = 0;
                         for (i = 0; i < LENIN1; i++){
@@ -475,7 +367,7 @@
                             }                        
                             pc.printf("\r\nLENOUT GPS: %d, LENIN GPS: %2X\r\n", LENOUT1, LENIN1);
                         
-                        // Concatenación del mensaje en formato PDU y envío del mismo.
+                        // Concatenacion del mensaje en formato PDU y env卲 del mismo.
                         ind = 14 + LENOUT1 - 1;
                         
                         GSM.printf("AT+CMGS=%d\r\n",ind);
@@ -499,101 +391,17 @@
                         }
                         wait(1);
                         GSM.putc((char)0x1A); // Ctrl - Z.
-                        GSM.scanf("%s",buf); // Estado del mensaje (Envió o Error).
-                        pc.printf(">%s\n",buf);
-                        pc.printf("\n");
-                    }
-                    
-                    wait(2);
-                    LedAzul = 1;
-                    LedVerde = 0;
-                    GSM.printf("AT+CMGD=0\r\n"); // Borra el mensaje actual (Posición "0").
-                    //pc.printf("\n%s\n\n", "Borro mensaje");
-                }
-            
-                // COMPARA resp con "F6379B1E569701" que es "voltaje", o "F6379B1E569701" que es "Voltaje".
-                if((strncmp("F6379B1E569701", msg, 14) == 0) || (strncmp("D6379B1E569701", msg, 14) == 0)){ 
-                    //recibe_ok();
-                    LedRojo = 0; // Encender LED amarillo.
-                    LedVerde = 0;
-                    LedAzul = 1; 
-                    wait(2);
-                    
-                    med = v.read()*3.3;
-                    medi = v.read();
-                    pc.printf("\n%f\n", medi);
-                    
-                    cleanBuffer(outmed, 16);
-                    if (med < 1){ // Se convierte la Medida a caracter.
-                        strcat(outmed, "0");
-                        ftoa(med, outmedn, 5);
-                        strcat(outmed, outmedn);
-                    }
-                    else{
-                        ftoa(med, outmed, 5);
-                    }
-                    strcpy(DE2,"Voltaje: ");
-                    strcat(DE2,outmed);
-                    pc.printf("\n%s\n\n", DE2);
-                    LENIN2 = strlen(DE2);
-                    
-                    //Conversión a octetos.
-                    K = 0;
-                    C = 0;
-                    for (i = 0; i < LENIN2; i++){
-                        DS2[i] = DE2[i + C] >> K | DE2[i + C + 1] << (7 - K);
-                        if(DS2[i] == 0x00) {LENOUT2 = i; goto salir2;}   
-                        K++;
-                        if (K == 7) {K = 0; C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
-                    }
-                    
-                    salir2:
-                        for (i = 0; i < LENIN2; i++){
-                            pc.printf("%X", DE2[i]);
-                        }
-                    
-                        pc.printf(":\r\n");
-                        for (i = 0; i < LENOUT2; i++){
-                            pc.printf("%2X", DS2[i]&0x000000FF);
-                        }                        
-                        pc.printf("\r\nLENOUT VOLTAJE: %d, LENIN VOLTAJE: %2X\r\n", LENOUT2, LENIN2);
-                    
-                    // Concatenación del mensaje en formato PDU y envío del mismo.
-                    ind = 14 + LENOUT2 - 1;
-                    
-                    GSM.printf("AT+CMGS=%d\r\n",ind);
-                    pc.printf("AT+CMGS=%d\r\n",ind);
-                    pc.printf(relle1);
-                    GSM.printf(relle1);
-                    
-                    for (i=0; i <= 9; i++)  {
-                        pc.printf("%c",tel[i]);
-                        GSM.printf("%c",tel[i]);
-                    }
-                    
-                    pc.printf(relle2);
-                    GSM.printf(relle2);
-                    pc.printf("%2X", LENIN2);
-                    GSM.printf("%2X", LENIN2);
-                    /*pc.printf("0F");
-                    GSM.printf("0F");*/
-                     
-                    for (i = 0; i < LENOUT2; i++){
-                        pc.printf("%02X", DS2[i]&0x000000FF);
-                        GSM.printf("%02X", DS2[i]&0x000000FF);
+                        GSM.scanf("%s",buf); // Estado del mensaje (Envi・o Error).
+                        pc.printf("\n>%s\n",buf);
                     }
                     
                     wait(1);
-                    GSM.putc((char)0x1A); // Ctrl - Z
-                    GSM.scanf("%s",buf); // Estado del mensaje (Envió o Error).
-                    pc.printf(">%s\n\n",buf);
-                    pc.printf("\n");
-
-                    wait(2);
-                    LedRojo=1;
-                    LedVerde=0;
-                    GSM.printf("AT+CMGD=0\r\n"); // Borra el mensaje actual (Posición "0").
-                    //pc.printf("\n%s\n\n", "Borro mensaje");
+                    LedAzul = 1;
+                    LedRojo = 1;
+                    LedVerde = 0;
+                    GSM.printf("AT+CMGD=0\r\n"); // Borra el mensaje actual (Posicion "0").
+                    pc.printf("%s\n\n", "El mensaje ha sido borrado del celular");
+                    goto inicio1; // SE RECONFIGURA EL MODEM PARA ESTAR PENDIENTE A OTRO NUEVO MENSAJE
                 }
             } 
         }