lu0718 发表于 2015-4-10 17:52:05

关于SIM900A初始化的两段代码问题

本帖最后由 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;
}

wyq200704 发表于 2015-8-16 22:53:31

这种情况请使用流程图,伪代码,你发的代码是个啥
页: [1]
查看完整版本: 关于SIM900A初始化的两段代码问题