Rastreador satelital por mensajes de texto SMS

Dependencies:   GPS mbed

Committer:
satelite
Date:
Wed May 25 23:20:17 2016 +0000
Revision:
0:e48cba9116f6
Rastreador satelital por mensajes de texto SMS

Who changed what in which revision?

UserRevisionLine numberNew contents of line
satelite 0:e48cba9116f6 1 /*Tarea_GSM_GPS
satelite 0:e48cba9116f6 2 Sistema de ubicacion basado en un receptor GPS y un celular siemens a56
satelite 0:e48cba9116f6 3 como modem GSM.
satelite 0:e48cba9116f6 4 El sistema recibe un mensaje de texto, lo procesa y si el mensaje recibido corresponde
satelite 0:e48cba9116f6 5 con el codigo almacenado en el microcontrolador, este procede a enviar un mensaje de texto
satelite 0:e48cba9116f6 6 con la ubicacion actual.
satelite 0:e48cba9116f6 7 */
satelite 0:e48cba9116f6 8
satelite 0:e48cba9116f6 9 #include "mbed.h"
satelite 0:e48cba9116f6 10 #include "iostream"
satelite 0:e48cba9116f6 11 #include "GPS.h"
satelite 0:e48cba9116f6 12
satelite 0:e48cba9116f6 13 // Configuracion de los puertos del microcontrolador
satelite 0:e48cba9116f6 14 Serial gsm(PTE0, PTE1); // puerto serie para la comunicacíón GSM
satelite 0:e48cba9116f6 15 Serial pc(USBTX, USBRX); // puerto serie para debug
satelite 0:e48cba9116f6 16 GPS gps(PTD7, PTD6); // puerto para comunicacion GPS
satelite 0:e48cba9116f6 17
satelite 0:e48cba9116f6 18 // Declaracion de variables globales
satelite 0:e48cba9116f6 19 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
satelite 0:e48cba9116f6 20 int i, k, c, w, r, ta, tam, lenOUT, lenIN; // variables auxiliares
satelite 0:e48cba9116f6 21 float lon, lat; // variables para almacenar coordenadas
satelite 0:e48cba9116f6 22 char link[]= {"http://maps.google.com/?q="}; // inicio trama mensaje
satelite 0:e48cba9116f6 23
satelite 0:e48cba9116f6 24 // Rutina principal
satelite 0:e48cba9116f6 25 int main()
satelite 0:e48cba9116f6 26 {
satelite 0:e48cba9116f6 27 pc.printf("######################### INICIO DEL PROGRAMA #########################"); // mensaje de bienvenida debug
satelite 0:e48cba9116f6 28 // Establecimiento de la comunicacion con el modem del telefono movil
satelite 0:e48cba9116f6 29 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>> Configurando SIEMENS A56i <<<<<<<<<<<<<<<<<<<<<<\r\n"); // mensaje debug
satelite 0:e48cba9116f6 30 gsm.baud(9600);
satelite 0:e48cba9116f6 31 gsm.format(8,Serial::None,1);
satelite 0:e48cba9116f6 32 std::string strOK ("OK");
satelite 0:e48cba9116f6 33 pc.printf("\r\n Enviamos AT \r\n"); // prueba comunicacion con el movil
satelite 0:e48cba9116f6 34 gsm.printf("AT\r\n");
satelite 0:e48cba9116f6 35 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 36 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 37 pc.printf("%s\n",buffer);
satelite 0:e48cba9116f6 38
satelite 0:e48cba9116f6 39 if(strOK.compare(buffer) != 0) {
satelite 0:e48cba9116f6 40 pc.printf("\r\nModem GSM no responde\r\n");
satelite 0:e48cba9116f6 41 }
satelite 0:e48cba9116f6 42
satelite 0:e48cba9116f6 43 gsm.printf("\n AT+CNMI=1,1\r\n"); // Selecciona la memoria de la simcard
satelite 0:e48cba9116f6 44 pc.printf("AT+CNMI=1,1\r\n");
satelite 0:e48cba9116f6 45 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 46 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 47 pc.printf(">%s\n",buffer);
satelite 0:e48cba9116f6 48 if(strOK.compare(buffer) != 0) {
satelite 0:e48cba9116f6 49 pc.printf("\r\nModem GSM no responde\r\n");
satelite 0:e48cba9116f6 50 }
satelite 0:e48cba9116f6 51
satelite 0:e48cba9116f6 52 gsm.printf("\n AT+CPMS= \"SM\",\"SM\",\"SM\"\r\n"); //
satelite 0:e48cba9116f6 53 pc.printf("AT+CPMS= \"SM\",\"SM\",\"SM\"\n");
satelite 0:e48cba9116f6 54 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 55 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 56 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 57 pc.printf(">%s\n",buffer);
satelite 0:e48cba9116f6 58 wait(1);
satelite 0:e48cba9116f6 59
satelite 0:e48cba9116f6 60 gsm.printf("\n AT+CMGF=0\r\n"); // Configura modo PDU
satelite 0:e48cba9116f6 61 pc.printf("AT+CMGF=0\r\n");
satelite 0:e48cba9116f6 62 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 63 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 64 pc.printf(">%s\n",buffer);
satelite 0:e48cba9116f6 65
satelite 0:e48cba9116f6 66 if(strOK.compare(buffer) != 0) {
satelite 0:e48cba9116f6 67 pc.printf("\r\nModem GSM no responde\r\n");
satelite 0:e48cba9116f6 68 }
satelite 0:e48cba9116f6 69
satelite 0:e48cba9116f6 70 pc.printf("\n CBST=0,0,1\r\n");
satelite 0:e48cba9116f6 71 gsm.printf("CBST=0,0,1\r\n"); // en espera de mensajes entrantes
satelite 0:e48cba9116f6 72
satelite 0:e48cba9116f6 73 if(gps.sample()) {
satelite 0:e48cba9116f6 74 pc.printf("Estamos en %f, %f\r\n", gps.latitude, gps.longitude+50); // muestro la ubicacion actual, para saber si el GPS esta recibiendo
satelite 0:e48cba9116f6 75 } else {
satelite 0:e48cba9116f6 76 pc.printf("no se donde!:(\r\n");
satelite 0:e48cba9116f6 77 }
satelite 0:e48cba9116f6 78
satelite 0:e48cba9116f6 79 // Ciclo infinito
satelite 0:e48cba9116f6 80 while(1) {
satelite 0:e48cba9116f6 81
satelite 0:e48cba9116f6 82 pc.printf("\r\n>>>>>>>>>>>>>>>>>> Esperando nuevo mensaje de texto <<<<<<<<<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 83 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 84 pc.printf("%s",buffer);
satelite 0:e48cba9116f6 85 i = strlen(buffer);
satelite 0:e48cba9116f6 86
satelite 0:e48cba9116f6 87 if(i>3) { // si reciba un mensaje
satelite 0:e48cba9116f6 88 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nuevo mensaje <<<<<<<<<<<<<<<<<<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 89 gsm.printf("AT+CMGR=1\r\n"); // lee menjsae en la primera posicion de memoria
satelite 0:e48cba9116f6 90 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 91 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 92 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 93 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 94 pc.printf(">%s \r\n",buffer); // imprime la cadena PDU del mensaje
satelite 0:e48cba9116f6 95 tam = strlen(buffer); // longitud del mensaje leido
satelite 0:e48cba9116f6 96 pc.printf("\r\nLectura de la trama PDU: %d\r\n", tam); // separa la trama pdu para extraer informacion necesaria
satelite 0:e48cba9116f6 97 Ctamanosms[0] = buffer[0]; // tamaño en septetos de toda la trama pdu
satelite 0:e48cba9116f6 98 Ctamanosms[1] = buffer[1];
satelite 0:e48cba9116f6 99 pc.printf("\r\nLongitud del mensaje en septetos %c%c en septetos \n", Ctamanosms[0], Ctamanosms[1]);
satelite 0:e48cba9116f6 100 Ctiposmsc[0] = buffer[2];
satelite 0:e48cba9116f6 101 Ctiposmsc[1] = buffer[3];
satelite 0:e48cba9116f6 102 pc.printf("\r\nTipo de direccion SMSC %c%c \r\n", Ctiposmsc[0], Ctiposmsc[1]);
satelite 0:e48cba9116f6 103 Csmscnumber[0] = buffer[4];
satelite 0:e48cba9116f6 104 Csmscnumber[1] = buffer[5];
satelite 0:e48cba9116f6 105 Csmscnumber[2] = buffer[6];
satelite 0:e48cba9116f6 106 Csmscnumber[3] = buffer[7];
satelite 0:e48cba9116f6 107 Csmscnumber[4] = buffer[8];
satelite 0:e48cba9116f6 108 Csmscnumber[5] = buffer[9];
satelite 0:e48cba9116f6 109 Csmscnumber[6] = buffer[10];
satelite 0:e48cba9116f6 110 Csmscnumber[7] = buffer[11];
satelite 0:e48cba9116f6 111 Csmscnumber[8] = buffer[12];
satelite 0:e48cba9116f6 112 Csmscnumber[9] = buffer[13];
satelite 0:e48cba9116f6 113 Csmscnumber[10] = buffer[14];
satelite 0:e48cba9116f6 114 Csmscnumber[11] = buffer[15];
satelite 0:e48cba9116f6 115 pc.printf("\r\nNumero del SMSC %s \r\n", Csmscnumber);
satelite 0:e48cba9116f6 116 Cdeliver[0] = buffer[16];
satelite 0:e48cba9116f6 117 Cdeliver[1] = buffer[17];
satelite 0:e48cba9116f6 118 Ctamanoaddress[0] = buffer[18];
satelite 0:e48cba9116f6 119 Ctamanoaddress[1] = buffer[19];
satelite 0:e48cba9116f6 120 Ctipoaddress[0] = buffer[20];
satelite 0:e48cba9116f6 121 Ctipoaddress[1] = buffer[21];
satelite 0:e48cba9116f6 122 Cnumero[0] = buffer[22]; // Numero del usuario
satelite 0:e48cba9116f6 123 Cnumero[1] = buffer[23];
satelite 0:e48cba9116f6 124 Cnumero[2] = buffer[24];
satelite 0:e48cba9116f6 125 Cnumero[3] = buffer[25];
satelite 0:e48cba9116f6 126 Cnumero[4] = buffer[26];
satelite 0:e48cba9116f6 127 Cnumero[5] = buffer[27];
satelite 0:e48cba9116f6 128 Cnumero[6] = buffer[28];
satelite 0:e48cba9116f6 129 Cnumero[7] = buffer[29];
satelite 0:e48cba9116f6 130 Cnumero[8] = buffer[30];
satelite 0:e48cba9116f6 131 Cnumero[9] = buffer[31];
satelite 0:e48cba9116f6 132 Cnumero[10] = buffer[32];
satelite 0:e48cba9116f6 133 Cnumero[11] = buffer[33];
satelite 0:e48cba9116f6 134 Xnumero[0] = buffer[23];
satelite 0:e48cba9116f6 135 Xnumero[1] = buffer[22];
satelite 0:e48cba9116f6 136 Xnumero[2] = buffer[25];
satelite 0:e48cba9116f6 137 Xnumero[3] = buffer[24];
satelite 0:e48cba9116f6 138 Xnumero[4] = buffer[27];
satelite 0:e48cba9116f6 139 Xnumero[5] = buffer[26];
satelite 0:e48cba9116f6 140 Xnumero[6] = buffer[29];
satelite 0:e48cba9116f6 141 Xnumero[7] = buffer[28];
satelite 0:e48cba9116f6 142 Xnumero[8] = buffer[31];
satelite 0:e48cba9116f6 143 Xnumero[9] = buffer[30];
satelite 0:e48cba9116f6 144 pc.printf("\r\nNumero del usuario %s \r\n", Xnumero);
satelite 0:e48cba9116f6 145 Cprotocolo[0] = buffer[34]; // protocolo
satelite 0:e48cba9116f6 146 Cprotocolo[1] = buffer[35];
satelite 0:e48cba9116f6 147 Cencoding[0] = buffer[36]; // cifrado
satelite 0:e48cba9116f6 148 Cencoding[1] = buffer[37];
satelite 0:e48cba9116f6 149 Ctime[0] = buffer[38]; // Tiempo envio mensaje
satelite 0:e48cba9116f6 150 Ctime[1] = buffer[39];
satelite 0:e48cba9116f6 151 Ctime[2] = buffer[40];
satelite 0:e48cba9116f6 152 Ctime[3] = buffer[41];
satelite 0:e48cba9116f6 153 Ctime[4] = buffer[42];
satelite 0:e48cba9116f6 154 Ctime[5] = buffer[43];
satelite 0:e48cba9116f6 155 Ctime[6] = buffer[44];
satelite 0:e48cba9116f6 156 Ctime[7] = buffer[45];
satelite 0:e48cba9116f6 157 Ctime[8] = buffer[46];
satelite 0:e48cba9116f6 158 Ctime[9] = buffer[47];
satelite 0:e48cba9116f6 159 Ctime[10] = buffer[48];
satelite 0:e48cba9116f6 160 Ctime[11] = buffer[49];
satelite 0:e48cba9116f6 161 Ctime[12] = buffer[50];
satelite 0:e48cba9116f6 162 Ctime[13] = buffer[51];
satelite 0:e48cba9116f6 163 Ctamano[0]= buffer[50]; // longitud de la parte legible
satelite 0:e48cba9116f6 164 Ctamano[1]= buffer[51];
satelite 0:e48cba9116f6 165 ta = (Ctamano[0]-48)*16+(Ctamano[1]-48);
satelite 0:e48cba9116f6 166 pc.printf("\r\nNumero de caracteres del mensaje entrante %d \r\n", ta);
satelite 0:e48cba9116f6 167 pc.printf("\r\nPosicion de los datos en el mensaje PDU %d \r\n", tam-2*ta); // posicion de los datos en la trama pdu
satelite 0:e48cba9116f6 168 for(i = 0; i < 2*ta; i++) { //Toma de los datos o mensaje
satelite 0:e48cba9116f6 169 Cdato[i] = buffer[52+i];
satelite 0:e48cba9116f6 170 }
satelite 0:e48cba9116f6 171 // Inicia la convercion de PDU a Texto
satelite 0:e48cba9116f6 172 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>> Convirtiendo de PDU a texto <<<<<<<<<<<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 173 lenIN = strlen(Cdato)/2;
satelite 0:e48cba9116f6 174 w = 0;
satelite 0:e48cba9116f6 175 pc.printf("\r\nTamano de los datos %d \r\n", strlen(Cdato));
satelite 0:e48cba9116f6 176 for(i = 0; i <= strlen(Cdato); i++) {
satelite 0:e48cba9116f6 177 if(i%2==0) {
satelite 0:e48cba9116f6 178 if(Cdato[i]>47 & Cdato[i]<58) { // primero se asigna el valor numerico de cada caracter en caso de ser 0-9 se le resta 48 en caso de ser letra se le resta 55
satelite 0:e48cba9116f6 179 Cdato[i] = Cdato[i]-48;
satelite 0:e48cba9116f6 180 }
satelite 0:e48cba9116f6 181
satelite 0:e48cba9116f6 182 if(Cdato[i]>65 & Cdato[i]<71) {
satelite 0:e48cba9116f6 183 Cdato[i] = Cdato[i]-55;
satelite 0:e48cba9116f6 184
satelite 0:e48cba9116f6 185 }
satelite 0:e48cba9116f6 186
satelite 0:e48cba9116f6 187 } else {
satelite 0:e48cba9116f6 188 if(Cdato[i]>47 & Cdato[i]<58) {
satelite 0:e48cba9116f6 189 Cdato[i] = Cdato[i]-48;
satelite 0:e48cba9116f6 190 }
satelite 0:e48cba9116f6 191
satelite 0:e48cba9116f6 192 if(Cdato[i]>65 & Cdato[i]<71) {
satelite 0:e48cba9116f6 193 Cdato[i] = Cdato[i]-55;
satelite 0:e48cba9116f6 194
satelite 0:e48cba9116f6 195 }
satelite 0:e48cba9116f6 196
satelite 0:e48cba9116f6 197 dE[w] = Cdato[i-1]*16+Cdato[i];
satelite 0:e48cba9116f6 198 pc.printf("\r\nDatos en hexagesimal DE[%d] %2X \r\n", w, dE[w]); // Se guarda la dupla en el vector dE
satelite 0:e48cba9116f6 199 w++;
satelite 0:e48cba9116f6 200 }
satelite 0:e48cba9116f6 201 }
satelite 0:e48cba9116f6 202 lenOUT = lenIN*8/7;
satelite 0:e48cba9116f6 203 k = 7;
satelite 0:e48cba9116f6 204 c = 0;
satelite 0:e48cba9116f6 205 dS[0] = dE[0] & 0x7F;
satelite 0:e48cba9116f6 206 pc.printf("%2X,%d,%d\r\n",dS[0],i,k);
satelite 0:e48cba9116f6 207 for (i = 1; i < lenOUT; i++) { // inicia el algoritmo
satelite 0:e48cba9116f6 208 dS[i] = (dE[i-1-c]>>k | dE[i-c]<<(8-k))& 0x7F;
satelite 0:e48cba9116f6 209 pc.printf("%2X,%d,%d\r\n",dS[i],i,k);
satelite 0:e48cba9116f6 210 if (k==0) {
satelite 0:e48cba9116f6 211 k = 8;
satelite 0:e48cba9116f6 212 c++;
satelite 0:e48cba9116f6 213 }
satelite 0:e48cba9116f6 214 k--;
satelite 0:e48cba9116f6 215 }
satelite 0:e48cba9116f6 216 pc.printf("\r\nMensaje entrante: ");
satelite 0:e48cba9116f6 217 for (i = 0; i < lenOUT; i++) {
satelite 0:e48cba9116f6 218 pc.printf("%c",dS[i]);
satelite 0:e48cba9116f6 219 }
satelite 0:e48cba9116f6 220 pc.printf("\r\n>>>>>>>>>>> Termina convercion de los datos de PDU a texto <<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 221 }
satelite 0:e48cba9116f6 222
satelite 0:e48cba9116f6 223 std::string strC ("Coordenada"); // cadenas para comparar el mensaje recibido
satelite 0:e48cba9116f6 224
satelite 0:e48cba9116f6 225 if(strC.compare(dS) == 0) { // En caso de que se pidan las coordenadas
satelite 0:e48cba9116f6 226 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>> Recibido: Coordenada <<<<<<<<<<<<<<<<<<<<<<<<<\n");
satelite 0:e48cba9116f6 227 pc.printf("\r\nEsperando GPS \r\n");
satelite 0:e48cba9116f6 228
satelite 0:e48cba9116f6 229 while(1) {
satelite 0:e48cba9116f6 230 i = 0;
satelite 0:e48cba9116f6 231 if(gps.sample() && i == 0) {
satelite 0:e48cba9116f6 232 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Leyendo GPS <<<<<<<<<<<<<<<<<<<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 233 //Toma de datos del gps y concatenacion para armar los datos.
satelite 0:e48cba9116f6 234 lon = gps.longitude+50;
satelite 0:e48cba9116f6 235 lat = gps.latitude;
satelite 0:e48cba9116f6 236 sprintf(vector1, "%f", lat);
satelite 0:e48cba9116f6 237 strcat(link,vector1);
satelite 0:e48cba9116f6 238 strcat(link,",");
satelite 0:e48cba9116f6 239 sprintf(vector2, "%f", lon);
satelite 0:e48cba9116f6 240 strcat(link,vector2);
satelite 0:e48cba9116f6 241 strcat(dEs,link);
satelite 0:e48cba9116f6 242 pc.printf("%s\n",link);
satelite 0:e48cba9116f6 243 // Conversion de los datos "link" a formato PDU
satelite 0:e48cba9116f6 244 lenIN = strlen(dEs);
satelite 0:e48cba9116f6 245 k = 0;
satelite 0:e48cba9116f6 246 c = 0;
satelite 0:e48cba9116f6 247 for (i = 0; i < lenIN; i++) {
satelite 0:e48cba9116f6 248 dSs[i] = dEs[i+c]>>k | dEs[i+c+1]<<(7-k);
satelite 0:e48cba9116f6 249 if (dSs[i]==0x00) {
satelite 0:e48cba9116f6 250 lenOUT = i;
satelite 0:e48cba9116f6 251 goto salir;
satelite 0:e48cba9116f6 252 }
satelite 0:e48cba9116f6 253 k++;
satelite 0:e48cba9116f6 254 if (k==7) {
satelite 0:e48cba9116f6 255 k = 0;
satelite 0:e48cba9116f6 256 c++;
satelite 0:e48cba9116f6 257 }
satelite 0:e48cba9116f6 258 }
satelite 0:e48cba9116f6 259
satelite 0:e48cba9116f6 260 salir:
satelite 0:e48cba9116f6 261 pc.printf("DEs\n");
satelite 0:e48cba9116f6 262 for (i = 0; i < lenIN; i++) {
satelite 0:e48cba9116f6 263 pc.printf("%X",dEs[i]);
satelite 0:e48cba9116f6 264 }
satelite 0:e48cba9116f6 265 pc.printf("\n DSs \n");
satelite 0:e48cba9116f6 266 for (i = 0; i<lenOUT; i++) {
satelite 0:e48cba9116f6 267 pc.printf("%02X",dSs[i]&0x000000FF);
satelite 0:e48cba9116f6 268 }
satelite 0:e48cba9116f6 269
satelite 0:e48cba9116f6 270 pc.printf("\n lenOUT:%d,lenIN:%d\r\n",lenOUT,strlen(dEs));
satelite 0:e48cba9116f6 271 pc.printf("\r\n>>>>>>>>>>>>>>>>> Comienza el envio del mensaje SMS <<<<<<<<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 272
satelite 0:e48cba9116f6 273 if(lenOUT%2==0) {
satelite 0:e48cba9116f6 274 w = 27;
satelite 0:e48cba9116f6 275 } else {
satelite 0:e48cba9116f6 276 w = 26;
satelite 0:e48cba9116f6 277 }
satelite 0:e48cba9116f6 278 gsm.printf("AT+CMGS=%d\r\n", ((2*lenOUT)+w)/2); // Inicia envio del mensaje
satelite 0:e48cba9116f6 279 pc.printf("\n AT+CMGS=%d\r\n", ((2*lenOUT)+w)/2);
satelite 0:e48cba9116f6 280 wait(0.5);
satelite 0:e48cba9116f6 281
satelite 0:e48cba9116f6 282 gsm.printf("0011000A91"); // relleno inicial
satelite 0:e48cba9116f6 283 pc.printf("0011000A91");
satelite 0:e48cba9116f6 284
satelite 0:e48cba9116f6 285
satelite 0:e48cba9116f6 286 for(i = 0; i < 11; i++) { // numero de destino
satelite 0:e48cba9116f6 287 gsm.printf("%c", Cnumero[i]);
satelite 0:e48cba9116f6 288 pc.printf("%c", Cnumero[i]);
satelite 0:e48cba9116f6 289
satelite 0:e48cba9116f6 290 }
satelite 0:e48cba9116f6 291
satelite 0:e48cba9116f6 292 gsm.printf("000AA"); // segundo relleno
satelite 0:e48cba9116f6 293 pc.printf("000AA");
satelite 0:e48cba9116f6 294
satelite 0:e48cba9116f6 295 gsm.printf("%2X",lenIN); // longitud de los datos
satelite 0:e48cba9116f6 296 pc.printf("%2X",lenIN);
satelite 0:e48cba9116f6 297
satelite 0:e48cba9116f6 298
satelite 0:e48cba9116f6 299 for (i = 0; i < lenOUT; i++) {
satelite 0:e48cba9116f6 300 gsm.printf("%02X",dSs[i]&0x000000FF);
satelite 0:e48cba9116f6 301 pc.printf("%02X",dSs[i]&0x000000FF);
satelite 0:e48cba9116f6 302 wait(0.1);
satelite 0:e48cba9116f6 303 }
satelite 0:e48cba9116f6 304 gsm.putc((char)0x1A);
satelite 0:e48cba9116f6 305 gsm.scanf("%s",buffer); // lectura respuesta del modem
satelite 0:e48cba9116f6 306 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 307 pc.printf("\r\nRespuesta movil: %s \r\n",buffer);
satelite 0:e48cba9116f6 308 i = 1;
satelite 0:e48cba9116f6 309 gsm.printf("AT+CMGD=1\r\n");
satelite 0:e48cba9116f6 310
satelite 0:e48cba9116f6 311 for(i = 26; i <= strlen(link); i++) {
satelite 0:e48cba9116f6 312 link[i] = NULL;
satelite 0:e48cba9116f6 313
satelite 0:e48cba9116f6 314 }
satelite 0:e48cba9116f6 315
satelite 0:e48cba9116f6 316 for(i = 0; i <= 255; i++) {
satelite 0:e48cba9116f6 317 dSs[i] = NULL;
satelite 0:e48cba9116f6 318 dEs[i] = NULL;
satelite 0:e48cba9116f6 319 }
satelite 0:e48cba9116f6 320
satelite 0:e48cba9116f6 321 pc.printf("\r\n Se sale de while para la lectura de gps \r\n ");
satelite 0:e48cba9116f6 322 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 323 pc.printf(">%s",buffer);
satelite 0:e48cba9116f6 324 goto xt;
satelite 0:e48cba9116f6 325 }
satelite 0:e48cba9116f6 326 }
satelite 0:e48cba9116f6 327 }
satelite 0:e48cba9116f6 328
satelite 0:e48cba9116f6 329 if(strC.compare(dS) != 0) {
satelite 0:e48cba9116f6 330 pc.printf("\r\nMensaje no valido\r\n");
satelite 0:e48cba9116f6 331 gsm.printf("AT+CMGD=1\r\n"); // Borrar el mensaje
satelite 0:e48cba9116f6 332 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 333 pc.printf("\n%s\n",buffer);
satelite 0:e48cba9116f6 334 }
satelite 0:e48cba9116f6 335
satelite 0:e48cba9116f6 336 xt:
satelite 0:e48cba9116f6 337 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 338 pc.printf("%s",buffer);
satelite 0:e48cba9116f6 339 }
satelite 0:e48cba9116f6 340 }