GPS_grupo8

Dependencies:   GPS7 mbed

Revision:
0:b0461e42dc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun May 24 16:54:30 2015 +0000
@@ -0,0 +1,221 @@
+#include "mbed.h"
+#include "stdio.h"
+#include "string.h"
+#include "GPS.h"
+#include "stdlib.h"
+ 
+ 
+Serial gsm(PTE0,PTE1);   // Se declaran puertos para la comunicacíón GSM
+Serial pc(USBTX,USBRX);  // Puerto seríal de la Freescale para el envio de datos
+GPS gps(PTE22, PTE23);
+ 
+
+char buf[100], bufm[18], tam[2], pdu[]=""; // Variables para almacenar las cadenas de caracteres
+char v1[]="";
+char v2[]="";
+char de[255];
+char ds[255];
+float chk,Long,Lat;
+int i,j,k,Lout,Lin;
+
+ 
+char trama[100]={"0791750330960007040AA1137356899000005150323123200A03C3B71C"}; // Definicion de la trama entrante PDU solo para pruebas
+char Link[]={"http://maps.google.com/?q="};                 // Trama base
+char ENV[]="0011000A9113735689900000AA";
+ 
+int main() {
+    // Configuración para la comunicacion con el celular
+    
+    gsm.baud(9600);                // Configuracion de los baudios
+    gsm.format(8,Serial::None,1);    
+    
+    pc.printf("Enviamos AT \n");
+    gsm.printf("AT\r\n");  
+    gsm.scanf("%s",buf);
+ 
+    wait(1);
+    
+     
+     gsm.printf("AT+CNMI=1,1\r\n");
+     pc.printf("AT+CNMI=1,1\r\n");
+     gsm.scanf("%s",buf);
+     gsm.scanf("%s",buf);
+     pc.printf(">%s\n",buf); 
+     wait(1); 
+    
+    
+     gsm.printf("AT+CPMS= \"SM\",\"SM\",\"SM\"\r\n");
+     pc.printf("AT+CPMS= \"SM\",\"SM\",\"SM\"\n");
+     gsm.scanf("%s",buf);
+     gsm.scanf("%s",buf);
+     gsm.scanf("%s",buf);
+     pc.printf(">%s\n",buf); 
+     wait(1); 
+ 
+        
+     gsm.printf("AT+CMGF=0\r\n");
+     pc.printf("AT+CMGF=0\r\n");
+     gsm.scanf("%s",buf);
+     gsm.scanf("%s",buf);
+     pc.printf(">%s\n",buf); 
+       
+     gsm.printf("CBST=0,0,1\r\n");
+     
+     
+    while(1) {
+    
+     pc.printf("\n Esperando Mensaje \n");     
+     gsm.scanf("%s",buf);
+     pc.printf("%s",buf);
+     i = strlen(buf);
+     if(i>3){ 
+       pc.printf("Llego un Mensaje \n"); 
+        gsm.printf("AT+CMGR=1 \r\n");  // Se lee el menjsae que ente en el indice 1.
+        gsm.scanf("%s",buf);
+        gsm.scanf("%s",buf);
+        gsm.scanf("%s",buf);
+        gsm.scanf("%s",buf);
+        pc.printf(">%s",buf);        //Mostrar la cadena en PDU del mensaje leido.
+        
+ 
+        i = strlen(buf);
+        
+       if(i==56){
+           pc.printf("\n LLego on");
+          
+           gsm.printf("AT+CMGD=1\r\n"); 
+           gsm.scanf("%s",buf);
+           pc.printf("\n%s\n",buf);
+             
+           }
+           
+       if(i==58){
+            pc.printf("\n LLego off");
+            
+             gsm.printf("AT+CMGD=1\r\n"); 
+             gsm.scanf("%s",buf);
+             pc.printf("\n%s\n",buf);
+            
+           }
+           
+       if(i==62){
+        
+      
+        gsm.baud(9600);
+        pc.printf("gsm.baud(9600)\n"); 
+ 
+    
+    gsm.format(8,Serial::None,1);
+    pc.printf("gsm.format(8,Serial::None,1)\n"); 
+ 
+    pc.printf("Enviamos AT\n");
+    gsm.printf("AT\r\n");  
+    gsm.scanf("%s",buf);
+    gsm.scanf("%s",buf);
+    pc.printf(">%s\n",buf);
+      
+    gsm.printf("AT+CMGR=1\r\n");  // Se lee el menjsae que ente en el indice 1.
+    pc.printf("AT+CMGR=1\r\n");
+    gsm.scanf("%s",buf);
+    gsm.scanf("%s",buf);
+    gsm.scanf("%s",buf);
+    gsm.scanf("%s",buf);
+    pc.printf(">%s\n",buf);
+    
+    
+    pc.printf("Esperando por coordenadas del GPS \n");
+           
+           while(1) {
+        i=0;
+        if(gps.sample()& i==0) {
+             
+             pc.printf("Toma de datos gps y concatenacion \n");
+            //Toma de datos del gps y concatenacion para armar los datos.
+        
+              Long=gps.longitude;
+              Lat=gps.latitude;    
+              sprintf(v1, "%f", Lat);
+              strcat(Link,v1);
+              strcat(Link,",");
+          
+               wait(3);
+              sprintf(v2, "%f", Long);
+              strcat(Link,v2);
+              strcat(de,Link);
+              pc.printf("%s\n",Link);
+                           
+                           
+            //Conversion  a formatdo PDU
+            
+         Lin=strlen(de);
+         
+         j=0;k=0;
+         for (i=0;i < Lin;i++){
+         ds[i]=de[i+k]>>j | de[i+k+1]<<(7-j);
+         if (ds[i]==0x00) {Lout=i; goto salir;}
+         j++;
+         if (j==7) {j=0;k++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
+         }
+ 
+         //--------------------------------------------------------------
+salir:   pc.printf("de\n");
+         for (i=0;i < Lin;i++){
+         pc.printf("%X",de[i]);
+         }
+         pc.printf("\n ds \n");
+         for (i=0;i<Lout;i++){
+         pc.printf("%02X",ds[i]&0x000000FF);
+         }
+         
+         pc.printf("\n Lout:%d,Lin:%d\r\n",Lout,strlen(de));
+                   
+                 
+          
+            // Enviamos el mensaje
+          
+            pc.printf("Comienza SMS \n");
+           
+             
+            gsm.printf("AT+CMGS=53\r\n");
+            pc.printf("\n AT+CMGS=53\r\n");
+            wait(0.5);
+           
+           gsm.printf("0011000A9113735689900000AA");
+            pc.printf("0011000A9113735689900000AA");
+           wait(0.5);
+           gsm.printf("%2X",Lout);
+           pc.printf("%2X",Lout);    
+          
+              
+            for (i=0;i < Lout;i++){
+             gsm.printf("%02X",ds[i]&0x000000FF);  
+             pc.printf("%02X",ds[i]&0x000000FF);
+             wait(0.3);       
+         } 
+            gsm.putc((char)0x1A);
+            
+            gsm.scanf("%s",buf);
+            gsm.scanf("%s",buf);
+           
+            pc.printf("\n enviando mensaje y leyendo modem %s \n",buf);
+            i=1;
+            gsm.printf("AT+CMGD=1\r\n"); 
+            pc.printf("\n sale del while para lectura de gps \n ");
+            gsm.scanf("%s",buf);
+            pc.printf(">%s",buf);
+            goto s;
+        } 
+        
+    
+    
+           }
+       
+    }// SMS
+    
+    s: 
+       gsm.scanf("%s",buf);
+       pc.printf("%s",buf);
+       
+    }   
+ }
+}
\ No newline at end of file