Fabio Andres Ibañez Diaz
/
GPSCELU_Grupo8
GPS_grupo8
Diff: main.cpp
- 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