GPS_grupo8

Dependencies:   GPS7 mbed

main.cpp

Committer:
obifandres
Date:
2015-05-24
Revision:
0:b0461e42dc36

File content as of revision 0:b0461e42dc36:

#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);
       
    }   
 }
}