/*******************************************************************************
 **作者：SwanDesign
 **内容：利用SIM900内置TCPIP进行GPRS通讯全过程
 **网址：http://swantech.taobao.com
 *******************************************************************************/
 
第一步：先给开发板上电，接通电源之后，开发板上面的POWER灯会常量，然后按ONOFF按键
    这时候，NLIGHT灯会以周期大概1秒的间隔闪烁，说明SIM900模块正在搜索网络，等到
    NLIGHT灯以周期大概3秒左右的间隔开始闪烁，说明SIM900模块已经注册到网络了。
    注意：先接好天线、安装好SIM卡、串口线、以及电源。
    下面我们通过串口调试助手检测一下开机后模块注册到网络以及通过信号强度是如何来
    判断已经成功注册到网络的。
    大家看到了，我输入了2条不同的AT命令，分别为：
    AT+CSQ和AT+CREG?
    这两条命令作用是不同的，AT+CSQ这条命令是用来检查信号强度的，如果返回+CSQ: 10,0
    说明现在信号是有的，至于信号的强弱大家可以查看SIM900的AT命令手册，里面有关于
    信号强度的计算方法，这里就不再详细介绍了。
    AT+CREG?这条命令是用来检测模块是否已经注册到网络了，如果返回+CREG: 0,1
    说明已经正常注册到了网络，但是如果返回+CREG: 0,0，那么说明模块还没有注册到网络
    细心的人可能会问：这两条指令意思不是差不多嘛？我的回答是否定的！就拿我们平时用
    的手机来说吧，有的朋友的手机信号满格，但是屏幕却显示仅限紧急呼叫，这就是问题所在
    了，因为国内有三大运营商，可能你用的是移动网络，但是在移动网络没有信号的地区，
    联通的网络却有信号，这个时候，SIM900模块为了应对紧急呼叫的需要，会连接到联通的
    网络，用来实现紧急呼叫的需要。这么说你就会明白上面这两条命令的区别了。
    下面我们继续，本来想演示一下信号强度变化，但是我这里信号比较稳定，看不出区别来...
    变化了+CSQ: 8,0 看到了吧 信号稍微变弱了一些。好了，这部分我们就介绍到这里。

第二步：开启我们的服务器，首先我要先知道我电脑的公网IP，怎么知道这个公网IP呢？方法有
    好多种，我尽可能多演示几种，大家注意看
    PPP adapter 宽带连接:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 1.203.10.77
        Subnet Mask . . . . . . . . . . . : 255.255.255.255
        Default Gateway . . . . . . . . . : 1.203.10.77
    这是第一种：我的IP地址是1.203.10.77
    其实也可以通过TCP调试助手读取到，和上面的这个地址是一样的。
    这里先说一下，我现在用的是ADSL拨号上网的，中间没有加路由器，所以我的电脑的IP就是公网
    IP地址了，如果您和朋友用路由器的方式来上网，那么建议您测试的时候，先把路由器去掉，这
    样可以省去很多麻烦（对于一般客户来说，对于高手来说这点就不必了）。
    好 我们继续，下面回到串口调试助手
    AT+CIPMUX=0 这条命令是用来设置SIM900模块工作在单链接方式的，多连接方式应用起来比较麻烦
    我们这里先以单链接的方式来演示。
    AT+CIPRXGET=1 这条命令是用来设置获取数据的方式的，参数为：1是用来设置以手动的方式来提取
    接收到的数据的。
    AT+CIPQRCLOSE=1 这条命令是用来设置加速远程断开连接用的，不必细究这条命令，照此设置就行了
    AT+CIPMODE=0 这条命令是用来选择TCPIP应用模式的，如果参数为0，那么以非透明的方式来应用，
    如果参数为1，那么以透明方式来应用。我们这里是以非透明的方式来用。
    下面连接我们的服务器：1.203.10.77 端口是：1238
    好了，连接成功了
    下面我们发送以下数据，数据的内容是:swantech
    AT+CIPSEND=8
    > swantech
    SEND OK
    看到了吗？返回SEND OK说明数据已经发送出去了，但是服务器收到了吗？我们看一下
    看到了吧，服务器收到了我们刚才发送过去的数据，下面我们给SIM900模块一个应答
    点击发送之后，数据就发送出去了，下面我们看一下模块收到了没有
    +CIPRXGET:1 看到了吧 有这条提示，说明有数据到来，需要我们手动去提取，这也就是我们刚才
    执行AT+CIPRXGET=1 这条命令的目的了。下面我们将数据提取过来
    +CIPRXGET:2,12,0
    hello world!
    OK
    看到了吧，我们的SIM900模块收到了12个字节的内用，内容就是hello world!
    到这里其实大概的流程已经差不多了，如果进行简单的应用应该是没有问题了，但是我还要继续
    给大家讲一下另外一种数据获取的方式以及发送的方式。
    刚才讲的是一些可见字符的发送，有的客户可能需要发送非字符串方式的数据，比如连续发送
    好多0x00,0x00,0x1A,0x00,......等等的数据，这样的数据并不是字符串，不能按照字符串的
    方式来做，不多说了，下面开始演示
    看到了吧 我们发送了一些透明数据，也就是0x00,0x01,0x02,0x03,下面看一下服务器收到没有
    00 01 02 03   (4)看到了吧 服务器收到了，下面服务器给出应答数据
    看来是GPRS网络出了点问题，我们从新连接一下
    +CIPRXGET:1 刚断开，数据就来了，看来网络延时比较大，好了，又连接上了
    收到了应答数据了，下面我们提取出来
    +CIPRXGET:3,4,0
    00010000
    OK
    提取出来了，我们收到了4个字节的数据，但是数据却并不是以透明数据的方式表示出来的，而是以
    00010000这种方式表示的，这个数据我们需要处理一下才可以应用，具体程序如何处理，我想对于
    我们写程序的人来说，这个应该是小意思了。
    
第三步：通过域名的方式来连接我们的服务器，我们首先需要有一个域名，我这里用的是花生壳软件，
    大家可以到花生壳网站上注册一个ID，会免费获得一个域名的，下面我们运行一下花生壳并登陆
    网速不稳定，静心等待。。。。。。
    终于连接上了，今天早晨到现在，也不知道怎么回事 花生壳登陆好困难，平时都是几秒钟，哎。。。
    好了，我们看一下我的域名swandesign.oicp.net
    下面演示如何用域名的方式来连接服务器，AT+CIPSHUT，我们先用这条命令关闭以下TCPIP协议栈
    好不容易啊，终于连接上了，下面我们测试以下数据传输，好了，大概的流程就是这样的，我相信
    您能用到的部分我都已经介绍到了，如果想了解SIM900模块内置TCPIP协议的更详细的应用，建议
    大家还是去研究以下SIM900的AT命令手册，因为那是最权威的资料，多试验，每个命令都摸索以下
    好了，感谢大家耐心等待视频的录制，虽说内容没有多少，录制时间却不短，请静下心来仔细的看完
    多谢大家的支持，如果有别的问题，可以随时联系我，我很乐意为大家解答问题，再见！！
    
    