![](/media/cache/profiles/88620f53e8130fe210652d43137a905b.jpg.50x50_q85.jpg)
Procesadores, 2016 - II. Tarea #4. Oswaldo Andrés Giraldo Giraldo, Héctor Andrés Hoyos Ceballos, Jose Fernando Montoya Vargas, María Fernanda Villa Tamayo. Programa para establecer la comunicación con el módem Siemens A56, la lectura de coordenadas de GPS que son transmitidas en una UART por medio de un Dongle USB y la conversión de datos en formato ASCII a PDU.
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
- Child:
- 2:ea6275d1222f
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 | } |