1 前言

AT即Attention,AT指令集是从终端设备(Terminal Equipment,TE)向终端适配器(Terminal Adapter, TA)发送的。通过TA,TE发送AT指令来控制移动台的功能,与GSM等网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。

2 通信协议

2.1 术语

GSM模块
GSM模块是一个类似于手机的通讯模块,集成了手机的若干功能于一块小电路板上,它可以发送短消息,通话等,GSM模块通过使用AT指令才能控制它,模块可以与电脑RS232串口相连,也可以用单片机来进行控制。

2.2 通信接口

支持RS232串行接口。

2.3 AT指令

一般来讲,AT命令包括四种类型,如表所示。

2.3.1 AT指令语法

1)以“AT”或“at”为前缀,以结尾,方括号中的值为缺省值。

2)选配参数和必配参数必须按照规定的顺序排列,各参数间必须用逗号隔开。
举例:AT+CPWD=<fac>,<oldpwd>,<newpwd>。

3)如果某参数是字符串(比如:<number>),该字符串必须放在双引号中。
举例:“12345”、“cmnet”,双引号中的各项符号可看作是字符串。

4)命令的可选子参数或 TA 返回结果的可选部分位于方括号中。

5)不使用双引号时,字符串中各字符间的空格可忽略不计。

6)实际使用中<>和[]不必输入。

7)所有AT命令本身不区分大小写,但其参数对大小写敏感。

2.3.2 AT指令集

一、一般命令

AT+CGMI

给出模块厂商的标识。 SONY ERICSSON

AT+CGMM

获得模块标识。这个命令用来得到支持的频带(GSM900,DCS1800或PCS1900)。当模块有多频带时,回应可能是不同频带的结合。 AAB-1021011-CN

AT+CGMR

获得改订的软件版本。 R6C005 CXC125582CHINA1

AT+CGSN

获得GSM模块的IMEI(国际移动设备标识)序列号。351254004238596

AT+CSCS

选择TE特征设定。这个命令报告TE用的是哪个状态设定上的ME。ME于是可以转换每一个输入的或显示的字母。这个是用来发送、读取或者撰写短信。 
AT+CSCS?
+CSCS: "GSM"

AT+WPCS

设定电话簿状态。这个特殊的命令报告通过TE电话簿所用的状态的ME。ME于是可以转换每一个输入的或者显示的字符串字母。这个用来读或者写电话簿的入口。 
NONE

AT+CIMI

获得IMSI。这命令用来读取或者识别SIM卡的IMSI(国际移动签署者标识)。在读取IMSI之前应该先输入PIN(如果需要PIN的话)。
460001711603161

AT+CCID

获得SIM卡的标识。这个命令使模块读取SIM卡上的EF-CCID文件。 
NONE

AT+GCAP

获得能力表。(支持的功能)+GCAP: +FCLASS, +CGSM, +DS

A/

重复上次命令。只有A/命令不能重复。这命令重复前一个执行的命令。

AT+CPOF

关机。这个特殊的命令停止GSM软件堆栈和硬件层。命令AT+CFUN=0的功能与+CPOF相同。

AT+CFUN

设定电话机能。这个命令选择移动站点的机能水平。

AT+CPAS

返回移动设备的活动状态。

AT+CMEE

报告移动设备的错误。这个命令决定允许或不允许用结果码“+CMEERROR:”或者“+CMSERROR:”代替简单的“ERROR”。

AT+CKPD

小键盘控制。仿真ME小键盘执行命令。

AT+CCLK

时钟管理。这个命令用来设置或者获得ME真实时钟的当前日期和时间。 
AT+CCLK?
+CCLK: "04/08/12,17:00:42+32"

AT+CALA

警报管理。这个命令用来设定在ME中的警报日期/时间。(闹铃)
AT+CALA=?
+CALA: (1-2),(),(),(13),()

AT+CRMP

铃声旋律播放。这个命令在模块的蜂鸣器上播放一段旋律。有两种旋律可用:到来语音、数据或传真呼叫旋律和到来短信声音。

AT+CRSL

设定或获得到来的电话铃声的声音级别。NONE

二、呼叫控制命令

ATD

拨号命令。这个命令用来设置通话、数据或传真呼叫。

ATH

挂机命令。

ATA

接电话。

AT+CEER

扩展错误报告。这个命令给出当上一次通话设置失败后中断通话的原因。

AT+VTD

给用户提供应用GSM网络发送DTMF(双音多频)双音频。这个命令用来定义双音频的长度(默认值是300毫秒)。

AT+VTS

给用户提供应用GSM网络发送DTMF双音频。这个命令允许传送双音频。

ATDL

重拨上次电话号码。

AT%Dn

数据终端就绪(DTR)时自动拨号。

ATS0

自动应答。

AT+CICB

来电信差。

AT+CSNS

单一编号方案。

AT+VGR
AT+VGT

增益控制。这个命令应用于调节喇叭的接收增益和麦克风的传输增益。

AT+CMUT

麦克风静音控制。

AT+SPEAKER

喇叭/麦克风选择。这个特殊命令用来选择喇叭和麦克风。

AT+ECHO

回音取消。

AT+SIDET

侧音修正。

AT+VIP

初始化声音参数。

AT+DUI

用附加的用户信息拨号。

AT+HUI

用附加的用户信息挂机。

AT+RUI

接收附加用户信息。

三、网络服务命令

AT+CSQ

信号质量。+CSQ: 17,99

AT+COPS

服务商选择。
AT+COPS?
+COPS: 0,0,"China Mobile"

AT+CREG

网络注册。获得手机的注册状态。 
AT+CREG?
+CREG: 0,1

AT+WOPN

读取操作员名字。NONE

AT+CPOL

优先操作员列表。NONE

四、安全命令

AT+CPIN

输入PIN。

AT+CPIN2

输入PIN2。

AT+CPINC

PIN的剩余的尝试号码。

AT+CLCK

设备锁。

AT+CPWD

改变密码。

五、电话簿命令


AT+CPBS

选择电话簿记忆存储。 
AT+CPBS?
+CPBS: "SM"

AT+CPBR

读取电话簿表目。

AT+CPBF

查找电话簿表目。

AT+CPBW

写电话簿表目。

AT+CPBP

电话簿电话查询。

AT+CPBN

电话簿移动动作。这个特殊命令使电话簿中的条目前移或后移(按字母顺序)

AT+CNUM

签署者号码。

AT+WAIP

防止在下一次重起时初始化所有的电话簿。

AT+WDCP

删除呼叫电话号码。NONE

AT+CSVM

设置语音邮件号码。

六、短消息命令

AT+CSMS

选择消息服务。支持的服务有GSM-MO、SMS-MT、SMS-CB。

AT+CNMA

新信息确认应答。

AT+CPMS

优先信息存储。这个命令定义用来读写信息的存储区域。

AT+CMGF

优先信息格式。执行格式有TEXT方式和PDU方式。

AT+CSAS

保存设置。保存+CSAS和+CSMP的参数。

AT+CRES

恢复设置。

AT+CSDH

显示文本方式的参数。

AT+CNMI

新信息指示。这个命令选择如何从网络上接收短信息。

AT+CMGR

读短信。信息从+CPMS命令设定的存储器读取。

AT+CMGL

列出存储的信息。

AT+CMGS

发送信息。

AT+CMGW

写短信息并存储。

AT+CMSS

从存储器中发送信息。

AT+CSMP

设置文本模式的参数。

AT+CMGD

删除短信息。删除一个或多个短信息。

AT+CSCA

短信服务中心地址。

AT+CSCB

选择单元广播信息类型。

AT+WCBM

单元广播信息标识。

AT+WMSC

信息状态(是否读过、是否发送等等)修正。

AT+WMGO

信息覆盖写入。

AT+WUSS

不改变SMS状态。在执行+CMGR或+CMGL后仍保持UNREAD。

七、追加服务命令

AT+CCFC

呼叫继续。

AT+CLCK

呼叫禁止。

AT+CPWD

改变追加服务密码。

AT+CCWA

呼叫等待。

AT+CLIR

呼叫线确认限制。

AT+CLIP

呼叫线确认陈述。

AT+COLP

联络线确认陈述。

AT+CAOC

费用报告。

AT+CACM

累计呼叫计量。

AT+CAMM

累计呼叫计量最大值。

AT+CPUC

单价和货币表。

AT+CHLD

呼叫相关的追加服务。

AT+CLCC

列出当前的呼叫。

AT+CSSN

追加服务通知。

AT+CUSD

无组织的追加服务数据。

AT+CCUG

关闭的用户组。

八、数据命令

AT+CBST

信差类型选择。

AT+FCLASS

选择模式。这个命令把模块设置成数据或传真操作的特殊模式。

AT+CR

服务报告控制。这个命令允许更为详细的服务报告。

AT+CRC

划分的结果代码。这个命令在呼叫到来时允许更为详细的铃声指示。

AT+ILRR

本地DTE-DCE速率报告。

AT+CRLP

无线电通信线路协议参数。

AT+DOPT

其他无线电通信线路参数。

AT%C

数据压缩选择。

AT+DS

是否允许V42二度数据压缩。

AT+DR

是否报告V42二度数据压缩。

AT\N

数据纠错选择。

九、传真命令

AT+FTM

传送速率。

AT+FRM

接收速率

AT+FTH

用HDLC协议设置传真传送速率。

AT+FRH

用HDLC协议设置传真接收速率。

AT+FTS

停止特定时期的传送并等待。

AT+FRS

接收沉默。

十、第二类传真命令

AT+FDT

传送数据。

AT+FDR

接收数据。

AT+FET

传送页标点。

AT+FPTS

页转换状态参数。

AT+FK

终止会议。

AT+FBOR

页转换字节顺序。

AT+FBUF

缓冲大小报告。

AT+FCQ

控制拷贝质量检验。

AT+FCR

控制接收传真的能力。

AT+FDIS

当前会议参数。

AT+FDCC

设置DCE功能参数。

AT+FLID

定义本地ID串。

AT+FPHCTO

页转换超时参数。

十一、V24-V25命令

AT+IPR

确定DTE速率。

AT+ICF

确定DTE-DCE特征结构。

AT+IFC

控制DTE-DCE本地流量。

AT&C

设置DCD(数据携带检测)信号。

AT&D

设置DTR(数据终端就绪)信号。

AT&S

设置DST(数据设置就绪)信号。

ATO

回到联机模式。

ATQ

决定手机是否发送结果代码。

ATV

决定DCE响应格式。

ATZ

恢复为缺省设置。

AT&W

保存设置。

AT&T

自动测试。

ATE

决定是否回显字符。

AT&F

回到出厂时的设定。

AT&V

显示模块设置情况。

ATI

要求确认信息。这命令使GSM模块传送一行或多行特定的信息文字。

AT+WMUX

数据/命令多路复用。

十二、特殊AT命令


AT+CCED

电池环境描述。

AT+CCED

自动RxLev指示。

AT+WIND

一般指示。

AT+ALEA

在ME和MSC之间的数据密码模式。

AT+CRYPT

数据密码模式。

AT+EXPKEY

键管理。

AT+CPLMN

在PLMN上的信息。

AT+ADC

模拟数字转换度量。

AT+CMER

移动设备事件报告。这个命令决定是否允许在键按下时是否主动发送结果代码。

AT+WLPR

读取语言偏好。

AT+WLPW

写语言偏好。

AT+WIOR

读取GPIO值。

AT+WIOW

写GPIO值。

AT+WIOM

输入/输出管理。

AT+WAC

忽略命令。这个特殊命令允许忽略SMS、SS和可用的PLMN。

AT+WTONE

播放旋律。

AT+WDTMF

播放DTMF旋律。

AT+WDWL

下载模式。

AT+WVR

配置信差的声音速率。

AT+WDR

配置数据速率。

AT+WHWV

显示硬件的版本。

AT+WDOP

显示产品的出厂日期。

AT+WSVG

声音增益选择。

AT+WSTR

返回指定状态的状态。

AT+WSCAN

扫描。

AT+WRIM

设置或返回铃声指示模式。

AT+W32K

是否允许32kHz掉电方式。

AT+WCDM

改变缺省旋律。

AT+WSSW

显示内部软件版本。

AT+WCCS

编辑或显示订制性质设置表。

AT+WLCK

允许在特定的操作符上个性化ME。

AT+CPHS

设置CPHS命令。

AT+WBCM

电池充电管理。

AT+WFM

特性管理。是否允许模块的某些特性,如带宽模式、SIM卡电压等。

AT+WCFM

商业特性管理。是否允许Wavecom特殊特性。

AT+WMIR

允许从当前存储的参数值创建定制的存储镜像。

AT+WCDP

改变旋律的缺省播放器。

AT+WMBN

设置SIM卡中的不同邮箱号码。

十三、SIM卡工具箱命令

AT+STSF

配置工具箱实用程序。

AT+STIN

工具箱指示。

AT+STGI

获得从SIM卡发来的预期命令的信息。

AT+STCR

主动提供的结果:工具箱控制反应。

AT+STGR

给出响应。允许程序或用户从主菜单上选择项目,或响应某些命令。

3 测试项目编制

3.1 协议项编制

利用格西调试精灵软件的直接激励功能,根据AT指令的格式进行协议编辑。

AT指令模版

3.2 测试用例编制

测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。通信协议测试属于黑盒测试,可以采用黑盒测试常用的等价类划分法、边界值分析法、错误推测法、因果图法等基本方法来设计测试用例。

测试方案设计完成后,格西调试精灵软件能够利用编制完成的公共协议库,采用搭积木的方式,通过复制和粘贴命令即可非常快捷的创建测试用例。测试用例的组织方式通常是根据测试方案的设计层次采用树形结构分类组织。

4 应用实例

4.1 AT指令发送英文短消息

利用格西调试精灵软件的直接激励功能,根据AT指令发送英文短消息,选择Text模式。

AT指令发送英文短信息

AT指令集及其通信测试方式的更多相关文章

  1. 关于CPU、指令集、架构、芯片的一些科普

    作者:王强链接:https://zhuanlan.zhihu.com/p/19893066来源:知乎 随着智能设备的广泛普及,这几年媒体上越来越多的出现关于"架构""AR ...

  2. 用 Lua 实现一个微型虚拟机-基本篇

    用 Lua 实现一个微型虚拟机-基本篇 目录 介绍 机器指令模拟 最终核心代码 虚拟机内部状态可视化 完整项目代码 后续计划 参考 介绍 在网上看到一篇文章 使用 C 语言实现一个虚拟机, 这里是他的 ...

  3. [转帖]双剑合璧:CPU+GPU异构计算完全解析

    引用自:http://tech.sina.com.cn/mobile/n/2011-06-20/18371792199.shtml 这篇文章写的深入浅出,把异构计算的思想和行业趋势描述的非常清楚,难得 ...

  4. SSE指令集学习:Compiler Intrinsic

    大多数的函数是在库中,Intrinsic Function却内嵌在编译器中(built in to the compiler). 1. Intrinsic Function Intrinsic Fun ...

  5. ARM-汇编指令集(总结)

    ARM汇编指令集 指令.伪指令 (汇编)指令:   是机器码的助记符,经过汇编器编译后,由CPU执行. (汇编)伪指令:用来指导指令执行,是汇编器的产物,最终不会生成机器码. 有两种不同风格的ARM指 ...

  6. Arduino下LCD1602综合探究(上)——1602的两种驱动方式,如何使LCD的控制编程变得更简单

    一.前言: LCD ( Liquid Crystal Display 的简称)液晶显示器,已经逐渐替代CRT成为主流的显示设备之一,因此也成为了单片机发烧友绕不过的话题之一:而LCD1602更是很多单 ...

  7. Android动态方式破解apk进阶篇(IDA调试so源码)

    一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...

  8. JVM体系结构与工作方式

    JVM全程是java virtual machine(java虚拟机). 以计算为中心来看计算机的体系结构可以分为以下几个部分: 1.指令集:这个计算机所能识别的机器语言的命令集合; 2.计算单元:能 ...

  9. Linux Systemcall Int0x80方式、Sysenter/Sysexit Difference Comparation

    目录 . 系统调用简介 . Linux系统调用实现方式的演进 . 通过INT 0x80中断方式进入系统调用 . 通过sysenter指令方式直接进入系统调用 . sysenter/sysexit编程示 ...

随机推荐

  1. SqlServer的order by问题

    如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中.这是我昨天写sql的时候遇到的,主要是因为最近在做一个数据库的迁移与更换,原来MySQL的数据库全 ...

  2. Redis之集群

    Redis Cluster是 Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求.当遇到单机内存.并发.流量等瓶颈时,可以采用Cluster架构方案达到负载均衡的 ...

  3. Spring学习日记02_IOC_属性注入_其他类型属性

    ICO操作Bean管理(xml注入其它类型属性) 字面量 null值 <property name="address"> <null></null&g ...

  4. as3.0 Flex 图像处理

    as3.0 Flex 图像处理 已知的一些图像处理,主要是得到颜色过滤矩阵,不完整,大家一起来补充. //颜色转换数组,所有的0都是可调值public var colorArray:Array = [ ...

  5. Java hashCode&&equals

    /** 为保证向Set中添加的对象其所在的类必须要重写hashCode和equals方法: 重写的原则:hashCode和equals尽量保持一致性: 两个相同的对象equals()返回true时,那 ...

  6. cache之guava

    本文主要记录guava_cache的学习心得! 缓存是什么?为何要用缓存呢? 先参考下图! 这是一张小白图!简单形容了一个普普通通的服务端请求的处理模型! 当一个request请求通过网络不远千里的来 ...

  7. Flask(8)- jinja2 模板入门

    前言 之前的文章有个栗子,视图函数可以直接返回一段 html 代码,浏览器可以自动渲染 但是当你的 HTML 非常复杂的话,也要整串写在代码里面吗,这显然不合理的,可阅读性也非常差 所以,就诞生了 J ...

  8. Docker:虚拟机挂起后,再启动docker容器连接失败

    问题描述 当我们使用VMware15 Pro 创建虚拟机并运行Linux搭建的Docker时,挂起虚拟机后再次运行发现访问Docker容器失败. 解决方式  我们正常的挂起其实是:挂起客户机,博主尝试 ...

  9. Linux系统inodes资源耗尽时的查找及删除

    for i in {1..10}; do echo $i; ls > $i.log; done for i in $(seq 1 10); do echo $i; done 以上为for循环的使 ...

  10. springboot整合拦截器如何让其不拦截默认的访问路径

    1.注册自定义拦截器2.拦截器3.控制器4.其它说明:我想做控制拦截登陆,将所有的请求拦截下来判断如果当前的session里没有用户名则跳转到登陆页面.问题是目前可以拦截所有请求了,但第一次进入登陆页 ...