Tarea del celular, cuidado no funciona

Dependencies:   DebouncedIn mbed

Fork of CLASEDELGSM1 by Gustavo Ramirez

Files at this revision

API Documentation at this revision

Comitter:
squinteroz
Date:
Tue Nov 24 16:56:41 2015 +0000
Parent:
2:0377af333c98
Commit message:
OJO, no funciona!!!

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/main.cpp	Mon Nov 02 03:25:09 2015 +0000
+++ b/main.cpp	Tue Nov 24 16:56:41 2015 +0000
@@ -2,21 +2,21 @@
 //   Como modem usa un celular SIEMENS a56i
 //   ENVIAR -----la palabra "ALARMA 1"
 //  
-
+//   OJO EL CODIGO NO FUNCIONA!!!!!! POSIBLEMENTE SEA POR LOS OPERADORES, RECIBE MENSAJES MAS NO ENVÍA!
 //   OJO CON ESTO
 //   conector del siemens cable verde es RX conectelo a PTE0  cable blanco es TX conectelo a PTE1
 #include "mbed.h"
 #include "DebouncedIn.h"
 #include "stdio.h"
 #include "string.h"
-Timer t;
+Timer t; //función que sirve para arrancar, parar y crear la medición de pequeños intervalos de tiempo
 DigitalOut LedVerde(LED2);
 DigitalOut LedRojo(LED1);
 DigitalOut LedAzul(LED3);
-DebouncedIn button1(PTC12);  //señal que inicia el envio del mensaje
-Serial GSM(PTE0,PTE1); //Configura puerto UART de la FRDMKL25Z
+DebouncedIn button1(PTC12); // con el switche iniciamos en envio del mensaje 
+Serial GSM(PTE0,PTE1); //se configura la interfaz del módem en la tarjeta 
 Serial pc(USBTX,USBRX);//Configura puerto USB a la consola serial del PC conectado.
-void Rx_interrupt();
+void Rx_interrupt(); // se define la función sin retorno
 int position=0;
 int intentos=0;
 int lenpack=6;
@@ -46,7 +46,7 @@
 void FlushGSM(void) { 
 char1 = 0;
  while (GSM.readable()){
-     char1 = GSM.getc();}
+     char1 = GSM.getc();} // se obtienen los datos enviados por el cel
      return;}
 
 void callback() {
@@ -59,7 +59,7 @@
 //$, count es lo que va a leer.Lo leido lo mete en buffer que es una cadena previamente definida
 //incorpora medida de tiempo si se demora mas de tres segundos retorna fracaso con -1
 //**************************************************************************************************************** 
-int readBuffer(char *buffer,int count)
+int readBuffer(char *buffer,int count) //leeemos todo lo que se encuentre en el buffer
 {
     int i=0; 
     t.start();  // start timer
@@ -99,7 +99,7 @@
 puede ser un comando tipo AT
 */
 //***************************************************************************************
-void sendCmd(char *cmd)
+void sendCmd(char *cmd) //comando tipo AT
 {
     GSM.puts(cmd);
 }
@@ -273,14 +273,14 @@
        {
        //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 transmisión     
        //apagamos los 3 leds
        LedVerde=1;
        LedRojo=1;
        LedAzul=1;
        //quito el eco del modem
        GSM.printf("ATE0\r\n");
-       pc.printf("ATE0\r\n");
+       pc.printf("ATE0\r\n"); //IMPRIME EN TERMINAL QUE SE BORRA EL ECO
        for(i=0;i<6;i++){
           GSM.printf("AT+CMGD=%d\r\n",i);
           wait(0.2);
@@ -302,20 +302,22 @@
    
 //*********************************************************************************************************************
 while(1){ 
-         if (button1.falling())
+         if (button1.falling()) // cuando se oprima el boton de envio de msj ubicado en PTC12
          { 
           wait(2);
-           if (!button1)
+           if (!button1) //condición de negado del boton por eje: boton=1--> !boton1=0
            {
            //inicia el envio de un sms    
-           index=19;
-           GSM.printf("AT+CMGS=%d\r\n",index);
-           wait(0.2);
-           GSM.printf("0011000A91");
-           GSM.printf("%s",tel); 
-           GSM.printf("0000AA07417658DE0EC7");
-           GSM.printf("\r\n");
-           wait(0.2);
+           index=21;
+           GSM.printf("AT+CMGS=%d\r\n",index); //Envia el encabezado con la longitud de lo que se va a transamitir (INDEX)
+           wait(0.2); //Espero 0.2 segundos esperando que en terminal salga ">" esperando el mensaje
+           GSM.printf("0011000A91"); //Pone el primer relleno del mensaje que es el mismo para todos
+           GSM.printf("%s",tel);    //Este identifica el numero que le envio un mensaje con anterioridad (este ya esta invertido por pares) y es colocado luego del primer rello.
+           GSM.printf("0000AA07417658DE0EC7"); //Aquí esta separado en tres partes, el segundo relleno, la cantidad de septetos+1 y 
+           //el mensaje, en este caso es fijo porque el mensaje es el mismo siempre, de no ser así se separan y se pone en variable
+           //la cantidad de septetos+1 y el mensaje.
+           GSM.printf("\r\n");//devuelve el carrier y da enter
+           wait(0.2); //Esperamos un poco antes de enviar ctrl+z
            GSM.putc(0x1A); //el mensaje ya fue enviado con esto
            for(i=0;i<6;i++){
                LedVerde=1;
@@ -339,11 +341,11 @@
              
             pc.printf("%s\r\n",resp);
             if(strcmp("$$+CM",resp) == 0){  //COMPARA resp con "+CMTI"
-                pc.printf("llego MSG\r\n");
-                cleanBuffer(buffer,10);
+                pc.printf("llego MSG\r\n");     //Avisa en pantalla si ha recibido un mensaje mas aun no es comparado
+                cleanBuffer(buffer,10); //Limpia el buffer
                 wait(0.5);
-                GSM.printf("AT+CMGL=0\r\n");//envio comando para leer mensaje
-                pc.printf("AT+CMGL=0\r\n");
+                GSM.printf("AT+CMGL=0\r\n");//envio comando para leer mensaje, este abre por así decir la "bandeja de entrada"
+                pc.printf("AT+CMGL=0\r\n");//Avisa que abrio los mensajes entrantes
                 //if (GSM.readable()) {
                 GSM.printf("AT+CMGD=0\r\n");    
                 readBuffer(buffer,100);
@@ -351,9 +353,9 @@
                 wait(5);
                    //leer telefono
                 for(i=0;i<10;i++){
-                       tel[i]=buffer[i+40];
+                       tel[i]=buffer[i+40]; //Con la cadena que llega de la recepcion del mensaje, este toma de ahi el telefono quien le envio SMS
                        }
-                pc.printf("%s-\r\n",tel);        
+                pc.printf("%s-\r\n",tel);   //Imprime el numero telefonico     
                 //leer tamaño
                    for(i=0;i<2;i++){
                        tam[i]=buffer[i+68];
@@ -361,12 +363,13 @@
                    pc.printf("%s-\r\n",tam);        
                    //leer mensaje
                     for(i=0;i<14;i++){
-                       msg[i]=buffer[i+70];
+                       msg[i]=buffer[i+70]; //Almacena el mensaje
                    }
                    pc.printf("%s-\r\n",msg);        
                    //decodificar mensaje
                    //comparar mensaje
                    if(strcmp("417658DE0EC700",msg) == 0){  //COMPARA resp con "417658DE0EC700" que es Alarma1
+                   //Como necesitamos un mensaje en especifico, comparamos si el mensaje que llego es igual a Alarma1 (Compara cadena en formato string)
                    LedVerde=1;
                    LedAzul=0;
                    wait(15);
@@ -382,8 +385,11 @@
                    }
                    
                    
-                   //ejecurar orden
-                   cleanBuffer(buffer,100);
+                   //ejecurar orden  //ya se ejecuto
+                   //08-D6379B1E569763  esto es Voltaje1
+                   
+                   
+                   cleanBuffer(buffer,100); //Limpia nuevamente el buffer para futuras recepciones de mas SMS
                                
                 }
             }