|
本帖最后由 lu0718 于 2015-4-10 17:56 编辑
功能:上电测试AT指令后检测联网检测。放入的是欠费停机的卡,而且SIM卡在手机上也是显示无网络的。
下面这两段代码有什么不同的吗,为什么第一个代码不能用,返回竟然是已经连接了。而第二个代码是连不上的,也是正确的。
第一段(不正确)
uchar gsm_int(void)
{
uchar ExtractTime,network;
ExtractTime=40;
while(ExtractTime--)
{
if(ExtractTime<2)//AT命令失败提示
{
GPIO_ResetBits(GPIOB, GPIO_Pin_1) ;
return 0;
}
if(gsm_start())break;
delaynms(250);
}
delaynms(200);
network=120;//上电后连续30S的联网检测
while(network--)
{
if(network<2)//联网失败提示
{
GPIO_ResetBits(GPIOB, GPIO_Pin_0) ;
return 0;
}
if(gsm_check_network())break;
delaynms(250);
}
delaynms(100);
gsm_ate0();//设置不回显
delaynms(100);
gsm_cnmi();//设置新消息提示
delaynms(100);
gsm_csdh();//设置TEXT方式参数
delaynms(100);
gsm_cmgf();//设置短消息为TEXT方式,0则为PDU格式
delaynms(100);
gsm_cpbs();//选择SM卡为电话本存储地址
delaynms(100);
gsm_cpms();//选择SM卡为短信存储地址
return 1;
}
第二段(正确)
uchar gsm_int(void)
{
uchar ExtractTime,network;
ExtractTime=40;
while(ExtractTime--)
{
if(gsm_start()==1)//检查SIM900A模块是否存在
{
network=120;//上电后连续30S的联网检测
while(network--)
{
if(network<2)//联网失败提示
{
GPIO_ResetBits(GPIOB, GPIO_Pin_0) ;
return 0;
}
if(gsm_check_network()==1)break;
delaynms(250);
}
}
delaynms(250);
}
delaynms(100);
gsm_ate0();//设置不回显
delaynms(100);
gsm_cnmi();//设置新消息提示
delaynms(100);
gsm_csdh();//设置TEXT方式参数
delaynms(100);
gsm_cmgf();//设置短消息为TEXT方式,0则为PDU格式
delaynms(100);
gsm_cpbs();//选择SM卡为电话本存储地址
delaynms(100);
gsm_cpms();//选择SM卡为短信存储地址
return 1;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|