更新时间:2024-03-14 11:20
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公司发明,已成为事实上的标准并被所有调制解调器制造商采用的一个调制解调器命令语言后跟字母和数字表明具体的功能。 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解决方案。而且,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命令集。
描述
贺氏命令可分为四组:
1.基本命令集—一个大写字母紧跟一个数字。如:M1。
2.扩展命令集—一个“&”(and符号)和大写字母紧跟一个数字。它是基本命令集的扩展。如:&M1。注意:M1和&M1是不同的。
3.专有命令集—通常使用一个反斜杠(“\u201d)或者是百分号(“%”)开头;这些命令在各modem厂商间差异很大。
4.寄存器命令—Sr=n。这里r是要改变的寄存器编号,n是要赋予的新值。
寄存器代表内存中的指定位置。Modem在主板上有一些少量的内存。第四组命令的目的是为了输入值到一个特定的寄存器(内存位置)。该寄存器将存储一个modem和通信软件可以利用的特定变量(字母数字信息)。例如,S7 = 60指示计算机“设置寄存器#7的值为60”。
虽然指令集语法的大多数命令由字母数字组合(L0,L1等)定义,零则是可选使用的。本例中,“L0”等同于普通的“L”。阅读下表时要记住这一点。
数据模式下,转义序列可将modem返回到命令模式。正常的转义序列是三个加号(“+++”),并为将它跟可能的真实数据消除歧义:它的前面必须有一个停顿,加号之间没有任何停顿,并紧跟一个暂停;默认情况下,“暂停”是一秒钟,“不停顿”则是更少。
语法定义
以下语法定义:
modem初始化
其他用法,见向量初始化。
一个字符串可以包含放在一起的许多贺氏命令,从而使modem以最佳方式准备拨号或接听,如AT&F&D2&C1S0 = 0X4。这就是所谓的初始化字符串。V.250规范要求所有的DCE接受至少40个字符的级联命令主体(在“AT”之后)。
会话示例
以下表示两台计算机,计算机A和计算机B,都连接了modem,并且用户使用终端仿真软件控制modem。终端仿真软件通常允许用户直接发送贺氏命令给modem,并查看响应。在这个例子中,计算机A的用户让modem拨modemB的电话号码555-1234(长途)。需要注意的是每一个命令和响应之后,都有发送回车符结束命令。
以前的贺氏命令集在基于modem的通信中所代表了巨大的飞跃,随着时间的推移,许多问题开始出现,但几乎没有是因为货氏本身引起的:
由于这些结果,最终许多通信方案不得不放弃了任何能跟所有的“贺氏兼容”modem交谈的想法,而不得不尝试使用程序从响应来确定modem的类型,或提供给用户一些办法,使他们能够输入随便什么特殊命令以强迫他们的特殊modem正确行事。
基本贺氏命令集
下面的命令是几乎所有的modem支持的AT命令集,无论是旧新。
注:一个命令字符串由一个CR( )字符决定
modem s寄存器定义
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— 定义领先字符序列
GSM
ETSI GSM 07.07(3GPP TS 27.007)规定的AT命令式控制GSM手机或modem。ETSI GSM 07.05(3GPP TS 27.005)规定的AT命令式管理GSM的SMS短信功能。
GSM的命令示例:
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 命令。
参数
无
如果在没有参数的情况下使用,则 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,例如:
命令解释:在周一、周二、周三、周四、周五、周六、周日 每天的10:00 关机(30s 提示时间)
PS: 若取消关机命令,可执行命令: shutdown -a