gsm
Dependencies: DebouncedIn mbed
Fork of CLASEDELGSM1 by
Diff: main.cpp
- Revision:
- 5:dbb0384120e0
- Parent:
- 4:0b889f7a8eba
- Child:
- 6:4cece0df6a3b
diff -r 0b889f7a8eba -r dbb0384120e0 main.cpp --- a/main.cpp Sun May 08 08:56:40 2016 +0000 +++ b/main.cpp Tue May 10 10:08:40 2016 +0000 @@ -42,6 +42,7 @@ Timer t; DigitalOut LedVerde(LED2); DigitalOut LedRojo(LED1); +DigitalOut camara(PTE5 ); DigitalOut LedAzul(LED3); DebouncedIn PIR(PTA13); //señal que inicia el envio del mensaje DebouncedIn button1(PTC12); //señal que inicia el envio del mensaje @@ -55,10 +56,10 @@ int longi=0; char tel[11]; char DE[50]; -char buffer[100]; -char buffermsg[100]; -char buffer1[100]; -char datos[100]; +char buffer[200]; +//char buffermsg[200]; +//char buffer1[200]; +//char datos[200]; char NUMBER[13]; char resp[6]; char CMT[]="+CMTI"; @@ -71,7 +72,7 @@ unsigned char CtrlZ = 0x1A; // comodin de emision controlZ bool Flag = false; // bandera char r[]=""; //Cadena de recepcion de la trama PDU si se usa!! -char msg[256]; +char msg[50]; char char1; //Flush serial para el buffer void FlushGSM(void) { @@ -256,6 +257,9 @@ if (0 != sendCmdAndWaitForResp("AT+CBST=0,0,1\r\n", "OK", 3)){ return -1; } + if (0 != sendCmdAndWaitForResp("ATE\r\n", "OK", 3)){ + return -1; + } LedVerde=0; return 0; } @@ -339,11 +343,11 @@ GSM.printf("0011000A9113223717370000AA2A21970B19CE83926EBABC3E7FCF41453788190699D3EE7118442E83A4E9B7BB7C96BF5DAE10"); wait_ms(200); GSM.putc((char)0x1A); - for(i=0;i<6;i++){ + for(i=0;i<60;i++){ //por mas ruido se envia un mensaje cada minuto LedVerde=1; - wait(0.2); + wait(0.5); LedVerde=0; - wait(0.2); + wait(0.5); } } } @@ -356,7 +360,7 @@ //la comparacion de estos mensajes constituye generar accionamiento abrir o cerrar circuitos o contestar mensajes if (GSM.readable()) { - readBuffer(buffer,100); + readBuffer(buffer,110); pc.printf("%s\r\n",buffer); for(i=0;i<5;i++) { @@ -386,27 +390,37 @@ } pc.printf("%s-\r\n",tam); //leer mensaje - for(i=0;i<14;i++){ - msg[i]=buffer[i+70]; //OJO SE LEE EL MENSAJE APARTIR DE LA POSICION 70 + for(i=0;i<20;i++){ + msg[i]=buffer[i+70]; //OJO SE LEE EL MENSAJE APARTIR DE LA POSICION 70 14 caracteres } pc.printf("%s-\r\n",msg); //decodificar mensaje //comparar mensaje deleteSMS(1);//se borra el bufer por medio de una funcion - if(strcmp("417658DE0EC700",msg) == 0){ //COMPARA resp con "417658DE0EC700" que es Alarma1 + if(strncmp("417658DE0EC700",msg,14) == 0){ //COMPARA resp con "417658DE0EC700" que es Alarma1 LedVerde=1; LedAzul=0; wait(15); LedAzul=1; LedVerde=0; } - if(strcmp("417658DE0ECB00",msg) == 0){ //COMPARA resp con "417658DE0ECB00" que es Alarma2 + if(strncmp("417658DE0ECB00",msg,14) == 0){ //COMPARA resp con "417658DE0ECB00" que es Alarma2 LedVerde=1; LedRojo=0; wait(15); LedRojo=1; LedVerde=0; } + if(strncmp("C3703B2C0F83DE6E",msg,16) == 0){ //COMPARA resp con "417658DE0ECB00" que es Camara on + camara=1; + } + if(strncmp("C3703B2C0F83DE66",msg,16) == 0){ //COMPARA resp con "417658DE0ECB00" que es Camara of + camara=0; + } + if(strncmp("D3B4BCEC0E83DE6E",msg,16) == 0){ //COMPARA resp con "D3B4BCEC0E83DE6E" que es Sirena on + camara=0; + } + //strncmp(str1, str2, 6) compara hasta 6 caracteres //ejecurar orden si esta es mas que prender leds @@ -433,6 +447,41 @@ AT+CMGS=20 //un salto de linea y el simbolo mayor > +patrones de alarma y mensajes +Camara on + +da esto + +CMGL: 1,0,,26 +0791751330512411040AA1132237173700006150709060250A09C3703B2C0F83DE6E + +Camara of da esto ++CMGL: 2,0,,26 +0791751330080089040AA1132237173700006150709001520A09C3703B2C0F83DE66 +mensaje=C3703B2C0F83DE66 +OK + +Sirena on +da esto + ++CMGL: 3,0,,26 +0791751330512411040AA1132237173700006150709031540A09D3B4BCEC0E83DE6E +mensaje=D3B4BCEC0E83DE6E +OK + +Sirena of + +da esto ++CMGL: 4,0,,26 +0791751330512411040AA1132237173700006150709051750A09D3B4BCEC0E83DE66 +mensaje=D3B4BCEC0E83DE66 +OK + +Alarma 1 + ++CMGL: 1,0,,25 +0791751330512411040AA1132237173700006150702153640A08417658DE0E8362 +mensaje=417658DE0E8362 +5