Tarea 6 Gps

Dependencies:   GPS mbed

Fork of Tarea6_Gsm_gps by Camilo Londoño

Committer:
jclondonol
Date:
Tue Jun 05 17:15:10 2018 +0000
Revision:
2:20facdf67dcf
Parent:
1:e72724565122
listo

Who changed what in which revision?

UserRevisionLine numberNew contents of line
satelite 0:e48cba9116f6 1
satelite 0:e48cba9116f6 2 #include "mbed.h"
satelite 0:e48cba9116f6 3 #include "iostream"
satelite 0:e48cba9116f6 4 #include "GPS.h"
satelite 0:e48cba9116f6 5
satelite 0:e48cba9116f6 6 // Configuracion de los puertos del microcontrolador
jclondonol 1:e72724565122 7 Serial gsm(PTE22, PTE23); // puerto serie para la comunicacíón GSM
satelite 0:e48cba9116f6 8 Serial pc(USBTX, USBRX); // puerto serie para debug
jclondonol 1:e72724565122 9 GPS gps(PTE0, PTE1); // puerto para comunicacion GPS
satelite 0:e48cba9116f6 10
satelite 0:e48cba9116f6 11 // Declaracion de variables globales
jclondonol 1:e72724565122 12 char buffer[200], pdu[] = "", vector1[] = "", vector2[] = "", dE[255], dS[255], dEs[255], dSs[255];
jclondonol 1:e72724565122 13 char Ctamanosms[1], Ctiposmsc[1], Csmscnumber[12], Cdeliver[1];
jclondonol 1:e72724565122 14 char Ctamanoaddress[1], Ctipoaddress[1], Cnumero[12], Cprotocolo[1], Cencoding[1];
jclondonol 1:e72724565122 15 char Ctime[14], Ctamano[1], Cdato[30], Xnumero[10];
satelite 0:e48cba9116f6 16 int i, k, c, w, r, ta, tam, lenOUT, lenIN; // variables auxiliares
satelite 0:e48cba9116f6 17 float lon, lat; // variables para almacenar coordenadas
satelite 0:e48cba9116f6 18 char link[]= {"http://maps.google.com/?q="}; // inicio trama mensaje
satelite 0:e48cba9116f6 19
satelite 0:e48cba9116f6 20 // Rutina principal
satelite 0:e48cba9116f6 21 int main()
satelite 0:e48cba9116f6 22 {
jclondonol 1:e72724565122 23 pc.printf("###ss###################### INICIO DEL PROGRAMA #########################"); // mensaje de bienvenida debug
satelite 0:e48cba9116f6 24 // Establecimiento de la comunicacion con el modem del telefono movil
satelite 0:e48cba9116f6 25 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>> Configurando SIEMENS A56i <<<<<<<<<<<<<<<<<<<<<<\r\n"); // mensaje debug
satelite 0:e48cba9116f6 26 gsm.baud(9600);
satelite 0:e48cba9116f6 27 gsm.format(8,Serial::None,1);
satelite 0:e48cba9116f6 28 std::string strOK ("OK");
satelite 0:e48cba9116f6 29 pc.printf("\r\n Enviamos AT \r\n"); // prueba comunicacion con el movil
satelite 0:e48cba9116f6 30 gsm.printf("AT\r\n");
satelite 0:e48cba9116f6 31 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 32 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 33 pc.printf("%s\n",buffer);
satelite 0:e48cba9116f6 34
satelite 0:e48cba9116f6 35 if(strOK.compare(buffer) != 0) {
satelite 0:e48cba9116f6 36 pc.printf("\r\nModem GSM no responde\r\n");
satelite 0:e48cba9116f6 37 }
satelite 0:e48cba9116f6 38
satelite 0:e48cba9116f6 39 gsm.printf("\n AT+CNMI=1,1\r\n"); // Selecciona la memoria de la simcard
satelite 0:e48cba9116f6 40 pc.printf("AT+CNMI=1,1\r\n");
satelite 0:e48cba9116f6 41 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 42 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 43 pc.printf(">%s\n",buffer);
satelite 0:e48cba9116f6 44 if(strOK.compare(buffer) != 0) {
satelite 0:e48cba9116f6 45 pc.printf("\r\nModem GSM no responde\r\n");
satelite 0:e48cba9116f6 46 }
satelite 0:e48cba9116f6 47
satelite 0:e48cba9116f6 48 gsm.printf("\n AT+CPMS= \"SM\",\"SM\",\"SM\"\r\n"); //
satelite 0:e48cba9116f6 49 pc.printf("AT+CPMS= \"SM\",\"SM\",\"SM\"\n");
satelite 0:e48cba9116f6 50 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 51 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 52 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 53 pc.printf(">%s\n",buffer);
satelite 0:e48cba9116f6 54 wait(1);
satelite 0:e48cba9116f6 55
satelite 0:e48cba9116f6 56 gsm.printf("\n AT+CMGF=0\r\n"); // Configura modo PDU
satelite 0:e48cba9116f6 57 pc.printf("AT+CMGF=0\r\n");
satelite 0:e48cba9116f6 58 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 59 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 60 pc.printf(">%s\n",buffer);
satelite 0:e48cba9116f6 61
satelite 0:e48cba9116f6 62 if(strOK.compare(buffer) != 0) {
satelite 0:e48cba9116f6 63 pc.printf("\r\nModem GSM no responde\r\n");
satelite 0:e48cba9116f6 64 }
satelite 0:e48cba9116f6 65
satelite 0:e48cba9116f6 66 pc.printf("\n CBST=0,0,1\r\n");
satelite 0:e48cba9116f6 67 gsm.printf("CBST=0,0,1\r\n"); // en espera de mensajes entrantes
satelite 0:e48cba9116f6 68
satelite 0:e48cba9116f6 69 if(gps.sample()) {
jclondonol 2:20facdf67dcf 70 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 71 } else {
satelite 0:e48cba9116f6 72 pc.printf("no se donde!:(\r\n");
satelite 0:e48cba9116f6 73 }
satelite 0:e48cba9116f6 74
satelite 0:e48cba9116f6 75 // Ciclo infinito
satelite 0:e48cba9116f6 76 while(1) {
satelite 0:e48cba9116f6 77
satelite 0:e48cba9116f6 78 pc.printf("\r\n>>>>>>>>>>>>>>>>>> Esperando nuevo mensaje de texto <<<<<<<<<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 79 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 80 pc.printf("%s",buffer);
satelite 0:e48cba9116f6 81 i = strlen(buffer);
satelite 0:e48cba9116f6 82
satelite 0:e48cba9116f6 83 if(i>3) { // si reciba un mensaje
satelite 0:e48cba9116f6 84 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>>>>>> Nuevo mensaje <<<<<<<<<<<<<<<<<<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 85 gsm.printf("AT+CMGR=1\r\n"); // lee menjsae en la primera posicion de memoria
satelite 0:e48cba9116f6 86 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 87 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 88 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 89 gsm.scanf("%s",buffer);
satelite 0:e48cba9116f6 90 pc.printf(">%s \r\n",buffer); // imprime la cadena PDU del mensaje
satelite 0:e48cba9116f6 91 tam = strlen(buffer); // longitud del mensaje leido
satelite 0:e48cba9116f6 92 pc.printf("\r\nLectura de la trama PDU: %d\r\n", tam); // separa la trama pdu para extraer informacion necesaria
satelite 0:e48cba9116f6 93 Ctamanosms[0] = buffer[0]; // tamaño en septetos de toda la trama pdu
satelite 0:e48cba9116f6 94 Ctamanosms[1] = buffer[1];
satelite 0:e48cba9116f6 95 pc.printf("\r\nLongitud del mensaje en septetos %c%c en septetos \n", Ctamanosms[0], Ctamanosms[1]);
satelite 0:e48cba9116f6 96 Ctiposmsc[0] = buffer[2];
satelite 0:e48cba9116f6 97 Ctiposmsc[1] = buffer[3];
satelite 0:e48cba9116f6 98 pc.printf("\r\nTipo de direccion SMSC %c%c \r\n", Ctiposmsc[0], Ctiposmsc[1]);
satelite 0:e48cba9116f6 99 Csmscnumber[0] = buffer[4];
satelite 0:e48cba9116f6 100 Csmscnumber[1] = buffer[5];
satelite 0:e48cba9116f6 101 Csmscnumber[2] = buffer[6];
satelite 0:e48cba9116f6 102 Csmscnumber[3] = buffer[7];
satelite 0:e48cba9116f6 103 Csmscnumber[4] = buffer[8];
satelite 0:e48cba9116f6 104 Csmscnumber[5] = buffer[9];
satelite 0:e48cba9116f6 105 Csmscnumber[6] = buffer[10];
satelite 0:e48cba9116f6 106 Csmscnumber[7] = buffer[11];
satelite 0:e48cba9116f6 107 Csmscnumber[8] = buffer[12];
satelite 0:e48cba9116f6 108 Csmscnumber[9] = buffer[13];
satelite 0:e48cba9116f6 109 Csmscnumber[10] = buffer[14];
satelite 0:e48cba9116f6 110 Csmscnumber[11] = buffer[15];
satelite 0:e48cba9116f6 111 pc.printf("\r\nNumero del SMSC %s \r\n", Csmscnumber);
satelite 0:e48cba9116f6 112 Cdeliver[0] = buffer[16];
satelite 0:e48cba9116f6 113 Cdeliver[1] = buffer[17];
satelite 0:e48cba9116f6 114 Ctamanoaddress[0] = buffer[18];
satelite 0:e48cba9116f6 115 Ctamanoaddress[1] = buffer[19];
satelite 0:e48cba9116f6 116 Ctipoaddress[0] = buffer[20];
satelite 0:e48cba9116f6 117 Ctipoaddress[1] = buffer[21];
satelite 0:e48cba9116f6 118 Cnumero[0] = buffer[22]; // Numero del usuario
satelite 0:e48cba9116f6 119 Cnumero[1] = buffer[23];
satelite 0:e48cba9116f6 120 Cnumero[2] = buffer[24];
satelite 0:e48cba9116f6 121 Cnumero[3] = buffer[25];
satelite 0:e48cba9116f6 122 Cnumero[4] = buffer[26];
satelite 0:e48cba9116f6 123 Cnumero[5] = buffer[27];
satelite 0:e48cba9116f6 124 Cnumero[6] = buffer[28];
satelite 0:e48cba9116f6 125 Cnumero[7] = buffer[29];
satelite 0:e48cba9116f6 126 Cnumero[8] = buffer[30];
satelite 0:e48cba9116f6 127 Cnumero[9] = buffer[31];
satelite 0:e48cba9116f6 128 Cnumero[10] = buffer[32];
satelite 0:e48cba9116f6 129 Cnumero[11] = buffer[33];
satelite 0:e48cba9116f6 130 Xnumero[0] = buffer[23];
satelite 0:e48cba9116f6 131 Xnumero[1] = buffer[22];
satelite 0:e48cba9116f6 132 Xnumero[2] = buffer[25];
satelite 0:e48cba9116f6 133 Xnumero[3] = buffer[24];
satelite 0:e48cba9116f6 134 Xnumero[4] = buffer[27];
satelite 0:e48cba9116f6 135 Xnumero[5] = buffer[26];
satelite 0:e48cba9116f6 136 Xnumero[6] = buffer[29];
satelite 0:e48cba9116f6 137 Xnumero[7] = buffer[28];
satelite 0:e48cba9116f6 138 Xnumero[8] = buffer[31];
satelite 0:e48cba9116f6 139 Xnumero[9] = buffer[30];
satelite 0:e48cba9116f6 140 pc.printf("\r\nNumero del usuario %s \r\n", Xnumero);
satelite 0:e48cba9116f6 141 Cprotocolo[0] = buffer[34]; // protocolo
satelite 0:e48cba9116f6 142 Cprotocolo[1] = buffer[35];
satelite 0:e48cba9116f6 143 Cencoding[0] = buffer[36]; // cifrado
satelite 0:e48cba9116f6 144 Cencoding[1] = buffer[37];
satelite 0:e48cba9116f6 145 Ctime[0] = buffer[38]; // Tiempo envio mensaje
satelite 0:e48cba9116f6 146 Ctime[1] = buffer[39];
satelite 0:e48cba9116f6 147 Ctime[2] = buffer[40];
satelite 0:e48cba9116f6 148 Ctime[3] = buffer[41];
satelite 0:e48cba9116f6 149 Ctime[4] = buffer[42];
satelite 0:e48cba9116f6 150 Ctime[5] = buffer[43];
satelite 0:e48cba9116f6 151 Ctime[6] = buffer[44];
satelite 0:e48cba9116f6 152 Ctime[7] = buffer[45];
satelite 0:e48cba9116f6 153 Ctime[8] = buffer[46];
satelite 0:e48cba9116f6 154 Ctime[9] = buffer[47];
satelite 0:e48cba9116f6 155 Ctime[10] = buffer[48];
satelite 0:e48cba9116f6 156 Ctime[11] = buffer[49];
satelite 0:e48cba9116f6 157 Ctime[12] = buffer[50];
satelite 0:e48cba9116f6 158 Ctime[13] = buffer[51];
satelite 0:e48cba9116f6 159 Ctamano[0]= buffer[50]; // longitud de la parte legible
satelite 0:e48cba9116f6 160 Ctamano[1]= buffer[51];
satelite 0:e48cba9116f6 161 ta = (Ctamano[0]-48)*16+(Ctamano[1]-48);
satelite 0:e48cba9116f6 162 pc.printf("\r\nNumero de caracteres del mensaje entrante %d \r\n", ta);
satelite 0:e48cba9116f6 163 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 164 for(i = 0; i < 2*ta; i++) { //Toma de los datos o mensaje
satelite 0:e48cba9116f6 165 Cdato[i] = buffer[52+i];
satelite 0:e48cba9116f6 166 }
satelite 0:e48cba9116f6 167 // Inicia la convercion de PDU a Texto
satelite 0:e48cba9116f6 168 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>> Convirtiendo de PDU a texto <<<<<<<<<<<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 169 lenIN = strlen(Cdato)/2;
satelite 0:e48cba9116f6 170 w = 0;
satelite 0:e48cba9116f6 171 pc.printf("\r\nTamano de los datos %d \r\n", strlen(Cdato));
satelite 0:e48cba9116f6 172 for(i = 0; i <= strlen(Cdato); i++) {
satelite 0:e48cba9116f6 173 if(i%2==0) {
satelite 0:e48cba9116f6 174 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 175 Cdato[i] = Cdato[i]-48;
satelite 0:e48cba9116f6 176 }
satelite 0:e48cba9116f6 177
satelite 0:e48cba9116f6 178 if(Cdato[i]>65 & Cdato[i]<71) {
satelite 0:e48cba9116f6 179 Cdato[i] = Cdato[i]-55;
satelite 0:e48cba9116f6 180
satelite 0:e48cba9116f6 181 }
satelite 0:e48cba9116f6 182
satelite 0:e48cba9116f6 183 } else {
satelite 0:e48cba9116f6 184 if(Cdato[i]>47 & Cdato[i]<58) {
satelite 0:e48cba9116f6 185 Cdato[i] = Cdato[i]-48;
satelite 0:e48cba9116f6 186 }
satelite 0:e48cba9116f6 187
satelite 0:e48cba9116f6 188 if(Cdato[i]>65 & Cdato[i]<71) {
satelite 0:e48cba9116f6 189 Cdato[i] = Cdato[i]-55;
satelite 0:e48cba9116f6 190
satelite 0:e48cba9116f6 191 }
satelite 0:e48cba9116f6 192
satelite 0:e48cba9116f6 193 dE[w] = Cdato[i-1]*16+Cdato[i];
satelite 0:e48cba9116f6 194 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 195 w++;
satelite 0:e48cba9116f6 196 }
satelite 0:e48cba9116f6 197 }
satelite 0:e48cba9116f6 198 lenOUT = lenIN*8/7;
satelite 0:e48cba9116f6 199 k = 7;
satelite 0:e48cba9116f6 200 c = 0;
satelite 0:e48cba9116f6 201 dS[0] = dE[0] & 0x7F;
satelite 0:e48cba9116f6 202 pc.printf("%2X,%d,%d\r\n",dS[0],i,k);
satelite 0:e48cba9116f6 203 for (i = 1; i < lenOUT; i++) { // inicia el algoritmo
satelite 0:e48cba9116f6 204 dS[i] = (dE[i-1-c]>>k | dE[i-c]<<(8-k))& 0x7F;
satelite 0:e48cba9116f6 205 pc.printf("%2X,%d,%d\r\n",dS[i],i,k);
satelite 0:e48cba9116f6 206 if (k==0) {
satelite 0:e48cba9116f6 207 k = 8;
satelite 0:e48cba9116f6 208 c++;
satelite 0:e48cba9116f6 209 }
satelite 0:e48cba9116f6 210 k--;
satelite 0:e48cba9116f6 211 }
jclondonol 1:e72724565122 212 dS[10] = dS[10] + 112;
jclondonol 1:e72724565122 213
satelite 0:e48cba9116f6 214 pc.printf("\r\nMensaje entrante: ");
satelite 0:e48cba9116f6 215 for (i = 0; i < lenOUT; i++) {
satelite 0:e48cba9116f6 216 pc.printf("%c",dS[i]);
satelite 0:e48cba9116f6 217 }
satelite 0:e48cba9116f6 218 pc.printf("\r\n>>>>>>>>>>> Termina convercion de los datos de PDU a texto <<<<<<<<<<<<\r\n");
satelite 0:e48cba9116f6 219 }
jclondonol 1:e72724565122 220
jclondonol 1:e72724565122 221
jclondonol 1:e72724565122 222 std::string strC ("Coordenadas"); // cadenas para comparar el mensaje recibido
satelite 0:e48cba9116f6 223
satelite 0:e48cba9116f6 224 if(strC.compare(dS) == 0) { // En caso de que se pidan las coordenadas
satelite 0:e48cba9116f6 225 pc.printf("\r\n>>>>>>>>>>>>>>>>>>>>>>>> Recibido: Coordenada <<<<<<<<<<<<<<<<<<<<<<<<<\n");
satelite 0:e48cba9116f6 226 pc.printf("\r\nEsperando GPS \r\n");
satelite 0:e48cba9116f6 227
jclondonol 1:e72724565122 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.
jclondonol 2:20facdf67dcf 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
jclondonol 1:e72724565122 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
jclondonol 1:e72724565122 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]);
jclondonol 1:e72724565122 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
jclondonol 1:e72724565122 293 //pc.printf("000AA");
satelite 0:e48cba9116f6 294
satelite 0:e48cba9116f6 295 gsm.printf("%2X",lenIN); // longitud de los datos
jclondonol 1:e72724565122 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);
jclondonol 1:e72724565122 301 // pc.printf("%02X",dSs[i]&0x000000FF);
jclondonol 1:e72724565122 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);
jclondonol 1:e72724565122 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 }