MC52IR3 GPRS模块
这个模块是MC52IR2的升级版,多了一个TCP透传模式,感觉这个模式非常好用。
软件部分的编写 AT指令:按照一般可用指令顺序(ps.数字之前都有一个空格,\r\n为回车换行符,在编写程序的时候要写上)
发送的AT指令 ---------------------------- 正确的返回指令
以下命令都是按照上面的格式的
- AT\r ----------------------------- \r\n\r\nOK\r\n 模块存在
- ATE0\r ------------------------------ATE0\r\r\nOK\r\n 关闭回显
- AT+CREG?\r ------------------------------ \r\n+CREG: 0,1\r\n\r\nOK\r\n 注册网络,本地卡
------------------------------\r\n+CREG: 0,5\r\n\r\nOK\r\n 注册网络,异地卡
--------------------------- \r\n+CREG: 0,2\r\n\r\nOK\r\n 寻找网络中,这段时间比较长
- at^sics=0,conType,GPRS0\r ---------------------------\r\n\r\nOK\r\n 选择连接
- at^sics=0,passwd,gprs\r ---------------------------\r\n\r\nOK\r\n密码
- at^sics=0,user,cm\r ---------------------------\r\n\r\nOK\r\n用户名
- at^sics=0,apn,cmnet\r ----------------------------\r\n\r\nOK\r\nAPN
然后选一下3种模式的一种
A.
TCP透传模式
- at^siss=1,srvType,Transparent\r ----------\r\n\r\nOK\r\n 使用通道1,透传模式
- at^siss=1,conId,0\r --------------------------\r\n\r\nOK\r\n
- at^siss=1,address,\"socktcp://221.0.205.194:9000\"\r-----\r\n\r\nOK\r\n \”转义字符,实际上只是”,后面的是IP与端口号
- AT^SISO=1\r -----------------\r\n\r\nOK\r\n\r\n^SISW: 1, 1\r\n 打开连接通道1,如果没有后面SISW: 1, 1是不对的,很可能是网络不通。如果出现Remote host has rejected the connection,很可能是没有打开TCP服务器
- AT^SIST=1\r --------------- \r\nCONNECT\r\n 打开通道1的透传模式,接下来就可以互相发送数据了
- AT^SISC=1\r -----------------\r\n\r\nOK\r\n\r\n^SISW: 1, 1\r\n 关闭连接通道1
B.
TCP socket模式
- at^siss=1,srvType,socket\r ----------\r\n\r\nOK\r\n 使用通道1,socket模式
- at^siss=1,conId,0\r --------------------------\r\n\r\nOK\r\n
- at^siss=1,address,\"socktcp://221.0.205.194:9000\"\r-----\r\n\r\nOK\r\n
- AT^SISO=1\r -----------------\r\n\r\nOK\r\n\r\n^SISW: 1, 1\r\n
接下来要发送数据了:
- AT^SISW=1,8\r ------------- \r\n^SISW: 1, 8, 8\r\n 通道1,发送8个数据,返回表示准备好接收这8个数据了
- 12345678 -------------------- \r\n\r\nOK\r\n\r\n^SISW: 1, 1\r\n 发送12345678 接收成功
接下来是接收数据:
TCP调试助手发送0123456789 这10个数据,这边会收到
- r\n^SISR: 1, 1\r\n 通道1通知有数据来了
- at^sisr=1,10\r --------------------\r\n^SISR: 1, 10 \r\n0123456789\r\n\r\nOK\r\n
再发送
- at^sisr=1,10\r ------------------ \r\n^SISR: 1, 0 \r\n\r\nOK\r\n 没有数据可接收了
然后TCP调试助手发送再发送数据,通道1还会通知有数据来。但是如上次数据没有取完的话再发送是不会有通知(r\n^SISR: 1, 1\r\n)的。所以最好一次把所有数据都取出来。
还有一种情况是取的比接收的少:
- at^sisr=1,3\r --------------------\r\n^SISR: 1, 3 \r\n012\r\n\r\nOK\r\n
- at^sisr=1,3\r --------------------\r\n^SISR: 1, 3 \r\n345\r\n\r\nOK\r\n。。。。。。。等等
另外还有一种情况是取的比接收的多:
- at^sisr=1,13\r --------------------\r\n^SISR: 1, 10 \r\n0123456789\r\n\r\nOK\r\n 还是只接收10个
PS.在知道接收的数据量时最好一次全部取出来。不知道的话就一直取到SISR: 1, 0无数据。
- AT^SISC=1\r -----------------\r\n\r\nOK\r\n\r\n^SISW: 1, 1\r\n 关闭连接通道1
C.
UDP socket模式
- at^siss=1,srvType,socket\r ----------\r\n\r\nOK\r\n 使用通道1,socket模式
- at^siss=1,conId,0\r --------------------------\r\n\r\nOK\r\n
- at^siss=1,address,\"sockudp://221.0.205.194:9000\"\r ---- \r\n\r\nOK\r\n 与tcp有点不一样
- AT^SISO=1\r ----------------\r\n\r\nOK\r\n\r\n^SISW: 1, 1\r\n
接下来要发送数据:
- AT^SISW=1,8\r ------------- \r\n^SISW: 1, 8, 0\r\n 通道1,发送8个数据,返回表示准备好接收这8个数据了。Udp是无连接的可能与tcp有点不一样
- 12345678 -------------------- \r\n\r\nOK\r\n\r\n^SISW: 1, 1\r\n 发送12345678 接收成功
接下来是接收数据:
TCP调试助手发送0123456789 这10个数据,这边会收到
- r\n^SISR: 1, 1\r\n 通道1通知有数据来了
- at^sisr=1,10\r --------------------\r\n^SISR: 1, 10 \r\n0123456789\r\n\r\nOK\r\n
再发送
- at^sisr=1,10\r ------------------ \r\n^SISR: 1, 0 \r\n\r\nOK\r\n 没有数据可接收了
然后UDP调试助手再发送数据,通道1还会通知有数据来。但是如果上次数据没有取完的话再发送是不会有通知(r\n^SISR: 1, 1\r\n)的。所以最好一次把所有数据都取出来。
还有一种情况是取的比接收的少:
- at^sisr=1,3\r --------------------\r\n^SISR: 1, 3, 9 \r\n012\r\n\r\nOK\r\n 后面的数字表示还剩下n+1个数据
- at^sisr=1,3\r --------------------\r\n^SISR: 1, 3, 6 \r\n345\r\n\r\nOK\r\n。。。。。。。等等
另外还有一种情况是取的比接收的多:
- at^sisr=1,13\r --------------------\r\n^SISR: 1, 10 \r\n0123456789\r\n\r\nOK\r\n 还是只接收10个。
PS.在知道接收的数据量时最好一次全部取出来。不知道的话就一直取到SISR: 1, 0无数据
- AT^SISC=1\r -----------------\r\n\r\nOK\r\n\r\n^SISW: 1, 1\r\n 关闭连接通道1
有关MC52IR3的一些详细资料请点击下载。
华为MG323模块:
GPRS连接与MC52IR3基本一致,以下主要是短信方面有关的AT指令(命令后面都有回车换行符)。
AT----
ATE0------
AT+CMGF=1 -------- 0D 0A 4F 4B 0D 0A (\r\nOK\r\n) //设置短信格式为文本模式---0为PDU模式,解码好像有点麻烦暂时没看。注:如果收到的短信中有中文字符还是会转换成PDU模式,所以应该文本模式只支持ASCII特别标点不能有中文全角
AT+CNMI=2,1---------- 0D 0A 4F 4B 0D 0A (\r\nOK\r\n)//设置新短消息通知---2通知直接发给TEL如果不能发送暂存ME(只能存2条)可以发送时一起发送-----1将SMS-DELIVER存储在MT中,向TEL发送一条存储通知+CMTI:,
接收到一条短信时----- 2B 43 4D 54 49 3A 20 22 53 4D 22 2C 31 0D 0A (+CMTI:"SM",1\r\n)//1--代表存储位置
AT+CMGR=1 ----38 36 31 38 35 36 33 39 32 34 36 32 35 22 2C 2C 22 31 33 2F 30 39 2F 30 33 2C 32 32 3A 30 31 3A 33 36 2B 33 32 22 0D 0A 31 32 33 3A 3F 3B 21 64 67 68 64 2B 6E 2D 6E 7A 1B 2F 2F 2A 2A 0D 0A 0D 41 54 2B 43 4D 47 44 3D 31 2C 34 0D 0D 0A 4F 4B 0D 0A (+CMGR: "REC UNREAD","+8618563924625",,"13/09/03,22:01:36+32"\r\n123:?;!dghd+n-nz//**\r\nOK\r\n)//读存储位置1的短信
AT+CMGD=1,4 ------ 0D 0A 4F 4B 0D 0A (\r\nOK\r\n)//删除所有短信
AT+CMGR=1 --- 41 54 2B 43 4D 47 52 3D 32 0D 0D 0A 2B 43 4D 53 20 45 52 52 4F 52 3A 20 33 32 31 0D 0A (+CMS ERROR: 321)//删除短信之后再读就是显示ERROR
--------------------发送短信-----------------------
AT+CMGS="1856392××××" ------- 0D 0A 3E 20 (\r\n> ) //往1856392××××号码发送英文短信
接下来就是发送的短信内容 ------- 0D 0A 3E 20 (\r\n> )
短信内容发送完毕要写0x1A代表结束--- 0D 0A 2B 43 4D 47 53 3A 20 31 37 0D 0A 0D 0A 4F 4B 0D 0A (+CMGS: 17\r\n\r\nOK\r\n)//代表发送成功了