at ERS 是基于at命令服务的一种远程服务。
指令的接口全都放在init目录的at_cmd.c中,通过配置atserver_cmd_t at_cmd[]
数组来配置可执行的AT命令。
typedef struct atserver_cmd {
const char *cmd;
cmd_callback cb;
void *priv;
char use_heap;
slist_t next;
} atserver_cmd_t;
AT的所有命令格式都制定在 atserver_cmd_t 这个结构体里。
const atserver_cmd_t at_cmd[] = {
{"AT", at_cmd_at, NULL},
{"AT+HELP", at_cmd_help, NULL},
{"AT+CGMR", at_cmd_cgmr, NULL},
{"AT+FWVER", at_cmd_fwver, NULL},
{"AT+SYSTIME", at_cmd_systime, NULL},
{"AT+SAVE", at_cmd_save, NULL},
{"AT+FACTORY", at_cmd_factory, NULL},
{"AT+REBOOT", at_cmd_reboot, NULL},
{"AT+EVENT", at_cmd_event, NULL},
{"AT+ECHO", at_cmd_echo, NULL},
{NULL, NULL, NULL},
};
其中{"AT", at_cmd_at, NULL}
,"AT"
为指令名称,at_cmd_at
为指令回调函数,priv
参数为NULL
。
AT指令包括四种类型的指令,测试指令,查询指令,设置指令,执行指令。
类型 | 指令格式 | 描述 |
---|---|---|
测试指令 | AT+[x]=? | 该命令用于查询设置指令的参数以及取值范围。 |
查询指令 | AT+[x]? | 该命令用于返回参数的当前值。 |
设置指令 | AT+[x]=[...] | 该命令用于设置用户⾃自定义的参数值。 |
执行指令 | AT+[x] | 该命令用于执⾏行行受模块内部程序控制的变参数不不可变的功能。 |
所有指令以[CR]结尾
格式 | 格式描述 |
---|---|
\r\nOK\r\n | 执行成功 |
\r\n+CMD:[x]\r\nOK\r\n | 执行成功并返回结果 |
\r\n+CMD:-[x]\r\nERROR\r\n | 执行失败并返回错误码 |
所有响应以[CR][LF]结尾
格式 | 格式描述 |
---|---|
+EVENT=NAME,[x] | 返回某项事件,并携带参数 |
所有事件以[CR][LF]结尾
命令字符串:AT
执行指令 | 响应 | 参数说明 |
---|---|---|
AT | \r\nOK | AT |
命令字符串:AT+HELP
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+HELP | \r\nAT+HELP:[command list]\r\nOK\r\n | command list:指令列表 |
命令字符串:AT+CGMR
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+CGMR | \r\nAT+CGMR:[module version]\r\nOK\r\n | module version:AT模块版本 |
命令字符串:AT+SYSTIME
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+SYSTIME | \r\n+SYSTIME:[time]\r\nOK\r\n | time:系统运行时间,s为单位 |
命令字符串:AT+FACTORYR
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+FACTORYR? | \r\n+FACTORYR:[factory info]\r\nOK\r\n | factory info: 出厂信息,包括设备名称和产品密钥 |
命令字符串:AT+FACTORYW
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+FACTORYW=[key],[value] | \r\nOK\r\n | key: 暂时只支持PRODUCTKEY, DEVICENAME, DEVICESECRET 之一 value: key的值 |
命令字符串:AT+REBOOT
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+REBOOT | \r\nOK\r\n |
命令字符串:AT+EVENT
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+EVENT? | \r\n+EVENT:[state]\r\nOK\r\n | OFF:关闭事件通知功能 ON:开启事件通知功能 |
AT+EVENT=[state] | \r\nOK\r\n | OFF:关闭事件通知功能 ON:开启事件通知功能 |
命令字符串:AT+ECHO
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+ECHO? | \r\n+ECHO:[state]\r\nOK\r\n | OFF:关闭回显 ON:开启回显 |
AT+ECHO=[state] | \r\nOK\r\n | OFF:关闭回显 ON:开启回显 |
存储服务AT指令
命令字符串:AT+KVGET
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+KVGET=[key] | \r\n+KVGET:[value]\r\nOK\r\n | key:键 |
命令字符串:AT+KVSET
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+KVSET=[key,value] | \r\nOK\r\n | key:键[长度不超过 32 字节] value:值[长度不超过 32 字节] |
命令字符串:AT+KVDEL
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+KVDEL=[key] | \r\nOK\r\n | key:键[删除 key 对应的键值对] |
命令字符串:AT+KVGETINT
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+KVGETINT=[key] | \r\n+KVGET:[value]\r\nOK\r\n | key:键 value: INT型值 |
命令字符串:AT+KVSETINT
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+KVSETINT=[key,value] | \r\nOK\r\n | key:键[长度不超过 32 字节] value:值范围(-2147483648~2147483647) |
命令字符串:AT+KVDELINT
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+KVDELINT=[key] | \r\nOK\r\n | key:键[删除 key 对应的键值对] |
命令字符串:AT+CIPSTART
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+CIPSTART=[id],[type][,ip][,remote_port][,local_port] | \r\nOK\r\n | [id]:指定连接的 id 号,范围:0 - 2 [type]:连接类型,包括: tcp_server,tcp_client, udp_unicast。分别如下: - 当type为tcp_server时,参数为: id,tcp_server,local_port - 当type为tcp_client时,参数为: id,tcp_client,ip,remote_port[,local_port] - 当type为udp_unicast时,参数为: id,udp_unicast,ip,remote_port,local_port [ip]:目标服务器的 IP。当 type 为 tcp_server 时,不需要该参数。 [remote_port]:远程端口。 [local_port]:本地端口。 |
注意:
命令字符串:AT+CIPSTOP
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+CIPSTOP=[id] | \r\nOK\r\n | [id]:指定连接的 id 号 |
命令字符串:AT+CIPRECVCFG
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+CIPRECVCFG? | \r\n+CIPRECVCFG:[recv mode]\r\n | [recv mode]: 0.表示raw透传模式,表示自动接收 1.表示cmd指令模式,需通过指令 AT+CIPRECV 接收 |
AT+CIPRECVCFG=[recv mode] | \r\nOK\r\n | [recv mode]: 0.表示raw透传模式,表示自动接收 1.表示cmd指令模式,需通过指令 AT+CIPRECV 接收 |
默认是 cmd 指令模式 两种模式相比: 1.透传模式:简单,数据可及时接收 2.指令模式:符合一般编程习惯
命令字符串:AT+CIPID
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+CIPID=? | \r\n+CIPID:0-2\r\nOK\r\n | [id]:指定连接的 id 号,范围:0 - 2 |
AT+CIPID? | \r\n+CIPID:[id]\r\nOK\r\n | [id]:指定连接的 id 号,范围:0 - 2 |
AT+CIPID=[id] | \r\nOK\r\n | [id]:指定连接的 id 号,范围:0 - 2 |
命令字符串:AT+CIPSTATUS
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+CIPSTATUS | \r\n+CIPSTATUS:[type],[status]\r\nOK\r\n | type: - 指定 id 的连接类型,包括: tcp_server,tcp_client,udp_unicast status: - start: 启动连接 - connect: 已连接 |
命令字符串:AT+CIPSEND
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+CIPSEND=[length],[data] | \r\n+CIPSEND:[len]\r\n | Length:发送的数据长度 最大数据长度为128 Data:发送数据 Len:返回当前发送的数据长度 |
命令字符串:AT+CIPRECV
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+CIPRECV | \r\n+CIPRECV:[id],[len],[data]\r\nOK\r\n | Id:当前的socket通道号 Len:接收的数据长度 Data:当前数据域 |
命令字符串:AT+PUB
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+PUB=[length,data] | \r\nOK\r\n | [length]:发布数据的长度 [data]:发布的数据 |
数据发送到云端 数据长度不能超过 128字节
命令字符串:AT+ALIYUNCONN
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+ALIYUNCONN | \r\nOK\r\n | 无 |
AT+ALIYUNCONN? | \r\n+ALIYUNCONN=[sta]\r\n | [sta]: connected = 0 (未连接) connecting = 1 (已连接) |
建立连接
命令字符串:AT+ALIYUNDISCONN
执行指令 | 响应 | 参数说明 |
---|---|---|
AT+ALIYUNDISCONN | \r\nOK\r\n | 无 |
断开连接
命令字符串:+EVENT=RECV
执行指令 | 响应 | 参数说明 |
---|---|---|
+EVENT=RECV,[id],[len],[data]\r\n | [id]:连接的 id 号 [len]:接收的数据长度 [data]:接收的数据 |
工作在透传模式下
命令字符串:+EVENT=CONNECT
执行指令 | 响应 | 参数说明 |
---|---|---|
+EVENT=CONNECT,[id]\r\n | [id]:连接上的 id 号 |
命令字符串:+EVENT=DISCONNECT
执行指令 | 响应 | 参数说明 |
---|---|---|
+EVENT=DISCONNECT,[id]\r\n | [id]:断开连接的 id 号 |
命令字符串:+EVENT=PUB
执行指令 | 响应 | 参数说明 |
---|---|---|
+EVENT=PUB,[res]\r\n | [res]:返回上云推送结果,SUCC-成功 FAILED-失败 |
#define AT_OK 0 /*!< No error */
#define AT_ERR -1 /*!< General fail code */
#define AT_ERR_NO_KEY -2 /*!< Key not set */
#define AT_ERR_INVAL -3 /*!< Invalid argument */
#define AT_ERR_STATUS -4 /*!< Invalid status */
#define AT_ERR_RECV -5 /*!< socket API: Fail to recv data */
#define AT_ERR_SEND -6 /*!< socket API: Fail to send data */
#define AT_ERR_START -7 /*!< socket API: Fail to start */
#define AT_ERR_CHECK -8 /*!< data check error*/
#define AT_ERR_FOTA_NOVER -9 /* !< no version */
#define AT_ERR_FOTA_MDVER -10 /* !< version for module */
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。