搜索
bottom↓
回复: 0
打印 上一主题 下一主题

SIM900 HTTP GET联通卡卡正常,换移动卡就通讯不成功

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2014-1-12 11:28:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gadio 于 2014-1-12 11:43 编辑



  1. int8_t GPRS_BearerProfile(uint8_t *buf,uint8_t *apn)
  2. {
  3.         uint8_t ret,ch,i;
  4.        
  5.         delay_ms(100);
  6.        
  7.         UART3_BufferClear();
  8.         USART3_PutString("AT+SAPBR=3,1,"Contype","GPRS"\r\n");
  9.         GPRS_WaitFor("OK\r\n",1000);
  10.         delay_ms(500);
  11.         USART3_PutString("AT+SAPBR=3,1,"APN","");
  12.         USART3_PutString((char*)apn);
  13.         USART3_PutString(""\r\n");
  14.         GPRS_WaitFor("OK\r\n",2000);       
  15.         delay_ms(500);
  16.         USART3_PutString("AT+SAPBR=1,1\r\n");
  17.         GPRS_WaitFor("OK\r\n",10000);       
  18.         delay_ms(500);
  19.         USART3_PutString("AT+SAPBR=2,1\r\n");
  20.         UART3_BufferClear();

  21.         delay_ms(500);
  22.         ret = GPRS_WaitFor("+SAPBR:",3000);
  23.        if(ret)
  24.        {
  25.          GPRS_Response(24);

  26.          if(res_string_index < 8)
  27.          return 0;
  28.             if(res_string_index >22)
  29.                   res_string_index = 22;
  30.            for(ch=0;ch<res_string_index;ch++)
  31.            if(res_string[ch]=='"')
  32.               break;
  33.              ch++;
  34.              i=0;
  35.              for(;ch<res_string_index;ch++)
  36.              {
  37.                   if(res_string[ch]!='"')
  38.                       buf[i] = res_string[ch];
  39.                  else
  40.                  {
  41.                     buf[i]='\0';
  42.                     res_string_index=i;
  43.                     break;
  44.                  }
  45.                   i++;  
  46.             }
  47.        }
  48.     return res_string_index;
  49. }

  50. int8_t GPRS_ContextClose(void)
  51. {

  52.         UART3_BufferClear();
  53.         delay_ms(100);       
  54.         USART3_PutString("AT+SAPBR=0,1\r\n");
  55.         return GPRS_WaitFor("OK\r\n",1000);       

  56. }


  57. uint16_t GPRS_HTTP_GET(uint8_t *dns, uint8_t *buf)
  58. {
  59.         uint8_t ret,ch,ResultCode;
  60.         uint16_t length,index;
  61.         uint8_t timeout = 50;
  62.         uint8_t tmp_buf[4];
  63.        
  64.         delay_ms(100);
  65.        
  66.         UART3_BufferClear();
  67.         USART3_PutString("AT+HTTPINIT\r\n");
  68.        
  69.         GPRS_WaitFor("OK\r\n",1000);       
  70.         UART3_BufferClear();
  71.         delay_ms(100);
  72.         USART3_PutString("AT+HTTPPARA="CID",1\r\n");
  73.         GPRS_WaitFor("OK\r\n",1000);               
  74.         UART3_BufferClear();       
  75.         delay_ms(100);       
  76.         USART3_PutString("AT+HTTPPARA="URL","");
  77.         USART3_PutString((char *)dns);
  78.         USART3_PutString(""\r\n");
  79.         GPRS_WaitFor("OK\r\n",1000);       

  80.        delay_ms(100);               
  81.        UART3_BufferClear();
  82.         USART3_PutString("AT+HTTPACTION=0\r\n");       
  83.         GPRS_WaitFor("OK\r\n",1000);
  84.        
  85.         while(timeout--)
  86.         {
  87.                 delay_ms(100);
  88.                 ret = GPRS_WaitFor("+HTTPACTION:0,",1000);
  89.                 if(ret)
  90.                         break;
  91.         }
  92.         delay_ms(10);
  93.         tmp_buf[0] = USART3_GetChar();
  94.         tmp_buf[1] = USART3_GetChar();
  95.         tmp_buf[2] = USART3_GetChar();       
  96.         tmp_buf[3] = '\0';
  97.         ResultCode = memcmp(tmp_buf,"200",3);
  98.         printf("ResultCode=%d,%s\r\n",ResultCode,tmp_buf);
  99.         if(ret && (ResultCode == 0))
  100.         {
  101.                 delay_ms(100);
  102.                 memset((char*)tmp_buf,'\0',4);               
  103.                 UART3_BufferClear();
  104.                 USART3_PutString("AT+HTTPREAD\r\n");       
  105.                 ret = GPRS_WaitFor("+HTTPREAD:",8000);
  106.                 //printf("ret = %d\r\n",ret);
  107.                 if(ret)
  108.                 {
  109.                                 //delay_ms(10);
  110.                                 GPRS_WaitForNotRoll("\r\n",500);
  111.                                 GPRS_ResponseNotLength();
  112.                                 memcpy(tmp_buf,res_string,res_string_index);
  113.                                 length = atoi((char*)tmp_buf);
  114.                                 //printf("buf = %s ,length = %d\r\n",tmp_buf,length);       
  115.                

  116.                         if(GPRS_WaitForNotRoll("OK\r\n",10000))
  117.                         {
  118.                                 index = 0;
  119.                                 do
  120.                                 {
  121.                                         ch = USART3_GetChar();
  122.                                         if(ch != '\r' && ch != '\n')buf[index++] = ch;       
  123.                                 }while(ch);
  124.                         }
  125.                 }
  126.         }
  127.         delay_ms(100);
  128.         UART3_BufferClear();
  129.         USART3_PutString("AT+HTTPTERM\r\n");       
  130.         GPRS_WaitFor("OK\r\n",1000);
  131.         delay_ms(100);

  132.         return length;
  133. }
复制代码




串口通讯记录:


AT+SAPBR=3,1,"Contype","GPRS"

OK
AT+SAPBR=3,1,"APN","CMNET"

OK
AT+SAPBR=1,1

OK
AT+SAPBR=2,1

+SAPBR: 1,1,"10.149.77.103"

OK
AT+HTTPINIT

OK
AT+HTTPPARA="CID",1

OK
AT+HTTPPARA="URL","http://m.weather.com.cn/data/101280601.html"

OK
AT+HTTPACTION=0

OK
                                                                          
+HTTPACTION:0,601,0                                         // 这里返回601 ,正常为200,以及收到的json格式数据
AT+HTTPTERM

OK
AT+SAPBR=0,1

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 12:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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