ENVIA MENSAJE Y RESPONDE CON LINK DE GOOGLE MAPS, ENVIA ON PRENDE UN LED Y RESPONDE AL CELULAR Q SE ENCENDIO EL CARRO, ENVIA OFF APAGA LED Y RESPONDE ALCELULKAR QUE SE APAGO ELO CARRO

Dependencies:   DebouncedIn GPS7 mbed

Fork of CLASEDELGSM by Gustavo Ramirez

Committer:
asjgrupo4
Date:
Tue Jun 23 17:10:06 2015 +0000
Revision:
3:75c530fb1140
Parent:
2:ffcd0494ec92
modulo GSM envia Cord y responde con  un link de googlemaps

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tony63 0:edc50cf04b46 1 #include "mbed.h"
tony63 0:edc50cf04b46 2 #include "DebouncedIn.h"
tony63 0:edc50cf04b46 3 #include "stdio.h"
tony63 0:edc50cf04b46 4 #include "string.h"
asjgrupo4 3:75c530fb1140 5 #include "math.h"
asjgrupo4 3:75c530fb1140 6 #include "gprs.h"
asjgrupo4 2:ffcd0494ec92 7 #include "GPS.h"
asjgrupo4 3:75c530fb1140 8
tony63 0:edc50cf04b46 9 Timer t;
asjgrupo4 3:75c530fb1140 10 int readBuffer(char *buffer,int count);
asjgrupo4 3:75c530fb1140 11 void enviar(int LENIN1,char *DS,char *numero);//longitud de mensaje, cadena del mensaje, cadena del celular
asjgrupo4 2:ffcd0494ec92 12 DigitalOut on_off(PTC17); //señal que inicia el envio del mensaje
asjgrupo4 2:ffcd0494ec92 13 Serial pc(USBTX,USBRX); //Configura puerto UART de la FRDMKL25Z
asjgrupo4 3:75c530fb1140 14 GPS gps(PTE0,PTE1);
asjgrupo4 3:75c530fb1140 15 Serial GSM(PTE22, PTE23);//Configura puerto USB a la consola serial del PC conectado.
asjgrupo4 3:75c530fb1140 16 char celular[10];
tony63 1:6b506dde0a6e 17 char buffer[100];
asjgrupo4 3:75c530fb1140 18 char DE1[255]={"http://maps.google.com/maps?q="};
asjgrupo4 3:75c530fb1140 19 char DE[255];
asjgrupo4 3:75c530fb1140 20 char DS[255];
asjgrupo4 3:75c530fb1140 21 char coorden[50]={NULL};
asjgrupo4 3:75c530fb1140 22 char coorden_org[50]={NULL};
tony63 0:edc50cf04b46 23
asjgrupo4 3:75c530fb1140 24 char msg[4];
asjgrupo4 3:75c530fb1140 25 int z=0,j=0,i=0,p=0,LENIN=0,LENIN1=0,count=0,flag=0,K=0,C=0,LENOUT=0;
asjgrupo4 3:75c530fb1140 26 int ent_long,ent_lat;
asjgrupo4 3:75c530fb1140 27 int negativo=0;
asjgrupo4 3:75c530fb1140 28 int frac_long, frac_lat,bandera=0;
asjgrupo4 2:ffcd0494ec92 29
asjgrupo4 2:ffcd0494ec92 30
asjgrupo4 2:ffcd0494ec92 31
asjgrupo4 3:75c530fb1140 32 int main(void)
tony63 0:edc50cf04b46 33 {
asjgrupo4 3:75c530fb1140 34
asjgrupo4 3:75c530fb1140 35 GSM.baud(9600);//configura los baudios de la FRDMKL25Z en 9600
asjgrupo4 3:75c530fb1140 36 GSM.format(8,Serial::None,1); //configura el formato de los datos de la UART
asjgrupo4 3:75c530fb1140 37 wait(1);
asjgrupo4 3:75c530fb1140 38 pc.printf("Conectado\r\n");
asjgrupo4 3:75c530fb1140 39
asjgrupo4 3:75c530fb1140 40 while(1) {
asjgrupo4 3:75c530fb1140 41
asjgrupo4 3:75c530fb1140 42
asjgrupo4 3:75c530fb1140 43
asjgrupo4 3:75c530fb1140 44 if (GSM.readable())
asjgrupo4 3:75c530fb1140 45 {
asjgrupo4 3:75c530fb1140 46
asjgrupo4 3:75c530fb1140 47 readBuffer(buffer,100);
asjgrupo4 3:75c530fb1140 48 pc.printf(buffer);
asjgrupo4 3:75c530fb1140 49 }
asjgrupo4 3:75c530fb1140 50
asjgrupo4 3:75c530fb1140 51 if((buffer[10]=='S')&& (buffer[11]=='M'))
asjgrupo4 3:75c530fb1140 52 {
asjgrupo4 3:75c530fb1140 53 pc.printf("Llego mensaje\r\n ");
asjgrupo4 3:75c530fb1140 54 buffer[10]=' ';
asjgrupo4 3:75c530fb1140 55 buffer[11]=' ';
asjgrupo4 3:75c530fb1140 56 GSM.printf("AT+CMGR=%c\r\n",buffer[14]);
asjgrupo4 3:75c530fb1140 57 pc.printf("AT+CMGR=%c\r\n",buffer[14]);
asjgrupo4 3:75c530fb1140 58 }
asjgrupo4 3:75c530fb1140 59
asjgrupo4 3:75c530fb1140 60
asjgrupo4 3:75c530fb1140 61
asjgrupo4 3:75c530fb1140 62 //va funcion de mensaje recibido
asjgrupo4 3:75c530fb1140 63
asjgrupo4 3:75c530fb1140 64
asjgrupo4 3:75c530fb1140 65
asjgrupo4 3:75c530fb1140 66
asjgrupo4 3:75c530fb1140 67
asjgrupo4 3:75c530fb1140 68
asjgrupo4 3:75c530fb1140 69 if(buffer[85]=='4'&& buffer[86]=='F'&&buffer[87]=='3'&& buffer[88]=='7')//recibe mensaje On
asjgrupo4 3:75c530fb1140 70 {
asjgrupo4 3:75c530fb1140 71
asjgrupo4 3:75c530fb1140 72 for(i=55;i<65;i++)
asjgrupo4 3:75c530fb1140 73 {
asjgrupo4 3:75c530fb1140 74 celular[i-55]=buffer[i];
asjgrupo4 3:75c530fb1140 75 }
asjgrupo4 3:75c530fb1140 76
asjgrupo4 3:75c530fb1140 77 on_off=1;
asjgrupo4 3:75c530fb1140 78 pc.printf("El mensaje es On\r\n");
asjgrupo4 3:75c530fb1140 79 buffer[85]=' ';
asjgrupo4 3:75c530fb1140 80 buffer[86]=' ';
asjgrupo4 3:75c530fb1140 81 buffer[87]=' ';
asjgrupo4 3:75c530fb1140 82 buffer[88]=' ';
asjgrupo4 3:75c530fb1140 83 GSM.printf("AT\r\n");//proto0colo envio de mensaje
asjgrupo4 3:75c530fb1140 84 wait(0.5);
asjgrupo4 3:75c530fb1140 85 GSM.printf("AT+CNMI=1,1\r\n");
asjgrupo4 3:75c530fb1140 86 wait(0.5);
asjgrupo4 3:75c530fb1140 87 GSM.printf("AT+CMGF=0\r\n");
asjgrupo4 3:75c530fb1140 88 wait(0.5);
asjgrupo4 3:75c530fb1140 89 GSM.printf("ATE\r\n");
asjgrupo4 3:75c530fb1140 90 wait(0.5);
asjgrupo4 3:75c530fb1140 91 GSM.printf("CBST=0,0,1\r\n");
asjgrupo4 3:75c530fb1140 92 wait(0.5);
asjgrupo4 3:75c530fb1140 93 GSM.printf("at+cmgs=%d\r\n",21);
asjgrupo4 3:75c530fb1140 94 pc.printf("at+cmgs=%d\r\n",21);
asjgrupo4 3:75c530fb1140 95 wait(0.5);
asjgrupo4 3:75c530fb1140 96
asjgrupo4 3:75c530fb1140 97 GSM.printf("0011000A91");
asjgrupo4 3:75c530fb1140 98 pc.printf("0011000A91");
asjgrupo4 3:75c530fb1140 99 for(p=0;p<10;p++)
asjgrupo4 3:75c530fb1140 100 {
asjgrupo4 3:75c530fb1140 101 GSM.printf("%c",celular[p]);
asjgrupo4 3:75c530fb1140 102 pc.printf("%c",celular[p]);
asjgrupo4 3:75c530fb1140 103 }
asjgrupo4 3:75c530fb1140 104
asjgrupo4 3:75c530fb1140 105 GSM.printf("0000AA0945F7B8EC26A7C96F"); //12 octetos + los octetos del mensaje---devuelve mensaje encendido enciende un led que esta en PTC17
asjgrupo4 3:75c530fb1140 106 pc.printf("0000AA0945F7B8EC26A7C96F");
asjgrupo4 3:75c530fb1140 107
asjgrupo4 3:75c530fb1140 108 wait(0.5);
asjgrupo4 3:75c530fb1140 109 GSM.putc(0x1A);
asjgrupo4 3:75c530fb1140 110
asjgrupo4 3:75c530fb1140 111 }
asjgrupo4 3:75c530fb1140 112
asjgrupo4 3:75c530fb1140 113
asjgrupo4 3:75c530fb1140 114
asjgrupo4 3:75c530fb1140 115
asjgrupo4 3:75c530fb1140 116
asjgrupo4 3:75c530fb1140 117
asjgrupo4 3:75c530fb1140 118 if(buffer[85]=='4'&& buffer[86]=='F'&&buffer[87]=='B'&& buffer[88]=='3'&&buffer[89]=='1'&& buffer[90]=='9')//recibe mensaje Off
asjgrupo4 3:75c530fb1140 119 {
asjgrupo4 3:75c530fb1140 120
asjgrupo4 3:75c530fb1140 121 for(i=55;i<65;i++)
asjgrupo4 3:75c530fb1140 122 {
asjgrupo4 3:75c530fb1140 123 celular[i-55]=buffer[i];
asjgrupo4 3:75c530fb1140 124 }
asjgrupo4 3:75c530fb1140 125
asjgrupo4 3:75c530fb1140 126 on_off=0;
asjgrupo4 3:75c530fb1140 127 pc.printf("El mensaje es Off\r\n");// se borra el mensaje
asjgrupo4 3:75c530fb1140 128 buffer[85]=' ';
asjgrupo4 3:75c530fb1140 129 buffer[86]=' ';
asjgrupo4 3:75c530fb1140 130 buffer[87]=' ';
asjgrupo4 3:75c530fb1140 131 buffer[88]=' ';
asjgrupo4 3:75c530fb1140 132 buffer[89]=' ';
asjgrupo4 3:75c530fb1140 133 buffer[90]=' ';
asjgrupo4 3:75c530fb1140 134 GSM.printf("AT\r\n");//protocolo de envio de mensaje
asjgrupo4 3:75c530fb1140 135 wait(0.5);
asjgrupo4 3:75c530fb1140 136 GSM.printf("AT+CNMI=1,1\r\n");
asjgrupo4 3:75c530fb1140 137 wait(0.5);
asjgrupo4 3:75c530fb1140 138 GSM.printf("AT+CMGF=0\r\n");
asjgrupo4 3:75c530fb1140 139 wait(0.5);
asjgrupo4 3:75c530fb1140 140 GSM.printf("ATE\r\n");
asjgrupo4 3:75c530fb1140 141 wait(0.5);
asjgrupo4 3:75c530fb1140 142 GSM.printf("CBST=0,0,1\r\n");
asjgrupo4 3:75c530fb1140 143 wait(0.5);
asjgrupo4 3:75c530fb1140 144 GSM.printf("at+cmgs=%d\r\n",20);
asjgrupo4 3:75c530fb1140 145 pc.printf("at+cmgs=%d\r\n",20);
asjgrupo4 3:75c530fb1140 146 wait(0.5);
asjgrupo4 3:75c530fb1140 147
asjgrupo4 3:75c530fb1140 148 GSM.printf("0011000A91");
asjgrupo4 3:75c530fb1140 149 pc.printf("0011000A91");
asjgrupo4 3:75c530fb1140 150 for(p=0;p<10;p++)
asjgrupo4 3:75c530fb1140 151 {
asjgrupo4 3:75c530fb1140 152 GSM.printf("%c",celular[p]);
asjgrupo4 3:75c530fb1140 153 pc.printf("%c",celular[p]);
asjgrupo4 3:75c530fb1140 154 }
asjgrupo4 3:75c530fb1140 155
asjgrupo4 3:75c530fb1140 156 GSM.printf("0000AA074178F81C26BF01"); //12 octetos + los octetos del mensaje----devuelve mensaje apagado--apaga el led de PTC17
asjgrupo4 3:75c530fb1140 157 pc.printf("0000AA074178F81C26BF01");
asjgrupo4 3:75c530fb1140 158 wait(0.5);
asjgrupo4 3:75c530fb1140 159 GSM.putc(0x1A);
asjgrupo4 3:75c530fb1140 160
asjgrupo4 3:75c530fb1140 161 }
asjgrupo4 3:75c530fb1140 162
asjgrupo4 3:75c530fb1140 163
asjgrupo4 3:75c530fb1140 164
asjgrupo4 3:75c530fb1140 165
asjgrupo4 3:75c530fb1140 166
asjgrupo4 3:75c530fb1140 167
asjgrupo4 3:75c530fb1140 168
asjgrupo4 3:75c530fb1140 169
asjgrupo4 3:75c530fb1140 170
asjgrupo4 3:75c530fb1140 171
asjgrupo4 3:75c530fb1140 172 //celular comienza en posicion 48
asjgrupo4 3:75c530fb1140 173 //longitud del mensaje en posicion 83,84
asjgrupo4 3:75c530fb1140 174 //mensaje en posicion 85
asjgrupo4 3:75c530fb1140 175 if((buffer[83]=='0')&&(buffer[84]=='4'))
asjgrupo4 3:75c530fb1140 176 {
asjgrupo4 3:75c530fb1140 177 buffer[83]=' ';
asjgrupo4 3:75c530fb1140 178 buffer[84]=' ';
asjgrupo4 3:75c530fb1140 179
asjgrupo4 3:75c530fb1140 180 count=0;
asjgrupo4 3:75c530fb1140 181 LENIN1=4; //numero de caracteres de abajo son los octetos
asjgrupo4 3:75c530fb1140 182 for(i=0;i<8;i++)
asjgrupo4 3:75c530fb1140 183 {
asjgrupo4 3:75c530fb1140 184
asjgrupo4 3:75c530fb1140 185 if(i%2==0)
asjgrupo4 3:75c530fb1140 186 {
asjgrupo4 3:75c530fb1140 187 if(buffer[85+i]>57)
asjgrupo4 3:75c530fb1140 188 {
asjgrupo4 3:75c530fb1140 189 DE[count]=(buffer[85+i]-55)<<4;
asjgrupo4 3:75c530fb1140 190 }
asjgrupo4 3:75c530fb1140 191 else
asjgrupo4 3:75c530fb1140 192 {
asjgrupo4 3:75c530fb1140 193 DE[count]=(buffer[85+i]-48)<<4;
asjgrupo4 3:75c530fb1140 194 }
asjgrupo4 3:75c530fb1140 195 }
asjgrupo4 3:75c530fb1140 196 else
asjgrupo4 3:75c530fb1140 197 {
asjgrupo4 3:75c530fb1140 198 if(buffer[85+i]>57)
asjgrupo4 3:75c530fb1140 199 {
asjgrupo4 3:75c530fb1140 200 DE[count]=(buffer[85+i]-55)+DE[count];
asjgrupo4 3:75c530fb1140 201 }
asjgrupo4 3:75c530fb1140 202 else
asjgrupo4 3:75c530fb1140 203 {
asjgrupo4 3:75c530fb1140 204 DE[count]=(buffer[85+i]-48)+DE[count];
asjgrupo4 3:75c530fb1140 205 }
asjgrupo4 3:75c530fb1140 206 count++;
asjgrupo4 3:75c530fb1140 207 }
asjgrupo4 3:75c530fb1140 208
asjgrupo4 3:75c530fb1140 209 }
asjgrupo4 3:75c530fb1140 210
asjgrupo4 3:75c530fb1140 211
asjgrupo4 3:75c530fb1140 212
asjgrupo4 3:75c530fb1140 213
asjgrupo4 3:75c530fb1140 214 LENOUT= LENIN1*8/7;
asjgrupo4 3:75c530fb1140 215 K=7;
asjgrupo4 3:75c530fb1140 216 C=0;
asjgrupo4 3:75c530fb1140 217 DS[0]=DE[0] & 0x7F; // la primera sola
asjgrupo4 3:75c530fb1140 218 pc.printf("%2X",DS[0]);
asjgrupo4 3:75c530fb1140 219 for (i=1;i < LENOUT;i++){ // inicia el algoritmo
asjgrupo4 3:75c530fb1140 220 DS[i]=(DE[i-1-C]>>K | DE[i-C]<<(8-K))& 0x7F; //valido para todos
asjgrupo4 3:75c530fb1140 221 pc.printf("%2X",DS[i]);
asjgrupo4 3:75c530fb1140 222 if (K==0) {K=8;C++;}
asjgrupo4 3:75c530fb1140 223 K--;
asjgrupo4 3:75c530fb1140 224 }
asjgrupo4 3:75c530fb1140 225 for (i=0;i < LENOUT;i++){
asjgrupo4 3:75c530fb1140 226 pc.printf("%c",DS[i]);
asjgrupo4 3:75c530fb1140 227 msg[i]=DS[i];
asjgrupo4 3:75c530fb1140 228 }
asjgrupo4 3:75c530fb1140 229 pc.printf("\r\n");
asjgrupo4 3:75c530fb1140 230 pc.printf("Mensaje en el celular\r\n");
asjgrupo4 3:75c530fb1140 231 pc.printf(buffer);
asjgrupo4 3:75c530fb1140 232
asjgrupo4 3:75c530fb1140 233 if((msg[0]=='C')&&(msg[1]=='o')&&(msg[2]=='r')&&(msg[3]=='d'))
asjgrupo4 3:75c530fb1140 234 {
asjgrupo4 3:75c530fb1140 235 //obtener coordenadas
asjgrupo4 3:75c530fb1140 236 pc.printf("Coordenadas GPS\r\n");
asjgrupo4 3:75c530fb1140 237
asjgrupo4 3:75c530fb1140 238 if(gps.sample()) {
asjgrupo4 3:75c530fb1140 239 ent_long=(int)gps.longitude;
asjgrupo4 3:75c530fb1140 240 ent_lat=(int)gps.latitude;
asjgrupo4 3:75c530fb1140 241
asjgrupo4 3:75c530fb1140 242 frac_long=abs((gps.longitude-(int)gps.longitude)*1000000);
asjgrupo4 3:75c530fb1140 243 frac_lat=abs((gps.latitude-(int)gps.latitude)*1000000);
asjgrupo4 3:75c530fb1140 244
asjgrupo4 3:75c530fb1140 245 pc.printf("http://maps.google.com/maps?q=%f,%f\r\n", gps.latitude,gps.longitude);
asjgrupo4 3:75c530fb1140 246 //coordenada longitud a cadena
asjgrupo4 3:75c530fb1140 247
asjgrupo4 3:75c530fb1140 248
asjgrupo4 3:75c530fb1140 249 while(frac_long>0)
asjgrupo4 3:75c530fb1140 250 {
asjgrupo4 3:75c530fb1140 251 coorden[j]=(frac_long%10)+48;
asjgrupo4 3:75c530fb1140 252 frac_long=frac_long/10;
asjgrupo4 3:75c530fb1140 253 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 254 j++;
asjgrupo4 3:75c530fb1140 255 }
asjgrupo4 3:75c530fb1140 256 coorden[j]='.';
asjgrupo4 3:75c530fb1140 257 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 258 j++;
asjgrupo4 3:75c530fb1140 259 if(ent_long<0)
asjgrupo4 3:75c530fb1140 260 {
asjgrupo4 3:75c530fb1140 261 negativo=1;
asjgrupo4 3:75c530fb1140 262 ent_long=ent_long*-1;
asjgrupo4 3:75c530fb1140 263 }
asjgrupo4 3:75c530fb1140 264 while(ent_long>0)
asjgrupo4 3:75c530fb1140 265 {
asjgrupo4 3:75c530fb1140 266 coorden[j]=(ent_long%10)+48;
asjgrupo4 3:75c530fb1140 267 ent_long=ent_long/10;
asjgrupo4 3:75c530fb1140 268 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 269 j++;
asjgrupo4 3:75c530fb1140 270 }
asjgrupo4 3:75c530fb1140 271
asjgrupo4 3:75c530fb1140 272 if(negativo==1)
asjgrupo4 3:75c530fb1140 273 {
asjgrupo4 3:75c530fb1140 274 coorden[j]='-';
asjgrupo4 3:75c530fb1140 275 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 276 j++;
asjgrupo4 3:75c530fb1140 277 }
asjgrupo4 3:75c530fb1140 278 negativo=0;
asjgrupo4 3:75c530fb1140 279
asjgrupo4 3:75c530fb1140 280 coorden[j]=',';
asjgrupo4 3:75c530fb1140 281 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 282 j++;
asjgrupo4 3:75c530fb1140 283
asjgrupo4 3:75c530fb1140 284
asjgrupo4 3:75c530fb1140 285 while(frac_lat>0)
asjgrupo4 3:75c530fb1140 286 {
asjgrupo4 3:75c530fb1140 287 coorden[j]=(frac_lat%10)+48;
asjgrupo4 3:75c530fb1140 288 frac_lat=frac_lat/10;
asjgrupo4 3:75c530fb1140 289 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 290 j++;
asjgrupo4 3:75c530fb1140 291 }
asjgrupo4 3:75c530fb1140 292 coorden[j]='.';
asjgrupo4 3:75c530fb1140 293 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 294 j++;
asjgrupo4 3:75c530fb1140 295 if(ent_lat<0)
asjgrupo4 3:75c530fb1140 296 {
asjgrupo4 3:75c530fb1140 297 negativo=1;
asjgrupo4 3:75c530fb1140 298 ent_lat=ent_lat*-1;
asjgrupo4 3:75c530fb1140 299 }
asjgrupo4 3:75c530fb1140 300 while(ent_lat>0)
asjgrupo4 3:75c530fb1140 301 {
asjgrupo4 3:75c530fb1140 302 coorden[j]=(ent_lat%10)+48;
asjgrupo4 3:75c530fb1140 303 ent_lat=ent_lat/10;
asjgrupo4 3:75c530fb1140 304 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 305 j++;
asjgrupo4 3:75c530fb1140 306 }
asjgrupo4 3:75c530fb1140 307 if(negativo==1)
asjgrupo4 3:75c530fb1140 308 {
asjgrupo4 3:75c530fb1140 309 coorden[j]='-';
asjgrupo4 3:75c530fb1140 310 pc.printf("%c",coorden[j]);
asjgrupo4 3:75c530fb1140 311 j++;
asjgrupo4 3:75c530fb1140 312 }
asjgrupo4 3:75c530fb1140 313 pc.printf("\r\n");
asjgrupo4 3:75c530fb1140 314 j--;
asjgrupo4 3:75c530fb1140 315 z=strlen(DE1);
asjgrupo4 3:75c530fb1140 316
asjgrupo4 3:75c530fb1140 317 for(i=j;i>=0;i--)
asjgrupo4 3:75c530fb1140 318 {
asjgrupo4 3:75c530fb1140 319 DE1[z]=coorden[i];
asjgrupo4 3:75c530fb1140 320 z++;
asjgrupo4 3:75c530fb1140 321 }
asjgrupo4 3:75c530fb1140 322
asjgrupo4 3:75c530fb1140 323 pc.printf(DE1);
asjgrupo4 3:75c530fb1140 324 pc.printf("\r\n");
asjgrupo4 3:75c530fb1140 325
asjgrupo4 3:75c530fb1140 326 //strlen(DE);
asjgrupo4 3:75c530fb1140 327
asjgrupo4 3:75c530fb1140 328 LENIN1=strlen(DE1);
asjgrupo4 3:75c530fb1140 329 K=0;C=0;
asjgrupo4 3:75c530fb1140 330 for (i=0;i < LENIN1;i++){
asjgrupo4 3:75c530fb1140 331 DS[i]=DE1[i+C]>>K | DE1[i+C+1]<<(7-K);
asjgrupo4 3:75c530fb1140 332 if (DS[i]==0x00) {LENOUT=i; goto salir;}
asjgrupo4 3:75c530fb1140 333 K++;
asjgrupo4 3:75c530fb1140 334 if (K==7) {K=0;C++;} // se chequea que ya se acabaron los bits en un ciclo de conversion.
asjgrupo4 3:75c530fb1140 335 }
asjgrupo4 3:75c530fb1140 336
asjgrupo4 3:75c530fb1140 337 //--------------------------------------------------------------
asjgrupo4 3:75c530fb1140 338 salir:
asjgrupo4 3:75c530fb1140 339
asjgrupo4 3:75c530fb1140 340 //Tomamos el numero de celular
asjgrupo4 3:75c530fb1140 341 for(i=55;i<65;i++)
asjgrupo4 3:75c530fb1140 342 {
asjgrupo4 3:75c530fb1140 343 celular[i-55]=buffer[i];
asjgrupo4 3:75c530fb1140 344 }
asjgrupo4 3:75c530fb1140 345 enviar(LENIN1,DS,celular);
asjgrupo4 3:75c530fb1140 346
asjgrupo4 3:75c530fb1140 347
asjgrupo4 3:75c530fb1140 348
asjgrupo4 3:75c530fb1140 349
asjgrupo4 3:75c530fb1140 350 }
asjgrupo4 3:75c530fb1140 351 }
asjgrupo4 3:75c530fb1140 352
asjgrupo4 3:75c530fb1140 353
asjgrupo4 3:75c530fb1140 354
asjgrupo4 3:75c530fb1140 355
asjgrupo4 3:75c530fb1140 356 }
asjgrupo4 3:75c530fb1140 357
asjgrupo4 3:75c530fb1140 358
asjgrupo4 3:75c530fb1140 359
asjgrupo4 3:75c530fb1140 360
asjgrupo4 3:75c530fb1140 361 }}
asjgrupo4 3:75c530fb1140 362
asjgrupo4 3:75c530fb1140 363
asjgrupo4 3:75c530fb1140 364
asjgrupo4 3:75c530fb1140 365
asjgrupo4 3:75c530fb1140 366
asjgrupo4 3:75c530fb1140 367
asjgrupo4 3:75c530fb1140 368
asjgrupo4 3:75c530fb1140 369
asjgrupo4 3:75c530fb1140 370
asjgrupo4 3:75c530fb1140 371
asjgrupo4 3:75c530fb1140 372
asjgrupo4 3:75c530fb1140 373
asjgrupo4 3:75c530fb1140 374
asjgrupo4 3:75c530fb1140 375
asjgrupo4 3:75c530fb1140 376 void enviar(int LENIN1,char *DS,char *numero){
asjgrupo4 3:75c530fb1140 377
asjgrupo4 3:75c530fb1140 378 GSM.printf("AT\r\n");//envia link con coordenadas
asjgrupo4 3:75c530fb1140 379 pc.printf("AT\r\n");//envia link con coordenadas
asjgrupo4 3:75c530fb1140 380 wait(0.5);
asjgrupo4 3:75c530fb1140 381 GSM.printf("AT+CNMI=1,1\r\n");
asjgrupo4 3:75c530fb1140 382 pc.printf("AT+CNMI=1,1\r\n");
asjgrupo4 3:75c530fb1140 383 wait(0.5);
asjgrupo4 3:75c530fb1140 384 GSM.printf("AT+CMGF=0\r\n");
asjgrupo4 3:75c530fb1140 385 pc.printf("AT+CMGF=0\r\n");
asjgrupo4 3:75c530fb1140 386 wait(0.5);
asjgrupo4 3:75c530fb1140 387 GSM.printf("ATE\r\n");
asjgrupo4 3:75c530fb1140 388 pc.printf("ATE\r\n");
asjgrupo4 3:75c530fb1140 389 wait(0.5);
asjgrupo4 3:75c530fb1140 390 GSM.printf("CBST=0,0,1\r\n");
asjgrupo4 3:75c530fb1140 391 pc.printf("CBST=0,0,1\r\n");
asjgrupo4 3:75c530fb1140 392 wait(0.5);
asjgrupo4 3:75c530fb1140 393 GSM.printf("at+cmgs=%d\r\n",13+LENIN1);
asjgrupo4 3:75c530fb1140 394 pc.printf("at+cmgs=%d\r\n",13+LENIN1);
asjgrupo4 3:75c530fb1140 395 wait(0.5);
asjgrupo4 3:75c530fb1140 396 GSM.printf("0011000A91");
asjgrupo4 3:75c530fb1140 397 pc.printf("0011000A91");
asjgrupo4 3:75c530fb1140 398 for(p=0;p<10;p++)
asjgrupo4 3:75c530fb1140 399 {
asjgrupo4 3:75c530fb1140 400 GSM.printf("%c",celular[p]);
asjgrupo4 3:75c530fb1140 401 pc.printf("%c",celular[p]);
asjgrupo4 3:75c530fb1140 402 }
asjgrupo4 3:75c530fb1140 403
asjgrupo4 3:75c530fb1140 404 GSM.printf("0000AA");
asjgrupo4 3:75c530fb1140 405 pc.printf("0000AA");
asjgrupo4 3:75c530fb1140 406
asjgrupo4 3:75c530fb1140 407 if(LENIN1<=15)
asjgrupo4 3:75c530fb1140 408 {
asjgrupo4 3:75c530fb1140 409 pc.printf("0");
asjgrupo4 3:75c530fb1140 410 GSM.printf("0");
asjgrupo4 3:75c530fb1140 411 pc.printf("%X",LENIN1);
asjgrupo4 3:75c530fb1140 412 GSM.printf("%X",LENIN1);
asjgrupo4 3:75c530fb1140 413 }
asjgrupo4 3:75c530fb1140 414 else{
asjgrupo4 3:75c530fb1140 415 pc.printf("%2X",LENIN1);
asjgrupo4 3:75c530fb1140 416 GSM.printf("%2X",LENIN1);
asjgrupo4 3:75c530fb1140 417 }
asjgrupo4 3:75c530fb1140 418
asjgrupo4 3:75c530fb1140 419 for (p=0;p < LENIN1;p++){
asjgrupo4 3:75c530fb1140 420 if(DS[p]<=15)
asjgrupo4 3:75c530fb1140 421 {
asjgrupo4 3:75c530fb1140 422 pc.printf("0");
asjgrupo4 3:75c530fb1140 423 GSM.printf("0");
asjgrupo4 3:75c530fb1140 424 pc.printf("%X",DS[p]);
asjgrupo4 3:75c530fb1140 425 GSM.printf("%X",DS[p]);
asjgrupo4 3:75c530fb1140 426 }
asjgrupo4 3:75c530fb1140 427 else{
asjgrupo4 3:75c530fb1140 428 pc.printf("%2X",DS[p]&0x000000FF);
asjgrupo4 3:75c530fb1140 429 GSM.printf("%2X",DS[p]&0x000000FF);
asjgrupo4 3:75c530fb1140 430 }
asjgrupo4 3:75c530fb1140 431 }
asjgrupo4 3:75c530fb1140 432 wait(0.5);
asjgrupo4 3:75c530fb1140 433 GSM.putc(0x1A);
asjgrupo4 3:75c530fb1140 434 pc.putc(0x1A);
asjgrupo4 3:75c530fb1140 435
asjgrupo4 3:75c530fb1140 436 }
asjgrupo4 3:75c530fb1140 437
asjgrupo4 3:75c530fb1140 438 int readBuffer(char *buffer,int count){
asjgrupo4 3:75c530fb1140 439
asjgrupo4 2:ffcd0494ec92 440 t.start();
tony63 0:edc50cf04b46 441 while(1) {
tony63 0:edc50cf04b46 442 while (GSM.readable()) {
tony63 0:edc50cf04b46 443 char c = GSM.getc();
tony63 0:edc50cf04b46 444 if (c == '\r' || c == '\n') c = '$';
tony63 0:edc50cf04b46 445 buffer[i++] = c;
tony63 0:edc50cf04b46 446 if(i > count)break;
tony63 0:edc50cf04b46 447 }
tony63 0:edc50cf04b46 448 if(i > count)break;
tony63 0:edc50cf04b46 449 if(t.read() > 3) {
tony63 0:edc50cf04b46 450 t.stop();
tony63 0:edc50cf04b46 451 t.reset();
tony63 0:edc50cf04b46 452 break;
tony63 0:edc50cf04b46 453 }
tony63 0:edc50cf04b46 454 }
tony63 0:edc50cf04b46 455 wait(0.5);
asjgrupo4 2:ffcd0494ec92 456 while(GSM.readable()) {
tony63 0:edc50cf04b46 457 char c = GSM.getc();
tony63 0:edc50cf04b46 458 }
tony63 0:edc50cf04b46 459 return 0;
tony63 0:edc50cf04b46 460 }