海斯命令集

海斯命令集（也称为AT命令集）是一套专门的命令语言，最初由Dale Heatherington和Dennis Hayes于1981年为海斯智能调制解调器开发。

这套命令集由一系列短文本字符串组成，这些字符串可以组合使用，用于拨号、挂机以及更改连接参数等操作。绝大多数拨号调制解调器都采用了各种版本的海斯命令集。

最初的命令集仅覆盖了早期调制解调器支持的操作功能。随着高速调制解调器需要新的命令来控制更多功能，各大厂商纷纷推出了自己的一次性标准。这些标准仍然保持着基本的命令结构和语法，但都添加了许多使用特定前缀字符的新命令——比如Hayes和USRobotics用“&”，而Microcom则用“\”。在SupraFAXModem 14400推出并引发市场整合后，这些命令中的大多数又重新统一到了Hayes扩展标准上。

“兼容海斯标准”（Hayes compatible）这一说法在业内一直很重要，直到2018年仍然如此。

 歷史 

1977年剛開始使用海斯命令通訊時，是數據機使用已存在的資料腳位而沒有做修改，取而代之的是使數據機可以自己切換在兩個模式之間

資料模式：用於傳送資料到遠端的數據機
命令模式：使本地端的數據機接收命令並執行

 命令描述 

下面的文字列出了一部分海斯命令集的命令，也叫AT命令，其中“AT”代表“注意(Attention)”。每个命令都以“AT”开头，后面可以附加不定数量的命令。

海斯指令可以被區分為四组：

基本指令集：一個大寫字元跟著一個數值，例如：M1。
延伸指令集：一個"&"以及一個大寫字元跟著一個數值，這是基本指令集的延伸，例如：&M1。要注意的是，M1与&M1是不同的命令。
私有指令集：通常用一個倒斜線（"\"）或一個百分比符號（"%"）；这些命令在不同厂家之间有着很大的差别。
暫存器指令集：Sr＝n，其中 r 代表要修改的暫存器的編號，n代表是要指定給暫存器的數值。一个寄存器代表内存中的一个特定的物理区域。寄存器指令集用于向一个特定的寄存器（即内存中的位置）输入数据。举例来说，S7=60会指示调制解调器执行“将7号寄存器的值设为60”这个操作。寄存器通常可以控制调制解调器的运行细节（如传输强度、调制参数等），并且不同型号之间通常不能通用。

尽管海斯命令集的语法以字母和数字的组合来定义大多数的命令（L0、L1等），但是数字0在命令中不是必须的。举例来说，L0与L是相同的命令。在阅读后续的表格时要记住这一点。

在调制解调器处于数据模式时，使用转义序列可以将调制解调器转为命令模式。普遍来说会使用三个加号（+++）作为转义序列，同时为了将它与数据区分开，在输入它之前与之后必须有一次暂停，并且加号之间不允许有暂停。默认来说，一个暂停就是一秒钟，更短的间隔则代表“没有暂停”。

 語法定義 

<CR> 回车字符，用於當做命令或返回值的結尾，它的值以ASCII格式定义于S3寄存器，預設值為13。
<LF> 换行字符，它的值以ASCII格式定义于寄存器S4，預設值為10。在开启了详细返回模式时（使用了V1选项），换行字符会在回车字符之后输出；如果设定使用数字格式的返回码（使用了V0选项），那么它将不会在返回码中出现。
<...> 用角括号括起来的名称是一个语法元素。它们不会出现在命令行中。
[...] 可选的子参数或可选的AT命令响应会被方括号括起来。

 數據機初始化 

一个字符串可以包含多个海斯命令，以便让调制解调器为拨号或应答做最佳的准备，如AT&F&D2&C1S0=0X4。大多数调制解调器软件都支持由用户提供一个由数个AT命令组成的长字符串，称为初始化字符串，它将在调制解调器开始工作时被发送过去。V.250标准要求所有DCE 都能接收至少40字符的命令体（AT之后的部分）。

一些重要的字元用於數據機初始化：
AT - "Attention"：告知數據機後面跟著是數據機指令，每一行以AT為起始
Z  - 重新設定（reset）數據機回到初始狀態
,（a comma） - 使軟體暫停一秒鐘，若有多個逗點則代表暫停許多秒
^M - 傳送一個結束字元（Carriage Return）給數據機，這是一個控制字元（當傳送此字元其實是傳送一個位元組，內容為ASCII的CR）

 外部連結 
 A list of Hayes AT commands. 
 Extended AT Command Sets 

Category:數據機