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命令集详解的更多相关文章

  1. linux 下 apt命令集详解

    apt命令用法 packagename指代为软件包的名称 apt-get update 在修改/etc/apt/sources.list或/etc/apt/preferences之後运行该命令.此外您 ...

  2. [转载]OpenSSL中文手册之命令行详解(未完待续)

     声明:OpenSSL之命令行详解是根据卢队长发布在https://blog.csdn.net/as3luyuan123/article/details/16105475的系列文章整理修改而成,我自己 ...

  3. Linux 执行文件查找命令 which 详解

    某个文件不知道放在哪里了,通常可以使用下面的一些命令来查找: which  查看可执行文件的位置 whereis 查看文件的位置 locate   配合数据库查看文件位置 find   实际搜寻硬盘查 ...

  4. systemctl命令用法详解

    systemctl命令用法详解系统环境:Fedora 16binpath:/bin/systemctlpackage:systemd-units systemctl enable httpd.serv ...

  5. 批处理中的echo命令图文详解

    批处理中的echo命令图文详解 1. Echo 显示当前ECHO的状态:ECHO ON 或者ECHO OFF 2. ECHO ON 将ECHO状态设置为ON,将显示命令行,也就是前面的C:\>类 ...

  6. Ubuntu kill命令用法详解

    转自:Ubuntu kill命令用法详解 1. kill   作用:根据进程号杀死进程   用法: kill [信号代码] 进程ID   root@fcola:/# ps -ef | grep sen ...

  7. install 命令用法详解

    install 命令用法详解 http://man.linuxde.net/install install命令的作用是安装或升级软件或备份数据,它的使用权限是所有用户.install命令和cp命令类似 ...

  8. dd命令使用详解

    dd命令使用详解 http://www.cnblogs.com/qq78292959/archive/2012/02/23/2364760.html 1.命令简介 dd 的主要选项: 指定数字的地方若 ...

  9. Mysql导入导出工具Mysqldump和Source命令用法详解

    Mysql本身提供了命令行导出工具Mysqldump和Mysql Source导入命令进行SQL数据导入导出工作,通过Mysql命令行导出工具Mysqldump命令能够将Mysql数据导出为文本格式( ...

随机推荐

  1. python 基础篇 匿名函数

    匿名函数基础 首先,什么是匿名函数呢?以下是匿名函数的格式: lambda argument1, argument2,... argumentN : expression 我们可以看到,匿名函数的关键 ...

  2. 基于TextRank算法的文本摘要

    本文介绍TextRank算法及其在多篇单领域文本数据中抽取句子组成摘要中的应用. TextRank 算法是一种用于文本的基于图的排序算法,通过把文本分割成若干组成单元(句子),构建节点连接图,用句子之 ...

  3. 单线程下实现IO切换

    1.Greenlet greenlet可以实现两个任务之间的来回切换,但遇到IO会阻塞,不会切(使用这个模块之前需要在电脑命令提示符中输入 pip3 install greenlet 进行安装) 例如 ...

  4. 微信小程序填坑---小程序支付

    因为公司刚刚重新做了网站,所以也吧公众号和小程序提上了日程,在公众号里面没有什么问题,直接按照官方文档进行代码编写.调试,然后就解决了公众号内支付的问题. 因为小程序提供了<webview> ...

  5. PHP中级篇 Apache配置httpd-vhosts虚拟主机总结及注意事项

    经常使用Apache虚拟主机进行开发和测试,但每次需要配置虚拟主机时都习惯性的ctrl+c和ctrl+v,这次由于重装系统,需要配置一个新的PHP开发环境虚拟主机,于是总结一下Apaceh配置http ...

  6. 2019-2020-1 20199308《Linux内核原理与分析》第一周作业

    Linux 基础入门(新版)学习笔记 实验二 基本概念及操作 重要快捷键 Tab 补全命令 Ctrl+c 强行终止当前命令 历史命令 方向上键↑,恢复之前输入过的命令 通配符 在命令行中获取帮助 某个 ...

  7. Redis持久化存储(一)

    Redis介绍 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化 ...

  8. BigDecimal 01 - 在JAVA中怎么比较Double类型数据的大小?

    2019独角兽企业重金招聘Python工程师标准>>>  非整型数,运算由于精度问题,可能会有误差,建议使用BigDecimal类型! double a = 0.001;  doub ...

  9. centos分配IP脚本--写的第一个shell脚本

    IDC小菜鸟一枚,非科班出身.常常有客户的centos服务器需要分配15个IP甚至30个IP.每次需要手动分配十分麻烦,于是花了一天时间学了shell脚本,写了这个脚本. #!/bin/bash re ...

  10. 图论--最短路--第K短路(IDA*)(IDA Star)模板

    #include <iostream> #include <cstdio> #include <cstring> #include <queue> us ...