
f
Fork of rastreador_satelital_2 by
Diff: main.cpp
- Revision:
- 1:e72724565122
- Parent:
- 0:e48cba9116f6
- Child:
- 2:20facdf67dcf
--- a/main.cpp Wed May 25 23:20:17 2016 +0000 +++ b/main.cpp Tue Jun 05 03:22:27 2018 +0000 @@ -1,22 +1,18 @@ -/*Tarea_GSM_GPS - Sistema de ubicacion basado en un receptor GPS y un celular siemens a56 - como modem GSM. - El sistema recibe un mensaje de texto, lo procesa y si el mensaje recibido corresponde - con el codigo almacenado en el microcontrolador, este procede a enviar un mensaje de texto - con la ubicacion actual. -*/ #include "mbed.h" #include "iostream" #include "GPS.h" // Configuracion de los puertos del microcontrolador -Serial gsm(PTE0, PTE1); // puerto serie para la comunicacíón GSM +Serial gsm(PTE22, PTE23); // puerto serie para la comunicacíón GSM Serial pc(USBTX, USBRX); // puerto serie para debug -GPS gps(PTD7, PTD6); // puerto para comunicacion GPS +GPS gps(PTE0, PTE1); // puerto para comunicacion GPS // Declaracion de variables globales -char buffer[200], pdu[] = "", vector1[] = "", vector2[] = "", dE[255], dS[255], dEs[255], dSs[255], Ctamanosms[1], Ctiposmsc[1], Csmscnumber[12], Cdeliver[1], Ctamanoaddress[1], Ctipoaddress[1], Cnumero[11], Cprotocolo[1], Cencoding[1], Ctime[14], Ctamano[1], Cdato[30], Xnumero[10]; // Variables para almacenar las cadenas de caracteres +char buffer[200], pdu[] = "", vector1[] = "", vector2[] = "", dE[255], dS[255], dEs[255], dSs[255]; +char Ctamanosms[1], Ctiposmsc[1], Csmscnumber[12], Cdeliver[1]; +char Ctamanoaddress[1], Ctipoaddress[1], Cnumero[12], Cprotocolo[1], Cencoding[1]; +char Ctime[14], Ctamano[1], Cdato[30], Xnumero[10]; int i, k, c, w, r, ta, tam, lenOUT, lenIN; // variables auxiliares float lon, lat; // variables para almacenar coordenadas char link[]= {"http://maps.google.com/?q="}; // inicio trama mensaje @@ -24,7 +20,7 @@ // Rutina principal int main() { - pc.printf("######################### INICIO DEL PROGRAMA #########################"); // mensaje de bienvenida debug + pc.printf("###ss###################### INICIO DEL PROGRAMA #########################"); // mensaje de bienvenida debug // Establecimiento de la comunicacion con el modem del telefono movil pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>> Configurando SIEMENS A56i <<<<<<<<<<<<<<<<<<<<<<\r\n"); // mensaje debug gsm.baud(9600); @@ -71,7 +67,7 @@ gsm.printf("CBST=0,0,1\r\n"); // en espera de mensajes entrantes if(gps.sample()) { - pc.printf("Estamos en %f, %f\r\n", gps.latitude, gps.longitude+50); // muestro la ubicacion actual, para saber si el GPS esta recibiendo + pc.printf("Estamos en %f, %f\r\n", gps.latitude, gps.longitude); // muestro la ubicacion actual, para saber si el GPS esta recibiendo } else { pc.printf("no se donde!:(\r\n"); } @@ -213,25 +209,29 @@ } k--; } + dS[10] = dS[10] + 112; + pc.printf("\r\nMensaje entrante: "); for (i = 0; i < lenOUT; i++) { pc.printf("%c",dS[i]); } pc.printf("\r\n>>>>>>>>>>> Termina convercion de los datos de PDU a texto <<<<<<<<<<<<\r\n"); } - - std::string strC ("Coordenada"); // cadenas para comparar el mensaje recibido + + + std::string strC ("Coordenadas"); // cadenas para comparar el mensaje recibido if(strC.compare(dS) == 0) { // En caso de que se pidan las coordenadas pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>> Recibido: Coordenada <<<<<<<<<<<<<<<<<<<<<<<<<\n"); pc.printf("\r\nEsperando GPS \r\n"); + while(1) { i = 0; if(gps.sample() && i == 0) { pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Leyendo GPS <<<<<<<<<<<<<<<<<<<<<<<<<<<<<\r\n"); //Toma de datos del gps y concatenacion para armar los datos. - lon = gps.longitude+50; + lon = gps.longitude; lat = gps.latitude; sprintf(vector1, "%f", lat); strcat(link,vector1); @@ -276,35 +276,35 @@ w = 26; } gsm.printf("AT+CMGS=%d\r\n", ((2*lenOUT)+w)/2); // Inicia envio del mensaje - pc.printf("\n AT+CMGS=%d\r\n", ((2*lenOUT)+w)/2); + //pc.printf("\n AT+CMGS=%d\r\n", ((2*lenOUT)+w)/2); wait(0.5); gsm.printf("0011000A91"); // relleno inicial - pc.printf("0011000A91"); + //pc.printf("0011000A91"); for(i = 0; i < 11; i++) { // numero de destino gsm.printf("%c", Cnumero[i]); - pc.printf("%c", Cnumero[i]); + // pc.printf("%c", Cnumero[i]); } gsm.printf("000AA"); // segundo relleno - pc.printf("000AA"); + //pc.printf("000AA"); gsm.printf("%2X",lenIN); // longitud de los datos - pc.printf("%2X",lenIN); + //pc.printf("%2X",lenIN); for (i = 0; i < lenOUT; i++) { gsm.printf("%02X",dSs[i]&0x000000FF); - pc.printf("%02X",dSs[i]&0x000000FF); - wait(0.1); + // pc.printf("%02X",dSs[i]&0x000000FF); + //wait(0.1); } gsm.putc((char)0x1A); gsm.scanf("%s",buffer); // lectura respuesta del modem gsm.scanf("%s",buffer); - pc.printf("\r\nRespuesta movil: %s \r\n",buffer); + //pc.printf("\r\nRespuesta movil: %s \r\n",buffer); i = 1; gsm.printf("AT+CMGD=1\r\n");