当前位置:   article > 正文

stm32 利用SIM800C模块定位再通过该模块http协议发送给服务器_at+clbs

at+clbs

http 入门参考:https://cloud.tencent.com/developer/article/1425279

1、http基本命令

AT+SAPBR=3,1,"APN","UNINET"   //CMNET移动 CNNET电信 UNINET联通
AT+SAPBR=1,1  //激活网络 一定要等到ok返回,否则出错
AT+HTTPINIT   //初始化http网络
AT+HTTPPARA="CID",1  //设置回话参数
//设置域名给让模块解析
AT+HTTPPARA="URL","www.xiongyuchun.xyz:9999/Api/addDreamValueAPI.aspx?id=1&lng=115.40&lat=27.08"
AT+HTTPACTION=0 //开始发送请求并等待服务器响应 最后程序最后确认响应内容是否正确

2、定位基本命令

参考文章:http://www.openedv.com/forum.php?mod=viewthread&tid=232045&page=1

AT+CLBS=1,1
+CLBS: 0,113.333941,23.308106,550

+CLBS: 0,113.333941,23.308106,550 //这就得到了想要的定位数据,这里直接输出的是经纬度。其中113.333941是经度,23.308106是纬度,

 

3、程序控制

  1. //SIM800C主测试程序
  2. void sim800c_test(void)
  3. {
  4. u8 key=0;
  5. u8 timex=0;
  6. u8 sim_ready=0;
  7. // u8 start_flag = 0;
  8. POINT_COLOR=RED;
  9. Show_Str_Mid(0,30,"ATK-SIM800C 测试程序",16,240); //LCD显示
  10. while(sim800c_send_cmd("AT","OK",100))//检测是否应答AT指令
  11. {
  12. Show_Str(40,55,200,16,"未检测到模块!!!",16,0);
  13. delay_ms(800);
  14. LCD_Fill(40,55,200,55+16,WHITE);
  15. Show_Str(40,55,200,16,"尝试连接模块...",16,0);
  16. delay_ms(400);
  17. }
  18. LCD_Fill(40,55,200,55+16,WHITE);
  19. key+=sim800c_send_cmd("ATE0","OK",200);//不回显
  20. sim800c_mtest_ui(40,20);
  21. ntp_update();//网络更新
  22. while(1)
  23. {
  24. delay_ms(10);
  25. sim_at_response(1);//检查GSM模块发送过来的数据,及时上传给电脑
  26. if(sim_ready)//SIM卡就绪.
  27. {
  28. key=KEY_Scan(0);
  29. if(key==KEY0_PRES)
  30. {
  31. // start_flag =!start_flag;
  32. // if(start_flag)
  33. // {
  34. GPS_Location(); //定位测试
  35. // }
  36. sim800c_mtest_ui(40,30);
  37. timex=0;
  38. }
  39. }
  40. if(timex==0) //2.5秒左右更新一次
  41. {
  42. if(sim800c_gsminfo_show(40,225)==0)sim_ready=1;
  43. else sim_ready=0;
  44. }
  45. if((timex%20)==0)LED0=!LED0;//200ms闪烁
  46. timex++;
  47. }
  48. }
  49. void GPS_Location()
  50. {
  51. char *buf;
  52. char *p,*p1,*p2;
  53. char longitude[10],latitude[10];
  54. buf=mymalloc(SRAMIN,80);//申请80个字节的内存
  55. p=mymalloc(SRAMIN,50);//申请50个字节的内存
  56. if(buf==NULL||p==NULL)
  57. {
  58. printf("buf=mymalloc 失败!!!!!!!!!!\r\n");
  59. }
  60. //查询经纬度信息
  61. while(sim800c_send_cmd("AT+CLBS=1,1","+CLBS",200))
  62. {
  63. printf("查询经纬度失败\r\n");
  64. }
  65. //+CLBS
  66. p1=(u8*)strstr((const char*)USART3_RX_BUF,","); //第一个逗号开始
  67. p2=(u8*)strstr((const char*)(p1+1),","); //第二个逗号开始
  68. p2[0]=0;
  69. sprintf((char*)longitude,"%s",p1+1); //经度
  70. p1=(u8*)strstr((const char*)(p2+1),","); //第三个逗号开始
  71. p1[0]=0;
  72. sprintf((char*)latitude,"%s",p2+1); //纬度
  73. USART3_RX_STA=0;
  74. sprintf((char*)buf,"AT+HTTPPARA=\"URL\",\"www.xiongyuchun.xyz:9999/Api/addDreamValueAPI.aspx?id=1&lng=%s&lat=%s\"",longitude,latitude); //经纬度作为http请求参数
  75. sim800c_send_cmd(buf,"OK",200);
  76. sim800c_send_cmd("AT+HTTPACTION=0","OK",200);
  77. printf("%s\r\n",buf); //显示域名
  78. myfree(SRAMIN,buf);
  79. myfree(SRAMIN,p);
  80. delay_ms(1000);
  81. delay_ms(1000);
  82. delay_ms(1000);
  83. delay_ms(1000); //延时4s
  84. }
  85. //gprs网络初始化
  86. void ntp_update(void)
  87. {
  88. u8 ;
  89. while(sim800c_send_cmd("AT+SAPBR=3,1,\"Contype\",\"GPRS\"","OK",200))//配置承载场景1
  90. {
  91. printf("配置承载场景1失败\r\n");
  92. }
  93. while(sim800c_send_cmd("AT+SAPBR=3,1,\"APN\",\"CMNET\"","OK",200))//设置为中国联通网络
  94. {
  95. printf("设置为中国联通网络失败\r\n");
  96. }
  97. while(sim800c_send_cmd("AT+SAPBR=1,1",0,200))//激活一个GPRS上下文
  98. {
  99. printf("激活一个GPRS上下文失败\r\n");
  100. }
  101. sim800c_send_cmd("AT+HTTPINIT","OK",200); //http初始化
  102. sim800c_send_cmd("AT+HTTPPARA=\"CID\",1","OK",200); //设置http回话参数
  103. }

4、工程下载

 

https://download.csdn.net/download/shenlong1356/12453371

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/940808
推荐阅读
相关标签
  

闽ICP备14008679号