简介

AT 命令集是一种应用于 AT 服务器(AT Server)与 AT 客户端(AT Client)间的设备连接与数据通信的方式。 其基本结构如下图所示:

AT 命令框架

基本概念

  • 一般 AT 命令由三个部分组成,分别是:前缀、主体和结束符。其中前缀由字符 AT 构成;主体由命令、参数和可能用到的数据组成;结束符一般为 ("\r\n")。

  • AT 功能的实现需要 AT Server 和 AT Client 两个部分共同完成;

  • AT Server 主要用于接收 AT Client 发送的命令,判断接收的命令及参数格式,并下发对应的响应数据,或者主动下发数据;

  • AT Client 主要用于发送命令、等待 AT Server 响应,并对 AT Server 响应数据或主动发送的数据进行解析处理,获取相关信息。

  • AT Server 和 AT Client 之间支持多种数据通讯的方式(UART、SPI等),目前最常用的是串口 UART 通讯方式。

  • AT Server 向 AT Client 发送的数据分成两种:响应数据和 URC 数据。

    • 响应数据: AT Client 发送命令之后收到的 AT Server 响应状态和信息;
    • URC 数据: AT Server 主动发送给 AT Client 的数据,一般出现在一些特殊的情况,比如 WIFI 连接断开、TCP 接收数据等,这些情况往往需要用户做出相应操作。

      AT 组件介绍

AT 组件是基于 RT-Thread 系统的 AT ServerAT Client 的实现,组件完成 AT 命令的发送、命令格式及参数判断、命令的响应、响应数据的接收、响应数据的解析、URC 数据处理等整个 AT 命令数据交互流程。通过 AT 组件设备可以作为 AT Client 使用串口连接其他设备发送并接收解析数据,可以作为 AT Server 让其他设备甚至电脑端连接完成发送数据的响应,也可以在本地 shell 启动 CLI 模式使设备同时支持 AT Server 和 AT Client 功能,该模式多用于设备开发调试。

AT 组件中 AT Client 功能占用资源体积为 4.6K ROM 和 2.0K RAM;AT Server 功能占用资源体积为 4.0K ROM 和 2.5K RAM;AT CLI 功能占用资源体积为 1.5K ROM 几乎没有使用 RAM。AT 组件总体资源占用极小,因此非常适用应用于资源有限的嵌入式设备中。

AT 组件代码主要位于 rt-thread/components/net/at/ 目录中。主要的功能包括如下,

AT Server 主要功能特点:

  • 基础命令: 实现多种通用基础命令(ATE、ATZ等);
  • 命令兼容: 命令支持忽略大小写,提高命令兼容性;
  • 命令检测: 命令支持自定义参数表达式,并实现对接收的命令参数自检测功能;
  • 命令注册: 提供简单的用户自定义命令添加方式,类似于 finsh/msh 命令添加方式;
  • 调试模式: 提供 AT Server CLI 命令行交互模式,主要用于设备调试。
    AT Client 主要功能:

  • URC 数据处理: 完备的 URC 数据的处理方式;

  • 数据解析: 支持自定义响应数据的解析方式,方便获取响应数据中相关信息;
  • 调试模式: 提供 AT Client CLI 命令行交互模式,主要用于设备调试。
  • AT Socket:作为 AT Client 功能的延伸,使用 AT 命令收发作为基础,实现标准的 BSD Socket API,完成数据的收发功能,使用户通过 AT 命令完成设备连网和数据通讯。
  • 多客户端支持: AT 组件目前支持多客户端同时运行。