网站地图
AT命令

AT命令有两种解释一种是调制解调器命令语言,另一种是Windows中的计划任务命令行。

AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制。由Hayes公司发明,已成为事实上的标准并被所有调制解调器制造商采用的一个调制解调器命令语言。每条命令以字母"AT"开头,因而得名。AT后跟字母和数字表明具体的功能。 SMS。之后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM研制了一整套AT指令,其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM07.05标准以及的GSM07.07标准,完全标准化和比较健全的标准。如:对SMS的控制共有3种实现途径:最初的BlockMode;基于AT指令的TextMode;基于AT指令的PDUMode。到PDUMode已经取代BlockMode,后者逐渐淡出。GSM模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首,字符结束的字符串,AT指令的响应数据包在中。每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。

背景

互联网刚出现时,人们都是用modem来进行连接。modem通常是在电话线两端,由一个modem开始连接并结束操作。无论modem是“发起”还是“应答”模式,数据传输的两套频率之间的手动切换,一般由发出呼叫的用户将其modem切换为“发起”,然后手动拨打号码。当远程modem应答时,应已经设置为“应答”模式,电话听筒被关闭,通信一直持续到呼叫方手动断开。

当需要自动化时,通常只需要在应答方 - 例如,一家银行可能需要从支行号码呼入以结束日常处理。为了填补这一角色,某些modem包含了当其在应答模式时的自动摘机功能,其他用户手动断开时的清线功能。需要进行自动呼出拨号的情况相当少,并且是通过一个单独的外围设备一个“拨号器”来处理的。这通常插是在电脑上的一个单独的输入/输出端口(通常是一个RS-232端口)并需要modem本身单独编程。

这种操作方法在20世纪60年代和70年代初工作的很好,当时modem通常被用来连接终端设备如电脑(拨出)或智能电脑主机(应答)。然而,20世纪70年代的微型计算机革命导致了低成本modem的引入并使这个半专用的点对点连接的想法已不在适用。成千上万的潜在用户可能要拨打任意的其他数千名用户,并且在当时唯一的解决办法就是让用户手动拨号。

计算机行业需要一种方式来告诉modem通过软件来拨什么号。较早的单独拨号器有这个功能,但它只能使用一个单独的端口,而微型计算机可能没有。另一种解决办法是使用一个单独的一套“命令引脚”专门用于发送和接收命令,另一套可以使用一个信号引脚指示modem应该将收到的数据解释为命令。这些都在RS-232标准有硬件支持。然而,微机的RS-232端口的许多实现都是非常基本的,并且为了节约成本而消除了很多引脚。

贺氏的解决方案

贺氏通讯在1981年推出了其通过没有修改而重新使用现有的数据引脚的Smartmodem解决方案。 [1] 而且,modem本身可以在两种模式之间进行切换:

1,modem发送数据到远程modem时的数据模式。(在数据模式中,modem把它从计算机接收的任何东西作为数据通过电话线发送出去)。

2,数据被解释为命令而给本地modem的命令模式(本地modem应执行的命令)。

从数据模式切换到命令模式,会话发出3个加号的转义序列字符串(“+++”)并跟随一秒钟的暂停。转义序列结束后的暂停是必须的,以减少入站信号所造成的问题:如果三个加号接收后的1秒内接收到任何其他数据,它就不是转义序列并将作为数据发送。要切换回去,他们发送联机命令,O。在实际使用中许多命令在完成后自动切换到在线模式,而对于用户来说很少使用在线命令。

为了避免贺氏的专利授权,一些厂商实施的转义序列没有时间间隔保护(TIES)。这里有一个主要的影响是拒绝服务安全,它会导致计算机尝试在数据模式中发送字节序列“+++ATH0”时使modem挂断连接。对于通过这种modem连接到Internet的任何计算机,这可以很容易地被通过发送包含“+++ATH0”有效载荷序列的死亡请求ping所利用。计算机操作系统会自动尝试用相同的有效载荷回复发件人,modem会将ICMP数据包的有效载荷数据解释作为贺氏命令而立即将自身从互联网断开。同样的错误也可能会触发,如,计算机用户试图发送包含上述字符串的电子邮件。

命令

贺氏命令集包括各种电话线操作命令,如拨号和挂断。它还包括用来modem设置的各种控制,包括一组寄存器指令集,允许用户在原来的贺氏modem上直接设置各种内存位置。该指令集的其中相当一部分在很大程度上几乎被所有早期300波特modem制造商一字不差的进行了复制,包括寄存器的含义。

1200和2400波特的扩展需要一套小的新命令集,它们中一部分用(“&”)前缀来表示支持新的功能。贺氏自身被迫在它们的1200后不久迅速推出一个2400波特模型,而作为一个省时的办法,该命令集跟1200是相同的。基本上是偶然的,这使得现有的1200波特率modem用户使用新的贺氏2400模型时无需改变他们的软件,这强化了贺氏版本命令的使用。数年后,TIA/EIA将2400波特率命令集成为一个正式的标准,标题为:数据传输系统和设备-串行异步自动拨号和控制,TIA / EIA-602。

然而贺氏移动通信在高速应用或压缩的使用上进展缓慢,而其它三家公司则开始领先 - Microcom,U.S. Robotics 和 Telebit。这三个公司使用自己的扩展命令集,而不是等待贺氏。到了90年代初期,共有四个主要命令集在使用,以及基于其中之一的一些版本。20世纪90年代初,随着14.4和28.8 kbit/s的的广泛引入事情再次变得简单。慢慢地,基于原贺氏命令集使用“&”扩展的命令集开始流行,然后变得普遍。只有另外一个命令集一直流行:US Robotics modem命令集。

描述

以下文字列出了部分贺氏命令集(也叫AT命令:"AT" 意思是注意)。

贺氏命令可分为四组:

1.基本命令集一个大写字母紧跟一个数字。如:M1。

2.扩展命令集一个“&”(and符号)和大写字母紧跟一个数字。它是基本命令集的扩展。如:&M1。注意:M1和&M1是不同的。

3.专有命令集通常使用一个反斜杠(“\”)或者是百分号(“%”)开头;这些命令在各modem厂商间差异很大。

4.寄存器命令Sr=n。这里r是要改变的寄存器编号,n是要赋予的新值。

寄存器代表内存中的指定位置。Modem在主板上有一些少量的内存。第四组命令的目的是为了输入值到一个特定的寄存器(内存位置)。该寄存器将存储一个modem和通信软件可以利用的特定变量(字母数字信息)。例如,S7 = 60指示计算机“设置寄存器#7的值为60”。

虽然指令集语法的大多数命令由字母数字组合(L0,L1等)定义,零则是可选使用的。本例中,“L0”等同于普通的“L”。阅读下表时要记住这一点。

数据模式下,转义序列可将modem返回到命令模式。正常的转义序列是三个加号(“+++”),并为将它跟可能的真实数据消除歧义:它的前面必须有一个停顿,加号之间没有任何停顿,并紧跟一个暂停;默认情况下,“暂停”是一秒钟,“不停顿”则是更少。

语法定义

以下语法定义:

<CR>回车符,是在命令行和结果代码终止符,其值是0到255之间的十进制ASCII码,在参数S3中指定。默认值为13。

<LF>换行字符,是公认的换行符的字符。它的值介于十进制ASCII码的0到255之间,在参数S4中指定。默认值为10。除非使用详细结果代码(使用V1选项)否则换行符在回车符之后输出,如果使用了数字格式结果代码(使用V0选项),它不会出现在结果代码中。

<...>尖括号内名称是语法元素。尖括号不会出现在命令行中。

[...]方括号内是命令的可选子参数或AT信息响应的可选部分。括号本身不会出现在命令行中。当读取AT命令时没有给出子参数,新值是其先前的值。在AT命令中不存储任何子参数的值,所以没有读命令,也即所谓的输入动作命令,输入应在子参数建议的默认设置的基础上进行。

modem初始化

其他用法,见向量初始化。

一个字符串可以包含放在一起的许多贺氏命令,从而使modem以最佳方式准备拨号或接听,如AT&F&D2&C1S0 = 0X4。这就是所谓的初始化字符串。V.250规范要求所有的DCE接受至少40个字符的级联命令主体(在“AT”之后)。

会话示例

以下表示两台计算机,计算机A和计算机B,都连接了modem,并且用户使用终端仿真软件控制modem。终端仿真软件通常允许用户直接发送贺氏命令给modem,并查看响应。在这个例子中,计算机A的用户让modem拨modemB的电话号码555-1234(长途)。需要注意的是每一个命令和响应之后,都有发送回车符结束命令。

Modem A

Modem B

备注

ATDT15551234

用户在modem A发出一个拨号命令:AT让modem注意 D-拨号 T-按键音 15551234-呼叫这个号码

响铃

Modem A开始拨号。Modem B响铃,并且modem会发出报告。

ATA

modem B上的计算机发出回应命令。

连接

连接

modem连接,并且两个modem都报告状态“连接”(在实践中,大多数modem会在连接后报告更多信息指出连接的速度。)另外,此时,两个modem将在串口提高DCD,或者叫数据载荷检测信号。

abcdef

abcdef

modem连接后,任何一端输入的字符都将出现在另一端。计算机A的人开始输入。字符通过modem出现在计算机B的屏幕上。(用户A可能不会看到自己输入的字符这依赖于终端软件的本地回显设置)

+++

计算机B的人发出modem取消命令。(交替的,而更常见的是,计算机B可能丢掉DTR,或者叫数据终端准备信号来实现挂断,而不需要使用+++或ATH。)

OK

modem确认它。

ATH

计算机B的人发出挂断命令。

无载荷

OK

两个modem都报告连接结束。modem B回应“OK”命令作为预期结果;modem A说出“无载荷”来报告远端来中断连接。两个modem都丢弃了他们的DCD信号。

配合度

以前的贺氏命令集在基于modem的通信中所代表了巨大的飞跃,随着时间的推移,许多问题开始出现,但几乎没有是因为货氏本身引起的:

由于缺乏书面的标准,其他的modem制造商抄袭了外部可见的命令和(大致的)基本命令。这导致了modem在如何改变状态时的各种各样的微妙的差别,以及他们如何处理错误条件,挂起和超时。

每个制造商倾向于增加新的命令来处理新出现的需求,经常与其他modem不兼容。

例如,设置硬件或软件握手往往需要为不同的modem设置许多不同命令。这破坏了基本“AT”命令集的普遍方便性。

许多“贺氏兼容”modem具有它们不兼容的严重怪癖。例如,许多modem接收到“AT Z”重置命令后需要几秒钟的暂停。一些modem需要命令之间有空格,有的则不需要。有些会因为自己的“意志”改变波特率而帮倒忙,这将使得电脑不知道如何处理传入位。

由于这些结果,最终许多通信方案不得不放弃了任何能跟所有的“贺氏兼容”modem交谈的想法,而不得不尝试使用程序从响应来确定modem的类型,或提供给用户一些办法,使他们能够输入随便什么特殊命令以强迫他们的特殊modem正确行事。

基本贺氏命令集

下面的命令是几乎所有的modem支持的AT命令集,无论是旧新。 [2]

命令

描述

备注

A0 or A

回应呼入呼叫

A/

重复最后命令

不要使用AT前缀,不要跟回车符。回车符通常表示中止。

D

拨号

拨后面的号码并握手

P脉冲拨号

T拨号音拨号

W等待下一个拨号音。

R拨号后的反响回应模式。

@为二次拨号等待30秒。

,在S8寄存器暂停指定时间(通常2秒)。

;拨号后保持命令模式。

!- 闪光灯开关挂机(挂断了半秒,再转接电话。)

L拨最后一次号码

E0 或 E

无回显

不会回显命令到计算机。

E1

回显

回显命令道计算机(这样一个人可以看到另一个人的输入)。

H0

挂钩状态

挂钩中挂断电话,结束过程中的任何呼叫。

H1

挂钩状态

挂钩结束摘起电话线(通常会听到拨号音)。

I0 toI9

调查、信息或讯问

该命令返回有关模型的信息,比如它的固件或品牌名称。每一个数字(09,有时是10或以上)返回一行modem的具体信息,或如果没有定义返回“ERROR”。今天,Windows使用即插即用检测专用modem的类型。

L0 orLn (n=1 to 3)

扬声器音量。只被某些modem支持,通常扩展支持。modem很少有扬声器,或者有物理音量控制,或者声音输出是通过声卡的不支持此命令。

关闭或降低音量

M0 or M

喇叭关闭,拨号时无声

M3也很常见,但很多品牌不同

M1

远程载波检测扬声器(即直到被其他modem听到)

M2

扬声器始终打开(连接后听到数据声音)

O

返回在线

由“+++”转义代码被中断后返回modem到正常连接状态。

Q0 or Q

安静模式

关闭 - 显示结果码,用户会看到命令响应(如OK)

Q1

安静模式

打开 - 结果代码被抑制,用户不会看到响应。

Sn

选择当前寄存器

需要注意的是Sn,?和=r实际上是三个单独的命令,并且可以在单独的AT命令中给予。

选择寄存器n作为当前寄存器

Sn?

选择寄存器n作为当前寄存器,并查询它的值。使用?对自己查询而不管最近选择了那个寄存器。

Sn=r

选择寄存器n作为当前寄存器,并在其中存储r。使用=?对自己存储而不管最近选择了那个寄存器。

V0 or V

数字结果代码

V1

详细

英文结果代码(例如CONNECT BUSY,NO CARRIER等)

X0 or X

贺氏Smartmodem 300兼容的结果代码

X1

Smartmodem

通常增加连接速度到基本结果代码(如CONNECT 1200)

X2

通常添加了拨号音检测(防止盲目拨号,有时防止ATO)

X3

通常增加忙音检测。

X4

通常添加忙音和拨号音检测

Z0 or Z

复位modem存储的配置。对于多个配置文件使用Z0,Z1etc。这是跟没有NVRAM的modem(非易失性存储器)一样的出场配置&F。

重置

注:一个命令字符串由一个CR(\r)字符决定

modem s寄存器定义

寄存器

描述

范围

预设值

S0

自动应答前的振铃次数

0-0从不

0

S1

振铃计数器

0-255振铃次数

0

S2

转义字符

0255, 十进制ASCII码

43 ("+")

S3

负载返回字符

0-127, 十进制ASCII码

13 (负载返回)

S4

换行符

0-127, 十进制ASCII码

10 (换行)

S5

退格符

0-32, 十进制ASCII码

8(退格)

S6

盲拨前的等待时间

2255秒

2

S7

拨号后等待负载

1255秒

50

S8

停顿时间(拨号等待)

0255秒

2

S9

负载检测回应时间

1255个十分之一秒

6(0.6秒)

S10

负载丢失和挂断之间的延迟

1255个十分之一秒

14(1.4秒)

S11

DTMF拨号持续

50255毫秒

95毫秒

S12

取消代码守卫时间

0255 个五十分之一秒

50(1秒)

S18

测试定时器

0255秒

0秒

S25

DTR延迟

0255(同步模式时为秒,其他模式是百分之一秒)

5

S26

RTS到CTS延迟间隔

0255个百分之一秒

1个百分之一秒

S30

不活动连接定时器

0255个十分之一秒

0(禁止)

S37

所需的电信线路速度

010

命令选项:

0尝试自动连接模式

1尝试使用300bit/s的连接速度

2尝试使用300bit/s的连接速度

3尝试使用300bit/s的连接速度

5尝试使用1200bit/s的连接速度

6尝试使用2400bit/s的连接速度

7尝试使用V.23 75/1200模式

8尝试使用9600bit/s的连接速度

9尝试使用12000bit/s的连接速度

10尝试使用14400bit/s的连接速度

S38

强制断开连接前的延迟

0255秒

20秒 [2]

V.250

ITU-T在1995年在它的V.25建议中建立了一个标准,试图来重新建立一个命令集标准。它在1998年作为跟贺氏命令集V.251无关的附件更名为v.250。V.250兼容的modem实现标准所指定的A,D,E,H,I,L,M,N,O,P,Q,T,V,X,Z,及C&D和&F命令。它也必须实现S寄存器并且必须使用标准中给出的寄存器S0,S3,S4,S5,S6,S7,S8和S10作为目的。最后还只能跟ITU建议一致,必须实现任何加号“+”后面跟随任意A到Z字母的命令。modem制造商可以自由地实施其他命令和它们看到的适合的S寄存器,并且可以给标准命令添加选项。

V.250 定义领先字符序列

领先字符

包括有关命令

+A

呼叫控制(网络地址)问题,常见有,PSTN,ISDN,ITU-T建议。X.25,交换式数字

+C

数字蜂窝扩展

+D

数据压缩,ITU-T建议。V.42

+E

错误控制,ITU-T建议。V.42

+F

传真,ITU-T建议。T.30等。

+G

一般性的问题,如身份和能力

+I

DTE-DCE接口的问题,ITU-T建议。V.24等。

+M

调制,ITU-T建议。V.32等

+P

PCM DCE命令,ITU-T建议。V.92

+S

交换或同步数据类型

+T

测试问题

+V

语音扩展

+W

无线扩展

GSM

ETSI GSM 07.07(3GPP TS 27.007)规定的AT命令式控制GSM手机或modem。ETSI GSM 07.05(3GPP TS 27.005)规定的AT命令式管理GSM的SMS短信功能。

GSM的命令示例: [3]

命令

描述

AT+CPIN=1234

输入PIN 码

AT+CPWD="SC","old","new"

将“旧的”PIN码“新的”

AT+CLCK="SC",0,"1234"

删除PIN码

AT&V

状态

ATI

状态(制造商,型号,版本,IMEI功能)

AT+COPS=?

列出可用的网络0-Unknown/2-Current/3-Forbidden,LONGNAME,SHORTNAME,数值-ID,“ACT”

AT+CSQ

得到的信号强度。应答+CSQ:<rssi(more=better)>,<ber, less=better>

ATD*99#

拨号接入点

AT+CGDCONT=1,"IP","access.point.name"

定义PDP上下文

GSM/3G medom通常支持ETSI GSM 07.07/3GPP TS 27.007 AT指令集扩展,尽管有很多命令执行有所不同。

大多数USB modem厂商,如华为,Sierra Wireless,Option,还定义了专有无线模式选择扩展(GSM/3G偏好)或类似扩展。因为性能的原因,某些最新的高速modem提供了一个虚拟以太网接口而不是使用PPP连接,(PPP连接只在计算机和modem之间而不通过网络使用)。该设置需要供应商的AT命令扩展。有时候这些特定扩展规范是公开,而其他时候供应商则要求有一个NDA才能访问它们。

列出在指定的时间和日期在计算机上运行的已计划命令或计划命令和程序。必须正在运行“计划”服务才能使用 at 命令。

at [\\computername] [[id] [/delete] | /delete [/yes]]

at [\\computername] time [/interactive] [/every:date[,...]| /next:date[,...]] command

参数

如果在没有参数的情况下使用,则 at 列出已计划的命令。

\\computername

指定远程计算机。如果省略该参数,命令将安排在本地计算机。

id

指定指派给已计划命令的识别码。

/delete

取消已计划的命令。如果省略了 id,计算机中已计划的命令将被全部取消。

/yes

当删除已计划的事件时,对系统的查询强制进行肯定的回答。

time

指定运行命令的时间。将时间以 24 小时标记(00:00 [午夜] 到 23:59)的方式表示为小时:分钟。

/interactive

允许作业与在作业运行时登录用户的桌面进行交互。

/every:date[,...]

在每个星期或月的指定日期(例如,每个星期四,或每月的第三天)运行命令。将 date 指定为星期的一天或多天 (M,T,W,Th,F,S,Su),或月的一天或多天(使用 1 到 31 的数字)。用逗号分隔多个日期项。如果省略了 date,将假定为该月的当前日期。

command

指定要运行的 Windows 2000 命令、程序(.exe 或 .com 文件)或批处理程序(.bat 或 .cmd 文件)。当命令需要路径作为参数时,请使用绝对路径,也就是从驱动器号开始的整个路径。如果命令在远程计算机上,请指定服务器和共享名的 UNC 符号,而不是远程驱动器号。如果命令不是可执行 (.exe) 文件,必须在命令前加上 cmd /c,例如:

cmd /c dir > c:\test.out

at 10:00 /every:m,t,w,th,f,s,su shutdown -s -t 30

命令解释:在周一、周二、周三、周四、周五、周六、周日 每天的10:00 关机(30s 提示时间)

PS: 若取消关机命令,可执行命令: shutdown -a


相关文章推荐:
调制解调器 | 终端设备 | 数据终端设备 | 数据电路终端设备 | 终端设备 | 调制解调器 | GSM模块 | 字符 | modem | RS-232 | 微型计算机 | 引脚 | 数据模式 | 命令模式 | 联机 | ping | ICMP | TIA/EIA | 握手 | 运行命令 | 批处理程序 | 绝对路径 |
相关词汇词典