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
main.cpp@3:75c530fb1140, 2015-06-23 (annotated)
- 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?
User | Revision | Line number | New 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 | } |