常用AT命令解释(转载)

常用AT命令解释(转载)
2011-03-15 22:57

常用AT命令解释(转载) 

一、 AT命令解释:
1、常用操作
1.1 AT
命令解释:检测Module与串口是否连通,能否接收AT命令;
命令格式:AT<CR>
命令返回:OK (与串口通信正常)(无返回,与串口通信未连通)
测试结果:AT
          OK
1.2 AT+CSQ
命令解释:检查网络信号强度和SIM卡情况
命令格式:AT+CSQ<CR>
命令返回:+CSQ: **,##
          其中**应在10到31之间,数值越大表明信号质量越好,##应为99。
          否则应检查天线或SIM卡是否正确安装
测试结果:AT+CSQ<CR>
          +CSQ: 31, 99
          信号强度值会有少许变化,用手遮住天线,信号强度值会下降(大致在26左右)。
1.3 ATZ 
命令解释:恢复原厂设置
命令格式:ATZ<CR>
命令返回:OK
1.4 AT+CGMR
命令解释:查询模块版本;
命令格式:AT+CGMR<CR>
命令返回: <revision >
+CMEERROR <err>
   测试结果:AT+CGMR<CR>
         R4A021      CXC1122528
OK
解释:模块版本号为R4A021
1.5 AT+IPR
命令解释:修改串口1波特率;
命令格式:AT+IPR=<value ><CR>
命令返回: ERROR 
OK 
   测试结果:AT+IPR=19200<CR>
OK
注意:串口波特率修改为19200后要把串口调试工具的波特率设为相应
波特率后模块才会有返回
1.6 AT&W 
命令解释:保存模块设置;
命令格式:AT&W<CR>
命令返回: OK
ERROR(保存不成功)
   测试结果:AT&W <CR>
OK
2、通话操作
2.1ATD 
命令解释:拨打电话
命令格式:ATD**********;<CR>(****为电话号码)
命令返回:OK
          NO DIAL TONE(没有拨号音)
          NO CARRIER(无载波)
测试结果:a. ATD13510090403;<CR>
            OK
            呼叫成功;
          b. ATD13510090403;<CR>
            NO DIAL TONE
            天线未接好,接触不良;
          c. ATD13510090403<CR>
            NO CARRIER
            命令错误,缺{;};
2.2RING
命令解释:有电话呼入
命令格式:
命令返回:无
2.3ATA
命令解释:摘机
命令格式:ATA<CR>
命令返回:OK
测试结果:RING
          RING
          ATA<CR>
          OK
          接通电话;
2.4ATH
命令解释:挂机
命令格式:ATH<CR>
命令返回:OK
测试结果:ATH<CR>
          OK
          电话挂断(通话过程中);
2.5AT+CHUP
命令解释:挂机
命令格式:AT+CHUP<CR>
命令返回:OK
测试结果:RING
ATH<CR>
OK
电话挂断(尚未接通来电);
2.6AT+VTS
命令解释:拨打分机
命令格式:AT+VTS=“分机号码”<CR>
命令返回:OK
测试结果:
AT+VTS=“0”<CR>
OK
3、短信息操作
  短信操作步骤及相关命令:
(1) 设置短信格式——AT+CMGF
(2) 设置短信存储载体——AT+CPMS
(3) 设置短信接收提示方式——AT+CNMI
(4) 发送短信——AT+CMGS
(5) 显示短信——AT+CMGL
3.1AT+CPMS
命令解释:选择短信存储载体
3.1.1命令格式:AT+CPMS=<mem1>[,<mem2>][,<mem3>]
设置短信存储载体
命令返回:+CPMS:<used1>,<total1>,<used2>,<total2>,<used3>,<total3>
          OK
          ERROR
测试结果:a. AT+CPMS=”SM”
           +CPMS: 8,15,8,15,1,40
           OK
           设置成功,并显示状态:SM(SIM卡)存储器总容量为15,当前存储量8;
           ME(模块)存储器总容量为40,当前存储量1;mem1定义为SM;
         b. AT+CPMS=”SM”,”SM”
           +CPMS: 8,15,8,15,1,40
           OK
           设置成功,并显示状态:SM存储器总容量为15,当前存储量8;
           ME存储器总容量为40,当前存储量1;mem1定义为SM;mem2
           定义为SM;
         c. AT+CPMS=”SM”,”SM”,”SM”
           +CPMS: 8,15,8,15,8,15
           OK
           设置成功,并显示状态:SM存储器总容量为15,当前存储量8;
           ME存储器总容量为40,当前存储量1;mem1定义为SM;mem2
           定义为SM;mem3定义为SM;
         d. AT+CPMS=”ME”,”SM”,”SM”
           +CPMS: 1,40,8,15,8,15
           OK
           设置成功,并显示状态:SM存储器总容量为15,当前存储量8;
           ME存储器总容量为40,当前存储量1;mem1定义为ME;mem2
           定义为SM;mem3定义为SM;
         e. AT+CPMS=”ME”,”SM”,”ME”
           +CPMS: 1,40,8,15,1,40
           OK
           设置成功,并显示状态:SM存储器总容量为15,当前存储量8;
           ME存储器总容量为40,当前存储量1;mem1定义为ME;mem2
           定义为SM;mem3定义为ME;
         f. AT+CPMS=”ME
           ERROR
           命令格式错误,缺少{”};
3.1.2命令格式:AT+CPMS?
          显示当前短信存储载体设置
命令返回:+CPMS:<mem1>,<used1>,<total1>,<mem1>,<used2>,<total2>,
                     <mem1>,<used3>,<total3>
          OK
          ERROR
测试结果:a. AT+CPMS?
            +CPMS: "SM",8,15,"SM",8,15,"ME",1,40
            OK
            当前短信存储载体设置为:mem1为SM,mem2为SM,mem3
            为ME;
          b. AT+CPMS!
             ERROR
             命令错误;
3.1.3命令格式:AT+CPMS=?
          显示本命令支持的参数
命令返回:+CPMS: (list of supported<mem1>s),(list of supported<mem2>s),
                    (list of supported<mem3>s)
          OK
          ERROR
测试结果:AT+CPMS=?
          +CPMS: ("ME","SM",("ME","SM",("ME","SM"
          OK
3.2AT+CMGF
命令解释:设置短信格式
3.2.1命令格式:AT+CMGF=<mode>
命令返回:OK
          ERROR
               设置短信格式
3.2.2命令格式:AT+CMGF=?
命令返回:OK
          ERROR
          显示本命令支持的参数
3.2.3命令格式:AT+CMGF?
命令返回:OK
          ERROR
          显示当前短信格式
测试结果:AT+CMGF=?
+CMGF: (0,1)
OK

AT+CMGF?
+CMGF: 0
OK

AT+CMGF=1
OK

AT+CMGF?
+CMGF: 1
OK
    
3.3AT+CMGS
命令解释:发送短信
命令格式:AT+CMGS=<da>[,<toda>]<CR>
          Text is entered<ctrl-z/ESC>
命令返回:+CMGS:<mr>[,<scts>]
          +CMS ERROR:<err>
          OK
          ERROR
测试结果:a. AT+CMGS=13510090403<CR>
          >ABCD1234.456<ctrl-z>
          +CMS ERROR:500
          命令错误;
        b. AT+CMGS="13510090403"<CR>
> IT IS TEST NOW<ctrl-z>
+CMGS: 235
OK
3.4AT+CMGR
命令解释:读短信
命令格式:AT+CMGR=<indes>
命令返回:+CMGS:<stat>,[<alpha>],<length>]<CR><LF><pdu>
          +CMS ERROR:<err>
          OK
          ERROR
测试结果:a. AT+CMGR=5
          +CMS ERROR:500
          命令错误,5号短信位置为空;
        b. AT+CMGR=2
+CMGL: 2,"REC READ","+8613682326205","N?R","03/08/28 17:30:35+00"
998B76844F60002E518D5FCD5FCD5427+CMGS: 235
OK
读出2号短信;
3.5AT+CMGW
命令解释:写短信,并保存到存储载体
命令格式:AT+CMGW=<length>[,<stat>]<CR>
命令返回:+CMGS:<index>
          +CMS ERROR:<err>
          OK
          ERROR
测试结果:AT+CMGW="13534139079"<CR>
> SHELLEY123456<ctrl-z>
+CMGW: 1
OK
把目标地址为13534139079的短信存入存储载体,且被分配的地址
为1号短信;
3.6AT+CMGD
命令解释:删除短信
命令格式:AT+CMGD=<index>
命令返回:+CMS ERROR:<err>
          OK
          ERROR
测试结果:AT+CMGD=1
          OK
          1号短信被删除;
3.7AT+CMGL
命令解释:显示短信清单
命令格式:AT+CMGL=<stat>
命令返回:+CMGL:<index1>,<stat>,<oa/da>,[<alpha>],[<scts>][,<tooa/toda>,<length>]
<CR><LF><data>[<CR><LF>
测试结果:见总测试结果;
3.8AT+CMSS
命令解释:发送存储载体中的短信
命令格式:AT+CMSS=<index>
命令返回:+CMSS:<mr>
          +CMS ERROR:<err>
          OK
          ERROR
测试结果:AT+CMSS=2
          +CMSS: 204
          OK
3.9AT+CNMI
命令解释:新短信提示
3.9.1命令格式:AT+CNMI=[<mode>[,<mt>[,<bm>[,<ds>]]]]
命令返回:OK
          ERROR
测试结果:AT+CNMI=3,2
             OK
3.9.2命令格式:AT+CNMI?
命令返回:+CNMI:<mode>,<mt>,<bm>,<ds>
OK
          ERROR
测试结果:AT+CNMI?
             +CNMI: 3,2,0,0
             OK
3.9.3命令格式:AT+CNMI=?
命令返回:+CNMIlist of supported<mode>s), (list of supported<mt>s), (list of supported<bm>s), 

(list of supported<ds>s) 
OK
          ERROR
测试结果:AT+CNMI=3,2
OK
 4、语音部分:
  4.1 AT*E2EAMS
  命令解释:设定音频工作参数(修改语音通道)
   4.1.1  命令格式:AT*E2EAMS=<OP >,<NUM >,<VAL >
     命令返回:OK
         ERROR
     测试结果:<OP>为N在1-20之间,表示设置第N个参数
       AT*E2EAMS=9,2(把模块的语音MIC通道设定为手柄)
       OK
       AT*E2EAMS=10,2(把模块的语音SPK通道设定为手柄)
       OK
       <OP >为0表示设置所有参数
 AT*E2EAMS=0,2,1,2,0,0,2,5,9,2,2,0,1,0,0,0,1,1,0,0,1
 OK
      <OP >为255表示要保存设置
      AT*E2EAMS=255
 OK
5、GPS接口:
 5.1 AT*EENMEA
 命令解释:设定GPS数据使能
命令格式:AT*EENMEA=<val >
命令返回:OK
    ERROR
测试结果:
AT*EENMEA=0 (不接受串口2发来的NMEA数据)
OK
AT*EENMEA=2 (接受来自串口2的NMEA数据)
OK
5.2 AT*E2NMPR
命令解释:设定串口2发送GPS数据的波特率 
 5.2.1命令格式:AT*E2NMPR=<val >
命令返回:OK
          ERROR
测试结果:AT+CNMI=5 (设定串口2的波特率为19200)
OK
 6、TCP/IP部分
  TCP/IP简单操作步骤:
(1) 获得IP——AT*E2IPA=1,1
(2) 连接服务器端口 AT*E2IPO=0or 1,“IP”,“PORT”
 6.1 AT*E2IPA
  命令解释:获得IP
  命令格式:AT*E2IPA=<Activate>,<cid> 
命令返回:OK
ERROR
*E2IPA: <ErrNum>
      ERROR
测试结果:AT*E2IPA =1,1
                OK
 6.2 AT*E2IPI
  命令解释:查看IP
  命令格式:AT*E2IPI=<InfoType>
命令返回:ERROR
          *E2IPI: <IPAddr>
      OK
测试结果:
AT*E2IPI=0 
*E2IPI: 10.103.81.153
OK             
查询模块获得的IP地址
AT*E2IPI=1 
*E2IPI: 211.136.20.203
OK
查询第一级DNS服务器的IP地址
6.3 AT*E2IPO
  命令解释:打开服务器的端口
  命令格式:AT*E2IPO=<IPType>,<IPAddr>,<IPPort> 
命令返回:CONNECT
          ERROR
        *E2IPO: <ErrNum>
     ERROR
测试结果:
AT*E2IPo=1,"166.111.8.238",23
CONNECT
解释:本命令是在获得IP后,与166.111.8.238的23端口建立一个TCP连接。
注意:部分公司的服务器是采用UDP连接的,此情况下要采用AT*E2IPO=0,“***,***,***,***”,PORT
 “***,***,***,***”表示服务器的IP地址,
“PORT”是连接的端口号。
6.4 AT*E2IPC
  命令解释:关闭IP连接
  命令格式:AT*E2IPC 
命令返回:ERROR
      OK 
       *E2IPC: <ErrNum>
     ERROR
测试结果:AT*E2IPC 
     OK
            
6.5 AT*E2IPRH
  命令解释:解析URL
  命令格式:AT*E2IPRH=<URL>
命令返回:ERROR
        *E2IPRH: <IPAddr>
      OK
测试结果:AT*E2IPRH="www.163.com"
*E2IPRH: 202.108.36.167
OK
解析出www.163.com的URL为:202.108.36.167
6.6 AT*E2IPE
  命令解释:获得最新的错误信息。
    命令格式:AT*E2IPE
Or
AT*E2IPE?
命令返回:ERROR 
  *E2IPE: <ErrType>
    测试结果:AT*E2IPE
     *E2IPE: 000
     OK
     “000”表示没有错误。
     “001”表示没有找到主机。
       “252”表示接收IP数据错误。
       “253”表示超过了IP数据的最大长度。
       “254”表示断开了GPRS连接。
       “255”表示通常的错误。 
6.7 AT*E2IPS设定网络通信参数
  命令解释:获得IP
 命令格式:AT*E2IPS=<RetryTm>,<NmRetry>,<WaitTm>,<SendSz>
命令返回:ERROR
     OK
    测试结果:AT*E2IPS=2,10,1,1020
OK
    参数说明:
    第一个参数表示IP重发IP数据包等待的时间为2秒。
    第二个参数表示重发的次数。
    第三个参数表示在发送一个IP数据包之前等待数据的时间。
    第四个参数表示TCP或者UDP数据块的最大长度。
二、应用举例
  1、连接后一般操作
AT
OK
测试信号强度:
AT+CSQ
+CSQ: 29,99

OK
恢复原厂设置:
ATZ
OK
  查询模块版本:
   T+CGMR
R4A021      CXC1122528
OK
  修改串口波特率:
AT+IPR=115200
OK
  保存设置:
   AT&W
OK
2、拨打电话
拨打电话:
ATD13510090403;
OK
挂机:
AT+CHUP
OK
有电话呼入:
RING

RING
摘机:
ATA
OK
挂机:
ATH
OK
3、短信息服务:
选择短信存储载体:
AT+CPMS?
+CPMS: "SM",7,15,"SM",7,15,"ME",0,40

OK
AT+CPMS=?
+CPMS: ("ME","SM",("ME","SM",("ME","SM"

OK
AT+CPMS="ME"
+CPMS: 0,40,7,15,0,40

OK
AT+CPMS=?
+CPMS: ("ME","SM",("ME","SM",("ME","SM"

OK
AT+CPMS/
ERROR
AT+CPMS?
+CPMS: "ME",0,40,"SM",7,15,"ME",0,40

OK
AT+CPMS="SM","SM","SM"
+CPMS: 7,15,7,15,7,15

OK
AT+CPMS?
+CPMS: "SM",7,15,"SM",7,15,"SM",7,15

OK
ATZ
OK
AT+CPMS?
+CPMS: "SM",7,15,"SM",7,15,"ME",0,40

OK
AT+CPMS="SM","SM","SM"
+CPMS: 7,15,7,15,7,15

OK
设置短信息格式:
AT+CMGF=?
+CMGF: (0,1)

OK
AT+CMGF?
+CMGF: 1

OK
AT+CMGF=0
OK
AT+CMGF?
+CMGF: 0

OK
AT+CMGF=1
OK
发送短信息:
AT+CMGS="13510090403"
> HI IT IS TEST,PLS ANSWER ME. 
+CMGS: 0

OK
设置新短信提示方式:
AT+CNMI?
+CNMI: 3,0,0,0,0

OK
AT+CNMI=?
+CNMI: (3),(0,1,2,3),(0,2),(0,1,2),(0)

OK
AT+CNMI=3,1,0,0
OK
AT+CNMI?
+CNMI: 3,1,0,0,0

OK
有新短信:(并显示:短信存储在载体“SM”中的1号位置)
+CMTI: "SM",1
读短信:
AT+CMGR=1
+CMGR: "REC UNREAD","+8613662626940",,"03/08/29,09:44:02+00"
123456ABC
OK
设置新短信提示方式:
AT+CNMI=3,2
OK
AT+CNMI?
+CNMI: 3,2,0,0,0

OK
有新短信:
+CMT: "+8613662626940",,"03/08/29,09:47:14+00"
123456ABC333
设置新短信提示方式:
AT+CNMI=3,3
OK
有新短信:
+CMTI: "SM",6
AT+CMGR=6
+CMGR: "REC UNREAD","+8613662626940",,"03/08/29,09:49:14+00"
123456ABC333
OK
显示短信清单:
AT+CMGL="ALL"
+CMGL: 1,"REC READ","+8613662626940",,"03/08/29,09:44:02+00"
123456ABC
+CMGL: 2,"REC READ","+8613902970800","DAVID","02/05/17,14:19:50+00"
66FE7ECF591A5C116B21FF0C4F6075285AE96ED17684808C80A47D278D348D6488F876846211FF0C
4F608F7B67D47684629A6478548C4E0D89C4521976848FD052A8FF0C7ED962115E26676596359635
5FEB611FFF0C7136540E4F606E106E106D887626FF0C62404EE5621189818BF4FF1A621172314F60
FF0C99997682FF01
OK

删除指定短信:
AT+CMGD=2
OK

AT+CMGL="ALL"
+CMGL: 1,"REC READ","+8613662626940",,"03/08/29,09:44:02+00"
123456ABC

OK
AT+CMGL=?
+CMGL: "REC UNREAD","REC READ","STO UNSENT","STO SENT","ALL"

OK
 4、GPS接口服务:
   开处理NMEA命令功能:
    AT*EENMEA=2
OK
   设定串口2波特率为“19200”
AT*E2NMPR=5
OK
   串口1获得NMEA命令
$  GPS DATA
$  GPS DATA
$  GPS DATA
                                               
 5、TCP/IP操作:
   获取IP
    AT*E2IPA=1,1
OK
   查询IP
AT*E2IPI=0
*E2IPI: 10.103.3.91
OK
   查询第一级DNS的IP地址
AT*E2IPI=1
*E2IPI: 211.136.20.203
OK
   连接BBS(水木清华)
AT*E2IPO=1,"166.111.8.238",23
CONNECT

         
OK
关闭IP连接
AT*E2IPC

OK
ATO
NO CARRIER

短消息类(class)的概念:根据指定储存的位置,短消息分为class 0 3四个类。也可以不指定类(no class),由ME按默认设置进行处理,存储到内存或者SIM卡中。在TPDUTP-DCS字节中,当bit7-bit400x1, 01x1, 1111时,bit1-bit0指出消息所属类:

00 class 0:只显示,不储存
01
class 1:储存在ME内存中

02
class 2:储存在SIM卡中

03
class 3:直接传输到
TE
GSM Modem
一般都支持一条“AT+CNMI”指令,可用于设定当有某类短消息到达时,如何处置它:只储存在指定的内存(易失的/非易失的)中,先储存后通知TE,还是直接转发到TE,等等。

AT+CNMI”指令语法为

AT+CNMI=[<mode>[,<mt>[,<bm>[,<ds>[,<bfr>]]]]]
mode -
通知方式:

0– 不通知TE
1
– 只在数据线空闲的情况下,通知TE;否则不通知TE

2
– 通知TE。在数据线被占用的情况下,先缓冲起来,待数据线空闲,再行通知。

3
– 通知TE。在数据线被占用的情况下,通知混合在数据中一起传输。

mt -
消息储存或直接转发到TE

0– 储存到默认的内存位置(包括class 3)
1
– 储存到默认的内存位置,并且向TE发出通知(包括
class 3)
2
– 对于class 2,储存到SIM卡,并且向TE发出通知;对于其它class,直接将消息转发到
TE
3
– 对于class 3,直接将消息转发到 TE;对于其它class,同
mt=1
bm, ds, bfr
的含义,请参考相关标准文档。一般不需要去关心它们。

在程序中具体实现时,使用mode=2, mt="1",比较简单。对所有类型的短消息,只要在收到ME送来的“+CMTI”通知后,用“AT+CMGR”指令读取消息内容就行了。TEME之间的通信过程,举例如下:

(初始化)
AT+CNMI=?   (
查看能支持的设置范围
)
+CNMI: (0-2),(0-3),(0,2,3),(0,1),(0,1)
OK

AT+CNMI?     (
查看当前设置
)
+CNMI: 0,0,0,0,0  
OK

AT+CNMI=2,1 (
设置为
mode=2, mt="1")
OK

AT+CNMI?     (
再查看当前设置
)
+CNMI: 2,1,0,0,0  
OK

(
过了一段时间,有一条消息到达
)
+CMTI
ME,8   (通知:消息已经存储在ME内存中,序号为
8)

AT+CMGR=8    (
读第8条消息
)
+CMGR: 8,27
0891683108200505F0240D91683158812764F80000402052110373800741E19058341E01
OK

AT+CMGD=8    (
删除第8条消息
)
OK

还有一种方式mode=2, mt="2"也很令人感兴趣。在这种方式下,除了class 2外,消息不存储,直接转发到TE。需要处理消息通知和内容两种情况,复杂一些。但如果发送方也由程序控制,可以只发no classclass 1的消息,这样不存储在接收方ME内存(一般是闪存,非易失性的)中,肯定能延长它的使用寿命。TEME之间的通信过程,举例如下:

AT+CNMI=2,2   (设置为mode=2, mt="2")
OK

(
过了一段时间,有一条消息到达
)
+CMT: ,26
0891683108200505F0040D91683158812764F8000840205211639180064F60597D0021

posted @ 2011-03-25 23:10  babykick  阅读(8532)  评论(0编辑  收藏  举报