野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 11655|回复: 1

GPRS程序请教

[复制链接]
发表于 2015-11-10 11:45:40 | 显示全部楼层 |阅读模式

碰到一个问题现在自己还没解决,这里求教下:

问题描述: 通过GPRS发送ADC1_savedate1

if(sim900a_gprs_send((const char*)ADC1_savedate1)!=SIM900A_TRUE)
        {
                  LED3( ON );       
               
                  printf("\r\nTCP发送失败,请检测各模块是否运行正常\r\n");
                  SIM900A_DELAY(1000);
                  printf("\n链接断开\n");
                  SIM900A_DELAY(100);
             sim900a_gprs_link_close();       
               
                  printf("\n关闭场景\n");
                  SIM900A_DELAY(100);
                  sim900a_gprs_shut_close();
               
                 LED3( OFF );                  
        }

数据是发送成功的,但是判读语句是结果为非,程序跳转到再发送后续语句了。问题就在if(sim900a_gprs_send((const char*)ADC1_savedate1)!=SIM900A_TRUE)里面。


uint8_t sim900a_gprs_send(const char * str)
{
    char *redata;
        SIM900A_CLEAN_RX();
        sim900a_tx_printf("AT+CIPSEND\r");
    //SIM900A_DELAY(100);       
    redata=sim900a_waitask(0);
       
        SIM900A_CLEAN_RX();
    sim900a_tx_printf("%s",str);
        while((USART2->SR&0X40)==0);//
        USART2->DR=(u32)0x1A;                //·
       
        redata=sim900a_waitask(0);       
        SIM900A_CLEAN_RX();
        redata=sim900a_waitask(0);       
        if(strstr(redata,"OK")==NULL)  //这句判断”OK“是否是redata 的子字符串,如果不是返回NULL,所以返回值为FALSE了。但是我没搞明白redata的用途,正常应该是怎么样的?
    {
        return SIM900A_FALSE;  //
    }
        return SIM900A_TRUE;
}


求大神帮我具体解析下这段程序,谢谢。另外我定义的是 BYTE ADC1_savedate1[512];



回复

使用道具 举报

发表于 2015-11-10 16:35:57 | 显示全部楼层
strstr 判断字符是否为“OK” ,如果字符串是OK那说明命令响应正常了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-23 01:29 , Processed in 0.034507 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表