热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

常用基本AT指令

常用基本AT指令http:www.rosoo.neta20101110451.htmlAT测试连接是否正确ATE0关闭回显。程序初始化AT部分首先关闭回显。

常用基本AT指令
http://www.rosoo.net/a/201011/10451.html
 
AT 测试连接是否正确
ATE0 关闭回显。程序初始化AT部分首先关闭回显。
ATE1 打开回显。使用超级终端测试命令时打开。
AT+CGMI 得到厂商信息
AT+CGMR 得到版本号
AT+CGSN 得到序列号(IMEI)
AT+CIMI 得到手机IMSI号码
AT+CSCS 获取、设置当前字符集。可设置为GSM或UCS2
AT+CBC 获取电量
AT+CCLK 获取设置手机时钟
AT+CNUM 机身号码。分为线路一和线路二
AT+CSQ 当前信号
AT+COPS 网络营运商
AT+CSCA 短信中心号码
AT+CPMS 选择短信储存地点。可选择ME(SIM卡)和MT(机身)
AT+CMGL 列出指定状态的短信息的PDU代码
AT+CMGR 列出指定序号的短信息PDU代码
AT+CMGS 发送短信
AT+CMGD 删除指定的短信
AT+CMGF 短信格式。分为Text模式和PDU模式
AT+CNMI 设置新短消息通知电脑端
AT+CSCA 短信中心
AT+IPR? 显示串口波特率
AT+IPR=19200更改串口波特率为19200
AT&W 保存设置
 
 
 
1.2 AT的优点。
 
命令简单易懂,并且采用标准串口来收发AT命令,这样对设备控制大大简化了,转换成简单串口编程了。
AT命令提供了一组标准的硬件接口--串口。这个简化的硬件设计.较新的电信网络模块,几乎都采用串口硬件接口。
AT命令功能较全,可以通过一组命令完成设备的控制,完成呼叫、短信、电话本、数据业务、传真.
    
1.3 AT命令与ppp协议的关系
 
在数据通讯的应用中,比如说无线拨号上网。除了AT命令,还会常听到另外一个网络协议ppp(Point to Point Protocol)。
 
在应用串口通讯的场合,我们可以从硬件上明确看到分为两大块。
 
DTE(Data Terminal Equipment)数据终端设备。通常是一个智能设备,如PC机, 嵌入式主机等,用于发送AT命令和PPP命令,
还有用于链路通讯的DCE(Data Circuit Terminal )数据电路终端。用于与外界建立通讯的链路。
DTE与DCE之间用串口相连。比如PC机用串口接入拨号MODEM时,PC机是DTE,拨号MODEM是DCE.
 
AT和PPP的相同点都是由DTE发送给DCE的协议。不同点是AT只用于DTE来控制DCE。比如初始化设备,用于发送呼叫,发送短消息等,虽然AT有规范,但是大部分DTE产商都扩展了一些AT命令。
 
而PPP是用于数据通讯,是DTE与远程的接入服务器(Access Server)进行通讯的协议。是属于网络通讯的数据链路层协议,DCE本身收到PPP包时,除了将其调制到物理层上发送到远端服务器外,本身并不处理PPP的内容。
 
2.AT的命令格式
  AT指令格式:AT指令都以”AT”开头,以(即\r,回车符)结束,模块运行后,串口默认的设置为:8位数据位、1位停止位、无奇偶校验位、硬件流控制(CTS/RTS).
  注意为了发送AT命令,最后还要加上 (即\n,换行符)这是串口终端要求.
  有一些命令后面可以加额外信息来.如电话号码
 
  每个AT命令执行后,通常DCE都给状态值,用于判断命令执行的结果.
 
  AT返回状态包括三种情况 OK,ERROR,和命令相关的错误原因字符串.返回状态前后都有一个字符.
   如 OK 表示AT命令执行成功.
     ERROR 表示AT命令执行失败
     NO DIAL TONE 只出现在ATD命令返回状态中,表示没有拨号音,这类返回状态要查命令手册
 
   还有一些命令本身是要向DCE查询数据,数据返回时,一般是+打头命令.返回格式
    +命令:命令结果
如:AT+CMGR=8 (获取第8条信息)
  返回 +CMGR: "REC UNREAD","+8613508485560",,"01/07/16,15:37:28+32",Once more
  
 
3.DCE的状态切换与AT的命令拨号流程
 
  这两个协议都是DTE通过串口发往DCE。那DCE是如何区别是AT命令,如何区别PPP协议包?大部分DCE是采用分时段传送的,两个协议并不同时发送。但是可以通过AT命令两个专用命令来用切换是AT命令时段,还是PPP协议时段。
 
在发送AT命令时称为命令状态,在发送PPP包时或者语音通讯时称为数据状态。
 
在modem设备启动进,默认进入AT命令接收状态,用ATDn ;命令拨出电话号码n(语音拨号);ATDn 拨出电话号码n(数据拨号),两者区别在于前者有一个分号。用数据拨号拨通后,将进入PPP交互状态。当需要切回接收AT命令状态,DTE需要发送+++命令给DCE.让其保持在线的状态时,但接收是AT命令.如果此时需要切断链接,此时发送ATH挂断命令.
  注意发送+++需要前后各一秒的时间。否则会当成数据发送出去。
 
  ATO则是把在线命令状切换到数据接收状态。
 
 
 
 
一个DCE的拨号流程是
 
 3.1.初始化DCE的Modem设备
    主要DTE要配置好串口参数,并且向设备发送一些AT命令来进行初始化设置
 
  •     行软复位的需执行”ATZ\r”命令;
  •    禁止命令回显需执行”ATE0\r”命令;
  •    要使返回结果码为数字形式则要执行”ATV0\r”;
  •    需要设置S 寄存器的需执行”ATSn=X\r”等等。
 3.2 拨号连接
   AT拨号连接分语音拨号连接和数据拨好连接。语音拨号命令为”ATDn;\r”(注意带分号);数据拨号命令为”ATDn\r”(注意不带分号)。连接成功返回”\r\nCONNECTXXXX/RLP\r\n”,其中XXXX 表示连接速率。在这里我们只讨论数据拨号连接。要注意的是拨号连接需要一定的时间,编程时要根据实际情况进行适当的延时等待。
 
3.3 数据传输及处理
     在建立起连接后用户就可通过DCE进行数据发送、接收及数据处理操作。这时发送数据就是简单的写串口,收数据是读串口,即使数据中含有AT 命令字符串DCE也不会对其进行处理。此时进行PPP拨号处理流程了。
3.4  从数据状态切换至在线命令状态
   数据收发结束后,就要使DCE从数据状态切换至在线命令状态。向DCE发送换码序列命令”+++”,并且前后各有至少一秒的延迟(不向TC35 发数据),可使DCE从数据状态切换至在线命令状态,否则DEC会将”+++”当作数据发送出去。在离线命令状态时发送”ATO\r”可回到数据状态。
3.5  挂断连接
   挂断连接(即挂机)是向DCE发送”ATH\r”
 
 
4.常用AT命令
 
    不同产商的AT命令大同小异,但是还是有所区别,一般要看产品手册,如下列产商的
   西门子 TC35i 的  http://www.sendsms.cn/download/TC35i_AT_C.pdf
   Nokia的  http://wiki.forum.nokia.com/index.php/AT_Commands
  华为CM300  http://www.sangrong.com/download/cm300.pdf
 
   这里罗列一些常见的AT命令
   4.1 基本操作
1.1 AT 
命令解释:检测Module与串口是否连通,能否接收AT命令;
命令格式:AT
命令返回:OK (与串口通信正常)(无返回,与串口通信未连通)
 
1.2 AT+CSQ
命令解释:检查网络信号强度和SIM卡情况
命令格式:AT+CSQ
命令返回:+CSQ: **,##
          其中**应在10到31之间,数值越大表明信号质量越好,##应为99。
          否则应检查天线或SIM卡是否正确安装
测试结果:AT+CSQ
          +CSQ: 31, 99
          信号强度值会有少许变化,用手遮住天线,信号强度值会下降(大致在26左右)。
1.3 ATZ 
命令解释:恢复原厂设置
命令格式:ATZ
命令返回:OK

1.4 AT+CGMR
命令解释:查询模块版本;
命令格式:AT+CGMR
命令返回:
         +CMEERROR
测试结果:AT+CGMR
         R4A021      CXC1122528
          OK
解释:模块版本号为R4A021

1.5 AT+IPR
命令解释:修改串口1波特率;
命令格式:AT+IPR=
命令返回: ERROR 
OK 
测试结果:AT+IPR=19200
OK
注意:串口波特率修改为19200后要把串口调试工具的波特率设为相应
波特率后模块才会有返回

1.6 AT&W 
命令解释:保存模块设置;
命令格式:AT&W
命令返回: OK
ERROR(保存不成功)
测试结果:AT&W
OK
4.2、通话操作
2.1ATD 
命令解释:拨打电话
命令格式:ATD**********;(****为电话号码)
命令返回:OK
NO DIAL TONE(没有拨号音)
NO CARRIER(无载波)
测试结果:a. ATD13510090403;
OK
呼叫成功;
b. ATD13510090403;
NO DIAL TONE
天线未接好,接触不良;
c. ATD13510090403
NO CARRIER
命令错误,缺{;};
2.2 RING
命令解释:有电话呼入
命令格式:
命令返回:无

2.3 ATA
命令解释:摘机
命令格式:ATA
命令返回:OK
测试结果:RING
RING
ATA
          OK
          接通电话;

2.4 ATH
命令解释:挂机
命令格式:ATH
命令返回:OK
测试结果:ATH
          OK
          电话挂断(通话过程中);

2.5 AT+CHUP
命令解释:挂机
命令格式:AT+CHUP
命令返回:OK
测试结果:RING
ATH
OK
电话挂断(尚未接通来电);

2.6AT+VTS
命令解释:拨打分机
命令格式:AT+VTS=“分机号码”
命令返回:OK
测试结果:
AT+VTS=“0”
OK

4.3、短信息操作

  短信操作步骤及相关命令:
(1) 设置短信格式——AT+CMGF
(2) 设置短信存储载体——AT+CPMS
(3) 设置短信接收提示方式——AT+CNMI
(4) 发送短信——AT+CMGS
(5) 显示短信——AT+CMGL

3.1 AT+CPMS
命令解释:选择短信存储载体

3.1.1命令格式:AT+CPMS=[,][,]
设置短信存储载体
命令返回:+CPMS:,,,,,
          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:,,,,,,
                     ,,
          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 supporteds),(list of supporteds),
                    (list of supporteds)
          OK
          ERROR
测试结果:AT+CPMS=?
          +CPMS: ("ME","SM"),("ME","SM"),("ME","SM")
          OK

3.2 AT+CMGF
命令解释:设置短信格式
3.2.1命令格式:AT+CMGF=
命令返回: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.3 AT+CMGS
命令解释:发送短信
命令格式:AT+CMGS=[,]
          Text is entered
命令返回:+CMGS:[,]
          +CMS ERROR:
          OK
          ERROR
测试结果:a. AT+CMGS=13510090403
          >ABCD1234.456
          +CMS ERROR:500
          命令错误;
        b. AT+CMGS="13510090403"
> IT IS TEST NOW
+CMGS: 235
OK

3.4 AT+CMGR
命令解释:读短信
命令格式:AT+CMGR=
命令返回:+CMGS:,[],]
          +CMS ERROR:
          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.5 AT+CMGW
命令解释:写短信,并保存到存储载体
命令格式:AT+CMGW=[,]
命令返回:+CMGS:
          +CMS ERROR:
          OK
          ERROR
测试结果:AT+CMGW="13534139079"
> SHELLEY123456
+CMGW: 1
OK
把目标地址为13534139079的短信存入存储载体,且被分配的地址
为1号短信;

3.6 AT+CMGD
命令解释:删除短信
命令格式:AT+CMGD=
命令返回:+CMS ERROR:
          OK
          ERROR
测试结果:AT+CMGD=1
          OK
          1号短信被删除;

3.7 AT+CMGL
命令解释:显示短信清单
命令格式:AT+CMGL=
命令返回:+CMGL:,,,[],[] [,,]
[
测试结果:见总测试结果;

3.8 AT+CMSS
命令解释:发送存储载体中的短信
命令格式:AT+CMSS=
命令返回:+CMSS:
+CMS ERROR:
OK
ERROR
测试结果:AT+CMSS=2
+CMSS: 204
OK

3.9AT+CNMI
命令解释:新短信提示
3.9.1命令格式:AT+CNMI=[[,[,[,]]]]
命令返回:OK
  ERROR
测试结果:AT+CNMI=3,2
  OK

3.9.2命令格式:AT+CNMI?
命令返回:+CNMI:,,,
OK
ERROR
测试结果:AT+CNMI?
  +CNMI: 3,2,0,0
  OK

3.9.3命令格式:AT+CNMI=?
命令返回:+CNMI:(list of supporteds), (list of supporteds), (list of supporteds),
(list of supporteds) 
OK
ERROR
测试结果:AT+CNMI=3,2
OK

推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
author-avatar
轻裾随风远
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有