发表于:2014/11/25 19:37:13
#0楼
如下是控制SIM900A模块自动接听来电相关代码。系统加电后,如果不是指定电话的来电,系统不会自动应答,
如果是指定电话,指示灯闪烁后自动应答。但自动应答一次后,则系统却开放了其他电话的自动应答,但指示
灯却不闪烁,让我非常疑惑。指示灯不亮,应该没调用应答函数啊。请帮助分析一下。谢谢。
void GSM_AT()
{
Print_Str(AT,2);
Print_Char('\r');
ES=1;
delay_Xms(1000); //延时
Print_Str(CLIP,9);//开来电显
Print_Char('\r');
delay_Xms(1000);
***************************************************************
void phone_Answer() //自动应答
{
Print_Str(ATS0,6);//发ATS0命令响铃6次后自动应答
Print_Char('\r');
ES=1;
delay_Xms(2000);
}
******************************************************
void clear_Buff(void)//清缓存
{
for(j=0;j<MAXCHAR;j++)
{
aa[j]=0x00;
}
j=0;
}
************************************************************
void main()
{
D1LED=0;//指示灯
init_chuankou(); //串口初始化
delay_Xms(3500);//等待波特率同步?
GSM_AT();
delay_Xms(50);
clear_Buff();//清缓存
while(1)
{
if(strstr(aa,"156XXXXXXXX")!=NULL) //判断是否指定电话
{ D1LED=1;
clear_Buff();//
phone_Answer();//应答
}
else
D1LED=0;
}
}
如果是指定电话,指示灯闪烁后自动应答。但自动应答一次后,则系统却开放了其他电话的自动应答,但指示
灯却不闪烁,让我非常疑惑。指示灯不亮,应该没调用应答函数啊。请帮助分析一下。谢谢。
void GSM_AT()
{
Print_Str(AT,2);
Print_Char('\r');
ES=1;
delay_Xms(1000); //延时
Print_Str(CLIP,9);//开来电显
Print_Char('\r');
delay_Xms(1000);
***************************************************************
void phone_Answer() //自动应答
{
Print_Str(ATS0,6);//发ATS0命令响铃6次后自动应答
Print_Char('\r');
ES=1;
delay_Xms(2000);
}
******************************************************
void clear_Buff(void)//清缓存
{
for(j=0;j<MAXCHAR;j++)
{
aa[j]=0x00;
}
j=0;
}
************************************************************
void main()
{
D1LED=0;//指示灯
init_chuankou(); //串口初始化
delay_Xms(3500);//等待波特率同步?
GSM_AT();
delay_Xms(50);
clear_Buff();//清缓存
while(1)
{
if(strstr(aa,"156XXXXXXXX")!=NULL) //判断是否指定电话
{ D1LED=1;
clear_Buff();//
phone_Answer();//应答
}
else
D1LED=0;
}
}