Fabio Andres Ibañez Diaz
/
GPSCELU_Grupo8
GPS_grupo8
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); } } }