e test thử module kêt nối sim 548 thì ok nó gửi về các lệnh
+CMTI: "folder",n
(tin nhắn thứ n trong thư mục "folder")
AT + CMGR = 1
+GMGR: "REC UNREAD","+841692885482",,"08/08/01,14:32:42+28"
làm thế nào để mình xử lý các lệnh này trong PIc 16f877a.
e đã làm nhưng mãi ko nhận được tín hiêu
cứ vào hàm xuly_sms mà làm nhưg ko biết nó làm gì ở đó mà ko so sánh được mong được sự giúp đở
#include <16f877a.h>
#device PIC16F877A*=16 ADC=10
#include <string.h>
#fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt
#use delay(clock=12000000)
#use fast_io(b)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
#bit b1=portb.0
#bit b2=portb.1
#bit b3=portb.2
#bit b4=portb.3
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
char chuoi[90],noidung_sms[20],tu_khoa[20];
int8 dem,k,new_sms,z,vitri,x,y,i;
/*********** Khai bao ngat nhan noi tiep ***********/
#INT_RDA
void ngat()
{
chuoi[dem]=getc();
if(chuoi[dem]=='\r')
{
z++;
if(z==2)new_sms=1;
}
dem++;
}
void xuly();
void xuly_sms();
void gsm_config();
void xoa();
void trang_thai();
void main()
{
set_tris_a(0b000001);
set_tris_b(0b00000000);
set_tris_d(0b00000000);
portb=0;
portd=0;
enable_interrupts(global);//Cho phep ngat toan cuc
enable_interrupts(int_rda);//Cho phep ngat nhan noi tiep
setup_adc(ADC_clock_internal); // thiet lap tan so lay mau ADC
setup_adc_ports(AN0); // ngo vao A0
set_adc_channel(0); // chan doc gia tri adc bang read_adc()
gsm_config();//goi chuong trinh con cau hinh Module GSM
new_sms=0;
z=0;
while(1)
{
if(new_sms==1)
{
xoa();
puts("at+cmgr=1");
delay_ms(500);
xuly_sms();
xuly();
delay_ms(200);
puts("at+cmgd=1");
delay_ms(500);
xoa();
delay_ms(500);
}
}}
void gsm_config()
{
delay_ms(2000);
printf("at\r\n");
delay_ms(500);
printf("at\r\n");
delay_ms(500);
printf("at\r\n");
delay_ms(500);
printf("at\r\n");
delay_ms(500);
printf("ate0\r\n");
delay_ms(500);
printf("at+cmgf=1\r\n");
delay_ms(500);
printf("at+cmgd=1\r\n");
delay_ms(500);
xoa();
delay_ms(500);
portd=3;delay_ms(1000);portd=0;delay_ms(1000); //2 led sang //cau hinh xong
}
//+++++++++++++++ xoa +++++++++++++++++//
void xoa()
{
new_sms=0;
z=0;
dem=0;
y=0;
vitri=0;
for(i=0;i<=90;i++) //Xoa chuoi[]
{chuoi[i]=0;}
for(i=0;i<=20;i++) //Xoa noidung_sms[]
{noidung_sms[i]=0;}
}
//+++++++++++++++++++++ xu ly tin nhan ++++++++++++++//
void xuly_sms()
{
y=0;
k=0;
for(i=0;i<=strlen(chuoi);i++)
{
if(chuoi[i]=='\n')
{
k++;
if(k==2)vitri=i+1 ;
}
}
for(x=vitri;x<strlen(chuoi)-8;x++)
{noidung_sms[y]=chuoi[x];
y++ ; // lay noi dung
}
}
//+++++++++++++++ XU LY va DIEU KHIEN +++++++++++++++++++//
void xuly()
{
strcpy(tu_khoa,"On1");
if(strcmp(tu_khoa,noidung_sms)==0)
{
b1=1;
printf("AT+CMGS=\"01674577163\"\r\n");
delay_ms(500);
printf("den 1 da mo");
delay_ms(500);
putc(26); // ctrl +Z
delay_ms(500);
}
strcpy(tu_khoa,"Off1");
if(strcmp(tu_khoa,noidung_sms)==0)
{
printf("AT+CMGS=\"01674577163\"\r\n");
delay_ms(500);
printf("den 1 da tat");
delay_ms(500);
putc(26); // ctrl +Z
delay_ms(500);
}
}
+CMTI: "folder",n
(tin nhắn thứ n trong thư mục "folder")
AT + CMGR = 1
+GMGR: "REC UNREAD","+841692885482",,"08/08/01,14:32:42+28"
làm thế nào để mình xử lý các lệnh này trong PIc 16f877a.
e đã làm nhưng mãi ko nhận được tín hiêu
cứ vào hàm xuly_sms mà làm nhưg ko biết nó làm gì ở đó mà ko so sánh được mong được sự giúp đở
#include <16f877a.h>
#device PIC16F877A*=16 ADC=10
#include <string.h>
#fuses nowdt,hs,noput,noprotect,nodebug,nobrownout,nolvp, nocpd,nowrt
#use delay(clock=12000000)
#use fast_io(b)
#byte porta=0x05
#byte portb=0x06
#byte portc=0x07
#byte portd=0x08
#bit b1=portb.0
#bit b2=portb.1
#bit b3=portb.2
#bit b4=portb.3
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)
char chuoi[90],noidung_sms[20],tu_khoa[20];
int8 dem,k,new_sms,z,vitri,x,y,i;
/*********** Khai bao ngat nhan noi tiep ***********/
#INT_RDA
void ngat()
{
chuoi[dem]=getc();
if(chuoi[dem]=='\r')
{
z++;
if(z==2)new_sms=1;
}
dem++;
}
void xuly();
void xuly_sms();
void gsm_config();
void xoa();
void trang_thai();
void main()
{
set_tris_a(0b000001);
set_tris_b(0b00000000);
set_tris_d(0b00000000);
portb=0;
portd=0;
enable_interrupts(global);//Cho phep ngat toan cuc
enable_interrupts(int_rda);//Cho phep ngat nhan noi tiep
setup_adc(ADC_clock_internal); // thiet lap tan so lay mau ADC
setup_adc_ports(AN0); // ngo vao A0
set_adc_channel(0); // chan doc gia tri adc bang read_adc()
gsm_config();//goi chuong trinh con cau hinh Module GSM
new_sms=0;
z=0;
while(1)
{
if(new_sms==1)
{
xoa();
puts("at+cmgr=1");
delay_ms(500);
xuly_sms();
xuly();
delay_ms(200);
puts("at+cmgd=1");
delay_ms(500);
xoa();
delay_ms(500);
}
}}
void gsm_config()
{
delay_ms(2000);
printf("at\r\n");
delay_ms(500);
printf("at\r\n");
delay_ms(500);
printf("at\r\n");
delay_ms(500);
printf("at\r\n");
delay_ms(500);
printf("ate0\r\n");
delay_ms(500);
printf("at+cmgf=1\r\n");
delay_ms(500);
printf("at+cmgd=1\r\n");
delay_ms(500);
xoa();
delay_ms(500);
portd=3;delay_ms(1000);portd=0;delay_ms(1000); //2 led sang //cau hinh xong
}
//+++++++++++++++ xoa +++++++++++++++++//
void xoa()
{
new_sms=0;
z=0;
dem=0;
y=0;
vitri=0;
for(i=0;i<=90;i++) //Xoa chuoi[]
{chuoi[i]=0;}
for(i=0;i<=20;i++) //Xoa noidung_sms[]
{noidung_sms[i]=0;}
}
//+++++++++++++++++++++ xu ly tin nhan ++++++++++++++//
void xuly_sms()
{
y=0;
k=0;
for(i=0;i<=strlen(chuoi);i++)
{
if(chuoi[i]=='\n')
{
k++;
if(k==2)vitri=i+1 ;
}
}
for(x=vitri;x<strlen(chuoi)-8;x++)
{noidung_sms[y]=chuoi[x];
y++ ; // lay noi dung
}
}
//+++++++++++++++ XU LY va DIEU KHIEN +++++++++++++++++++//
void xuly()
{
strcpy(tu_khoa,"On1");
if(strcmp(tu_khoa,noidung_sms)==0)
{
b1=1;
printf("AT+CMGS=\"01674577163\"\r\n");
delay_ms(500);
printf("den 1 da mo");
delay_ms(500);
putc(26); // ctrl +Z
delay_ms(500);
}
strcpy(tu_khoa,"Off1");
if(strcmp(tu_khoa,noidung_sms)==0)
{
printf("AT+CMGS=\"01674577163\"\r\n");
delay_ms(500);
printf("den 1 da tat");
delay_ms(500);
putc(26); // ctrl +Z
delay_ms(500);
}
}
Comment