![](/media/cache/profiles/bd1ce36d68a5c2bea97fe45863673b20.jpg.50x50_q85.jpg)
COMUNICACIÓN MODEM SIEMENS Y GPS PARA RASTREO SATELITAL CON ACCIONAMIENTO REMOTO
Fork of TareaGPS_Siemens by
Revision 1:e2bd083802c0, committed 2016-06-03
- Comitter:
- AaronGonzalez
- Date:
- Fri Jun 03 01:03:02 2016 +0000
- Parent:
- 0:b2a6aa7c0c8c
- Commit message:
- Tarea GPS
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Fri Jun 19 17:45:34 2015 +0000 +++ b/main.cpp Fri Jun 03 01:03:02 2016 +0000 @@ -1,44 +1,35 @@ -//programa para celular siemens que recibe un mensaje de texto t activa una salida en formato +///Tarea de comunicación celular y módulo GPS +//programa para celular siemens que recibe un mensaje de texto y activa una salida en formato //pdu hex #include "mbed.h" #include "DebouncedIn.h" #include "stdio.h" #include "string.h" #include "GPS.h" - - - - +//Salidas digitales Timer t; DigitalOut LedVerde(LED2); DigitalOut LedRojo(LED1); DigitalOut LedAzul(LED3); -/////////////////////////////////////////// +//Declaración de los puertos de la FRDm, modem y GPS Serial GSM(PTE0,PTE1); //puertos del FRDM para el modem Serial pc(USBTX,USBRX); GPS gps(PTE22, PTE23); // Puerto del FDRM para el gps -//////////////////////////// -//PARAMETROS -//////////////////////////////// +//Declaración de variables - +//Cadenas de caracteres con las que se va a trabajar short DE[255]; short DS[255]; - char buffer[512]; char buffermsg[100]; char buffer1[13]; char mensaje[100]; +//Variables enteras y caracteres int count; int i,K,LENOUT,LENIN,C; - -char Tel[15]; -char cel[15]; -char ojala[15]; // OJO - int c=0; int cont=0; unsigned char CtrlZ = 0x1A; @@ -46,28 +37,24 @@ char r[]=""; char msg[256]; char char1; - int index; +//Adquisición de números de teléfono, emisor - receptor +char Tel[15]; +char cel[15]; +char ojala[15]; // OJO -////// -//longitud y latitud -//// - +//El GPS entregará al celular coordenadas expresadas en latitud y longitud según la ubicación que encuentre +// por tanto se declaran estas variables: float lo,la; -char clo[255], cla[255]; // +char clo[255], cla[255]; //Cadenas a capturar para latitud y longitud int LENINlo,LENINla,LENINla_lo; char la_lo[255]; - +//Cadena de google maps char http2[255]; char http[] = "http://maps.google.com/maps?q="; - - -////////////// -// convercion oct sept -//////////// - +//Conversión octetos septetos int iht,Kht,ChtLENOUTht,LENINht; int ioct,Koct,LENOUToct,LENINoct,Coct; @@ -75,17 +62,13 @@ char DSoct[255]; char buf[100]; -///////////////////////// -//cocanteo rellenos y numero -////////////////////////// +//Relleno de datos - con el fin de que tengan el mismo número de caracteres char relle1[]= "0011000A91"; char relle2[]= "10000AA"; char relle3[]= "68"; -///////////////////////////////////////////// -// funciones -//////////////////////////////////////////// +//Funciones del programa int readBuffer(char *buffer,int count) { @@ -113,21 +96,18 @@ return 0; } -/////////////////////////////////////////////// -//Programass -/////////////////////////////////////////////// +//Programas a ejecutar int main(void) { - +//LED´S en alto LedVerde=1; LedRojo=1; LedAzul=1; - - +//Tasa de baudios GSM.baud(9600); GSM.format(8,Serial::None,1); - +//Lectura del modem GSM.printf("AT\r\n"); wait(0.5); GSM.printf("AT+CNMI=1,1\r\n"); @@ -138,10 +118,9 @@ wait(0.5); GSM.printf("CBST=0,0,1\r\n"); wait(0.5); - - + while(1){ - +//Lectura del buffer if (GSM.readable()) { readBuffer(buffer,100); pc.printf("buffer= %s\n\r ",buffer); @@ -151,7 +130,7 @@ pc.printf("mensaje= %s\n\r ",buffermsg); pc.printf("mensaje[72]= %c mensaje[73]=%c\n\r ",buffermsg[72],buffermsg[73]); buffer[67]='c'; - + //Si llegan estos tres tipos de mensajes... if (buffermsg[69] == '2'){ // PARA CUANDO LA CLAVE ES On LENIN=2; //numero de caracteres de abajo son los octetos DE[0]=0x47; @@ -163,6 +142,7 @@ DE[1]=0xB3; DE[2]=0x19; } +//Recepción de las coordenadas otorgadas por el GPS if (buffermsg[69] == '3'&& buffermsg[70] == 'C'){ // PARA CUANDO LA CLAVE ES Cor LENIN=3; //numero de caracteres de abajo son los octetos DE[0]=0xC3; @@ -188,11 +168,10 @@ { Tel[i] = buffermsg[40+i]; } +//Lectura del número de teléfono pc.printf("\n"); - pc.printf("%c%c%c%c%c%c%c%c%c%c",Tel[1],Tel[0],Tel[3],Tel[2],Tel[5],Tel[4],Tel[7],Tel[6],Tel[9],Tel[8]); - - } - + pc.printf("%c%c%c%c%c%c%c%c%c%c",Tel[1],Tel[0],Tel[3],Tel[2],Tel[5],Tel[4],Tel[7],Tel[6],Tel[9],Tel[8]); + } if(buffer[10]=='S'&& buffer[11]=='M'){ for(i=0;i<5;i++) {buffer1[i]=buffer[2+i];} @@ -204,9 +183,7 @@ wait(0.5); GSM.printf("AT+CMGL=0\r\n"); buffer1[3]='p'; - } - - + } if(DS[0]-67 == 0&& DS[1]-111==0) // Cor en octetos es 436f72 { pc.printf("\n"); @@ -214,37 +191,26 @@ DS[0] = '\0'; DS[1] = '\0'; - +//Entrega los datos de longitud y latitud if(gps.sample()) { lo =gps.longitude; la =gps.latitude; pc.printf("longitud_entera=%f, Latitud entera=%f\n", lo, la); - - wait(0.5); + wait(0.5); + //LONGITUD/ sprintf (clo, "%f", lo); pc.printf ( "\nlongitud = %s\n",clo); LENINlo=strlen(clo); + wait(0.5); - /* for (ilo=0;ilo<LENINlo;ilo++){ - pc.printf("%c,",clo[ilo]); - } */ - - wait(0.5); //LATITUD/ sprintf (cla, "%f", la); pc.printf ( "\nlatitud = %s\n",cla); LENINla=strlen(cla); - - /*for (ila1=0;ila1<LENINla1;ila1++){ - pc.printf("%c,",cla[ila1]); - }*/ - - - /////////////////////////////////////////////////// - // CONCATENO LONGITUD Y LATITUD - /////////////////////////////////////////////////// + + //Concatenando las cadenas de Latitud y Longitud... strcpy(la_lo,cla); strcat(la_lo,","); @@ -254,22 +220,14 @@ LENINla_lo=strlen(la_lo); - /*for (j=0;j<LENINla_lo;j++){ - pc.printf("%c\n",la_lo[j]); - }*/ - - //////////////////////////////////////////////////////// - // CONCATENO LONGITUD, LATITUD Y EL http//: - //////////////////////////////////////////////////////// + //Ahora se juntan las cadenas obtenidas y se agrega el protocolo de transferencia de hipertextos http strcpy(http2,http); strcat(http2,la_lo); pc.printf ( "%s\n",http2); pc.printf ( "\n" ); - ////////////////////////////////////////////////////////////////////// - // convierto http2 de oct a sep - //////////////////////////////////////////////////////////////////////// + //Conversión de la cadena de http2 de octetos a septetos LENINht=strlen(http2); pc.printf("%d\n",LENINht); @@ -277,8 +235,6 @@ pc.printf("%2X",http2[iht]); } pc.printf ( "\n" ); - - ///////////////////////////////////// LENINoct=strlen(http2); pc.printf("%d\n",LENINoct); @@ -287,8 +243,7 @@ DEoct[ioct]=http2[ioct]; pc.printf("%2X,%d\n",DEoct[ioct],ioct); } - //////////////////////////////////////// - + Koct=0; Coct=0; @@ -304,9 +259,7 @@ pc.printf("%2X,%d\r\n",DSoct[ioct]&0x000000FF,ioct); } } - // pc.printf("LENOUT:%d,LENIN:%d\r\n",LENOUToct,strlen(DEoct)); - //} Koct++; if (Koct==7) { @@ -314,13 +267,7 @@ } // se chequea que ya se acabaron los bits en un ciclo de conversion. } - ///////////////////////////////////////////////////////// - // CONCATENO LOS RELLENOS Y EL NUMERO DEL CELULAR - //////////////////////////////////////////////////////// - - - - + //Concatenación de los datos relleno y el número de celular wait(5); index=56; GSM.printf("AT+CMGS=%d\r\n",index); @@ -351,25 +298,24 @@ pc.printf(">%s\n",buf); pc.printf("\n"); - } // if - - - + } } - +//Si el mensaje recibido fue OFF... if(DS[0]-79==0 && DS[1]-102==0) // Off en octetos es 4F6666 { - LedAzul=1; //apaga con Lgeverde + //Secuencia de apagado + LedAzul=1; LedVerde = 0; LedRojo=1; } - +//Si el mensaje recibido fue ON... if(DS[0]-71==0 && DS[1]-110==0) // On en octetos es 476E { - LedAzul=1; //apaga con Lgeverde + //Secuencia de apagado + LedAzul=1; LedRojo =0; LedVerde = 1; } } } -} +} \ No newline at end of file