Programa para establecer la comunicación con un módem Siemens A56 y un modulo FRDMKL25Z opera como rastreador satelital para Geolocalizacion. Por la UART (1) se conecta el MODEM y por la uart (2) el GPS (se lee en modo NEMEA) Este sistema genera una cadena de geolocalizacion para GoogleMaps con las coordenadas locales Si previamente se envia el mensaje (Coordenadas o coordenadas) El sistema ademas recibe ordenes de tipo mensaje GSM PDU para accionar cargas
main.cpp@1:e2bd083802c0, 2016-06-03 (annotated)
- Committer:
- AaronGonzalez
- Date:
- Fri Jun 03 01:03:02 2016 +0000
- Revision:
- 1:e2bd083802c0
- Parent:
- 0:b2a6aa7c0c8c
- Child:
- 2:ea6275d1222f
Tarea GPS
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AaronGonzalez | 1:e2bd083802c0 | 1 | ///Tarea de comunicación celular y módulo GPS |
AaronGonzalez | 1:e2bd083802c0 | 2 | //programa para celular siemens que recibe un mensaje de texto y activa una salida en formato |
procesadores_FAC | 0:b2a6aa7c0c8c | 3 | //pdu hex |
procesadores_FAC | 0:b2a6aa7c0c8c | 4 | #include "mbed.h" |
procesadores_FAC | 0:b2a6aa7c0c8c | 5 | #include "DebouncedIn.h" |
procesadores_FAC | 0:b2a6aa7c0c8c | 6 | #include "stdio.h" |
procesadores_FAC | 0:b2a6aa7c0c8c | 7 | #include "string.h" |
procesadores_FAC | 0:b2a6aa7c0c8c | 8 | #include "GPS.h" |
AaronGonzalez | 1:e2bd083802c0 | 9 | //Salidas digitales |
procesadores_FAC | 0:b2a6aa7c0c8c | 10 | Timer t; |
procesadores_FAC | 0:b2a6aa7c0c8c | 11 | DigitalOut LedVerde(LED2); |
procesadores_FAC | 0:b2a6aa7c0c8c | 12 | DigitalOut LedRojo(LED1); |
procesadores_FAC | 0:b2a6aa7c0c8c | 13 | DigitalOut LedAzul(LED3); |
procesadores_FAC | 0:b2a6aa7c0c8c | 14 | |
AaronGonzalez | 1:e2bd083802c0 | 15 | //Declaración de los puertos de la FRDm, modem y GPS |
procesadores_FAC | 0:b2a6aa7c0c8c | 16 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 17 | Serial GSM(PTE0,PTE1); //puertos del FRDM para el modem |
procesadores_FAC | 0:b2a6aa7c0c8c | 18 | Serial pc(USBTX,USBRX); |
procesadores_FAC | 0:b2a6aa7c0c8c | 19 | GPS gps(PTE22, PTE23); // Puerto del FDRM para el gps |
procesadores_FAC | 0:b2a6aa7c0c8c | 20 | |
AaronGonzalez | 1:e2bd083802c0 | 21 | //Declaración de variables |
procesadores_FAC | 0:b2a6aa7c0c8c | 22 | |
AaronGonzalez | 1:e2bd083802c0 | 23 | //Cadenas de caracteres con las que se va a trabajar |
procesadores_FAC | 0:b2a6aa7c0c8c | 24 | short DE[255]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 25 | short DS[255]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 26 | char buffer[512]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 27 | char buffermsg[100]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 28 | char buffer1[13]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 29 | char mensaje[100]; |
AaronGonzalez | 1:e2bd083802c0 | 30 | //Variables enteras y caracteres |
procesadores_FAC | 0:b2a6aa7c0c8c | 31 | int count; |
procesadores_FAC | 0:b2a6aa7c0c8c | 32 | int i,K,LENOUT,LENIN,C; |
procesadores_FAC | 0:b2a6aa7c0c8c | 33 | int c=0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 34 | int cont=0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 35 | unsigned char CtrlZ = 0x1A; |
procesadores_FAC | 0:b2a6aa7c0c8c | 36 | bool Flag = false; |
procesadores_FAC | 0:b2a6aa7c0c8c | 37 | char r[]=""; |
procesadores_FAC | 0:b2a6aa7c0c8c | 38 | char msg[256]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 39 | char char1; |
procesadores_FAC | 0:b2a6aa7c0c8c | 40 | int index; |
AaronGonzalez | 1:e2bd083802c0 | 41 | //Adquisición de números de teléfono, emisor - receptor |
AaronGonzalez | 1:e2bd083802c0 | 42 | char Tel[15]; |
AaronGonzalez | 1:e2bd083802c0 | 43 | char cel[15]; |
AaronGonzalez | 1:e2bd083802c0 | 44 | char ojala[15]; // OJO |
procesadores_FAC | 0:b2a6aa7c0c8c | 45 | |
AaronGonzalez | 1:e2bd083802c0 | 46 | //El GPS entregará al celular coordenadas expresadas en latitud y longitud según la ubicación que encuentre |
AaronGonzalez | 1:e2bd083802c0 | 47 | // por tanto se declaran estas variables: |
procesadores_FAC | 0:b2a6aa7c0c8c | 48 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 49 | float lo,la; |
AaronGonzalez | 1:e2bd083802c0 | 50 | char clo[255], cla[255]; //Cadenas a capturar para latitud y longitud |
procesadores_FAC | 0:b2a6aa7c0c8c | 51 | int LENINlo,LENINla,LENINla_lo; |
procesadores_FAC | 0:b2a6aa7c0c8c | 52 | char la_lo[255]; |
AaronGonzalez | 1:e2bd083802c0 | 53 | //Cadena de google maps |
procesadores_FAC | 0:b2a6aa7c0c8c | 54 | char http2[255]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 55 | char http[] = "http://maps.google.com/maps?q="; |
procesadores_FAC | 0:b2a6aa7c0c8c | 56 | |
AaronGonzalez | 1:e2bd083802c0 | 57 | //Conversión octetos septetos |
procesadores_FAC | 0:b2a6aa7c0c8c | 58 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 59 | int iht,Kht,ChtLENOUTht,LENINht; |
procesadores_FAC | 0:b2a6aa7c0c8c | 60 | int ioct,Koct,LENOUToct,LENINoct,Coct; |
procesadores_FAC | 0:b2a6aa7c0c8c | 61 | char DEoct[255]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 62 | char DSoct[255]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 63 | char buf[100]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 64 | |
AaronGonzalez | 1:e2bd083802c0 | 65 | //Relleno de datos - con el fin de que tengan el mismo número de caracteres |
procesadores_FAC | 0:b2a6aa7c0c8c | 66 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 67 | char relle1[]= "0011000A91"; |
procesadores_FAC | 0:b2a6aa7c0c8c | 68 | char relle2[]= "10000AA"; |
procesadores_FAC | 0:b2a6aa7c0c8c | 69 | char relle3[]= "68"; |
procesadores_FAC | 0:b2a6aa7c0c8c | 70 | |
AaronGonzalez | 1:e2bd083802c0 | 71 | //Funciones del programa |
procesadores_FAC | 0:b2a6aa7c0c8c | 72 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 73 | int readBuffer(char *buffer,int count) |
procesadores_FAC | 0:b2a6aa7c0c8c | 74 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 75 | int i=0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 76 | t.start(); |
procesadores_FAC | 0:b2a6aa7c0c8c | 77 | while(1) { |
procesadores_FAC | 0:b2a6aa7c0c8c | 78 | while (GSM.readable()) { |
procesadores_FAC | 0:b2a6aa7c0c8c | 79 | char c = GSM.getc(); |
procesadores_FAC | 0:b2a6aa7c0c8c | 80 | if (c == '\r' || c == '\n') c = '$'; |
procesadores_FAC | 0:b2a6aa7c0c8c | 81 | buffer[i++] = c; |
procesadores_FAC | 0:b2a6aa7c0c8c | 82 | if(i > count)break; |
procesadores_FAC | 0:b2a6aa7c0c8c | 83 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 84 | if(i > count)break; // ojooo |
procesadores_FAC | 0:b2a6aa7c0c8c | 85 | if(t.read() > 3) { |
procesadores_FAC | 0:b2a6aa7c0c8c | 86 | t.stop(); |
procesadores_FAC | 0:b2a6aa7c0c8c | 87 | t.reset(); |
procesadores_FAC | 0:b2a6aa7c0c8c | 88 | break; |
procesadores_FAC | 0:b2a6aa7c0c8c | 89 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 90 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 91 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 92 | wait(0.5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 93 | while(GSM.readable()) { |
procesadores_FAC | 0:b2a6aa7c0c8c | 94 | char c = GSM.getc(); |
procesadores_FAC | 0:b2a6aa7c0c8c | 95 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 96 | return 0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 97 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 98 | |
AaronGonzalez | 1:e2bd083802c0 | 99 | //Programas a ejecutar |
procesadores_FAC | 0:b2a6aa7c0c8c | 100 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 101 | int main(void) |
procesadores_FAC | 0:b2a6aa7c0c8c | 102 | { |
AaronGonzalez | 1:e2bd083802c0 | 103 | //LED´S en alto |
procesadores_FAC | 0:b2a6aa7c0c8c | 104 | LedVerde=1; |
procesadores_FAC | 0:b2a6aa7c0c8c | 105 | LedRojo=1; |
procesadores_FAC | 0:b2a6aa7c0c8c | 106 | LedAzul=1; |
AaronGonzalez | 1:e2bd083802c0 | 107 | //Tasa de baudios |
procesadores_FAC | 0:b2a6aa7c0c8c | 108 | GSM.baud(9600); |
procesadores_FAC | 0:b2a6aa7c0c8c | 109 | GSM.format(8,Serial::None,1); |
AaronGonzalez | 1:e2bd083802c0 | 110 | //Lectura del modem |
procesadores_FAC | 0:b2a6aa7c0c8c | 111 | GSM.printf("AT\r\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 112 | wait(0.5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 113 | GSM.printf("AT+CNMI=1,1\r\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 114 | wait(0.5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 115 | GSM.printf("AT+CMGF=0\r\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 116 | wait(0.5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 117 | GSM.printf("ATE\r\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 118 | wait(0.5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 119 | GSM.printf("CBST=0,0,1\r\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 120 | wait(0.5); |
AaronGonzalez | 1:e2bd083802c0 | 121 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 122 | while(1){ |
AaronGonzalez | 1:e2bd083802c0 | 123 | //Lectura del buffer |
procesadores_FAC | 0:b2a6aa7c0c8c | 124 | if (GSM.readable()) { |
procesadores_FAC | 0:b2a6aa7c0c8c | 125 | readBuffer(buffer,100); |
procesadores_FAC | 0:b2a6aa7c0c8c | 126 | pc.printf("buffer= %s\n\r ",buffer); |
procesadores_FAC | 0:b2a6aa7c0c8c | 127 | pc.printf("buffer= %c %c\n\r ",buffer[10],buffer[11]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 128 | if(buffer[67]=='A'){for(i=0;i<86;i++) |
procesadores_FAC | 0:b2a6aa7c0c8c | 129 | {buffermsg[i]=buffer[i];} |
procesadores_FAC | 0:b2a6aa7c0c8c | 130 | pc.printf("mensaje= %s\n\r ",buffermsg); |
procesadores_FAC | 0:b2a6aa7c0c8c | 131 | pc.printf("mensaje[72]= %c mensaje[73]=%c\n\r ",buffermsg[72],buffermsg[73]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 132 | buffer[67]='c'; |
AaronGonzalez | 1:e2bd083802c0 | 133 | //Si llegan estos tres tipos de mensajes... |
procesadores_FAC | 0:b2a6aa7c0c8c | 134 | if (buffermsg[69] == '2'){ // PARA CUANDO LA CLAVE ES On |
procesadores_FAC | 0:b2a6aa7c0c8c | 135 | LENIN=2; //numero de caracteres de abajo son los octetos |
procesadores_FAC | 0:b2a6aa7c0c8c | 136 | DE[0]=0x47; |
procesadores_FAC | 0:b2a6aa7c0c8c | 137 | DE[1]=0x37; |
procesadores_FAC | 0:b2a6aa7c0c8c | 138 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 139 | if (buffermsg[69] == '3'&& buffermsg[70] == '4'){ // PARA CUANDO LA CLAVE ES Off |
procesadores_FAC | 0:b2a6aa7c0c8c | 140 | LENIN=3; //numero de caracteres de abajo son los octetos |
procesadores_FAC | 0:b2a6aa7c0c8c | 141 | DE[0]=0x4F; |
procesadores_FAC | 0:b2a6aa7c0c8c | 142 | DE[1]=0xB3; |
procesadores_FAC | 0:b2a6aa7c0c8c | 143 | DE[2]=0x19; |
procesadores_FAC | 0:b2a6aa7c0c8c | 144 | } |
AaronGonzalez | 1:e2bd083802c0 | 145 | //Recepción de las coordenadas otorgadas por el GPS |
procesadores_FAC | 0:b2a6aa7c0c8c | 146 | if (buffermsg[69] == '3'&& buffermsg[70] == 'C'){ // PARA CUANDO LA CLAVE ES Cor |
procesadores_FAC | 0:b2a6aa7c0c8c | 147 | LENIN=3; //numero de caracteres de abajo son los octetos |
procesadores_FAC | 0:b2a6aa7c0c8c | 148 | DE[0]=0xC3; |
procesadores_FAC | 0:b2a6aa7c0c8c | 149 | DE[1]=0xB7; |
procesadores_FAC | 0:b2a6aa7c0c8c | 150 | DE[2]=0x1C; |
procesadores_FAC | 0:b2a6aa7c0c8c | 151 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 152 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 153 | LENOUT= LENIN*8/7; |
procesadores_FAC | 0:b2a6aa7c0c8c | 154 | K=7; |
procesadores_FAC | 0:b2a6aa7c0c8c | 155 | C=0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 156 | DS[0]=DE[0] & 0x7F; // la primera sola |
procesadores_FAC | 0:b2a6aa7c0c8c | 157 | pc.printf("%2X\n",DS[0]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 158 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 159 | for (i=1;i < LENOUT;i++){ // inicia el algoritmo |
procesadores_FAC | 0:b2a6aa7c0c8c | 160 | DS[i]=(DE[i-1-C]>>K | DE[i-C]<<(8-K))& 0x7F; //valido para todos |
procesadores_FAC | 0:b2a6aa7c0c8c | 161 | pc.printf("%2X\n",DS[i]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 162 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 163 | if (K==0) {K=8;C++;} |
procesadores_FAC | 0:b2a6aa7c0c8c | 164 | K--; |
procesadores_FAC | 0:b2a6aa7c0c8c | 165 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 166 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 167 | for (i=0 ;i<=9;i++) |
procesadores_FAC | 0:b2a6aa7c0c8c | 168 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 169 | Tel[i] = buffermsg[40+i]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 170 | } |
AaronGonzalez | 1:e2bd083802c0 | 171 | //Lectura del número de teléfono |
procesadores_FAC | 0:b2a6aa7c0c8c | 172 | pc.printf("\n"); |
AaronGonzalez | 1:e2bd083802c0 | 173 | 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]); |
AaronGonzalez | 1:e2bd083802c0 | 174 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 175 | if(buffer[10]=='S'&& buffer[11]=='M'){ |
procesadores_FAC | 0:b2a6aa7c0c8c | 176 | for(i=0;i<5;i++) |
procesadores_FAC | 0:b2a6aa7c0c8c | 177 | {buffer1[i]=buffer[2+i];} |
procesadores_FAC | 0:b2a6aa7c0c8c | 178 | pc.printf("buffer1= %s\n\r ",buffer1); |
procesadores_FAC | 0:b2a6aa7c0c8c | 179 | buffer[10]='c'; |
procesadores_FAC | 0:b2a6aa7c0c8c | 180 | buffer[11]='c'; |
procesadores_FAC | 0:b2a6aa7c0c8c | 181 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 182 | if(buffer1[3]=='T'){pc.printf("AT+CMGL=0\n\r"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 183 | wait(0.5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 184 | GSM.printf("AT+CMGL=0\r\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 185 | buffer1[3]='p'; |
AaronGonzalez | 1:e2bd083802c0 | 186 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 187 | if(DS[0]-67 == 0&& DS[1]-111==0) // Cor en octetos es 436f72 |
procesadores_FAC | 0:b2a6aa7c0c8c | 188 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 189 | pc.printf("\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 190 | LedAzul=0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 191 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 192 | DS[0] = '\0'; |
procesadores_FAC | 0:b2a6aa7c0c8c | 193 | DS[1] = '\0'; |
AaronGonzalez | 1:e2bd083802c0 | 194 | //Entrega los datos de longitud y latitud |
procesadores_FAC | 0:b2a6aa7c0c8c | 195 | if(gps.sample()) |
procesadores_FAC | 0:b2a6aa7c0c8c | 196 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 197 | lo =gps.longitude; |
procesadores_FAC | 0:b2a6aa7c0c8c | 198 | la =gps.latitude; |
procesadores_FAC | 0:b2a6aa7c0c8c | 199 | pc.printf("longitud_entera=%f, Latitud entera=%f\n", lo, la); |
AaronGonzalez | 1:e2bd083802c0 | 200 | wait(0.5); |
AaronGonzalez | 1:e2bd083802c0 | 201 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 202 | //LONGITUD/ |
procesadores_FAC | 0:b2a6aa7c0c8c | 203 | sprintf (clo, "%f", lo); |
procesadores_FAC | 0:b2a6aa7c0c8c | 204 | pc.printf ( "\nlongitud = %s\n",clo); |
procesadores_FAC | 0:b2a6aa7c0c8c | 205 | LENINlo=strlen(clo); |
AaronGonzalez | 1:e2bd083802c0 | 206 | wait(0.5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 207 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 208 | //LATITUD/ |
procesadores_FAC | 0:b2a6aa7c0c8c | 209 | sprintf (cla, "%f", la); |
procesadores_FAC | 0:b2a6aa7c0c8c | 210 | pc.printf ( "\nlatitud = %s\n",cla); |
procesadores_FAC | 0:b2a6aa7c0c8c | 211 | LENINla=strlen(cla); |
AaronGonzalez | 1:e2bd083802c0 | 212 | |
AaronGonzalez | 1:e2bd083802c0 | 213 | //Concatenando las cadenas de Latitud y Longitud... |
procesadores_FAC | 0:b2a6aa7c0c8c | 214 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 215 | strcpy(la_lo,cla); |
procesadores_FAC | 0:b2a6aa7c0c8c | 216 | strcat(la_lo,","); |
procesadores_FAC | 0:b2a6aa7c0c8c | 217 | strcat(la_lo,clo); |
procesadores_FAC | 0:b2a6aa7c0c8c | 218 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 219 | pc.printf ( "\nla_lo: %s\n",la_lo); |
procesadores_FAC | 0:b2a6aa7c0c8c | 220 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 221 | LENINla_lo=strlen(la_lo); |
procesadores_FAC | 0:b2a6aa7c0c8c | 222 | |
AaronGonzalez | 1:e2bd083802c0 | 223 | //Ahora se juntan las cadenas obtenidas y se agrega el protocolo de transferencia de hipertextos http |
procesadores_FAC | 0:b2a6aa7c0c8c | 224 | strcpy(http2,http); |
procesadores_FAC | 0:b2a6aa7c0c8c | 225 | strcat(http2,la_lo); |
procesadores_FAC | 0:b2a6aa7c0c8c | 226 | pc.printf ( "%s\n",http2); |
procesadores_FAC | 0:b2a6aa7c0c8c | 227 | pc.printf ( "\n" ); |
procesadores_FAC | 0:b2a6aa7c0c8c | 228 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 229 | |
AaronGonzalez | 1:e2bd083802c0 | 230 | //Conversión de la cadena de http2 de octetos a septetos |
procesadores_FAC | 0:b2a6aa7c0c8c | 231 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 232 | LENINht=strlen(http2); |
procesadores_FAC | 0:b2a6aa7c0c8c | 233 | pc.printf("%d\n",LENINht); |
procesadores_FAC | 0:b2a6aa7c0c8c | 234 | for (iht=0;iht<LENINht;iht++){ |
procesadores_FAC | 0:b2a6aa7c0c8c | 235 | pc.printf("%2X",http2[iht]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 236 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 237 | pc.printf ( "\n" ); |
procesadores_FAC | 0:b2a6aa7c0c8c | 238 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 239 | LENINoct=strlen(http2); |
procesadores_FAC | 0:b2a6aa7c0c8c | 240 | pc.printf("%d\n",LENINoct); |
procesadores_FAC | 0:b2a6aa7c0c8c | 241 | for (ioct=0;ioct<LENINoct;ioct++) |
procesadores_FAC | 0:b2a6aa7c0c8c | 242 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 243 | DEoct[ioct]=http2[ioct]; |
procesadores_FAC | 0:b2a6aa7c0c8c | 244 | pc.printf("%2X,%d\n",DEoct[ioct],ioct); |
procesadores_FAC | 0:b2a6aa7c0c8c | 245 | } |
AaronGonzalez | 1:e2bd083802c0 | 246 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 247 | Koct=0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 248 | Coct=0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 249 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 250 | for (ioct=0;ioct < LENINoct;ioct++) |
procesadores_FAC | 0:b2a6aa7c0c8c | 251 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 252 | DSoct[ioct]=DEoct[ioct+Coct]>>Koct | DEoct[ioct+Coct+1]<<(7-Koct); |
procesadores_FAC | 0:b2a6aa7c0c8c | 253 | if (DSoct[ioct]==0x00){ |
procesadores_FAC | 0:b2a6aa7c0c8c | 254 | LENOUToct=ioct; |
procesadores_FAC | 0:b2a6aa7c0c8c | 255 | pc.printf("\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 256 | pc.printf("%s",DEoct); |
procesadores_FAC | 0:b2a6aa7c0c8c | 257 | pc.printf("out =%d",LENOUToct); |
procesadores_FAC | 0:b2a6aa7c0c8c | 258 | for (ioct=0;ioct<LENOUToct;ioct++){ |
procesadores_FAC | 0:b2a6aa7c0c8c | 259 | pc.printf("%2X,%d\r\n",DSoct[ioct]&0x000000FF,ioct); |
procesadores_FAC | 0:b2a6aa7c0c8c | 260 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 261 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 262 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 263 | Koct++; |
procesadores_FAC | 0:b2a6aa7c0c8c | 264 | if (Koct==7) |
procesadores_FAC | 0:b2a6aa7c0c8c | 265 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 266 | Koct=0;Coct++; |
procesadores_FAC | 0:b2a6aa7c0c8c | 267 | } // se chequea que ya se acabaron los bits en un ciclo de conversion. |
procesadores_FAC | 0:b2a6aa7c0c8c | 268 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 269 | |
AaronGonzalez | 1:e2bd083802c0 | 270 | //Concatenación de los datos relleno y el número de celular |
procesadores_FAC | 0:b2a6aa7c0c8c | 271 | wait(5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 272 | index=56; |
procesadores_FAC | 0:b2a6aa7c0c8c | 273 | GSM.printf("AT+CMGS=%d\r\n",index); |
procesadores_FAC | 0:b2a6aa7c0c8c | 274 | pc.printf("AT+CMGS=%d\r\n",index); |
procesadores_FAC | 0:b2a6aa7c0c8c | 275 | pc.printf("0011000A91"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 276 | GSM.printf("0011000A91"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 277 | for (i=0 ;i<=9;i++) |
procesadores_FAC | 0:b2a6aa7c0c8c | 278 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 279 | pc.printf("%c",Tel[i]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 280 | GSM.printf("%c",Tel[i]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 281 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 282 | pc.printf("10000AA"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 283 | GSM.printf("0000AA"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 284 | pc.printf("31"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 285 | GSM.printf("31"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 286 | |
procesadores_FAC | 0:b2a6aa7c0c8c | 287 | for (ioct=0;ioct<=((LENOUToct*7)/8);ioct++) |
procesadores_FAC | 0:b2a6aa7c0c8c | 288 | { |
procesadores_FAC | 0:b2a6aa7c0c8c | 289 | pc.printf("%02X",DSoct[ioct]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 290 | GSM.printf("%02X",DSoct[ioct]); |
procesadores_FAC | 0:b2a6aa7c0c8c | 291 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 292 | wait(0.5); |
procesadores_FAC | 0:b2a6aa7c0c8c | 293 | GSM.putc((char)0x1A); |
procesadores_FAC | 0:b2a6aa7c0c8c | 294 | GSM.scanf("%s",buf); |
procesadores_FAC | 0:b2a6aa7c0c8c | 295 | GSM.scanf("%s",buf); |
procesadores_FAC | 0:b2a6aa7c0c8c | 296 | GSM.scanf("%s",buf); |
procesadores_FAC | 0:b2a6aa7c0c8c | 297 | //GSM.scanf("%s",buf); |
procesadores_FAC | 0:b2a6aa7c0c8c | 298 | pc.printf(">%s\n",buf); |
procesadores_FAC | 0:b2a6aa7c0c8c | 299 | pc.printf("\n"); |
procesadores_FAC | 0:b2a6aa7c0c8c | 300 | |
AaronGonzalez | 1:e2bd083802c0 | 301 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 302 | } |
AaronGonzalez | 1:e2bd083802c0 | 303 | //Si el mensaje recibido fue OFF... |
procesadores_FAC | 0:b2a6aa7c0c8c | 304 | if(DS[0]-79==0 && DS[1]-102==0) // Off en octetos es 4F6666 |
procesadores_FAC | 0:b2a6aa7c0c8c | 305 | { |
AaronGonzalez | 1:e2bd083802c0 | 306 | //Secuencia de apagado |
AaronGonzalez | 1:e2bd083802c0 | 307 | LedAzul=1; |
procesadores_FAC | 0:b2a6aa7c0c8c | 308 | LedVerde = 0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 309 | LedRojo=1; |
procesadores_FAC | 0:b2a6aa7c0c8c | 310 | } |
AaronGonzalez | 1:e2bd083802c0 | 311 | //Si el mensaje recibido fue ON... |
procesadores_FAC | 0:b2a6aa7c0c8c | 312 | if(DS[0]-71==0 && DS[1]-110==0) // On en octetos es 476E |
procesadores_FAC | 0:b2a6aa7c0c8c | 313 | { |
AaronGonzalez | 1:e2bd083802c0 | 314 | //Secuencia de apagado |
AaronGonzalez | 1:e2bd083802c0 | 315 | LedAzul=1; |
procesadores_FAC | 0:b2a6aa7c0c8c | 316 | LedRojo =0; |
procesadores_FAC | 0:b2a6aa7c0c8c | 317 | LedVerde = 1; |
procesadores_FAC | 0:b2a6aa7c0c8c | 318 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 319 | } |
procesadores_FAC | 0:b2a6aa7c0c8c | 320 | } |
AaronGonzalez | 1:e2bd083802c0 | 321 | } |