GPRS模块MC52IR3&MG323的一些AT指令

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)//代表发送成功了

 

你可能感兴趣的:(stm32)