AT 功能的实现需要 AT Server 和 AT Client 两个部分共同完成:AT Server 主要用于接收 AT Client 发送的命令请求,判断接收的命令及参数格式,并下发对应的响应数据,或者主动下发URC数据(Unsolicited Result Code,常在AT Server出现比如 WIFI 连接断开、TCP 接收数据等特殊情况时,通知AT Client做出相应的操作);AT Client 主要用于发送命令、等待 AT Server 响应,并对 AT Server响应数据或主动发送的URC数据进行解析处理,获取相关信息。
AT Server 和 AT Client 之间支持多种数据通讯的方式(UART、SPI 等),目前最常用的是串口 UART 通讯方式(包括RS232、RS485等)。随着 AT 命令的逐渐普及,越来越多的嵌入式产品上使用了 AT 命令,AT 命令作为主芯片和通讯模块的协议接口,硬件接口一般为串口,这样主控设备可以通过简单的命令和硬件设计完成多种操作。
1.1 AT组件简介
虽然 AT 命令已经形成了一定的标准化,但是不同的芯片支持的 AT 命令并没有完全统一,这直接提高了用户使用的复杂性。对于 AT 命令的发送和接收以及数据的解析没有统一的处理方式,并且在使用 AT 设备连接网络时,只能通过命令完成简单的设备连接和数据收发功能,很难做到对上层网络应用接口的适配,不利于产品设备的开发。
为了方便用户使用 AT 命令,简单的适配不同的 AT 模块, RT-Thread 提供了 AT 组件用于 AT 设备的连接和数据通讯。AT 组件的实现也包括客户端的和服务器两部分,完成 AT 命令的发送、命令格式及参数判断、命令的响应、响应数据的接收、响应数据的解析、URC 数据处理等整个 AT 命令数据交互流程。
通过 AT 组件,设备可以作为 AT Client 使用串口连接其他设备发送并接收解析数据,可以作为 AT Server 让其他设备甚至电脑端连接完成发送数据的响应,也可以在本地 shell 启动 CLI 模式使设备同时支持 AT Server 和 AT Client 功能,该模式多用于设备开发调试。对于嵌入式设备而言,更多的情况下设备使用AT组件作为客户端连接服务器设备。