1. AT+CGATT=1 (Attach or detach from GPRS service, GPRS 附着状态)
说的简单点,这一步就是让SGSN (服务GPRS节点,你可以把它理解成与基站紧密相连的一台设备,他可能记录你的移动终端的位置,状态等等很多很多信息)知道你的存在并且认为你拥有GPRS功能。由于GSM和GPRS用的都是相同的基站,所以通常你的MS开启,注册上网络了,你就已经是GSM的一个节点了,可以打电话了。但是,如果你想使用GPRS数据业务,你就要附着GPRS服务,这个命令就是干这个的。
2. AT+CGDCONT=1,"IP","CMNET" (Define PDP context, 定义PDP 上下文)
如果打算用PDP(Packet Data Protocol )传输数据,你就要为他建立一个背景,就是所谓的上下文,你得告诉SGSN和GGSN (网关GPRS节点,可以把它理解成一台与SGSN和INTERNET紧密相连的设备,它把从SGSN的一些信息处理后发送到INTERNET的服务器同时把服务器的信息处理后再发送给SGSN,SGSN再给你的终端设备)一些基本信息,比如你的本地标识(cid),你希望的pdp_type(这里就是IP),还有你的接入点信息。这里的接入点是CMNET,实际上他应该是一台服务器,是INTERNET和SGSN的纽带。而中国移动公司提供了一个名字CMNET(China Mobile NET),我们通过它就能连接INTERNET了。而在国外,这个参数通常是一个域名性质的东西。另外,得特别注意,就是中国移动人为的分出两种就如方式,我们刚刚使用的是CMNET,另一种是CMWAP,很明显,这个只能上WAP,但是通过他们的HTTP代理服务器,我们已能够上INTERNET,但是仅仅局限于HTTP而已。(有些移动的SIMCARD不支持CMNET接入方式,所以要特别小心,)
3. at+CGACT=1,1 (PDP context activate or deactivate, 激活或解除PDP 移动场景)
前面的定义PDP 上下文其实只是说我们有一种想要使用GPRS通信的想法,并且声明了我们想如何使用,但是这仅仅是个概念,如果你真的想付诸实施,就必须让网络知道你的意愿,并且记录你的信息,为你分配资源等等,所以,激活他吧。这个命令里的第一个参数,就是我们前面定义的cid标识值,第二个就是激活状态,如果你想激活,就设置1,如果你想解除就设置0。
4. AT+CIPSTART="TCP", ”111.111.111.111”,” 2222”( Start up TCP or UDP connection, 建立TCP 连接或注册UDP 端口号)
如果说前面的都是前期准备工作的话,那么现在就要尝试TCP连接了。这个命令很简单,第一个参数指定连接方式,第二个参数是IP地址,第三个参数是端口号。跟在计算机上写程序是一样的。
5. AT+CIPSEND( Send data through TCP or UDP connection, 发送数据)
如果前面连接建立成功你就可以发送数据了,AT+CIPSEND然后加一个回车符,就会出现个命令提示符>(当然这个可以设置),然后就是你的发送数据,最后加个结束符。当然你也可以发送定长数据串,这样就不需要结束符了。
6. AT+CIPCLOSE( Close TCP or UDP Connection, 关闭TCP 或UDP 连接)
关闭连接仅仅意味着你的这个连接通道断开了,但是你还可以建立新的连接,同时也意味着你的本地的IP地址并没有变。你的IP地址是在激活的时候分配的。
7. AT+CIPSHUT( Disconnect wireless connection, Close Moving Scene)
关闭移动场景,当你执行这个的时候你就进入IP INITIAL 状态,如果你再重新尝试连接的时候你的本地IP地址很可能已经就不是原来的了。
需要注意的一些问题:
1. 通常上面提到的前三个命令我们基本不需要使用,因为默认值都符合我们刚刚的要求,而芯片基本把这些事情都做了。可以通过相应的查询命令获得这些信息,如果有不符合的,可以另行处理。
2. 有些移动的SIMCARD不支持CMNET接入方式,所以要特别小心,当你发现你所有的参数都正确,能够发送短信和打电话,就是无法连接或者连接总是失败,你就该检查你一下你的卡到底支不支持CMNET接入方式。全球通基本两种接入方式都支持,而动感地带和神州行就不一定了。
3. 如果你查询的状态总是+PDP: DEACT,就是说无法激活,那你应该看看天线是否接牢固或者是否有断线的地方。
4. 在进入业务操作之前,确保你的模块没有工作在最小功能模式(minimum functionality),你可以通过AT+CFUN查询模块的工作状态。
5. 在尝试连接一个服务器和某个端口之前,最好先在计算机上用SOCKET工具连接一下,看看是否是通的,有些网络和防火墙很可能会封杀端口的,如果你寻找或调试了一天后,发现是这个问题,唉,大家知道会有多郁闷。(另外SP可以为你的ADSL分配动态或者固定公网IP,有些在ipconfig或者网络设置里显示两个IP,别混淆了)
socket 调试工具下载地址:http://www.onlinedown.net/soft/55038.htm
6. 在尝试连接(AT+CIPSTART)之前,一定要查询(AT+CIPSTATUS)当前状态,一共有下面几种状态
0 IP INITIAL Initializing state
1 IP START Starting State
2 IP CONFIG Configure Scene
3 IP IND Accept Scene Configuration
4 IP GPRSACT Scene Activated
5 IP STATUS Get Local IP Address
6 TCP/UDP CONNECTING establish connection state with SERVER
7 IP CLOSE Connection has been closed
8 CONNECT OK Connection Established Successfully
9 PDP DEACT Detach from GPRS network
而AT+CIPSTART只在IP_INITIAL、IP_CLOSE、IP_STATUS三种状态下才能正确建立连接,否则返回ERROR。所以有时候会连接失败(比如信号不好等原因),而模块通常会进入TCP/UDP CONNECTING状态,就是一直不停的尝试连接,而此时如果执行连接命令就会返回错误信息。虽然此时的状态是TCP/UDP CONNECTING,但是实际上很多模块已经不再连接了。只不过处在连接状态上而已,这时你最好通过CIPCLOSE或者CIPSHUT命令,回到一个可连接的状态。
edit by LongMaosen
上面的步骤在SIM508上并未成功,做以下修正
AT+CGDCONT=1,"IP","CMNET"
OK
AT+CGCLASS?
+CGCLASS: "B"
OK
AT+CGATT?
+CGATT: 1
OK
AT+CGACT=1,1
OK
AT+CIPSTART="TCP","202.???.??.??","2020"
OK
CONNECT OK(这个OK与CONNECT OK之间有一定时间间隔的,多等等)
AT+CIPSEND
> HELLO
SEND OK
**************************************************************************************************************************************************************************
未整理
AT+CIPHEAD 在接受到的数据前 添加IP 地址
PDP :分组数据协议
英文名称:
packet data protocol;PDP
定义:
移动通信用户在发送和接收分组数据时应用的协议。
请问什么是Servlet上下文? ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放。request,一个用户可有多个;session,一个用户一个;而servletContext,所有用户共用一个。所以,为了节省空间,提高效率,ServletContext中,要放必须的、重要的、所有用户需要共享的线程又是安全的一些信息。如,做一个购物类的网站,要从数据库中提取物品信息,如果用session保存这些物品信息,每个用户都访问一便数据库,效率就太低了;所以要用来Servlet上下文来保存,在服务器开始时,就访问数据库,将物品信息存入Servlet上下文中,这样,每个用户只用从上下文中读入物品信息就行了
- 【iCore4 双核心板_ARM】例程四:USART实验——通过命令控制LED
实验原理: 开发板上自带一片CH340芯片,完成本实验电脑需要安装CH340驱动, CH340的TXD连接STM32的GPIO(PXC7),CH340的RXD连接STM32的 GPIO(PC6),通过 ...
- 【iCore1S 双核心板_ARM】例程四:USART通信实验——通过命令控制LED
实验原理: 开发板上自带一片CH340芯片,完成本实验电脑需要安装CH340驱动, CH340的TXD连接STM32的GPIO(PB6),CH340的RXD连接STM32的 GPIO(PB7),通过串 ...
- curl命令实现上网认证登录
为了想让组里的服务器连外网下数据,需要命令行上网登录.与很多高校的上网方式一样,大气所上网采用的是用户帐号登录验证的方法.上网需要需要先开浏览器,然后打开网页输入帐号密码登录.参考了前人的一些帖子,最 ...
- android安卓生成密钥keystore(命令控制)
android安卓生成密钥keystore(命令控制) • 配置JDK 详细教程 https://blog.csdn.net/u012934325/article/details/73441617/ ...
- 利用DNS进行命令控制和搭建隧道
目录 利用DNS进行命令控制(DNS-Shell) 利用DNS搭建隧道 利用DNS进行命令控制(DNS-Shell) DNS-Shell是一款通过DNS信道实现交互式Shell的强大工具,该工具的服务 ...
- 利用ICMP进行命令控制和隧道传输
目录 使用ICMP进行命令控制 使用ICMP搭建隧道 使用ICMP进行命令控制 攻击机:Kali 192.168.10.11 靶机:Windows 192.168.10.1 使用的工具:icmpsh ...
- REST命令控制Player
本文用Postman工具演示通过REST控制Cnario Playr 注意:Player的REST通信默认关闭,使用前需要从Setting>>Remote devices打开Use RES ...
- IIC读写AT24C02代码2——串口命令控制多页读写
通过串口输入 R .W 进行控制程序读写IIC设备.波特率9600bps,晶振115200HZ. main.c /*------------------------------------------ ...
- 使用adb命令控制anroid手机
adb工具即Android Debug Bridge(安卓调试桥) tools.它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互.在某些特殊的情况下进入不了系统或者需要自动化测试的时候, ...
随机推荐
- 005-对象——对象的 final const
<?php /** * */ /*class shouji { public $pinpai; final function chongdian() { //final 最终的 return $ ...
- Linux下的ASLR(PIE)内存保护机制
1.1 Linux下的ASLR内存保护机制 1.1.1 Linux下的ASLR工作原理 工作原理与window下的aslr类似 1.1.2 Linux下利用内存地址泄露绕过ASLR ⑴. ...
- LeetCode OJ:Palindrome Partitioning(回文排列)
Given a string s, partition s such that every substring of the partition is a palindrome. Return all ...
- python虚拟环境的搭建命令mkvirtualenv
windows环境如果同时安装了python3和python2,那么无论在哪个版本安装了virtualenv和virtualenvwrapper-win 通过以下命令设置ptyhon版本路径,即可建立 ...
- OC-初识面向对象
面向对象和面向过程思想 OC是面向对象的,C是面向过程的.面向对象和面向过程只是解决问题的两种不同思想 面向对象和面向过程的区别 以用电脑听歌为例子 面向过程 打开电脑 播放电脑中的歌曲 关闭电脑 面 ...
- 【LeetCode 104_二叉树_遍历】Maximum Depth of Binary Tree
解法一:递归 int maxDepth(TreeNode* root) { if (root == NULL) ; int max_left_Depth = maxDepth(root->lef ...
- APUE学习笔记——4.2结构体 struct stat 及其相关函数介绍
以下不少内容来自man手册 结构体struct stat 结构体struct stat用于保存文件相关的所有信息. struct stat的基本成员如下所示 struc ...
- EasyPlayer RTSP Android安卓播放器修复播放画面卡在第一帧bug
本文转自EasyDarwin团队成员John的博客:http://blog.csdn.net/jyt0551/article/details/75717097 最近发现某些手机在运行EasyPlaye ...
- Java property 的加载读取
方法一 Properties properties = new Properties(); InputStream stream = PropertiesUtil.class.getClassLoad ...
- Selenium+PhantomJS使用初体验
抓取使用Ajax技术完成的网页内容时可以使用Selenium+PhantomJS技术 1.pip install selenium 2.下载Phantomjs不需要用pip 武汉科技大学首页有一块 ...