Este es el código.
Código:#include ".....\SMS\sms.h" #include <stdio.h> #include <stdlib.h> #include <string.h> #define LED PIN_C0 char NUMERO[]="123456789"; int buffer[80]; char ok[]="OK"; char clave[]="ON"; #int_rda void rda_isr(void){ if(kbhit()!=0) { //buffer[i++]=getc(); gets(buffer); DatoRx=1; } } void leer() { printf("AT+CMGL="); putchar(0x22); printf("REC UNREAD"); putchar(0x22); putchar(0X0D); if(DatoRx==1){ if(strstr(buffer,clave)!=null&&strstr(buffer,NUMERO)!=NULL) { lcd_putc("\fALARMA ON"); output_high(STATUS_LED); init_buffer(); delay_ms(500); DatoRx=0; flac=0; activado=1; } } void main() { setup_psp(PSP_DISABLED); setup_spi(SPI_SS_DISABLED); setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); enable_interrupts(Global); enable_interrupts(INT_RDA); printf("AT+CMGF=1"); putchar(0X0D); delay_ms(500); printf("AT+CNMI=1,2,0,0,0"); putchar(0X0D); while (TRUE) { leer_sms(); if(activado==1) { output_high(LED); } } }
Lo que necesito es recabar la información de los mensajes recibidos pero no leídos.
Buenas amigo. Esta semana empecé un proyecto igual que el tuyo para activar y desactivar una alarma.
Puedo enviar mensajes desde el pic sin problemas. Pero al momento de recibir un mensaje en el pic y querer darle una función al pic se me pega sin respuesta.
Por favor si solucionaste me puedes decir como lo hiciste. Seria de gran ayuda.
EStoy usando el pic16f877a, un modulo gsm SIM900 y programo con CCS Compiler.
un ejemplo de una función al leer el mensaje.
while (true){
IF (kbhit () ){ //Detecto si hay un carácter en la entrada
gets(dato); //Leer Mensaje de llegada después del enter que envía el SIM900
}
if(dato[1]== 'R' &&dato[2]== 'I' &&dato[3]=='N' &&dato[4]=='G'){ //Detecta si
//el mensaje dice RING
delay_ms(100);
puts("ATH"); //Tranco la llamada
delay_ms(300);
putchar(0x0d); //Envió un enter por acaso
printf("ATZ\r"); //Restauro el SIM900
delay_ms(2000);
output_high(pin_E2); //Pongo en alto el pin E2 para activar la alarma
lcd_init();
}
Saludos