原子哥家的 SIM800L透传模式配置

来源:互联网 发布:js正则判断正整数 编辑:程序博客网 时间:2024/06/16 22:24

写在前面的话:

    最近项目开发经常用到数据传输模块和服务器进行HTTP通信,自己已经明白了如何运用模块进行AT指令传输数据,但是如何快速的传输数据才?除了前几天发的 模块PPP拨号上网方式外,还有一种数据传输方式 透传模式! 在此谢谢 汪东海的提醒,已经没问题了!



另外:帖子上看到一位玩安卓开发的软妹子,下面有她的QQ号,去搭讪吧!

妹子我写代码很辛苦/(ㄒoㄒ)/~~ ,转载请注明出处哦~http://blog.csdn.net/u011791526/article/details/73650360

作者catRuan(阮妹子)联系方式:QQ:940472401 邮箱:940472401@qq.com

好可爱有没有 ^-^ !


SIM800L透传模式配置

1
2
3
4
5
6
7
8
9
10
11
12
UART1_SendString("AT+CIPCLOSE=1");  //关闭连接
  delay_ms(100);
    Second_AT_Command("AT+CIPSHUT","SHUT OK",2);        //关闭移动场景
    Second_AT_Command("AT+CGCLASS=\"B\"","OK",2);//设置GPRS移动台类别为B,支持包交换和数据交换
    Second_AT_Command("AT+CGDCONT=1,\"IP\",\"CMNET\"","OK",2);//设置PDP上下文,互联网接协议,接入点等信息
    Second_AT_Command("AT+CGATT=1","OK",2);//附着GPRS业务
    Second_AT_Command("AT+CIPCSGP=1,\"CMNET\"","OK",2);//设置为GPRS连接模式
  Second_AT_Command("AT+CIPMUX=0","OK",2);//设置为单路连接
    Second_AT_Command("AT+CIPHEAD=1","OK",2);//设置接收数据显示IP头(方便判断数据来源,仅在单路连接有效)
    Second_AT_Command("AT+CIPMODE=1","OK",2);//打开透传功能
    Second_AT_Command("AT+CIPCCFG=5,2,200,1,0,200,50","OK",2);//配置透传模式:单包重发次数:5,间隔400mS认为一帧结束,每次发送200的字节,每次接收200字节
  Second_AT_Command((char*)string,"OK",5);//建立连接,进入透传模式

  


某天,突然想,SIM900A能不能访问网页呢?如果能,直接把数据通过网页提交上去不就更简单了嘛。

于是乎,果断咨询卖家,得到的答复是“理论上可行,但是没测试过”。

好吧,那只能百度了。不百不知道,一百吓一跳。全网好像没有一个完整的SIM900A访问HTTP的例子。恰好,Google又访问不了(想做个好孩子,不FQ)。只能自己帮自己了。

1、要访问网页,总得先上网吧。

那手机是怎么上网的呢?打开“数据连接”就行了吧。恩。可是手机怎么知道怎么接入网络呢?想起当年用Hero的时候,无数次设置APN,如下图。

看明白了吗?手机中有默认的网络接入点,当打开“数据连接”的时候,手机会接入指定的接入点。那么,再回过头来看AT+SAPBR指令的参数,原来如此。那我们执行如下的AT指令:

(1)AT+SAPBR=3,1,"APN","cmnet":这条指令设置接入点名称(第4张图第二行)。

(2)AT+SAPBR=3,1,"PHONENUM","12345678900":设置电话号码。

其它的参数不用这是了吧,因为第4张图上也没有设置。

(3)AT+SAPBR=4,1:查询参数设置。

(4)AT+SAPBR=5,1:将本次的参数设置保存到RAM,下次就不用设置了,直接打开就行。

4条指令中,那个“1”是什么意思?其实,我也没搞的很清楚,就算是个标识吧。

(5)AT+SAPBR=1,1:打开承载,我的理解是你打开了“数据连接”。

(6)AT+SAPBR=2,1:这条命令可以查看到接入网络的状态还有IP地址。


好了,现在我已经接入网络了(返回的第2个参数是1表示已经连接),我的IP地址是“10.129.8.149”(第3个参数)。

2、没有UC,我咋访问网页呢?

慢慢来。先看看“第10章HTTP应用AT指令”,一共7条指令。基本思路就是先初始化,然后设置参数,激活HTTP,等到相应,然后再读返回的数据,最后关闭。下面,我要访问我们学院的网站了:http://www.dyxy.NET。

(1)AT+HTTPINIT:初始化HTTP。

(2)AT+HTTPPARA="CID","1":设置承载上下文标识,和上面一致。

(3)AT+HTTPPRAR="URL","http://www.dyxy.net":设置你要访问的那个网站,要加上“http://”协议的啊。

其它的参数我们暂且不去设置。

(4)AT+HTTPACTION=0:激活HTTP请求,0表示get方式、1表示post方式、2表示head(这个不知道啥意思)。

这个时候要耐心等,在OK之后会返回HTTP的状态。我的状态如下:



看到“200”了吗?这说明访问成功了。那个“0”表示你的访问方式,刚才我们用get去访问的。那最后的那个“30188”是什么呢?恩,它是DataLen,也就是用字节表示的网页的内容的长度。

好吧,那怎么获取网页的内容呢?AT+HTTPREAD指令现在登场。

(5)AT+HTTPREAD=1,30188:读取HTTP相应数据。1表示从第一个字节开始读,读30188个字节。

如果我们操作正确、且我们知道HTML是什么的话,我们会惊讶的发现,网页的内容被读出来了。哈哈哈哈!

(6)AT+HTTPTERM:访问完了,记得终止HTTP服务啊。

(7)AT+SAPBR=0,1:最后别忘记关闭承载。

OK,这样,我们就实现了SIM900A通过GET方式访问网页的问题。

当然,这是非常简单的操作。我们肯定会遇到这样那样的问题,比如:

(1)AT+HTTPREAD指令最多能读出102400字节的数据,那如果某个网页返回的数据量超过了102400该怎么办?

(2)怎么通过POST方式提交数据?


原创粉丝点击