Tarea#5

Dependencies:   mbed DebouncedIn

Committer:
omatorressan
Date:
Fri Dec 05 20:41:10 2014 +0000
Revision:
1:1189b5149db2
Parent:
0:1230a968d925
celular

Who changed what in which revision?

UserRevisionLine numberNew contents of line
omatorressan 0:1230a968d925 1 #include "mbed.h"
omatorressan 0:1230a968d925 2 #include "DebouncedIn.h"
omatorressan 0:1230a968d925 3 #include "stdio.h"
omatorressan 0:1230a968d925 4 #include "string.h"
omatorressan 0:1230a968d925 5 Timer t;
omatorressan 0:1230a968d925 6 DigitalOut LedVerde(LED2);
omatorressan 0:1230a968d925 7 DigitalOut LedRojo(LED1);
omatorressan 0:1230a968d925 8 DigitalOut LedAzul(LED3);
omatorressan 0:1230a968d925 9 DebouncedIn button1(PTC12); //inicia el envio
omatorressan 0:1230a968d925 10 Serial GSM(PTE0,PTE1); //Configura puerto UART de la FRDMKL25Z
omatorressan 0:1230a968d925 11 Serial pc(USBTX,USBRX);//Configura puerto USB a la consola serial del PC conectado.
omatorressan 0:1230a968d925 12 void Rx_interrupt();
omatorressan 0:1230a968d925 13 int position=0;
omatorressan 0:1230a968d925 14 int lenpack=6;
omatorressan 0:1230a968d925 15 int longi=0;
omatorressan 0:1230a968d925 16 char buffer1[13];
omatorressan 0:1230a968d925 17 char mensaje[100];
omatorressan 0:1230a968d925 18 char NUMBER[13];
omatorressan 0:1230a968d925 19 char tel[10];
omatorressan 0:1230a968d925 20 char DE[50];
omatorressan 0:1230a968d925 21 char buffer[512];
omatorressan 0:1230a968d925 22 char buffermsg[72];
omatorressan 0:1230a968d925 23
omatorressan 0:1230a968d925 24 int index;
omatorressan 0:1230a968d925 25 int count;
omatorressan 0:1230a968d925 26 int i = 0;
omatorressan 0:1230a968d925 27 int c=0;
omatorressan 0:1230a968d925 28 int cont=0;
omatorressan 0:1230a968d925 29 unsigned char CtrlZ = 0x1A; // comodin
omatorressan 0:1230a968d925 30 bool Flag = false; // Bandera
omatorressan 0:1230a968d925 31 char r[]=""; //Cadena de recepción
omatorressan 0:1230a968d925 32 char msg[256];
omatorressan 0:1230a968d925 33 char char1; //Flush serial para el buffer
omatorressan 0:1230a968d925 34 void FlushGSM(void) {
omatorressan 0:1230a968d925 35 char1 = 0;
omatorressan 0:1230a968d925 36 while (GSM.readable()){
omatorressan 0:1230a968d925 37 char1 = GSM.getc();}
omatorressan 0:1230a968d925 38 return;}
omatorressan 0:1230a968d925 39
omatorressan 0:1230a968d925 40 void callback() {
omatorressan 0:1230a968d925 41
omatorressan 0:1230a968d925 42 pc.printf("%c\n", GSM.getc());
omatorressan 0:1230a968d925 43
omatorressan 0:1230a968d925 44 }
omatorressan 0:1230a968d925 45
omatorressan 0:1230a968d925 46 int readBuffer(char *buffer,int count)
omatorressan 0:1230a968d925 47 {
omatorressan 0:1230a968d925 48 int i=0;
omatorressan 0:1230a968d925 49 t.start(); // inicia el timmer
omatorressan 0:1230a968d925 50 while(1) {
omatorressan 0:1230a968d925 51 while (GSM.readable()) {
omatorressan 0:1230a968d925 52 char c = GSM.getc();
omatorressan 0:1230a968d925 53 if (c == '\r' || c == '\n') c = '$';
omatorressan 0:1230a968d925 54 buffer[i++] = c;
omatorressan 0:1230a968d925 55 if(i > count)break;
omatorressan 0:1230a968d925 56 }
omatorressan 0:1230a968d925 57 if(i > count)break;
omatorressan 0:1230a968d925 58 if(t.read() > 3) {
omatorressan 0:1230a968d925 59 t.stop();
omatorressan 0:1230a968d925 60 t.reset();
omatorressan 0:1230a968d925 61 break;
omatorressan 0:1230a968d925 62 }
omatorressan 0:1230a968d925 63 }
omatorressan 0:1230a968d925 64 wait(0.5);
omatorressan 0:1230a968d925 65 while(GSM.readable()) { // display the other thing..
omatorressan 0:1230a968d925 66 char c = GSM.getc();
omatorressan 0:1230a968d925 67 }
omatorressan 0:1230a968d925 68 return 0;
omatorressan 0:1230a968d925 69 }
omatorressan 0:1230a968d925 70
omatorressan 0:1230a968d925 71
omatorressan 0:1230a968d925 72
omatorressan 0:1230a968d925 73 void cleanBuffer(char *buffer, int count)
omatorressan 0:1230a968d925 74 {
omatorressan 0:1230a968d925 75 for(int i=0; i < count; i++) {
omatorressan 0:1230a968d925 76 buffer[i] = '\0';
omatorressan 0:1230a968d925 77 }
omatorressan 0:1230a968d925 78 }
omatorressan 0:1230a968d925 79 /* la funcion envia un comando parametrizado
omatorressan 0:1230a968d925 80 */
omatorressan 0:1230a968d925 81
omatorressan 0:1230a968d925 82
omatorressan 0:1230a968d925 83 void sendCmd(char *cmd)
omatorressan 0:1230a968d925 84 {
omatorressan 0:1230a968d925 85 GSM.puts(cmd);
omatorressan 0:1230a968d925 86 }
omatorressan 0:1230a968d925 87 /* la funcion espera la respuesta de un comando que debe ser identica a la cadena "resp" y un tiempo timeout"
omatorressan 0:1230a968d925 88 si todo sale bien retorna un cero que en la programacion hay que validar
omatorressan 0:1230a968d925 89 si algo sale mal ( no se parece o se demora mucho )retorna -1 que debera validarse con alguna expresion logica
omatorressan 0:1230a968d925 90 */
omatorressan 0:1230a968d925 91 //
omatorressan 0:1230a968d925 92 int waitForResp(char *resp, int timeout)
omatorressan 0:1230a968d925 93 {
omatorressan 0:1230a968d925 94 int len = strlen(resp);
omatorressan 0:1230a968d925 95 int sum=0;
omatorressan 0:1230a968d925 96 t.start();
omatorressan 0:1230a968d925 97
omatorressan 0:1230a968d925 98 while(1) {
omatorressan 0:1230a968d925 99 if(GSM.readable()) {
omatorressan 0:1230a968d925 100 char c = GSM.getc();
omatorressan 0:1230a968d925 101 sum = (c==resp[sum]) ? sum+1 : 0;//sum se incrementa o se hace cero segun c
omatorressan 0:1230a968d925 102 if(sum == len)break; //termina
omatorressan 0:1230a968d925 103 }
omatorressan 0:1230a968d925 104 if(t.read() > timeout) { // time out revisa el tiempo minimo antes de salir perdiendo
omatorressan 0:1230a968d925 105 t.stop();
omatorressan 0:1230a968d925 106 t.reset();
omatorressan 0:1230a968d925 107 return -1;
omatorressan 0:1230a968d925 108 }
omatorressan 0:1230a968d925 109 }
omatorressan 0:1230a968d925 110 t.stop(); // stop timer antes de retornar
omatorressan 0:1230a968d925 111 t.reset(); // clear timer
omatorressan 0:1230a968d925 112 while(GSM.readable()) { // display the other thing..
omatorressan 0:1230a968d925 113 char c = GSM.getc();
omatorressan 0:1230a968d925 114 }
omatorressan 0:1230a968d925 115
omatorressan 0:1230a968d925 116 return 0;
omatorressan 0:1230a968d925 117 }
omatorressan 0:1230a968d925 118 /* esta funcion de abajo es muy completa e util se encarga de enviar el comando y esperar la respuesta
omatorressan 0:1230a968d925 119 si todo sale bien retorna un cero(herencia de las funciones contenedoras) que en la programacion hay que validar
omatorressan 0:1230a968d925 120 con alguna expresion logica
omatorressan 0:1230a968d925 121 */
omatorressan 0:1230a968d925 122 //
omatorressan 0:1230a968d925 123 int sendCmdAndWaitForResp(char *cmd, char *resp, int timeout)
omatorressan 0:1230a968d925 124 {
omatorressan 0:1230a968d925 125 sendCmd(cmd);
omatorressan 0:1230a968d925 126 return waitForResp(resp,timeout);
omatorressan 0:1230a968d925 127 }
omatorressan 0:1230a968d925 128 /* esta funcion de abajo chequea que el modem este vivo envia AT y le contesta con OK y espera 2 segundos
omatorressan 0:1230a968d925 129 */
omatorressan 0:1230a968d925 130 //
omatorressan 0:1230a968d925 131 int powerCheck(void)// este comando se manda para verificar si el modem esta vivo o conectado
omatorressan 0:1230a968d925 132 {
omatorressan 0:1230a968d925 133 return sendCmdAndWaitForResp("AT\r\n", "OK", 2);
omatorressan 0:1230a968d925 134 }
omatorressan 0:1230a968d925 135 /* esta funcion de abajo chequea el estado de la sim card
omatorressan 0:1230a968d925 136 y si todo sale bien retorna un cero que en la programacion hay que validar
omatorressan 0:1230a968d925 137 con alguna expresion logica
omatorressan 0:1230a968d925 138 */
omatorressan 0:1230a968d925 139 //
omatorressan 0:1230a968d925 140 int checkSIMStatus(void)
omatorressan 0:1230a968d925 141 {
omatorressan 0:1230a968d925 142 char gprsBuffer[30];
omatorressan 0:1230a968d925 143 int count = 0;
omatorressan 0:1230a968d925 144 cleanBuffer(gprsBuffer,30);
omatorressan 0:1230a968d925 145 while(count < 3) {
omatorressan 0:1230a968d925 146 sendCmd("AT+CPIN?\r\n");
omatorressan 0:1230a968d925 147 readBuffer(gprsBuffer,30);
omatorressan 0:1230a968d925 148 if((NULL != strstr(gprsBuffer,"+CPIN: READY"))) {
omatorressan 0:1230a968d925 149 break;
omatorressan 0:1230a968d925 150 }
omatorressan 0:1230a968d925 151 count++;
omatorressan 0:1230a968d925 152 wait(1);
omatorressan 0:1230a968d925 153 }
omatorressan 0:1230a968d925 154
omatorressan 0:1230a968d925 155 if(count == 3) {
omatorressan 0:1230a968d925 156 return -1;
omatorressan 0:1230a968d925 157 }
omatorressan 0:1230a968d925 158 return 0;
omatorressan 0:1230a968d925 159 }
omatorressan 0:1230a968d925 160 /* esta funcion de abajo chequea la calidad de la señal
omatorressan 0:1230a968d925 161 y si todo sale bien retorna cun el valor de señal util o un -1 si nop es aceptable, en la programacion hay que validar
omatorressan 0:1230a968d925 162 con alguna expresion logica
omatorressan 0:1230a968d925 163 */
omatorressan 0:1230a968d925 164 //
omatorressan 0:1230a968d925 165 int checkSignalStrength(void)
omatorressan 0:1230a968d925 166 {
omatorressan 0:1230a968d925 167 char gprsBuffer[100];
omatorressan 0:1230a968d925 168 int index,count = 0;
omatorressan 0:1230a968d925 169 cleanBuffer(gprsBuffer,100);
omatorressan 0:1230a968d925 170 while(count < 3) {
omatorressan 0:1230a968d925 171 sendCmd("AT+CSQ\r\n");
omatorressan 0:1230a968d925 172 readBuffer(gprsBuffer,25);
omatorressan 0:1230a968d925 173 if(sscanf(gprsBuffer, "AT+CSQ$$$$+CSQ: %d", &index)>0) {
omatorressan 0:1230a968d925 174 break;
omatorressan 0:1230a968d925 175 }
omatorressan 0:1230a968d925 176 count++;
omatorressan 0:1230a968d925 177 wait(1);
omatorressan 0:1230a968d925 178 }
omatorressan 0:1230a968d925 179 if(count == 3) {
omatorressan 0:1230a968d925 180 return -1;
omatorressan 0:1230a968d925 181 }
omatorressan 0:1230a968d925 182 return index;
omatorressan 0:1230a968d925 183 }
omatorressan 0:1230a968d925 184 /* la funcion configura el modem con comandas AT
omatorressan 0:1230a968d925 185 y si se completa el proceso retorna un cero que en la programacion hay que validar
omatorressan 0:1230a968d925 186 con alguna expresion logica pero si no, retorna un -1
omatorressan 0:1230a968d925 187 */
omatorressan 0:1230a968d925 188 //
omatorressan 0:1230a968d925 189 int settingSMS() //esta funcion se invoca para configurar el modem al principio
omatorressan 0:1230a968d925 190 {
omatorressan 0:1230a968d925 191 if(0 != sendCmdAndWaitForResp("AT\r\n", "OK", 1)) {
omatorressan 0:1230a968d925 192 return -1;
omatorressan 0:1230a968d925 193 }
omatorressan 0:1230a968d925 194 if(0 != sendCmdAndWaitForResp("AT+CNMI=1,1\r\n", "OK", 1)) {
omatorressan 0:1230a968d925 195 return -1;
omatorressan 0:1230a968d925 196 }
omatorressan 0:1230a968d925 197 if(0 != sendCmdAndWaitForResp("AT+CMGF=0\r\n", "OK", 1)) {
omatorressan 0:1230a968d925 198 return -1;
omatorressan 0:1230a968d925 199 }
omatorressan 0:1230a968d925 200 if(0 != sendCmdAndWaitForResp("ATE\r\n", "OK", 1)) {
omatorressan 0:1230a968d925 201 return -1;
omatorressan 0:1230a968d925 202 }
omatorressan 0:1230a968d925 203 if(0 != sendCmdAndWaitForResp("CBST=0,0,1\r\n", "OK", 1)) {
omatorressan 0:1230a968d925 204 return -1;
omatorressan 0:1230a968d925 205 }
omatorressan 0:1230a968d925 206 return 0;
omatorressan 0:1230a968d925 207 }
omatorressan 0:1230a968d925 208
omatorressan 0:1230a968d925 209
omatorressan 0:1230a968d925 210 /* la funcion que inicaliza el modem se compone de un grupo de subfunciones
omatorressan 0:1230a968d925 211 primero chequea que este "vivo"
omatorressan 0:1230a968d925 212 segundo chequea el estado de la simcard
omatorressan 0:1230a968d925 213 tercero chequea la intencidad de señal celular
omatorressan 0:1230a968d925 214 cuarto aplica la configuracion
omatorressan 0:1230a968d925 215 y si todo sale bien retorna un cero que en la programacion hay que validar
omatorressan 0:1230a968d925 216 con alguna expresion logica
omatorressan 0:1230a968d925 217 */
omatorressan 0:1230a968d925 218 //
omatorressan 0:1230a968d925 219 int init()
omatorressan 0:1230a968d925 220 {
omatorressan 0:1230a968d925 221 for(int i = 0; i < 3; i++){
omatorressan 0:1230a968d925 222 sendCmdAndWaitForResp("AT\r\n", "OK", 1);
omatorressan 0:1230a968d925 223 wait(0.5);
omatorressan 0:1230a968d925 224 }
omatorressan 0:1230a968d925 225 if(0 != checkSIMStatus()) {
omatorressan 0:1230a968d925 226 return -1;
omatorressan 0:1230a968d925 227 }
omatorressan 0:1230a968d925 228 if(checkSignalStrength()<1) {
omatorressan 0:1230a968d925 229 return -1;
omatorressan 0:1230a968d925 230 }
omatorressan 0:1230a968d925 231
omatorressan 0:1230a968d925 232 GSM.attach(&Rx_interrupt, Serial::RxIrq);
omatorressan 0:1230a968d925 233 return 0;
omatorressan 0:1230a968d925 234 }
omatorressan 0:1230a968d925 235 /* la funcion intenta leer un mensaje de texto en formato PDU o HEX
omatorressan 0:1230a968d925 236 y si todo sale bien retorna un cero que en la programacion hay que validar
omatorressan 0:1230a968d925 237 con alguna expresion logica
omatorressan 0:1230a968d925 238 */
omatorressan 0:1230a968d925 239 //
omatorressan 0:1230a968d925 240 int readSMSpdu(char *message, int index)
omatorressan 0:1230a968d925 241 {
omatorressan 0:1230a968d925 242 int i = 0;
omatorressan 0:1230a968d925 243 char gprsBuffer[100];
omatorressan 0:1230a968d925 244 char *p,*s;
omatorressan 0:1230a968d925 245 GSM.printf("AT+CMGR=%d\r\n",index);
omatorressan 0:1230a968d925 246 cleanBuffer(gprsBuffer,100);
omatorressan 0:1230a968d925 247 readBuffer(gprsBuffer,100);
omatorressan 0:1230a968d925 248 if(NULL == ( s = strstr(gprsBuffer,"+CMGR"))) {
omatorressan 0:1230a968d925 249 return -1;
omatorressan 0:1230a968d925 250 }
omatorressan 0:1230a968d925 251 if(NULL != ( s = strstr(gprsBuffer,"+32"))) {
omatorressan 0:1230a968d925 252 p = s + 6;
omatorressan 0:1230a968d925 253 while((*p != '$')&&(i < 5)) {
omatorressan 0:1230a968d925 254 message[i++] = *(p++);
omatorressan 0:1230a968d925 255 }
omatorressan 0:1230a968d925 256 message[i] = '\0';
omatorressan 0:1230a968d925 257 }
omatorressan 0:1230a968d925 258 return 0;
omatorressan 0:1230a968d925 259 }
omatorressan 0:1230a968d925 260 /* la funcion borra mensajes SMS del modem
omatorressan 0:1230a968d925 261
omatorressan 0:1230a968d925 262 */
omatorressan 0:1230a968d925 263 //
omatorressan 0:1230a968d925 264 int deleteSMS(int index)
omatorressan 0:1230a968d925 265 {
omatorressan 0:1230a968d925 266 char cmd[32];
omatorressan 0:1230a968d925 267 snprintf(cmd,sizeof(cmd),"AT+CMGD=%d\r\n",index);
omatorressan 0:1230a968d925 268 sendCmd(cmd);
omatorressan 0:1230a968d925 269 return 0;
omatorressan 0:1230a968d925 270 }
omatorressan 0:1230a968d925 271 //
omatorressan 0:1230a968d925 272
omatorressan 0:1230a968d925 273 //
omatorressan 0:1230a968d925 274 void Rx_interrupt(){
omatorressan 0:1230a968d925 275 }
omatorressan 0:1230a968d925 276 /*
omatorressan 0:1230a968d925 277 readBuffer(buffer,6);
omatorressan 0:1230a968d925 278 if(strncmp(buffer, "+CMTI", 5)){
omatorressan 0:1230a968d925 279 wait(1);
omatorressan 0:1230a968d925 280 GSM.printf("AT+CMGL=%d\r\n",0);
omatorressan 0:1230a968d925 281 readBuffer(buffer,100);}
omatorressan 0:1230a968d925 282 if(strncmp(buffer, "+CMGL:", 5)){
omatorressan 0:1230a968d925 283 for (i=0;i<31;i++){
omatorressan 0:1230a968d925 284 buffer[5+i]=c; // 32 de basura
omatorressan 0:1230a968d925 285 }
omatorressan 0:1230a968d925 286 }
omatorressan 0:1230a968d925 287 for (i=0;i<10;i++){
omatorressan 0:1230a968d925 288 buffer[36+i]=tel[i]; // numero telefonico
omatorressan 0:1230a968d925 289 }
omatorressan 0:1230a968d925 290 for (i=0;i<18;i++){
omatorressan 0:1230a968d925 291 buffer[46+i]=c; // 18 de basura
omatorressan 0:1230a968d925 292 }
omatorressan 0:1230a968d925 293 for (i=0;i<2;i++){
omatorressan 0:1230a968d925 294 buffer[64+i]=tel[i]; // tamaño de septetos
omatorressan 0:1230a968d925 295 }
omatorressan 0:1230a968d925 296 for (i=0;i<30;i++){
omatorressan 0:1230a968d925 297 buffer[66+i]=DE[i]; // datos en octetos hex
omatorressan 0:1230a968d925 298 if (buffer[i]=='\0'){
omatorressan 0:1230a968d925 299 }
omatorressan 0:1230a968d925 300 */
omatorressan 0:1230a968d925 301
omatorressan 0:1230a968d925 302
omatorressan 0:1230a968d925 303
omatorressan 0:1230a968d925 304 int main(void)
omatorressan 0:1230a968d925 305 {
omatorressan 0:1230a968d925 306
omatorressan 0:1230a968d925 307
omatorressan 0:1230a968d925 308
omatorressan 0:1230a968d925 309 //NVIC_DisableIRQ(UART1_IRQn);
omatorressan 0:1230a968d925 310 //apagamos los 3 leds
omatorressan 0:1230a968d925 311 LedVerde=1;
omatorressan 0:1230a968d925 312 LedRojo=1;
omatorressan 0:1230a968d925 313 LedAzul=1;
omatorressan 0:1230a968d925 314 lenpack=6; //tamaño de "ALARMA"
omatorressan 0:1230a968d925 315 GSM.baud(9600);//actualiza los baudios de la FRDMKL25Z en 9600
omatorressan 0:1230a968d925 316 GSM.format(8,Serial::None,1); //actualiza el formato de los datos de la UART
omatorressan 0:1230a968d925 317 //se configura el modem GSM
omatorressan 0:1230a968d925 318 GSM.printf("AT\r\n");
omatorressan 0:1230a968d925 319 wait(0.5);
omatorressan 0:1230a968d925 320 GSM.printf("AT+CNMI=1,1\r\n");
omatorressan 0:1230a968d925 321 wait(0.5);
omatorressan 0:1230a968d925 322 GSM.printf("AT+CMGF=0\r\n");
omatorressan 0:1230a968d925 323 wait(0.5);
omatorressan 0:1230a968d925 324 GSM.printf("ATE\r\n");
omatorressan 0:1230a968d925 325 wait(0.5);
omatorressan 0:1230a968d925 326 GSM.printf("CBST=0,0,1\r\n");
omatorressan 0:1230a968d925 327 wait(0.5);
omatorressan 0:1230a968d925 328 LedVerde=0;
omatorressan 0:1230a968d925 329
omatorressan 0:1230a968d925 330 //if(0!= init()){ //se configura y chequea el modem GSM
omatorressan 0:1230a968d925 331 // LedRojo=0;
omatorressan 0:1230a968d925 332 //}
omatorressan 0:1230a968d925 333
omatorressan 0:1230a968d925 334
omatorressan 0:1230a968d925 335
omatorressan 0:1230a968d925 336 while(1){
omatorressan 0:1230a968d925 337
omatorressan 0:1230a968d925 338 if (button1.falling())
omatorressan 0:1230a968d925 339 { LedVerde=1;
omatorressan 0:1230a968d925 340 wait(2);
omatorressan 0:1230a968d925 341 if (!button1)
omatorressan 0:1230a968d925 342 {LedVerde=0;
omatorressan 0:1230a968d925 343 index=20;
omatorressan 0:1230a968d925 344 //GSM.printf("AT+CNMI=1,1\r\n"); //configuracion inicial del MODEM!
omatorressan 0:1230a968d925 345 GSM.printf("AT+CMGS=%d\r\n",index);
omatorressan 0:1230a968d925 346 wait(0.2);
omatorressan 0:1230a968d925 347 GSM.printf("0011000A91037130590900AA08416650DA0C8262"); //esto es "ALARMA 1 "
omatorressan 0:1230a968d925 348 wait(0.5);
omatorressan 0:1230a968d925 349 GSM.putc((char)0x1A); //esto es controlZ
omatorressan 0:1230a968d925 350 LedVerde=1;
omatorressan 0:1230a968d925 351 LedRojo=0; //se prende
omatorressan 0:1230a968d925 352 wait(3);
omatorressan 0:1230a968d925 353 LedRojo=1; // se apaga
omatorressan 0:1230a968d925 354 LedVerde=0;
omatorressan 0:1230a968d925 355 }
omatorressan 0:1230a968d925 356 }
omatorressan 0:1230a968d925 357
omatorressan 0:1230a968d925 358 if (GSM.readable()) {
omatorressan 0:1230a968d925 359 readBuffer(buffer,100);
omatorressan 0:1230a968d925 360 pc.printf("buffer= %s\n\r ",buffer);
omatorressan 0:1230a968d925 361 pc.printf("buffer= %c %c\n\r ",buffer[10],buffer[11]);
omatorressan 0:1230a968d925 362 if(buffer[67]=='A'){for(i=0;i<86;i++)
omatorressan 0:1230a968d925 363 {buffermsg[i]=buffer[i];}
omatorressan 0:1230a968d925 364 pc.printf("mensaje= %s\n\r ",buffermsg);
omatorressan 0:1230a968d925 365 pc.printf("mensaje[72]= %c mensaje[73]=%c\n\r ",buffermsg[72],buffermsg[73]);
omatorressan 0:1230a968d925 366 buffer[67]='c';
omatorressan 0:1230a968d925 367 }
omatorressan 0:1230a968d925 368
omatorressan 0:1230a968d925 369 if(buffer[10]=='S'&& buffer[11]=='M'){
omatorressan 0:1230a968d925 370 for(i=0;i<5;i++)
omatorressan 0:1230a968d925 371 {buffer1[i]=buffer[2+i];}
omatorressan 0:1230a968d925 372 pc.printf("buffer1= %s\n\r ",buffer1);
omatorressan 0:1230a968d925 373 buffer[10]='c';
omatorressan 0:1230a968d925 374 buffer[11]='c';
omatorressan 0:1230a968d925 375 }
omatorressan 0:1230a968d925 376 if(buffer1[3]=='T'){pc.printf("AT+CMGL=0\n\r");
omatorressan 0:1230a968d925 377 wait(0.5);
omatorressan 0:1230a968d925 378 GSM.printf("AT+CMGL=0\r\n");
omatorressan 0:1230a968d925 379 buffer1[3]='p';
omatorressan 0:1230a968d925 380 }
omatorressan 0:1230a968d925 381
omatorressan 0:1230a968d925 382
omatorressan 0:1230a968d925 383 if(buffermsg[70]=='6' && buffermsg[71]=='5'){LedAzul=0;}
omatorressan 0:1230a968d925 384 if(buffermsg[70]=='6' && buffermsg[71]=='F'){LedAzul=1;}
omatorressan 0:1230a968d925 385
omatorressan 0:1230a968d925 386
omatorressan 0:1230a968d925 387 }
omatorressan 0:1230a968d925 388
omatorressan 0:1230a968d925 389
omatorressan 0:1230a968d925 390
omatorressan 0:1230a968d925 391
omatorressan 0:1230a968d925 392 }
omatorressan 0:1230a968d925 393
omatorressan 0:1230a968d925 394
omatorressan 0:1230a968d925 395 }