AT指令集及其通信测试方式
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+WPCS |
设定电话簿状态。这个特殊的命令报告通过TE电话簿所用的状态的ME。ME于是可以转换每一个输入的或者显示的字符串字母。这个用来读或者写电话簿的入口。 |
AT+CIMI |
获得IMSI。这命令用来读取或者识别SIM卡的IMSI(国际移动签署者标识)。在读取IMSI之前应该先输入PIN(如果需要PIN的话)。 |
AT+CCID |
获得SIM卡的标识。这个命令使模块读取SIM卡上的EF-CCID文件。 |
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+CALA |
警报管理。这个命令用来设定在ME中的警报日期/时间。(闹铃) |
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+CMUT |
麦克风静音控制。 |
AT+SPEAKER |
喇叭/麦克风选择。这个特殊命令用来选择喇叭和麦克风。 |
AT+ECHO |
回音取消。 |
AT+SIDET |
侧音修正。 |
AT+VIP |
初始化声音参数。 |
AT+DUI |
用附加的用户信息拨号。 |
AT+HUI |
用附加的用户信息挂机。 |
AT+RUI |
接收附加用户信息。 |
三、网络服务命令
AT+CSQ |
信号质量。+CSQ: 17,99 |
AT+COPS |
服务商选择。 |
AT+CREG |
网络注册。获得手机的注册状态。 |
AT+WOPN |
读取操作员名字。NONE |
AT+CPOL |
优先操作员列表。NONE |
四、安全命令
AT+CPIN |
输入PIN。 |
AT+CPIN2 |
输入PIN2。 |
AT+CPINC |
PIN的剩余的尝试号码。 |
AT+CLCK |
设备锁。 |
AT+CPWD |
改变密码。 |
五、电话簿命令
AT+CPBS |
选择电话簿记忆存储。 |
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指令集及其通信测试方式的更多相关文章
- 关于CPU、指令集、架构、芯片的一些科普
作者:王强链接:https://zhuanlan.zhihu.com/p/19893066来源:知乎 随着智能设备的广泛普及,这几年媒体上越来越多的出现关于"架构""AR ...
- 用 Lua 实现一个微型虚拟机-基本篇
用 Lua 实现一个微型虚拟机-基本篇 目录 介绍 机器指令模拟 最终核心代码 虚拟机内部状态可视化 完整项目代码 后续计划 参考 介绍 在网上看到一篇文章 使用 C 语言实现一个虚拟机, 这里是他的 ...
- [转帖]双剑合璧:CPU+GPU异构计算完全解析
引用自:http://tech.sina.com.cn/mobile/n/2011-06-20/18371792199.shtml 这篇文章写的深入浅出,把异构计算的思想和行业趋势描述的非常清楚,难得 ...
- SSE指令集学习:Compiler Intrinsic
大多数的函数是在库中,Intrinsic Function却内嵌在编译器中(built in to the compiler). 1. Intrinsic Function Intrinsic Fun ...
- ARM-汇编指令集(总结)
ARM汇编指令集 指令.伪指令 (汇编)指令: 是机器码的助记符,经过汇编器编译后,由CPU执行. (汇编)伪指令:用来指导指令执行,是汇编器的产物,最终不会生成机器码. 有两种不同风格的ARM指 ...
- Arduino下LCD1602综合探究(上)——1602的两种驱动方式,如何使LCD的控制编程变得更简单
一.前言: LCD ( Liquid Crystal Display 的简称)液晶显示器,已经逐渐替代CRT成为主流的显示设备之一,因此也成为了单片机发烧友绕不过的话题之一:而LCD1602更是很多单 ...
- Android动态方式破解apk进阶篇(IDA调试so源码)
一.前言 今天我们继续来看破解apk的相关知识,在前一篇:Eclipse动态调试smali源码破解apk 我们今天主要来看如何使用IDA来调试Android中的native源码,因为现在一些app,为 ...
- JVM体系结构与工作方式
JVM全程是java virtual machine(java虚拟机). 以计算为中心来看计算机的体系结构可以分为以下几个部分: 1.指令集:这个计算机所能识别的机器语言的命令集合; 2.计算单元:能 ...
- Linux Systemcall Int0x80方式、Sysenter/Sysexit Difference Comparation
目录 . 系统调用简介 . Linux系统调用实现方式的演进 . 通过INT 0x80中断方式进入系统调用 . 通过sysenter指令方式直接进入系统调用 . sysenter/sysexit编程示 ...
随机推荐
- SqlServer的order by问题
如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中.这是我昨天写sql的时候遇到的,主要是因为最近在做一个数据库的迁移与更换,原来MySQL的数据库全 ...
- Redis之集群
Redis Cluster是 Redis的分布式解决方案,在3.0版本正式推出,有效地解决了Redis分布式方面的需求.当遇到单机内存.并发.流量等瓶颈时,可以采用Cluster架构方案达到负载均衡的 ...
- Spring学习日记02_IOC_属性注入_其他类型属性
ICO操作Bean管理(xml注入其它类型属性) 字面量 null值 <property name="address"> <null></null&g ...
- as3.0 Flex 图像处理
as3.0 Flex 图像处理 已知的一些图像处理,主要是得到颜色过滤矩阵,不完整,大家一起来补充. //颜色转换数组,所有的0都是可调值public var colorArray:Array = [ ...
- Java hashCode&&equals
/** 为保证向Set中添加的对象其所在的类必须要重写hashCode和equals方法: 重写的原则:hashCode和equals尽量保持一致性: 两个相同的对象equals()返回true时,那 ...
- cache之guava
本文主要记录guava_cache的学习心得! 缓存是什么?为何要用缓存呢? 先参考下图! 这是一张小白图!简单形容了一个普普通通的服务端请求的处理模型! 当一个request请求通过网络不远千里的来 ...
- Flask(8)- jinja2 模板入门
前言 之前的文章有个栗子,视图函数可以直接返回一段 html 代码,浏览器可以自动渲染 但是当你的 HTML 非常复杂的话,也要整串写在代码里面吗,这显然不合理的,可阅读性也非常差 所以,就诞生了 J ...
- Docker:虚拟机挂起后,再启动docker容器连接失败
问题描述 当我们使用VMware15 Pro 创建虚拟机并运行Linux搭建的Docker时,挂起虚拟机后再次运行发现访问Docker容器失败. 解决方式 我们正常的挂起其实是:挂起客户机,博主尝试 ...
- 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循环的使 ...
- springboot整合拦截器如何让其不拦截默认的访问路径
1.注册自定义拦截器2.拦截器3.控制器4.其它说明:我想做控制拦截登陆,将所有的请求拦截下来判断如果当前的session里没有用户名则跳转到登陆页面.问题是目前可以拦截所有请求了,但第一次进入登陆页 ...