![](/media/cache/profiles/bd1ce36d68a5c2bea97fe45863673b20.jpg.50x50_q85.jpg)
COMUNICACIÓN MODEM SIEMENS Y GPS PARA RASTREO SATELITAL CON ACCIONAMIENTO REMOTO
Fork of TareaGPS_Siemens by
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
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 | } |