AT命令集详解
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<ctrl-z/ESC>
命令返回:+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:,,<oa/da>,[],[] [,<tooa/toda>,]
[
测试结果:见总测试结果;
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
AT命令集详解的更多相关文章
- linux 下 apt命令集详解
apt命令用法 packagename指代为软件包的名称 apt-get update 在修改/etc/apt/sources.list或/etc/apt/preferences之後运行该命令.此外您 ...
- [转载]OpenSSL中文手册之命令行详解(未完待续)
声明:OpenSSL之命令行详解是根据卢队长发布在https://blog.csdn.net/as3luyuan123/article/details/16105475的系列文章整理修改而成,我自己 ...
- Linux 执行文件查找命令 which 详解
某个文件不知道放在哪里了,通常可以使用下面的一些命令来查找: which 查看可执行文件的位置 whereis 查看文件的位置 locate 配合数据库查看文件位置 find 实际搜寻硬盘查 ...
- systemctl命令用法详解
systemctl命令用法详解系统环境:Fedora 16binpath:/bin/systemctlpackage:systemd-units systemctl enable httpd.serv ...
- 批处理中的echo命令图文详解
批处理中的echo命令图文详解 1. Echo 显示当前ECHO的状态:ECHO ON 或者ECHO OFF 2. ECHO ON 将ECHO状态设置为ON,将显示命令行,也就是前面的C:\>类 ...
- Ubuntu kill命令用法详解
转自:Ubuntu kill命令用法详解 1. kill 作用:根据进程号杀死进程 用法: kill [信号代码] 进程ID root@fcola:/# ps -ef | grep sen ...
- install 命令用法详解
install 命令用法详解 http://man.linuxde.net/install install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户.install命令和cp命令类似 ...
- dd命令使用详解
dd命令使用详解 http://www.cnblogs.com/qq78292959/archive/2012/02/23/2364760.html 1.命令简介 dd 的主要选项: 指定数字的地方若 ...
- Mysql导入导出工具Mysqldump和Source命令用法详解
Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式( ...
随机推荐
- 在.NET Core中用最原生的方式读取Nacos的配置
背景 之前老黄写过一篇<ASP.NET Core结合Nacos来完成配置管理和服务发现>简单介绍了如何让.NET Core程序接入Nacos,之前的SDK里面更多的是对Nacos的Open ...
- SVM之不一样的视角
在上一篇学习SVM中 从最大间隔角度出发,详细学习了如何用拉格朗日乘数法求解约束问题,一步步构建SVM的目标函数,这次尝试从另一个角度学习SVM. 回顾监督学习要素 数据:(\(x_i,y_i\)) ...
- PHP pcntl
来源:https://www.jianshu.com/p/de0b74f58f50 pcntl是一个可以利用操作系统的fork系统调用在PHP中实现多线程的进程控制扩展,当使用fork系统调用后执行的 ...
- php原生函数应用
php常见基本的函数 一.字符串函数 implode — 将一个一维数组的值转化为字符串 lcfirst — 使一个字符串的第一个字符小写 ltrim — 删除字符串开头的空白字符(或其他字符) rt ...
- docker的网络(5)
当 Docker 启动时,会自动在宿主机上创建一个 docker0 虚拟网桥,实际上是Linux 的一个 bridge. Docker 随机分配一个本地未占用的私有网络(在RFC1918中定义)中的一 ...
- apt 安装 版本
1. 通过apt-get安装指定版本软件 apt-get install package=version 2. 查询指定软件有多少个版本 2.1 通过网站搜索https://packages.ubun ...
- java并发Exchanger的使用
目录 简介 类定义 类继承 构造函数 两个主要方法 具体的例子 结语 简介 Exchanger是java 5引入的并发类,Exchanger顾名思义就是用来做交换的.这里主要是两个线程之间交换持有的对 ...
- 【Linux常见命令】sort命令
sort - sort lines of text files sort命令用于将文本文件内容加以排序. sort可针对文本文件的内容,以行为单位来排序. 语法: sort [OPTION]... [ ...
- Alpine Linux 3.9.2 发布,轻量级 Linux 发行版
开发四年只会写业务代码,分布式高并发都不会还做程序员? Alpine Linux 3.9.2 已发布,Alpine Linux 是一款面向安全的轻量级 Linux 发行版,体积十分的小. Alpi ...
- 01-复杂度2 Maximum Subsequence Sum
01-复杂度2 Maximum Subsequence Sum (25分) 时间限制:200ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:陈越 单位:浙江大学 htt ...