最近做项目,使用Arduino控制设备,读取数据,然后通过移动网络传送到服务器。

我选用的是正点原子的SIM900A模块。在服务器部署了一个监听程序,Arduino控制SIM900A通过TCP方式把数据发送到服务器。

某天,突然想,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方式提交数据?

等等......

慢慢来吧,总会有方法的。我先开班会去了。

SIM900A访问HTTP的简单方法的更多相关文章

  1. opencv2中访问像素的简单方法-自定义一个宏CV_MAT_ELEM2

    利用Mat的step[0],step[1]访问像素的行列,自定义一个宏CV_MAT_ELEM2(src,dtype,y,x),src是待访问的Mat,dtype是src的数据类型(int,float, ...

  2. [转帖]nginx 禁止ip访问以及禁止post方法的简单方法

    nginx禁止IP访问站点的设置方法 http://www.512873.com/archives/471.html http://www.512873.com/archives/312.html c ...

  3. DataAccess通用数据库访问类,简单易用,功能强悍

    以下是我编写的DataAccess通用数据库访问类,简单易用,支持:内联式创建多个参数.支持多事务提交.支持参数复用.支持更换数据库类型,希望能帮到大家,若需支持查出来后转换成实体,可以自行扩展dat ...

  4. C#操作FTP报错,远程服务器返回错误:(550)文件不可用(例如,未找到文件,无法访问文件)的解决方法

    最近在做项目的时候需要操作ftp进行文件的上传下载,但在调用using (var response = (FtpWebResponse)FtpWebRequest.GetResponse())的时候总 ...

  5. C++:调整基类成员在派生类中的访问属性的其他方法(同名成员和访问声明)

    4.3 调整基类成员在派生类中的访问属性的其他方法 4.3.1 同名函数 在定义派生类的时候,C++语言允许在派生类中说明的成员与基类中的成员名字相同,也就是 说,派生类可以重新说明与基类成员同名的成 ...

  6. vue.js之生命周期,防止闪烁,计算属性的使用,vue实例简单方法和循环重复数据

    摘要:今天是比较糟糕的一天没怎么学习,原因是学校的wifi连不上了~~.今天学习一下vue的生命周期,如何防止闪烁(也就是用户看得到花括号),计算属性的使用,vue实例简单方法,以及当有重复数据时如何 ...

  7. [转]PHP实现页面静态化的超简单方法

    为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态 ...

  8. 提高C++程序运行效率的10个简单方法

    转载: 一.尽量减少值传递,多用引用来传递参数.至于其中的原因,相信大家也很清楚,如果参数是int等语言自定义的类型可能能性能的影响还不是很大,但是如果参数是一个类的对象,那么其效率问题就不言而喻了. ...

  9. Ubuntu系统安装VMware Tools的简单方法

    不少网友反映在VMWare虚拟机下安装Ubuntu系统后无法安装VMware Tools,这里给出一个简单方法,只需要几步即可解决. 第一步:进入系统后,点击虚拟机上的安装vmware tools,回 ...

随机推荐

  1. iOS之隐藏状态栏

    iOS7中,不仅应用的风格有一定的变化,状态栏变化比较大,我们可以看到UIViewController的状态栏与导航栏基本是一体的.因此UIVIEWCONTROLLER的hide/show状态的方法也 ...

  2. [辛酸历程]在Mac中使用Python获取屏幕截图

    一.起因 最近想做个小外挂玩玩,技术倒是不难,就是通过图片匹配加上一些判断方法来刷分.但是在最不起眼(却最容易出问题)的准备阶段卡住了. 为什么卡住了呢,简单说,因为我需要获取截屏的数据,所以就要找一 ...

  3. C#中登录验证FormsAuthentication

    1:前台编写一个登录界面,这里为了简化,只有用户名和密码 代码如下: <form method="post" action="/User/CheckLogin&qu ...

  4. javaweb学习总结九(xml解析以及调整JVM内存大小)

    一:解析XML文件的两种方式 1:dom,document object model,文档对象模型. 2:sax,simple API for XML. 3:比较dom和sax解析XML文件的优缺点 ...

  5. linux nginx启动 重启 关闭命令

    启动操作 nginx -c /usr/local/nginx/conf/nginx.conf -c参数指定了要加载的nginx配置文件路径 停止操作停止操作是通过向nginx进程发送信号来进行的 步骤 ...

  6. Web Service 一些对外公开的网络服务接口

    商业和贸易: 1.股票行情数据 WEB 服务(支持香港.深圳.上海基金.债券和股票:支持多股票同时查询) Endpoint: http://webservice.webxml.com.cn/WebSe ...

  7. (转)C#模拟键盘鼠标事件

    原文 1.模拟键盘事件System.Windows.Forms.SendKeys以下是   SendKeys   的一些特殊键代码表.     键   代码       BACKSPACE   {BA ...

  8. 关于css雪碧图sprite

    天气转凉了,又开始贪恋暖暖的被窝了. 早上不想起床的时候在被窝里看了有关于雪碧图的视频. 1.使用场景 V导航条,登录框img标签多次载入,性能低 X大图banner按需加载,如果做成雪碧图一次加载就 ...

  9. 再次阅读《精通CSS-高级Web标准解决方案(第二版)》

    昨天(2015年11月21日) 在我们学校举行了大型招聘会.我面试了三家企业.有一家企业是先做笔试题的,做完后发现自己还是很多细节处理得不够.无论还有没有二面,我还是要重新把<精通CSS> ...

  10. Cocos2d-x优化中图片优化

    在2D游戏中图片无疑是最为重要的资源文件,它会被加载到内存中转换为纹理,由GPU贴在精灵之上渲染出来.它能够优化的方面很多,包括:图片格式.拼图和纹理格式等,下面我们从这几个方面介绍一下图片和纹理的优 ...