FCM242D 和 FGM842D 系列模块的 AT 命令手册
介绍
本文档概述了 Quectel FCM242D 和 FGM842D 系列模块支持的 Wi-Fi、BLE、TCP/UDP、SSL、MQTT、HTTP(S) 和其他功能的 AT 命令。
定义
回车字符。 换行字符。 - <...> 参数名称。尖括号不出现在命令行中。
- [...] 可选参数或命令的可选部分。方括号不出现在命令行中。当命令中未给出可选参数时,新值等于其以前的值或默认设置,除非另有指定。
- 下划线 参数的默认设置。
AT 命令语法
所有命令行必须以 AT 或 at 开头,并以
模块实现的 AT 命令在语法上分为两个类别:"Basic" 和 "Extended",如下所列:
Basic Command
这些 AT 命令的格式为 AT
,或 AT& ,其中是命令, 是/是该命令的参数。例如,ATE 告诉 DCE(数据电路终端设备)根据 的值是否将接收到的字符回显到 DTE(数据终端设备)。 是可选的,如果省略,则使用默认值。 Extended Command
扩展命令可以在几种模式下执行,如下表所示。
AT 命令类型:
| 命令类型 | 语法 | 描述 |
|---|---|---|
| Test Command | AT+<cmd>=? |
测试命令是否存在并返回其类型、值或范围的信息。 |
| Read Command | AT+<cmd>? |
读取命令的当前参数值。 |
| Write Command | AT+<cmd>=<p1>[,<p2>[,<p3>]] |
设置用户可定义的参数值。 |
| Execution | AT+<cmd> |
返回特定信息或执行操作。 |
AT 命令输入和响应
输入 AT 命令时,应忽略空格,除非在以下情况下:
- 在带引号的字符串中,空格被保留;
- 在未带引号的字符串或数字参数中;
- 在 IP 地址中;
- 在 AT 命令名称中直到 =、? 或 =?。
在输入时,至少需要一个回车。换行字符被忽略,因此在输入中使用回车/换行对是允许的。
如果命令后没有输入命令,则返回 OK。如果输入了无效命令,则返回 ERROR。
可选参数,除非明确说明,否则需要从最后一个输入的参数开始提供。
AT 命令响应
AT 命令处理器完成处理一行后,将输出 OK、ERROR 或 +CME ERROR:
响应将采用以下格式:
或
AT 命令示例声明
本文档中提供的 AT 命令示例旨在帮助您学习本文档中介绍的 AT 命令的使用。这些示例不应被视为 Quectel 的建议或建议关于如何设计程序流程或将模块设置为什么状态。有时为一个 AT 命令提供多个示例。但是,这并不意味着它们之间有相关性,或应按给定顺序执行。本文档中 AT 命令示例中的 URL、域名、IP 地址、用户名/账户和密码(如果有)仅用于说明和解释目的,应根据您的实际使用和具体需求进行修改。
AT 命令描述
Wi-Fi 相关 AT 命令描述
AT+QRST
描述: 重启模块。
命令格式:
AT+QRST
响应:
- OK(成功)
- ERROR(失败)
最大响应时间: 300 ms
特性: 无
AT+QVERSION
描述: 获取模块的固件版本。
命令格式:
AT+QVERSION
响应:
- +QVERSION:
\nOK(成功) - ERROR(失败)
参数:
<version>:字符串类型,没有双引号。固件版本号。
最大响应时间: 300 ms
特性: 无
AT+QECHO
描述: 启用或禁用回显功能。
命令格式:
AT+QECHO=<enable>
响应:
- OK(成功)
- ERROR(失败)
参数:
<enable>:整数类型。启用/禁用回显功能。1 = 禁用,2 = 启用。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
AT+QGETIP
描述: 获取模块 IP 信息。
命令格式:
AT+QGETIP=<mode>
响应:
- +QGETIP:
, , , \nOK(成功) - ERROR(失败)
参数:
<mode>:字符串类型。Wi-Fi 工作模式。"station" 为 STA 模式,"ap" 为 AP 模式。<IP>:字符串类型。模块 IP 地址。<gate>:字符串类型。模块网关。AP 模式下未设置静态 IP 时默认为 "0.0.0.0"。<mask>:字符串类型。模块子网掩码。<DNS>:字符串类型。模块 DNS 地址。
最大响应时间: 300 ms
特性: 无
AT+QSETBAND
描述: 设置串口波特率。
命令格式:
AT+QSETBAND=<baud_rate>,<save>
或
AT+QSETBAND?
响应:
- OK(成功)
- ERROR(失败)
- +QSETBAND: <baud_rate>\nOK(查询)
参数:
<baud_rate>:整数类型。串口波特率。范围:1200--2000000(bps)。<save>:整数类型。是否保存波特率。1 = 不保存,2 = 保存。
最大响应时间: 300 ms
特性: 立即生效。
AT+QWLANOTA
描述: 启动固件 OTA 升级。
命令格式:
AT+QWLANOTA=<URL>
响应:
- OK(成功)
- ERROR(失败)
参数:
<URL>:字符串类型。服务器上固件包存储的地址。
最大响应时间: 300 ms
特性: 无
AT+QWLMAC
描述: 获取模块 MAC 地址。
命令格式:
AT+QWLMAC
响应:
- +QWLMAC:
\nOK(成功) - ERROR(失败)
参数:
<MAC>:字符串类型。模块的 MAC 地址。十六进制数字以冒号分隔。默认值:"8800337769cc"。
最大响应时间: 300 ms
特性: 无
AT+QSTAST
描述: 查询 STA 模式状态。
命令格式:
AT+QSTAST
响应:
- +QSTAST:
\nOK(成功) - ERROR(失败)
参数:
<state>:字符串类型。STA 模式状态。"STATION_DOWN" = 已禁用,"STATION_UP" = 已启用。
最大响应时间: 300 ms
特性: 无
AT+QSTADHCP
描述: 在 STA 模式下启用或禁用 DHCP 服务。
命令格式:
AT+QSTADHCP? (read)
AT+QSTADHCP=<enable> (write)
响应:
- +QSTADHCP:
\nOK(读取) - OK(写入成功)
- ERROR(失败)
参数:
<enable>:整数类型。1 = 禁用,2 = 启用。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
AT+QSTASTATIC
描述: 配置 STA 模式的静态 IP。
命令格式:
AT+QSTASTATIC=<IP>,<mask>,<gate>,<DNS>
响应:
- OK(成功)
- ERROR(失败)
参数:
<IP>:字符串类型。STA 模式的静态 IP 地址。<mask>:字符串类型。模块子网掩码。<gate>:字符串类型。模块网关。<DNS>:字符串类型。模块 DNS 地址。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
AT+QSTASTOP
描述: 禁用 STA 模式。
命令格式:
AT+QSTASTOP
响应:
- OK(成功)
- ERROR(失败)
最大响应时间: 300 ms
特性: 无
AT+QSOFTAP
描述: 启用 AP 模式。
命令格式:
AT+QSOFTAP=<SSID>[,<key>]
响应:
- OK(成功)
- ERROR(失败)
参数:
<SSID>:字符串类型。AP 名称。范围:1--32 字节。<key>:字符串类型。AP 安全密钥。范围:8--63 字节。如果省略,则启用无密码热点。
最大响应时间: 3300 ms(启用加密热点)/ 300 ms(启用无密码热点)
特性: 立即生效。配置不保存。
AT+QAPSTATE
描述: 查询 AP 模式状态。
命令格式:
AT+QAPSTATE
响应:
- +QAPSTATE:
\nOK(成功) - ERROR(失败)
参数:
<state>:字符串类型。AP 模式状态。"SOFTAP_DOWN" = 已禁用,"SOFTAP_UP" = 已启用。
最大响应时间: 300 ms
特性: 无
AT+QAPSTATIC
描述: 配置 AP 模式的静态 IP。
命令格式:
AT+QAPSTATIC=<IP>,<mask>,<gate>,<DNS>
响应:
- OK(成功)
- ERROR(失败)
参数:
<IP>:字符串类型。AP 模式的静态 IP 地址。<mask>:字符串类型。模块子网掩码。<gate>:字符串类型。模块网关。<DNS>:字符串类型。模块 DNS 地址。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
AT+QSOFTAPSTOP
描述: 禁用 AP 模式。
命令格式:
AT+QSOFTAPSTOP
响应:
- OK(成功)
- ERROR(失败)
最大响应时间: 300 ms
特性: 无
AT+QSTAAPINFO
描述: 连接 AP 热点以启用 STA 模式。
命令格式:
AT+QSTAAPINFO=<SSID>[,<pwd>]
响应:
- OK(成功)
- ERROR(失败)
参数:
<SSID>:字符串类型。要连接的 AP 热点的名称。范围:1--32 字节。<pwd>:字符串类型。要连接的 AP 热点的安全密钥。范围:8--63 字节。如果省略,则连接无密码热点。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
AT+QSTAAPINFODEF
描述: 连接热点以启用 STA 模式并保存连接的热点信息。
命令格式:
AT+QSTAAPINFODEF=<SSID>[,<pwd>]
响应:
- OK(成功)
- ERROR(失败)
参数:
<SSID>:字符串类型。要连接的 AP 热点的名称。范围:1--32 字节。<pwd>:字符串类型。要连接的 AP 热点的安全密钥。范围:8--63 字节。如果省略,则连接无密码热点。
最大响应时间: 300 ms
特性: 立即生效。配置自动保存。
AT+QGETWIFISTATE
描述: 查询模块在 STA 模式下连接的热点。
命令格式:
AT+QGETWIFISTATE
响应:
- +QGETWIFISTATE: ssid=
,bssid= ,rssi= ,psk_type=<PSK_type>\nOK(成功) - ERROR(失败)
参数:
<SSID>:字符串类型。Wi-Fi 热点的名称。<BSSID>:字符串类型。Wi-Fi 热点的 BSSID。<RSSI>:整数类型。Wi-Fi 信号强度。<PSK_type>:字符串类型。Wi-Fi 热点加密类型。
最大响应时间: 300 ms
特性: 无
AT+QWSCAN
描述: 查询扫描的热点信息。
命令格式:
AT+QWSCAN
响应:
- +QWSCAN:
,<PSK_type>, , , \nOK(成功) - ERROR(失败)
参数:
<SSID>:字符串类型。Wi-Fi 热点的名称。<PSK_type>:字符串类型。加密类型。<RSSI>:整数类型。Wi-Fi 信号强度。<BSSID>:字符串类型。Wi-Fi 热点的 BSSID。<channel>:整数类型。模块用于连接和与 Wi-Fi 热点通信的通道。
最大响应时间: 300 ms
特性: 无
AT+QIDNSCFG
描述: 配置 DNS 服务器地址。
命令格式:
AT+QIDNSCFG=? (test)
AT+QIDNSCFG? (read)
AT+QIDNSCFG=<pridnsaddr>[,<secdnsaddr>] (write)
响应:
- +QIDNSCFG:
, \nOK(测试/读取) - OK(写入成功)
- ERROR(失败)
参数:
<pridnsaddr>:字符串类型。主要 DNS 服务器地址。<secdnsaddr>:字符串类型。次要 DNS 服务器地址。
最大响应时间: 300 ms
特性: 无
AT+QWEBCFG
描述: 启用或禁用通过网页配置 Wi-Fi。
命令格式:
AT+QWEBCFG=<enable>
响应:
- OK(成功)
- ERROR(失败)
参数:
<enable>:整数类型。1 = 禁用,2 = 启用。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
AT+QSTAAPINFORMV
描述: 清除保存的热点信息。
命令格式:
AT+QSTAAPINFORMV
响应:
- OK(成功)
- ERROR(失败)
最大响应时间: 300 ms
特性: 无
AT+QSCLK
描述: 启用模块进入低功耗模式。
命令格式:
AT+QSCLK? (read)
AT+QSCLK=<mode>[,<dtim>] (write)
响应:
- +QSCLK:
[, ]\nOK(读取) - OK(写入成功)
- ERROR(失败)
参数:
<mode>:整数类型。- 1:禁用低功耗模式
- 2:Wi-Fi 保持活动模式
- 3:低功耗睡眠模式。拉高 GPIO24 以唤醒模块,然后模块继续执行进程。
- 4:深度睡眠模式。拉高 GPIO24 以唤醒模块,然后模块重启。
<dtim>:整数类型。Wi-Fi 保持活动模式下的 DTIM 值。范围:1--30。
最大响应时间: 300 ms
特性: 无
AT+QAIRKISS
描述: 启用或禁用通过 AIRKISS 配置 Wi-Fi。
命令格式:
AT+QAIRKISS=<enable>
响应:
- OK(成功)
- ERROR(失败)
参数:
<enable>:整数类型。1 = 禁用,2 = 启用。
最大响应时间: 300 ms
特性: 无
AT+QCFG
描述: 配置 URC 输出的延迟。
命令格式:
AT+QCFG=? (test)
AT+QCFG="urc/pin"[,<enable>[,<pulse>]] (write)
响应:
- +QCFG: "urc/pin",
[, ]\nOK(测试/查询) - OK(写入成功)
- ERROR(失败)
参数:
<enable>:整数类型。1 = 已禁用,2 = 已启用。<pulse>:整数类型。配置 URC 输出的延迟。单位:ms。范围:60--300。默认值:120。
最大响应时间: 300 ms
特性: 无
BLE 相关 AT 命令描述
AT+QBLEINIT
描述: 初始化 BLE 功能。模块启动后只需执行一次。
命令格式:
AT+QBLEINIT? (read)
AT+QBLEINIT=<role>[,<auto_adv>] (write)
响应:
- +QBLEINIT:
<role>\nOK (read) - OK (write success)
- ERROR (failure)
参数:
<role>: 整数类型。设置模块角色以初始化 BLE 功能。- 1: BLE 功能未初始化
- 2: 将模块设置为中央设备
- 3: 将模块设置为外围设备(BLE 断开连接后广告自动开启,除非
AT+QBLEINIT=2,0) - 4: 将模块设置为外围设备,用于 Wi-Fi via BLE
<auto_adv>: 整数类型。当外围设备时,BLE 断开连接后广告是否自动启动。1 = 不开启广告,2 = 开启广告。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
AT+QBLEADDR
描述: 查询 BLE 设备地址。
命令格式:
AT+QBLEADDR?
响应:
- +QBLEADDR:
<BLE_addr>\nOK (success) - ERROR (failure)
参数:
<BLE_addr>: 字符串类型。BLE 设备地址。48 位地址为十六进制字符串,例如 "90395E8A70D1"。
最大响应时间: 300 ms
特性: 无
AT+QBLENAME
描述: 设置 BLE 设备名称。
命令格式:
AT+QBLENAME? (read)
AT+QBLENAME=<BLE_name> (write)
响应:
- +QBLENAME:
<BLE_name>\nOK (read) - OK (write success)
- ERROR (failure)
参数:
<BLE_name>: 字符串类型。BLE 设备名称。最大长度:25 字节。默认:"FCM242D" 用于 FCM242D 模块,"FGM842D" 用于 FGM842D 系列。
最大响应时间: 300 ms
特性: 无
AT+QBLEADVPARAM
描述: 配置外围设备操作时的 BLE 广告参数。
命令格式:
AT+QBLEADVPARAM? (read)
AT+QBLEADVPARAM=<adv_int_min>,<adv_int_max> (write)
响应:
- +QBLEADVPARAM:
<adv_int_min>,<adv_int_max>\nOK (read) - OK (write success)
- ERROR (failure)
参数:
<adv_int_min>: 整数类型。非定向和低占空比定向广告的最小广告间隔。范围:32--16384(时间范围:20 ms--10.24 s)。默认值:160(100 ms)。单位:时隙(1 时隙 = 0.625 ms)。<adv_int_max>: 整数类型。非定向广告和低占空比定向广告的最大广告间隔。范围:32--16384(时间范围:20 ms--10.24 s)。默认值:160(100 ms)。单位:时隙(1 时隙 = 0.625 ms)。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
注意: 要配置广告参数,AT+QBLEADVPARAM 应在通过 AT+QBLEADVSTART 启动广告之前执行。
AT+QBLEADVPARAM 应在通过 AT+QBLEADVSTART 启动广告之前执行。
AT+QBLEADVDATA
此命令设置外围设备操作时的 BLE 广告数据。

| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLEADVDATA=<adv_data> |
OKOr ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<adv_data> 无双引号的字符串类型。广告数据 (AD)。它由三个字段组成(即多个 AD 结构)。组成符合上述显示的消息格式,内容必须是十六进制字符串。
- Length: AD 结构的长度。长度包括 AD 类型和 AD 数据,但不包括字段的长度(1 字节长)。最大长度为 0x1e,即数据字段的最大长度为 30 字节。
- AD Type: 广告数据类型,例如 TX Power Level (0x0A)、Local Name (0x09)、Le Role (0x1C) 和 Service UUIDs (0x16)。对等设备扫描广告后,可以从 AD Type 确定广告数据的含义。
- AD Data: 大端字节顺序的广告数据。
注意:
有关 AD 类型的详细信息,请参见 Core Specification 5.2 (https://www.bluetooth.com/specifications/specs/core-specification/)%E3%80%82
AT+QBLEGATTSSRV
描述: 在外围设备操作时建立 BLE 服务。
命令格式:
AT+QBLEGATTSSRV=<srv_UUID>
响应:
- OK (success)
- ERROR (failure)
参数:
<srv_UUID>: 字符串类型。BLE 服务 UUID。长度:4 字节或 32 字节。
最大响应时间: 300 ms
特性: 立即生效。配置不保存。
注意:
- 通过命令最多只能建立三个 BLE 服务。
- 您必须先使用
AT+QBLEINIT初始化 BLE 功能,然后使用AT+QBLEGATTSSRV建立 BLE 服务。否则,蓝牙广告、扫描和连接功能无法正常使用。- 您必须先创建 BLE 服务,然后设置 BLE 特征 UUID。
AT+QBLEGATTSCHAR
此命令设置外围设备操作时的 BLE 特征 UUID。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLEGATTSCHAR=<char_UUID>[,<att_cfg>] |
OKOr ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<char_UUID> 字符串类型。特征 UUID。长度:4 字节或 32 字节。
<att_cfg> 整数类型。特征 UUID 的属性配置。范围:0--FF。bit7--bit0 表示不同属性,如下所示。您可以配置相应的位,0 表示属性被禁用,1 表示属性被启用。例如,FF 表示 bit7--bit0 对应的属性被启用。
bit7--bit3 保留
| Bit | Property |
|---|---|
| bit2 | Notify |
| bit1 | Write no response |
| bit0 | Write |
注意
通过命令最多只能设置三个 BLE 特征 UUID。当 <att_cfg> 被省略时,每个特征 UUID 的属性默认为 Notify 和 Write no response。
当模块作为外围设备操作时,您必须通过 AT+QBLEGATTSSRV 建立 BLE 服务,然后通过 AT+QBLEGATTSCHAR 设置 BLE 特征 UUID。否则,蓝牙广告、扫描和连接功能无法正常使用。
您必须先创建 BLE 服务,然后设置 BLE 特征 UUID。
AT+QBLEGATTSSRVDONE
此命令完成外围设备操作时的 BLE 服务添加。
| Command Type | Syntax | Response |
|---|---|---|
| Execute Command | AT+QBLEGATTSSRVDONE |
OKOr ERROR |
最大响应时间: 300 ms
特性: -
注意
当模块作为外围设备操作时,您必须通过
AT+QBLEGATTSCHAR设置 BLE 特征 UUID,然后通过AT+QBLEGATTSSRVDONE完成 BLE 服务添加。否则,蓝牙广告、扫描和连接功能无法正常使用。
AT+QBLEADVSTART
此命令启动外围设备操作时的 BLE 广告。
| Command Type | Syntax | Response |
|---|---|---|
| Read Command | AT+QBLEADVSTART? |
+QBLEADVSTART: <adv_state>OKIf there is any error: ERROR |
| Execution Command | AT+QBLEADVSTART |
OKOr ERROR |
最大响应时间: 1000 ms
特性: -
参数:
<adv_state> 整数类型。广告状态。
- 广告已停止
- 广告已启动
AT+QBLEADVSTOP
此命令停止外围设备操作时的 BLE 广告。
| Command Type | Syntax | Response |
|---|---|---|
| Execution Command | AT+QBLEADVSTOP |
OKOr ERROR |
最大响应时间: 300 ms
特性: -
AT+QBLEGATTSNTFY
此命令发送外围设备操作时的 GATT 数据。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLEGATTSNTFY=<conn_idx>,<UUID>[,<hex_length>],<data> |
OKOr ERROR |
最大响应时间: 300 ms
特性: -
参数:
| Parameter | Description |
|---|---|
| <conn_idx> | 整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。 |
| 字符串类型。特征 UUID。长度:4 字节或 32 字节。 | |
| <hex_length> | 整数类型。十六进制数据的长度。当指定此可选参数时,模块将在发送数据前将 转换为十六进制格式。例如,如果 是 123456,模块将转换为 0x123456 并发送。 |
| 字符串类型。要发送的 GATT 数据。GATT 数据的最大长度不能超过 <MTU_value>-3,您可以通过 URC +QBLEMTU 获取 <MTU_value> 的长度。 |
AT+QBLESCAN
此命令启动或停止中央设备操作时的 BLE 扫描。
| Command Type | Syntax | Response |
|---|---|---|
| Read Command | AT+QBLESCAN? |
+QBLESCAN: <scan_state>OKIf there is any error: ERROR |
| Write Command | AT+QBLESCAN=<scan>[,<timeout>] |
If OKOr ERRORIf OK+QBLESCAN: <name>,<address_type>,<BLE_addr>Or ERRORIf OK+QBLESCAN: <name>,<address_type>,<BLE_addr>,<RSSI>,<adv_data>If there is any error: ERROR |
最大响应时间: 1000 ms
特性: -
参数:
<scan_state> 整数类型。当前扫描状态。
0 扫描已停止。
| Parameter | Description |
|---|---|
| 整数类型。启动或停止 BLE 扫描。 1. 停止 2. 启动 BLE 扫描但不输出广告数据或扫描响应数据。2 启动 BLE 扫描并输出广告数据和扫描响应数据。需要为此模式指定 3 启动 BLE 扫描并输出广告数据和扫描响应数据。仅扫描可连接广告。 |
|
| 整数类型。扫描持续时间。范围:100--10000。单位:ms。当 |
|
| 字符串类型。BLE 设备名称。 | |
| <address_type> | 整数类型。BLE 设备地址类型。 1. 公共地址 2. 随机地址 |
| <BLE_addr> | 字符串类型。BLE 设备地址。48 位地址以十六进制数字字符串表示,例如 "58D391010203"。 |
| 整数类型。接收信号强度指示器。 | |
| <adv_data> | 字符串类型。扫描的 BLE 数据和扫描响应数据。 |
AT+QBLESCANPARAM
此命令设置中央设备操作时的 BLE 扫描参数。
| Command Type | Syntax | Response |
|---|---|---|
| Read Command | AT+QBLESCANPARAM? |
+QBLESCANPARAM: <scan_interval>,<scan_window>OKIf there is any error: ERROR |
| Write Command | AT+QBLESCANPARAM=<scan_interval>,<scan_window> |
OKOr ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
| Parameter | Description |
|---|---|
| <scan_interval> | 整数类型。BLE 扫描间隔。范围:18--4096(时间范围:11.25 ms 到 2.56 s)。默认值:0x0064。单位:时隙(1 时隙 = 0.625 ms)。默认值:100。 |
| <scan_window> | 整数类型。BLE 扫描持续时间。<scan_window> 应小于或等于 <scan_interval>。范围:17--4096(时间范围:10.625 ms--2.56 s)。单位:时隙(1 时隙 = 0.625 ms)。默认值:30。 |
AT+QBLECONN
此命令连接中央设备操作时的外围设备。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLECONN=<addr_type>,<peer_addr>[,<timeout>] |
OKOr ERROR |
最大响应时间: 3000 ms
特性: 命令立即生效。配置不保存。连接超时为 18 秒。
参数:
| Parameter | Description |
|---|---|
| <addr_type> | 整数类型。外围设备地址类型。 1. 公共地址 2. 随机地址 |
| <peer_addr> | 字符串类型。外围设备地址。 |
| 整数类型。从连接启动到连接完成的超时。范围:1000--60000。单位:ms。默认值:15000。 |
AT+QBLECONNPARAM
此命令配置中央设备操作时的连接参数。
| Command Type | Syntax | Response |
|---|---|---|
| Read Command | AT+QBLECONNPARAM? |
+QBLECONNPARAM: <conn_idx>,<con_interval>,<timeout>,<latency>OKIf there is any error: ERROR |
| Write Command | AT+QBLECONNPARAM=<conn_idx>,<con_interval>,<timeout>,<latency> |
OKOr ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
| Parameter | Description |
|---|---|
| <conn_idx> | 整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。 |
| <con_interval> | 整数类型。连接间隔。范围:6--3200(时间范围:7.5 ms 到 4 s)。单位:1.25 ms。默认值:20。 |
| 整数类型。BLE 链路监督超时。范围:10--3200(时间范围:100 ms 到 32 s)。单位:10 ms。默认值:500。 | |
| 整数类型。连接中特定数量连接事件的从属延迟。范围:0--499(0x0000 到 0x01F3)。默认值:0。 |
注意:
<con_interval>、
AT+QBLECFGMTU
此命令配置中央设备操作时的 BLE MTU。
BLE 的最大传输单元只能在单次 BLE 连接后设置一次。
| Command Type | Syntax | Response |
|---|---|---|
| Read Command | AT+QBLECFGMTU? |
+QBLECFGMTU: <MTU_value>OKIf there is any error: ERROR |
| Write Command | AT+QBLECFGMTU=<MTU_value> |
OKOr ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<MTU_value> 整数类型。最大传输单元值。单位:字节。范围:64--512。默认值:64。
AT+QBLEGATTCNTFCFG
此命令启用或禁用中央设备操作时的通知。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLEGATTCNTFCFG=<conn_idx>,<UUID>,<enable> |
OKOr ERROR |
最大响应时间: 300 ms
特性: -
参数:
| Parameter | Description |
|---|---|
| <conn_idx> | 整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。 |
| 字符串类型。特征 UUID。长度:4 字节或 32 字节。 | |
| 整数类型。启用/禁用通知。 1. 禁用 2. 启用 |
AT+QBLEGATTCRD
此命令读取中央设备操作时的 GATT 数据。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLEGATTCRD=<conn_idx>,<UUID> |
OK<data>If there is any error: ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<conn_idx> 整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。
无双引号的字符串类型。要读取的 GATT 数据。
AT+QBLEGATTCWRCMD
此命令通过写入命令发送中央设备操作时的 GATT 数据。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLEGATTCWRCMD=<conn_idx>,<UUID>[,<hex_length>],<data> |
OKOr ERROR |
最大响应时间: 300 ms
特性: -
参数:
| Parameter | Description |
|---|---|
| <conn_idx> | 整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。 |
| 字符串类型。特征 UUID。长度:4 字节或 32 字节。 | |
| <hex_length> | 整数类型。十六进制数据的长度。当使用此可选参数时,模块将在发送数据前将 转换为十六进制格式。例如,如果 是 123456,模块将转换为 0x123456 并发送。 |
| 字符串类型。要发送的 GATT 数据。 |
AT+QBLEGATTCWRREQ
此命令通过写入请求发送中央设备操作时的 GATT 数据。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLEGATTCWRREQ=<conn_idx>,<UUID>[,<hex_length>],<data> |
OKOr ERROR |
最大响应时间: 300 ms
特性: -
参数:
| Parameter | Description |
|---|---|
| <conn_idx> | 整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。 |
| 字符串类型。特征 UUID。长度:4 字节或 32 字节。 | |
| <hex_length> | 整数类型。十六进制数据的长度。当使用此可选参数时,模块将在发送数据前将 转换为十六进制格式。例如,如果 是 123456,模块将转换为 0x123456 并发送。 |
| 字符串类型。要发送的 GATT 数据。 |
AT+QBLEDISCONN
此命令断开中央设备或外围设备操作时的 BLE 连接。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLEDISCONN[=<conn_idx>] |
OKOr ERROR |
最大响应时间: 300 ms
特性: -
参数:
<conn_idx> 整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。
AT+QBLESTAT
此命令查询中央设备或外围设备操作时的 BLE 设备状态。
| Command Type | Syntax | Response |
|---|---|---|
| Execution Command | AT+QBLESTAT |
+QBLESTAT: <BLE_state>OKIf there is any error: ERROR |
最大响应时间: 300 ms
特性: -
参数:
<BLE_state> 字符串类型。BLE 设备的当前状态。
- "NOINIT" 未初始化
- "INIT" 已初始化
- "ADVERTISING" 广告中
- "CONNECTED" 已连接
- "DISCONNECTED" 已断开连接
AT+QBLETRANMODE
此命令指定特征 UUID 并启用模块进入外围设备或中央设备操作时的透明传输模式。
| Command Type | Syntax | Response |
|---|---|---|
| Write Command | AT+QBLETRANMODE=<UUID>[,<state>] |
CONNECTOr ERROR |
最大响应时间: 500 ms
特性: -
参数:
| Parameter | Description |
|---|---|
| 字符串类型。特征 UUID。长度:4 字节或 32 字节。 | |
| 整数类型。此参数仅在模块作为外围设备操作时生效。 1. 如果模块先进入透明传输模式,然后在 BLE 断开连接后退出透明传输模式,则在成功 BLE 连接后模块不会进入透明传输模式。 2. 如果模块先进入透明传输模式,然后在 BLE 断开连接后退出透明传输模式,则在成功 BLE 连接后模块会自动进入透明传输模式。 |
注意
当模块作为中央设备操作时,建立 BLE 连接并完成对等设备服务发现后,执行
AT+QBLETRANMODE以启用模块进入透明传输模式。断开 BLE 连接后,模块自动退出透明传输模式。您只能在透明传输模式下通过写入命令发送数据。当模块作为外围设备操作时,启用广告或建立 BLE 连接后,执行命令以启用模块进入透明传输模式。您只能在透明传输模式下通过 Notify 发送数据。
如果您输入
+++以启用模块退出透明传输模式,则在成功 BLE 连接后模块不会进入透明传输模式。模块进入透明传输模式后,每个数据包的长度不能超过 <MTU_value>-3。否则,数据包可能会丢失。您可以通过 URC
+QBLEMTU获取 <MTU_value> 的长度。
+++
此命令启用模块退出透明传输模式。
| Command Type | Syntax | Response |
|---|---|---|
| Execution Command | +++ |
OKOr ERROR |
最大响应时间: 300 ms
特性: -
TCP/UDP 相关 AT 命令描述
AT+QICFG
描述: 配置 TCP/UDP 套接字服务的可选参数。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QICFG=? |
+QICFG: "transpktsize",(list of supported <transpktsize>s)+QICFG: "transwaittm",(list of supported <transwaittm>s)+QICFG: "tcp/accept",(list of supported <state>s)+QICFG: "qisend/timeout",(list of supported <timeout>s)+QICFG: "passiveclosed",(list of supported <closed>s)+QICFG: "dataformat",(list of supported <send_data_format>s),(list of supported <recv_data_format>s)+QICFG: "close/mode",(list of supported <close_mode>s)+QICFG: "tcp/kalive",(list of supported <kalive_onoff>s),(list of supported <kalive_idle>s),(list of supported <kalive_interval>s),(list of supported <kalive_cnt>s)+QICFG: "tcp/tw_cycle",(list of supported <tw_enable>s)+QICFG: "udp/broadcast",(list of supported <udp/broadcast>s)OK |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
| Parameter | Description |
|---|---|
<transpktsize> |
整数类型。透明传输模式下要发送的数据包长度。范围:1--1460。默认值:1024。单位:字节。 |
<transwaittm> |
整数类型。透明传输模式下,如果要发送的数据小于 <transpktsize>,自动发送数据的等待时间。范围:0--20。默认值:2。单位:100 ms。 |
<send_data_format> |
整数类型。要发送的数据格式。当模式设置为十六进制模式时,不需要后缀 "0×",因为模块会自动将两个字节形成一个 ASCII 码。 1. 文本模式 2. 十六进制模式 |
<recv_data_format> |
整数类型。要接收的数据格式。当模式设置为十六进制模式时,不需要后缀 "0×",因为模块会自动将两个字节形成一个 ASCII 码。 0 文本模式 1 十六进制模式 |
<closed> |
整数类型。当服务器关闭时,启用或禁用 TCP 连接的被动关闭。 0 禁用 1 启用 |
<state> |
整数类型。启用或禁用从客户端自动接收 TCP 连接。 1. 禁用 2. 启用 |
<timeout> |
整数类型。发送数据的超时。范围:0--120。单位:s。 |
<close_mode> |
整数类型。启用或禁用异步断开 TCP 连接。 1. 禁用 2. 启用 |
<kalive_onoff> |
整数类型。启用或禁用 TCP 保持连接。 1. 禁用 2. 启用 |
<kalive_idle> |
整数类型。触发保持连接的空闲周期。单位:s。范围:60--7200。 |
<kalive_interval> |
整数类型。保持连接间隔。单位:s。范围:10--20。 |
<kalive_cnt> |
整数类型。保持连接探测次数。范围:1--8。 |
<tw_enable> |
整数类型。启用或禁用 TCP 连接的快速释放。 1. 启用 2. 禁用 |
<udp/broadcast> |
整数类型。开启/关闭 UDP 广播。 1. 关闭 2. 开启 |
AT+QIOPEN
描述: 打开套接字服务。可以通过 <service_type> 指定服务类型。可以通过 <access_mode> 指定数据访问模式(缓冲访问模式、直接推送模式和透明传输模式)。响应 +QIOPEN: <connectID>,<err> 表示套接字服务是否已成功打开。
如果
<service_type>是 "TCP LISTENER",模块作为 TCP 服务器工作。接受新 TCP 连接后,模块自动指定<connectID>并报告 URC+QIURC: "incoming",<connectID>,<serverID>,<remoteIP>,<remote_port>。<connectID>的范围是 0--11。此新传入连接的类型是 "TCP INCOMING","TCP INCOMING" 的<access_mode>与 "TCP LISTENER" 相同。如果
<service_type>是 "UDP SERVICE",可以通过<local_port>向远程 IP 发送或接收 UDP 数据。发送数据:执行
AT+QISEND=<connectID>,<send_length>,<remoteIP>,<remote_port>。在直接推送模式下接收数据:模块报告 URC
+QIURC: "recv",<connectID>,<currentrecvlength>,<remoteIP>,<remote_port><CR><LF><data>。在缓冲访问模式下接收数据:模块报告 URC
+QIURC: "recv",<connectID>,然后可以通过AT+QIRD=<connectID>检索接收的数据。
建议在执行写命令后等待 150 s 以输出
+QIOPEN: <connectID>,<err>。如果在 150 s 内无法接收响应,请使用AT+QICLOSE关闭套接字。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QIOPEN=? |
+QIOPEN: (list of supported <connectID>s),(list of supported <service_type>s),<IP_address>/<domain_name>,(list of supported <remote_port>s),(list of supported <local_port>s),(list of supported <access_mode>s),(list of supported <ap_priority>s)OK |
| Write Command | AT+QIOPEN=<connectID>,<service_type>,<IP_address>/<domain_name>,<remote_port>[,<local_port>[,<access_mode>][,<ap_priority>]] |
如果服务处于透明传输模式(<access_mode>=2)且成功打开:CONNECT如果有任何错误: ERROR错误描述可以通过 AT+QIGETERROR 检索。如果服务处于缓冲访问模式( <access_mode>=0)或直接推送模式(<access_mode>=1):OK+QIOPEN: <connectID>,<err><err> 为 0 时服务成功打开。在其他情况下,<err> 不为 0。 |
最大响应时间: 150 s,由网络决定。
特性: -
参数:
| Parameter | Description |
|---|---|
<connectID> |
整数类型。套接字 ID。范围:0--11。 |
<service_type> |
字符串类型。套接字服务类型。 "TCP" 作为客户端启动 TCP 连接 "UDP" 作为客户端启动 UDP 连接 "TCP LISTENER" 启动 TCP 服务器以监听传入 TCP 连接 "UDP SERVICE" 启动 UDP 服务 |
<IP_address> |
字符串类型。 如果 <service_type> 是 "TCP" 或 "UDP",此参数表示远程服务器的 IP 地址,例如 220.180.239.212。 |
<domain_name> |
字符串类型。远程服务器的域名地址。 |
<remote_port> |
整数类型。远程服务器的端口号。范围:0-65535。此参数仅在 <service_type> 为 "TCP" 或 "UDP" 时有效。 |
<local_port> |
整数类型。本地端口。范围:1--65535。 如果 <service_type> 是 "TCP LISTENER" 或 "UDP SERVICE",必须指定此参数。如果 <service_type> 是 "TCP" 或 "UDP" 且未指定 <local_port>,本地端口将自动分配。否则,本地端口将被指定。 |
<access_mode> |
整数类型。套接字服务的数据访问模式。 0 缓冲访问模式。套接字使用 AT 命令发送和接收数据。1 直接推送模式。套接字使用 AT 命令发送数据,使用 URC 格式接收数据。 2 透明传输模式。串口专门用于直接向/从互联网发送/接收数据。 |
<ap_priority> |
整数类型。优先使用 STA 或 AP的 IP 地址作为本地 IP。 1. 使用 STA 的 IP 地址 2. 使用 AP 的 IP 地址 |
<err> |
结果代码。详情请参见 *第 5 章*。 |
注意
命令中的
<IP_address>/<domain_name>表示可以配置<IP_address>或<domain_name>,但不能同时指定。当
<service_type>为 "TCP LISTENER"/"UDP SERVICE" 时,<access_mode>不能设置为 2。要在透明传输模式下传输数据,必须使用客户端连接的<connectID>。
AT+QICLOSE
描述: 关闭指定的套接字服务。根据网络,执行 AT+QICLOSE 后最多需要 10 s(默认值,可通过 <timeout> 修改)返回 OK 或 ERROR。只有在响应返回后才能执行其他 AT 命令。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QICLOSE=? |
+QICLOSE: (list of supported <connectID>s),(list of supported <timeout>s)OK |
| Write Command | AT+QICLOSE=<connectID>[,<timeout>] |
如果套接字服务关闭成功:OK如果命令未能关闭套接字服务: ERROR |
最大响应时间: 由 <timeout> 决定。
特性: -
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<timeout> 整数类型。响应输出的超时值。如果在 <timeout> 内未收到对等方的 FIN ACK,模块将强制关闭套接字。范围:1--120。默认值:10。单位:s。
AT+QISTATE
描述: 查询套接字服务状态。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QISTATE=? |
OK |
| Read/Execution Command | AT+QISTATE?Or AT+QISTATE |
返回所有现有连接的状态:+QISTATE: <connectID>,<service_type>,<IP_address>,<remote_port>,<local_port>,<socket_state>,<serverID>,<access_mode>,<AT_port>[...]OK |
| Write Command | AT+QISTATE=<connectID> |
+QISTATE: <connectID>,<service_type>,<IP_address>,<remote_port>,<local_port>,<socket_state>,<serverID>,<access_mode>,<AT_port>OK |
最大响应时间: 300 ms
特性: -
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<service_type> 字符串类型。套接字服务类型。
- "TCP" 作为客户端启动 TCP 连接
- "UDP" 作为客户端启动 UDP 连接
- "TCP LISTENER" 启动 TCP 服务器以监听 TCP 传入连接
- "TCP INCOMING" 启动 TCP 服务器接受的 TCP 连接 "UDP SERVICE" 启动 UDP 服务
<IP_address> 字符串类型。IP 地址。
- 如果
<service_type>是 "TCP" 或 "UDP",此参数表示远程服务器的 IP 地址。 - 如果
<service_type>是 "TCP LISTENER" 或 "UDP SERVICE",此参数表示本地 IP 地址。 - 如果
<service_type>是 "TCP INCOMING",此参数表示远程客户端的 IP 地址。
<remote_port> 整数类型。远程端口号。
- 如果
<service_type>="TCP" 或 "UDP",此参数表示远程服务器的端口。 - 如果
<service_type>="TCP LISTENER" 或 "UDP SERVICE",此参数无效。 - 如果
<service_type>="TCP INCOMING",此参数是远程客户端的端口。
<local_port> 整数类型。本地端口号。
如果未指定此参数,本地端口自动分配。
<socket_state> 整数类型。套接字服务状态。
- "Initial": 连接尚未建立
- "Opening": 客户端正在连接或服务器正在尝试监听
- "Connected": 客户端/传入连接已建立
- "Listening": 服务器正在监听
- "Closing": 连接正在关闭
<serverID> 整数类型。此参数仅在 <service_type> 为 "TCP INCOMING" 时有效。<serverID> 表示接受此 TCP 传入连接的服务器,其值与 <service_type> 为 "TCP LISTENER" 时的 <connectID> 相同。
<access_mode> 整数类型。套接字服务的数据访问模式。
0 缓冲访问模式。套接字使用 AT 命令发送和接收数据。1 直接推送模式。套接字使用 AT 命令发送数据,使用 URC 格式接收数据。
2 透明传输模式。串口专门用于直接向/从互联网发送/接收数据。
<AT_port> 字符串类型。套接字服务的 COM 端口。
- "uart1" UART 端口 1
- "uart2" UART 端口 2
AT+QISEND
描述: 在缓冲访问模式(<access_mode>=0)或直接推送模式(<access_mode>=1)下,可以通过 AT+QISEND 发送数据。如果数据成功发送到模块,返回 SEND OK。否则,返回 SEND FAIL 或 ERROR。
SEND FAIL表示发送缓冲区已满。在这种情况下,可以重新发送数据。ERROR表示数据发送过程中出错。在这种情况下,等待一段时间后再重新发送数据。最大数据长度:1460 字节。SEND OK表示数据已发送到对等方,但不意味着它们已成功到达对等方。您可以通过AT+QISEND=<connectID>,0查询数据是否已到达对等方。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QISEND=? |
+QISEND: (list of supported <connectID>s),(list of supported <send_length>s),<remoteIP>,(list of supported <remote_port>s)OK |
| Write Command | AT+QISEND=<connectID>(when <service_type> is "TCP", "UDP" or "TCP INCOMING") |
>响应 > 后,输入要发送的数据。点击 Ctrl+Z 发送数据,点击 Esc 取消发送操作。如果连接已建立且数据发送成功: SEND OK如果连接已建立但发送缓冲区已满: SEND FAIL如果有任何错误: ERROR |
| Write Command | AT+QISEND=<connectID>,<send_length>(when <service_type> is "TCP", "UDP" or "TCP INCOMING") |
>响应 > 后,输入数据直到数据长度等于 <send_length>。如果连接已建立且数据发送成功: SEND OK如果连接已建立但发送缓冲区已满: SEND FAIL如果有任何错误: ERROR |
| Write Command | AT+QISEND=<connectID>,<send_length>,<remoteIP>,<remote_port>(when <service_type> is "UDP SERVICE") |
>响应 > 后,输入数据直到数据长度等于 <send_length>如果连接已建立且数据发送成功: SEND OK如果连接已建立但发送缓冲区已满: SEND FAIL如果有任何错误: ERROR |
| Write Command | AT+QISEND=<connectID>,0 |
如果指定的连接存在:+QISEND: <total_send_length>,<ackedbytes>,<unackedbytes>OK如果有任何错误: ERROR |
最大响应时间: 300 ms
特性: -
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<send_length> 整数类型。要发送的数据长度。范围:0--1460。单位:字节。
<remoteIP> 字符串类型。远程 IP 地址(必须为点格式)。仅在 <service_type> 为 "UDP SERVICE" 时有效。
<remote_port> 整数类型。远程端口号。范围:1--65535。仅在 <service_type> 为 "UDP SERVICE" 时有效。
<total_send_length> 整数类型。已发送数据的总长度。单位:字节。
<ackedbytes> 整数类型。已确认数据的总长度。单位:字节。
<unackedbytes> 整数类型。未确认数据的总长度。单位:字节。
AT+QIRD
描述: 在缓冲访问模式下,接收数据后,模块将其缓冲并报告 URC +QIURC: "recv",<connectID>,然后可以使用 AT+QIRD 检索数据。
请注意,如果缓冲区不为空,且模块再次接收数据,它不会报告新的 URC,直到通过 AT+QIRD 从缓冲区检索所有接收的数据。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QIRD=? |
+QIRD: (list of supported <connectID>s),(list supported <read_length>s)OK |
| Write Command | AT+QIRD=<connectID>[,<read_length>](when <service_type> is "TCP"/"UDP"/"TCP INCOMING") |
如果指定的连接已接收数据:+QIRD: <read_actual_length><CR><LF><data>OK如果没有数据: +QIRD: 0OK如果有任何错误: ERROR |
| Write Command | AT+QIRD=<connectID>(when <service_type> is "UDP SERVICE") |
如果数据存在:+QIRD: <read_actual_length>,<remoteIP>,<remote_port>,<CR><LF><data>OK如果没有数据: +QIRD: 0OK如果有任何错误: ERROR |
| Write Command | AT+QIRD=<connectID>,0 |
+QIRD: <total_receive_length>,<have_read_length>,<unread_length>OK如果有任何错误: ERROR |
最大响应时间: -
特性: -
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<read_length> 整数类型。要读取的数据长度。范围:0--1500。单位:字节。
<read_actual_length> 整数类型。实际读取的数据长度。单位:字节。
<remoteIP> 字符串类型。远程 IP 地址。仅在 <service_type> 为 "UDP SERVICE" 时有效。
<remote_port> 整数类型。远程端口号。仅在 <service_type> 为 "UDP SERVICE" 时有效。
<data> 整数类型。检索的数据。
<total_receive_length> 整数类型。接收数据的总长度。单位:字节。
<have_read_length> 整数类型。已检索的数据长度。单位:字节。
<unread_length> 整数类型。未检索的数据长度。单位:字节。
AT+QIACCEPT
描述: 接受或拒绝来自 TCP/UDP 套接字服务的远程传入连接请求。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QIACCEPT=? |
+QIACCEPT: (list of supported <listener_socketID>s),(list of supported <accept>s),(list of supported <incoming_socketID>s)OK |
| Write Command | AT+QIACCEPT=<listener_socketID>,<accept>[,<incoming_socketID>] |
[+QIACCEPT: <incoming_socketID>,<remote_addr>,<remote_port>]OK如果有任何错误: ERROR |
最大响应时间: 300 ms
特性: -
参数:
| Parameter | Description |
|---|---|
<listener_socketID> |
整数类型。TCP 服务器的套接字 ID。范围:0--11。 |
<accept> |
整数类型。接受或拒绝 TCP/UDP 套接字服务的远程传入连接请求。 1. 拒绝 2. 接受 |
<incoming_socketID> |
整数类型。传入连接的套接字 ID。仅在 <accept> 为 1 时有效。范围:0--11。 |
<remote_addr> |
字符串类型。传入连接的源地址。 |
<remote_port> |
整数类型。传入连接的源端口。 |
AT+QISWTMD
描述: 切换数据访问模式。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QISWTMD=? |
+QISWTMD: (list of supported <connectID>s),(list of supported <access_mode>s)OK |
| Write Command | AT+QISWTMD=<connectID>,<access_mode> |
如果数据访问模式切换成功且 <access_mode> 为 0 或 1:OK如果数据访问模式切换成功且 <access_mode> 为 2,模块将进入预期的数据模式:CONNECT如果有任何错误: ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<access_mode> 整数类型。连接的数据访问模式。
0 缓冲访问模式。套接字使用 AT 命令发送和接收数据。
1 直接推送模式。套接字使用 AT 命令发送数据,使用 URC 格式接收数据。
2 透明传输模式。串口专门用于直接向/从互联网发送/接收数据。
如果 <connectID> 的 <service_type> 是 "TCP LISTENER" 或 "UDP SERVICE",无法通过此命令切换数据访问模式。
注意
AT+QIGETERROR
描述: 如果执行 TCP/IP 命令后返回 ERROR,可以通过 AT+QIGETERROR 查询错误代码的详细信息。请注意,AT+QIGETERROR 仅返回最后一个 TCP/IP AT 命令的错误代码。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QIGETERROR=? |
OK |
| Execution Command | AT+QIGETERROR |
+QIGETERROR: <err>,<errcode_description>OK |
最大响应时间: 300 ms
特性: -
参数:
<err> 结果代码。详情请参见 *第 5 章*。
<errcode_description> 字符串类型。结果代码描述。详情请参见 *第 5 章*。
ATO
描述: 进入透明传输模式。
| Command Type | Syntax | Response |
|---|---|---|
| Execution Command | ATO |
CONNECTOr NO CARRIER |
最大响应时间: 300 ms
特性: -
注意:
如果套接字连接在之前未建立,ATO 返回 NO CARRIER。
+++
描述: 退出透明传输模式。
| Command Type | Syntax | Response |
|---|---|---|
| Execution Command | +++ |
OK |
最大响应时间: 300 ms
特性: -
注意:
使用 +++ 退出透明传输模式后,如果套接字连接处于活动状态,使用 ATO 再次进入透明传输模式。
SSL 相关 AT 命令描述
AT+QSSLCFG
描述: 配置 SSL 上下文参数。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QSSLCFG=? |
+QSSLCFG: "sslversion",(list of supported <SSL_ctxID>s),(list of supported <SSL_version>s)+QSSLCFG: "seclevel",(list of supported <SSL_ctxID>s),(list of supported <seclevel>s)+QSSLCFG: "ciphersuite",(list of supported <SSL_ctxID>s),(list of supported <cipher_suites>s)+QSSLCFG: "negotiatetime",(list of supported <SSL_ctxID>s),(list of supported <negotiate_time>s)+QSSLCFG: "sni",(list of supported <SSL_ctxID>s),(list of supported <SNI>s)+QSSLCFG: "cacert",(list of supported <SSL_ctxID>s),<cacertpath>+QSSLCFG: "clientcert",(list of supported <SSL_ctxID>s),<client_cert_path>+QSSLCFG: "clientkey",(list of supported <SSL_ctxID>s),<client_key_path>,<key_pwd>+QSSLCFG: "ignorelocaltime",(list of supported <SSL_ctxID>s),(list of supported <ignore_ltime>s)+QSSLCFG: "session_cache",(list of supported <SSL_ctxID>s),(list of supported <session_cache_enable>s)OK |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
| Parameter | Description |
|---|---|
<SSL_ctxID> |
整数类型。SSL 上下文 ID。范围:0--5。 |
<SSL_version> |
整数类型。SSL 版本。 0 SSL3.0 1 TLS1.0 2 TLS1.1 3 TLS1.2 4 全部 |
<seclevel> |
整数类型。认证模式。 0 无认证 1 执行服务器认证 2 执行服务器和客户端认证(如果远程服务器请求) |
<cipher_suites> |
十六进制整数类型。SSL 密码套件。 0×0035 TLS_RSA_WITH_AES_256_CBC_SHA 0×002F TLS_RSA_WITH_AES_128_CBC_SHA 0×0005 TLS_RSA_WITH_RC4_128_SHA 0×000A TLS_RSA_WITH_3DES_EDE_CBC_SHA 0×003D TLS_RSA_WITH_AES_256_CBC_SHA256 0×C003 TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA 0×C004 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA 0×C005 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA 0×C008 TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA 0×C009 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA 0×C00A TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA 0×C011 TLS_ECDHE_RSA_WITH_RC4_128_SHA 0×C012 TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA 0×C013 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA 0×C014 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 0×C00D TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA 0×C00E TLS_ECDH_RSA_WITH_AES_128_CBC_SHA 0×C00F TLS_ECDH_RSA_WITH_AES_256_CBC_SHA 0×C023 TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 0×C024 TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 0×C025 TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 0×C026 TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 0×C027 TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 0×C028 TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 0×C029 TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 0×C02A TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 0×C02F TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 0×C030 TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 0×FFFF 全部 |
<negotiate_time> |
整数类型。SSL 协商阶段使用的最大超时。范围:10--300。默认值:300。单位:秒。 |
<SNI> |
整数类型。禁用/启用服务器名称指示功能。 0 禁用 1 启用 |
<cacertpath> |
字符串类型。可信 CA 证书的路径。 |
<client_cert_path> |
字符串类型。客户端证书的路径。 |
<client_key_path> |
字符串类型。客户端私钥的路径。 |
<key_pwd> |
字符串类型。客户端私钥。长度:0--255 字节。 |
<ignore_ltime> |
整数类型。是否忽略证书有效期检查。 0 不忽略 1 忽略 |
<session_cache_enable> |
整数类型。启用或禁用 SSL 上下文会话缓存功能。 0 禁用 1 启用 |
AT+QSSLOPEN
描述: 设置 SSL 连接。
在执行 AT+QSSLOPEN 之前,执行 AT+QSTAAPINFO 将模块连接到 Wi-Fi 网络。建议等待特定时间(参考下面的最大响应时间)以输出 +QSSLOPEN: <connectID>,<err> URC。如果在此时间内无法接收 URC 响应,请使用 AT+QSSLCLOSE 关闭 SSL 连接。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QSSLOPEN=? |
+QSSLOPEN: (list of supported <SSL_ctxID>s),(list of supported <connectID>s),<server_address>,<server_port>,(list of supported <access_mode>s)OK |
| Write Command | AT+QSSLOPEN=<SSL_ctxID>,<connectID>,<server_address>,<server_port>[,<access_mode>] |
如果 <access_mode>=2 且 SSL 连接成功设置:CONNECT如果有任何错误: ERROR如果 <access_mode>=0/1:OK+QSSLOPEN: <connectID>,<err>如果有任何错误: ERROR |
最大响应时间: 最大网络响应时间 150 s,加上配置的 <negotiate_time> 时间。
特性: 命令立即生效。配置不保存。
参数:
<SSL_ctxID> 整数类型。SSL 上下文 ID。范围:0--5。
<connectID> 整数类型。套接字 ID。范围:0--11。
<server_address> 字符串类型。远程服务器的地址。
<server_port> 整数类型。远程服务器的监听端口。
<access_mode> 整数类型。SSL 连接的数据访问模式。
| Value | Description |
|---|---|
| 0 | 缓冲访问模式。套接字使用 AT 命令发送和接收数据。 |
| 1 | 直接推送模式。套接字使用 AT 命令发送数据,使用 URC 格式接收数据。 |
| 2 | 透明传输模式。串口专门用于直接向/从互联网发送/接收数据。 |
<err> 结果代码。详情请参见 *第 5 章*。
<negotiate_time> 整数类型。SSL 协商阶段的最大超时。范围:10--300。默认:300。单位:秒。
AT+QSSLSEND
描述: 通过 SSL 连接发送数据。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QSSLSEND=? |
+QSSLSEND: (list of supported <connectID>s),(list of supported <send_length>s)OK |
| Write Command | AT+QSSLSEND=<connectID> |
>响应 > 后,输入要发送的数据。点击 CTRL+Z 发送,点击 ESC 取消操作。如果连接已建立且数据发送成功: SEND OK如果连接已建立但缓冲区已满: SEND FAIL如果有任何错误: ERROR |
| Write Command | AT+QSSLSEND=<connectID>,<send_length> |
>响应 > 后,输入数据直到数据长度等于 <send_length>。如果连接已建立且数据发送成功: SEND OK如果连接已建立但缓冲区已满: SEND FAIL如果有任何错误: ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<send_length> 整数类型。要发送的数据长度。范围:1--1460。单位:字节。
要发送的数据包括固定长度数据和可变长度数据,其最大长度为 1460 字节。
注意
AT+QSSLRECV
描述: 通过 SSL 连接接收数据。
当 SSL 连接的数据访问模式为缓冲访问模式时,模块在从互联网接收数据时会报告 URC +QSSLURC: "recv",<connectID>。您可以使用 AT+QSSLRECV 从缓冲区读取数据。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QSSLRECV=? |
+QSSLRECV: (list of supported <connectID>s),(list of supported <read_length>s)OK |
| Write Command | AT+QSSLRECV=<connectID>,<read_length> |
如果指定的连接已接收数据:+QSSLRECV: <have_readlen><CR><LF><data>OK如果有任何错误: ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<read_length> 整数类型。要读取的数据长度。范围:1--1500。单位:字节。
<have_readlen> 整数类型。AT+QSSLRECV 读取的数据长度。单位:字节。
<data> 字符串类型。实际读取的数据。单位:字节。
AT+QSSLCLOSE
描述: 关闭 SSL 连接。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QSSLCLOSE=? |
+QSSLCLOSE: (list of supported <connectID>s),(list of supported <close_timeout>s)OK |
| Write Command | AT+QSSLCLOSE=<connectID>[,<close_timeout>] |
OKOr ERROR |
最大响应时间: 由 <close_timeout> 决定。
特性: 命令立即生效。配置不保存。
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<close_timeout> 整数类型。执行 AT+QSSLCLOSE 的超时。范围:0--65535。默认:10。单位:秒。
AT+QSSLSTATE
描述: 查询 SSL 连接的状态。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QSSLSTATE=? |
OK |
| Read Command | AT+QSSLSTATE? |
返回所有连接的状态:[+QSSLSTATE: <connectID>,"SSLClient",<IP_address>,<remote_port>,<local_port>,<socket_state>,<serverID>,<access_mode>,<devname>,<SSL_ctxID>][...]OK |
| Write Command | AT+QSSLSTATE=<query_type>,<connectID> |
如果 <query_type> 为 0,查询指定上下文的连接状态:[+QSSLSTATE: <connectID>,"SSLClient",<IP_address>,<remote_port>,<local_port>,<socket_state>,<serverID>,<access_mode>,<devname>,<SSL_ctxID>][...]OK如果 <query_type> 为 1,查询指定 SSL 连接的状态:+QSSLSTATE: <connectID>,"SSLClient",<IP_address>,<remote_port>,<local_port>,<socket_state>,<serverID>,<access_mode>,<devname>,<SSL_ctxID>OK如果有任何错误: ERROR |
| Execution Command | AT+QSSLSTATE |
返回所有连接的状态:[+QSSLSTATE: <connectID>,"SSLClient",<IP_address>,<remote_port>,<local_port>,<socket_state>,<serverID>,<access_mode>,<devname>,<SSL_ctxID>][...]OK |
最大响应时间: 300 ms
特性: -
参数:
| Parameter | Description |
|---|---|
<connectID> |
整数类型。套接字 ID。范围:0--11。 |
<IP_address> |
字符串类型。远程服务器地址。 |
<remote_port> |
整数类型。远程服务器端口。范围:0--65535。 |
<local_port> |
整数类型。本地端口号。范围:0--65535。 |
<socket_state> |
整数类型。SSL 连接状态。 0 "Initial" 连接尚未建立 1 "Opening" 客户端正在连接 2 "Connected" 客户端连接已建立 4 "Closing" 连接正在关闭 |
<serverID> |
保留参数。 |
<access_mode> |
整数类型。套接字服务的数据访问模式。 0 缓冲访问模式。套接字使用 AT 命令发送和接收数据。 1 直接推送模式。套接字使用 AT 命令发送数据,使用 URC 格式接收数据。 2 透明传输模式。串口专门用于直接向/从互联网发送/接收数据。 |
<devname> |
字符串类型。套接字服务的 COM 端口。 "uart1" UART 端口 1 "uart2" UART 端口 2 |
<SSL_ctxID> |
整数类型。SSL 上下文 ID。范围:0--5。 |
<query_type> |
整数类型。查询类型。 0 查询指定上下文的连接状态 1 查询指定 SSL 连接的状态 |
MQTT 相关 AT 命令描述
AT+QMTCFG
描述: 配置 MQTT 的可选参数。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTCFG=? |
+QMTCFG: "version",(list of supported <client_idx>s),(list of supported <vsn>s)+QMTCFG: "ssl",(list of supported <client_idx>s),(list of supported <SSL_enable>s),(list of supported <SSL_ctxID>s)+QMTCFG: "keepalive",(list of supported <client_idx>s),(list of supported <keep_alive_time>s)+QMTCFG: "session",(list of supported <client_idx>s),(list of supported <clean_session>s)+QMTCFG: "will",(list of supported <client_idx>s),(list of supported <will_flag>s),(list of supported <will_qos>s),(list of supported <will_retain>s),<will_topic>,<will_message>+QMTCFG: "recv/mode",(list of supported <client_idx>s),(list of supported <msg_recv_mode>s)+QMTCFG: "dataformat",(list of supported <client_idx>s),(list of supported <send_mode>s),(list of supported <recv_mode>s)+QMTCFG: "timeout",(list of supported <client_idx>s),(list of supported <pkt_timeout>s),(list of supported <retry_times>s),(list of supported <timeout_notice>s)+QMTCFG: "aliauth",(list of supported <client_idx>s),"product key","device name","device secret"+QMTCFG: "onenet",(list of supported <client_idx>s),"product id","access key"OK |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
| Parameter | Description |
|---|---|
<client_idx> |
整数类型。MQTT 客户端 ID。范围:0--5。 |
<vsn> |
整数类型。MQTT 协议版本。 3. MQTT 协议 V3.1 4. MQTT 协议 V3.1.1 |
<SSL_enable> |
整数类型。MQTT SSL 模式。 1. 使用普通 TCP 连接 2. 使用 SSL TCP 安全连接 |
<SSL_ctxID> |
整数类型。SSL 上下文 ID。范围:0--5。 |
<keep_alive_time> |
整数类型。保持连接间隔。范围:0--3600。默认值:120。单位:秒。它定义了从客户端接收到两条消息之间的最大时间间隔。如果它不为零,且服务器在此 <keep_alive_time> 期间的 1.5 倍内未从客户端接收到消息(交互数据或保持连接包),服务器将断开与客户端的连接,就像客户端发送了 DISCONNECT 消息一样。否则,服务器不会断开与客户端的连接。 |
<clean_session> |
整数类型。会话类型。 0. 服务器必须在连接关闭后存储客户端的订阅。 1. 服务器必须丢弃任何以前维护的关于客户端的信息,并将连接视为 "clean"。 |
<will_flag> |
整数类型。是否设置 Will 标志。 0. 忽略 Will 标志配置 1. 设置 Will 标志 |
<will_qos> |
整数类型。消息传递的 QoS 级别。 0. 最多一次 1. 至少一次 2. 完全一次 |
<will_retain> |
整数类型。Will Retain 标志,仅用于 PUBLISH 消息。0 当客户端向服务器发送 PUBLISH 消息时,服务器在将其传递给当前订阅者后不会保留消息 1 当客户端向服务器发送 PUBLISH 消息时,服务器在将其传递给当前订阅者后应该保留消息 |
<will_topic> |
字符串类型。Will 主题名称。长度:1--256 字节。 |
<will_message> |
字符串类型。Will 主题内容。长度:0--256 字节。 |
<will_length> |
整数类型。Will 消息长度。范围:0--256。单位:字节。 |
<msg_recv_mode> |
整数类型。MQTT 消息接收模式。 0. 从服务器接收的 MQTT 消息在 URC 中报告。 1. 从服务器接收的 MQTT 消息不在 URC 中报告。 |
<send_mode> |
整数类型。MQTT 消息发送格式。 0. 字符串 1. 十六进制 |
<recvmode> |
整数类型。MQTT 消息接收格式。 0. 字符串 1. 十六进制 |
<pkt_timeout> |
整数类型。数据包传递的超时。范围:1--1200。默认值:5。单位:秒。 |
<retry_times> |
整数类型。数据包传递超时时的重试次数。范围:0--10。默认值:3。 |
<timeout_notice> |
整数类型。传输数据包时是否报告超时消息。 0. 不报告 1. 报告 |
<product_key> |
字符串类型。AliCloud 颁发的产品密钥。 |
<device_name> |
字符串类型。AliCloud 颁发的设备名称。 |
<device_secret> |
字符串类型。AliCloud 颁发的设备验证证书。 |
<productID> |
字符串类型。中国移动 OneNET IoT 平台的 Product ID。 |
<access_key> |
字符串类型。中国移动 OneNET IoT 平台的 Product Key。 |
注意
如果
<will_fg>=1,则必须指定<will_qos>、<will_retain>、<willtopic>和<willmessage>。否则,它们被省略。<clean_session>=0 仅在服务器支持存储会话信息操作时有效。如果 MQTT 连接通过 SSL 协议建立,则必须指定
<SSL_ctxID>,并且必须使用AT+QSSLCFG配置 SSL 上下文参数。
AT+QMTOPEN
描述: 为 MQTT 客户端打开网络连接。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTOPEN=? |
+QMTOPEN: (list of supported <client_idx>s),<host_name>,(list of supported <port>s)OK |
| Read Command | AT+QMTOPEN? |
[+QMTOPEN: <client_idx>,<host_name>,<port>][...]OKIf there is any error: ERROR |
| Write Command | AT+QMTOPEN=<client_idx>,<host_name>,<port> |
OK+QMTOPEN: <client_idx>,<result>If there is any error: ERROR |
最大响应时间: 120 s,由网络决定。
特性: -
参数:
| Parameter | Description |
|---|---|
<client_idx> |
整数类型。MQTT 客户端 ID。范围:0--5。 |
<host_name> |
字符串类型。服务器地址。它可以是 IP 地址或域名。服务器地址长度的范围:0--100。单位:字节。 |
<port> |
整数类型。服务器端口号。范围:1--65535。 |
<result> |
整数类型。命令执行结果。 -1 执行失败 0 成功执行 1 参数错误 2 MQTT ID 被占用 3 网络错误 4 解析域名失败 5 由于网络断开导致的错误 6 内存不足 7 由于网络断开导致的错误 |
AT+QMTCLOSE
描述: 关闭 MQTT 客户端的网络连接。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTCLOSE=? |
+QMTCLOSE: (list of supported <client_idx>s)OK |
| Write Command | AT+QMTCLOSE=<client_idx> |
OK+QMTCLOSE: <client_idx>,<result>If there is any error: ERROR |
最大响应时间: 30 s
特性: -
参数:
<client_idx> 整数类型。MQTT 客户端 ID。范围:0--5。
<result> 整数类型。命令执行结果。
- -1 执行失败
- 0 成功执行
AT+QMTCONN
描述: 将客户端连接到 MQTT 服务器。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTCONN=? |
+QMTCONN: (list of supported <client_idx>s),<clientID>,<username>,<password>OK |
| Read Command | AT+QMTCONN? |
[+QMTCONN: <client_idx>,<state>][...]OKIf there is any error: ERROR |
| Write Command | AT+QMTCONN=<client_idx>,<clientID>[,<username>,<password>] |
OK+QMTCONN: <client_idx>,<result>[,<retcode>]If there is any error: ERROR |
最大响应时间: <pkt_timeout>,由网络决定
特性: -
参数:
| Parameter | Description |
|---|---|
<client_idx> |
整数类型。MQTT 客户端 ID。范围:0--5。 |
<state> |
整数类型。MQTT 连接状态。 1. MQTT 正在初始化 2. MQTT 正在连接 3. MQTT 已连接 4. MQTT 正在断开连接 |
<clientID> |
字符串类型。客户端 ID。长度:0--127 字节。单位:字节。 |
<username> |
字符串类型。客户端用户名,可用于认证。长度范围:0--127。单位:字节。 |
<password> |
字符串类型。客户端密码,可用于认证。长度范围:0--512。单位:字节。 |
<result> |
整数类型。命令执行结果。 0. 数据包发送成功并从服务器接收到 ACK 1. 数据包重发 2. 发送数据包失败 |
<retcode> |
整数类型。连接状态返回代码。 0. 连接接受 1. 连接拒绝:不可接受的协议版本 2. 连接拒绝:标识符拒绝 3. 连接拒绝:服务器不可用 4. 连接拒绝:错误的用户名或密码 5. 连接拒绝:未经授权 |
<pkt_timeout> |
整数类型。数据包传递超时。范围:1--60。默认值:5。单位:s。可以通过 AT+QMTCFG="timeout",<client_idx>[,<pkt_timeout>,<retry_times>,<timeout_notice>] 配置值。 |
如果具有相同客户端 ID 的客户端已连接到服务器,服务器必须在为新客户端建立 MQTT 连接之前断开与 "older" 客户端的连接。
注意
AT+QMTDISC
描述: 断开客户端与 MQTT 服务器的连接。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTDISC=? |
+QMTDISC: (list of supported <client_idx>s)OK |
| Write Command | AT+QMTDISC=<client_idx> |
OK+QMTDISC: <client_idx>,<result>If there is any error: ERROR |
最大响应时间: 30 s
特性: -
参数:
<client_idx> 整数类型。MQTT 客户端 ID。范围:0--5。
<result> 整数类型。命令执行结果。
- -1 执行失败
- 0 成功执行
AT+QMTSUB
描述: 订阅一个或多个主题。客户端向服务器发送 SUBSCRIBE 消息以订阅一个或多个主题,服务器将发布到这些主题的消息作为 PUBLISH 消息传递给客户端。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTSUB=? |
+QMTSUB: (list of supported <client_idx>s),(list of supported <msgID>s),<topic>,(list of supported <qos>s)OK |
| Write Command | AT+QMTSUB=<client_idx>,<msgID>,<topic1>,<qos1>[,<topic2>,<qos2>[,..]] |
OK+QMTSUB: <client_idx>,<msgID>,<result>[,<value>]If there is any error: ERROR |
最大响应时间: <pkt_timeout> × <retry_times>(默认 15 s),由网络决定
特性: -
参数:
| Parameter | Description |
|---|---|
<client_idx> |
整数类型。MQTT 客户端 ID。范围:0--5。 |
<msgID> |
整数类型。SUBSCRIBE 消息 ID。范围:0--65535。 |
<topic> |
字符串类型。客户端想要订阅的主题。 |
<qos> |
整数类型。客户端想要发布消息的 QoS 级别。 0. 最多一次 1. 至少一次 2. 完全一次 |
<result> |
整数类型。命令执行结果。 0. SUBSCRIBE 消息发送成功并接收到 SUBACK 消息。 1. SUBSCRIBE 消息发送成功但在指定响应时间内未接收到 SUBACK 消消息。执行了重传。 2. 发送 SUBSCRIBE 消息失败。 |
<value> |
整数类型。 当 <result> 为 0 时,它是 SUBACK 消息的授予 QoS 级别向量。当 <result> 为 1 时,它表示 SUBSCRIBE 消息重传次数。当 <result> 为 2 时,它不呈现。 |
<pkt_timeout> |
整数类型。数据包传递超时。范围:1--60。默认值:5。单位:s。可以通过 AT+QMTCFG="timeout",<client_idx>[,<pkt_timeout>,<retry_times>,<timeout_notice>] 配置值。 |
<retry_times> |
整数类型。数据包传递超时时的重试次数。范围:0--10。默认值:3。 |
注意
<msgID> 仅在固定头中的 QoS 位指示 QoS 级别为 1 或 2 的消息中存在。<msgID> 在特定通信方向的一组消息中必须是唯一的。它通常从一个消息到下一个消息增加 1,但这在实践中不是必需的。
AT+QMTUNS
描述: 取消订阅一个或多个主题。客户端向服务器发送 UNSUBSCRIBE 消息以取消订阅命名主题。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTUNS=? |
+QMTUNS: (list of supported <client_idx>s),(list of supported <msgID>s),<topic>OK |
| Write Command | AT+QMTUNS=<client_idx>,<msgID>,<topic1>[,<topic2>[,..]] |
OK+QMTUNS: <client_idx>,<msgID>,<result>[,<value>]If there is any error: ERROR |
最大响应时间: <pkt_timeout> × <retry_times>(默认 15 s),由网络决定
特性: -
参数:
| Parameter | Description |
|---|---|
<client_idx> |
整数类型。MQTT 客户端 ID。范围:0--5。 |
<msgID> |
整数类型。UNSUBSCRIBE 消息 ID。范围:0--65535。 |
<topic> |
字符串类型。客户端想要取消订阅的主题。 |
<result> |
整数类型。命令执行结果。 0. UNSUBSCRIBE 消息发送成功并接收到 UNSUBACK 消息。 1. UNSUBSCRIBE 消息发送成功但在指定响应时间内未接收到 UNSUBACK 消息。执行了重传。 2. 发送 UNSUBSCRIBE 消息失败。 |
<value> |
整数类型。 当 <result> 为 0 时,它是 SUBACK 消息的授予 QoS 级别向量。当 <result> 为 1 时,它表示 SUBSCRIBE 消息重传次数。当 <result> 为 2 时,它不呈现。 |
<pkt_timeout> |
整数类型。数据包传递超时。范围:1--60。默认值:5。单位:s。可以通过 AT+QMTCFG="timeout",<client_idx>[,<pkt_timeout>,<retry_times>,<timeout_notice>] 配置值。 |
<retry_times> |
整数类型。数据包传递超时时的重试次数。范围:0--10。默认值:3。 |
AT+QMTPUB
描述: 客户端将固定长度消息发布到服务器以分发给感兴趣的订阅者。每个 PUBLISH 消息与主题名称相关联。如果客户端订阅了一个或多个主题,服务器发布的任何消息都作为 PUBLISH 消息发送给客户端。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTPUB=? |
+QMTPUB: (list of supported <client_idx>s),(list of supported <msgID>s),(list of supported <qos>s),(list of supported <retain>s),<topic>,(list of supported <length>s)OK |
| Write Command | AT+QMTPUB=<client_idx>,<msgID>,<qos>,<retain>,<topic>[,<length>] |
>接收 > 后,输入要发送的数据。如果实际数据大小大于 <length>,额外的字节将被删除。OK如果未指定 <length>,点击 Ctrl+Z 发布消息。OK+QMTPUB: <client_idx>,<msgID>,<result>[,<value>]If there is any error: ERROR |
最大响应时间: <pkt_timeout> × <retry_times>(默认 15 s),由网络决定
特性: -
参数:
| Parameter | Description |
|---|---|
<client_idx> |
整数类型。MQTT 客户端 ID。范围:0--5。 |
<msgID> |
整数类型。PUBLISH 消息 ID。范围:0--65535。 |
<qos> |
整数类型。客户端想要发布消息的 QoS 级别。 0. 最多一次 1. 至少一次 2. 完全一次 |
<retain> |
整数类型。服务器是否在将其传递给当前订阅者后保留消息。 0. 不保留 1. 保留 |
<topic> |
字符串类型。要发布的主题。 |
<length> |
整数类型。要发布的消息长度。范围:1--2048。单位:字节。 |
<result> |
整数类型。命令执行结果。 0 PUBLISH 消息发送成功并接收到 ACK 消息。1 PUBLISH 消息发送成功但在传递时间内未接收到 ACK 消息。执行了重传。2 发送 PUBLISH 消息失败 |
<value> |
整数类型。 当 <result> 为 1 时,它表示 PUBLISH 消息重传次数。当 <result> 为 0 或 2 时,它不呈现。 |
<pkt_timeout> |
整数类型。数据包传递超时。范围:1--60。默认值:5。单位:s。可以通过 AT+QMTCFG="timeout",<client_idx>[,<pkt_timeout>,<retry_times>,<timeout_notice>] 配置值。 |
<retry_times> |
整数类型。数据包传递超时时的重试次数。范围:0--10。默认值:3。 |
- 如果此命令执行成功并返回
OK,客户端可以继续发布新数据包。要传输的数据包的最大数量不应大于飞行窗口大小(5);否则,返回ERROR。
注意
执行此命令后,客户端准备发送数据,该数据作为有效负载发送。一次输入数据的最大长度为 2048 字节。如果输入数据的长度超过 2048 字节,请分段发送数据。
PUBLISH 消息可以从发布者发送到服务器,也可以从服务器发送到订阅者。当服务器将消息发布到订阅者时,以下 URC 返回到主机以通知主机读取服务器报告的接收数据:
+QMTRECV: <client_idx>,<msgID>,<topic>[,<payload_length>],<payload>。有关 URC 的更多详细信息,请参见 *第 3.5 章*。
AT+QMTRECV
描述: 从存储缓冲区读取消息,其中消息在服务器报告后存储。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QMTRECV=? |
OK |
| Read Command | AT+QMTRECV? |
[+QMTRECV: <client_idx>,<store_status0>,<store_status1>,<store_status2>,<store_status3>,<store_status4>][...]OKIf there is any error: ERROR |
| Write Command | AT+QMTRECV=<client_idx>[,<receiveID>] |
如果省略可选参数,则读取指定客户端的所有缓冲消息。[+QMTRECV: <client_idx>,<msgID>,<topic>,<payload_len>,<payload>][...]OK如果指定可选参数,则读取指定客户端的 <storeID> 指定的消息。+QMTRECV: <client_idx>,<msgID>,<topic>,<payload_len>,<payload>OKIf there is any error: ERROR |
最大响应时间: -
特性: -
参数:
| Parameter | Description |
|---|---|
<client_idx> |
整数类型。MQTT 客户端 ID。范围:0--5。 |
<store_status0> |
整数类型。storeID0 对应的缓冲区中是否有消息。 0. 缓冲区中没有消息 1. 缓冲区中存储了一个或多个消息 |
<store_status1> |
整数类型。storeID1 对应的缓冲区中是否有消息。 0. 缓冲区中没有消息 1. 缓冲区中存储了一个或多个消息 |
<store_status2> |
整数类型。storeID2 对应的缓冲区中是否有消息。 0. 缓冲区中没有消息 1. 缓冲区中存储了一个或多个消息 |
<store_status3> |
整数类型。storeID3 对应的缓冲区中是否有消息。 0. 缓冲区中没有消息 1. 缓冲区中存储了一个或多个消息 |
<store_status4> |
整数类型。storeID4 对应的缓冲区中是否有消息。 0. 缓冲区中没有消息 1. 缓冲区中存储了一个或多个消息 |
<receiveID> |
整数类型。缓冲消息的 ID。范围:0--4。 |
<msgID> |
整数类型。PUBLISH 消息 ID。范围:0--65535。仅当 <qos>=0 时,<msgID> 为 0。 |
<topic> |
字符串类型。要发布的主题。 |
<payload_len> |
整数类型。接收消息的长度。范围:0--10240。单位:字节。 |
<payload> |
字符串类型。接收的消息。 |
HTTP(S) 相关 AT 命令描述
AT+QHTTPCFG
描述: 配置 HTTP(S) 服务器的参数,包括配置 PDP 上下文 ID、自定义 HTTP(S) 请求头、输出 HTTP(S) 响应头以及查询 SSL 设置。如果写命令仅执行一个参数,它将查询当前设置。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QHTTPCFG=? |
+QHTTPCFG: "url",<urlstring>+QHTTPCFG: "header",<name:value>+QHTTPCFG: "auth",<username:password>+QHTTPCFG: "sslctxid",(list of supported <sslctxID>s)+QHTTPCFG: "rsp/header",(list of supported <response_header>s)+QHTTPCFG: "rspout/auto",(list of supported <auto_outrsp>s)+QHTTPCFG: "closed/ind",(list of supported <closedind>s)+QHTTPCFG: "form/option",<name>,<file_name>,<content_type>OK |
最大响应时间: -
特性: 命令立即生效。配置不保存。
参数:
| Parameter | Description |
|---|---|
<URL_string> |
字符串类型。HTTP(S) 的 URL。 |
<header_value> |
字符串类型。HTTP(S) 请求头行/头字段名称,例如:"Content-type: text/plain" 或 "Content-type"。 |
<username_password> |
字符串类型。用户名和密码。格式:"username:password"。 |
<sslctxID> |
整数类型。用于 HTTP(S) 的 SSL 上下文 ID。范围:0--5。默认:1。SSL 参数应通过 AT+QSSLCFG 配置。详情请参见第 2.4.1 章。 |
<response_header> |
整数类型。启用或禁用输出 HTTP(S) 响应头。 0. 禁用 1. 启用 |
<auto_outrsp> |
整数类型。启用或禁用自动输出 HTTP(S) 响应头。如果启用了 HTTP(S) 响应数据的自动输出,AT+QHTTPREAD 和 AT+QHTTPREADFILE 将无法执行。0. 禁用 1. 启用 |
<closedind> |
整数类型。启用或禁用 HTTP(S) 会话关闭 URC +QHTTPURC: "closed" 的报告。0. 禁用 1. 启用 |
<name> |
字符串类型。form/option 的名称值。 |
<file_name> |
字符串类型。form/option 的文件名值。 |
<content_type> |
字符串类型。form/option 的内容类型值。 |
<err> |
结果代码。详情请参见第 5 章。 |
AT+QHTTPGET
描述: 向 HTTP(S) 服务器发送 GET 请求。发送 AT+QHTTPGET 后,建议等待特定时间(参见下面的最大响应时间)以在报告 OK 后输出 URC +QHTTPGET: <err>[,<httprspcode>[,<content_length>]]。在 +QHTTPGET: <err>[,<httprspcode>[,<content_length>]] 中,<httprspcode> 参数仅在 <err> 等于 0 时报告。如果 HTTP(S) 响应头包含 Content-Length 信息,则将报告 <content_length> 信息。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QHTTPGET=? |
+QHTTPGET: (list of supported <rsptime>s)OK |
| Write Command | AT+QHTTPGET[=<rsptime>] |
如果参数格式正确且没有其他错误:OK当模块从 HTTP(S) 服务器接收到响应时,它将报告以下 URC: +QHTTPGET: <err>[,<httprspcode>[,<content_length>]]如果参数格式不正确或其他错误: +CME ERROR: <err> |
最大响应时间: 由 <rsptime> 决定
特性: 命令立即生效。配置不保存。
参数:
<rsptime> 整数类型。用于配置在返回 OK 后输出 HTTP(S) GET 响应 +QHTTPGET: <err>,<httprspcode>[,<content_length>] 的超时。范围:1--65535。默认值:60。单位:秒。
<httprspcode> HTTP(S) 响应代码。详情请参见第 5 章。
<content_length> 整数类型。HTTP(S) 响应的长度。单位:字节。
<err> 结果代码。详情请参见第 5 章。
AT+QHTTPPOST
描述: 向 HTTP(S) 服务器发送 POST 请求。发送 AT+QHTTPPOST 后,可能在 125 s 内输出 CONNECT 以表示连接成功。如果在此时间内未接收到,则将输出 +CME ERROR: <err>。
发送 AT+QHTTPPOST 后,建议等待特定时间(参见下面的最大响应时间)以在报告 OK 后输出 URC +QHTTPPOST: <err>[,<httprspcode>[,<content_length>]]。在 +QHTTPPOST: <err>[,<httprspcode>[,<content_length>]] 中,<httprspcode> 参数仅在 <err> 等于 0 时报告。如果 HTTP(S) 响应头包含 Content-Length 信息,则将报告 <content_length> 信息。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QHTTPPOST=? |
+QHTTPPOST: (list of supported <data_length>s),(list of supported <input_time>s),(list of supported <rsptime>s)OK |
| Write Command | AT+QHTTPPOST=<data_length>[,<input_time>,<rsptime>] |
如果参数格式正确且 HTTP(S) 服务器连接成功且 HTTP(S) 请求头已完全发送,它将提示输入正文:CONNECTTA 切换到透明访问模式,可以输入 HTTP(S) POST 正文。当输入数据的总大小达到 <data_length> 时,TA 将返回到命令模式并报告以下代码:OK当模块从 HTTP(S) 服务器接收到响应时,它将报告以下 URC: +QHTTPPOST: <err>[,<httprspcode>[,<content_length>]]如果 <input_time> 已达到,但接收数据的长度小于 <data_length>,TA 将返回到命令模式并报告以下代码:+QHTTPPOST: <err>如果参数格式不正确或其他错误: +CME ERROR: <err> |
最大响应时间: 由网络和 <rsptime> 决定
特性: 命令立即生效。配置不保存。
参数:
<data_length> 整数类型。如果 <request_header> 为 0,它表示 HTTP(S) POST 正文的长度。如果 <request_header> 为 1,它表示 HTTP(S) POST 请求信息的长度,包括 HTTP(S) POST 请求头和正文。范围:1--1024000。单位:字节。
<input_time> 整数类型。输入 HTTP(S) POST 正文或 HTTP(S) POST 请求信息的最大时间。范围:1--65535。默认:60。单位:秒。
<rsptime> 整数类型。范围:1--65535。默认:60。单位:秒。用于配置在返回 OK 后输出 HTTP(S) POST 响应 +QHTTPPOST: <err>[,<httprspcode>[,<content_length>]] 的超时。
<httprspcode> HTTP(S) 响应代码。详情请参见第 5 章。
<request_header> 整数类型。禁用或启用自定义 HTTP(S) 请求头。
- 禁用
- 启用
<content_length> 整数类型。HTTP(S) 响应正文的长度。单位:字节。
<err> 结果代码。详情请参见第 5 章。
AT+QHTTPPUT
描述: 向 HTTP(S) 服务器发送 PUT 请求。发送 AT+QHTTPPUT 后,可能在 125 s 内输出 CONNECT 以表示连接成功。否则,将输出 +CME ERROR: <err>。
发送 AT+QHTTPPUT 后,建议等待特定时间(参见下面的最大响应时间)以在报告 OK 后输出 URC +QHTTPPUT: <err>[,<httprspcode>[,<content_length>]]。在 +QHTTPPUT: <err>[,<httprspcode>[,<content_length>]] 中,<httprspcode> 参数仅在 <err> 等于 0 时报告。如果 HTTP(S) 响应头包含 Content-Length 信息,则将报告 <content_length> 信息。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QHTTPPUT=? |
+QHTTPPUT: (list of supported <data_length>s),(list of supported <input_time>s),(list of supported <rsptime>s)OK |
| Write Command | AT+QHTTPPUT=<data_length>[,<input_time>,<rsptime>] |
如果参数格式正确且 HTTP(S) 服务器连接成功且 HTTP(S) 请求头已完全发送:CONNECTTA 切换到透明访问模式,可以输入 HTTP(S) PUT 正文。当输入数据的总大小达到 <data_length> 时,TA 将返回到命令模式并报告以下代码:OK当模块从 HTTP(S) 服务器接收到响应时,它将报告以下 URC: +QHTTPPUT: <err>[,<httprspcode>[,<content_length>]]如果 <input_time> 已达到,但接收数据的长度小于 <data_length>,TA 将返回到命令模式并报告以下代码:+QHTTPPUT: <err>如果参数格式不正确或其他错误: +CME ERROR: <err> |
最大响应时间: 由网络和 <rsptime> 决定
特性: 命令立即生效。配置不保存。
参数:
<data_length> 整数类型。如果 <request_header> 为 0,它表示 HTTP(S) PUT 正文的长度。如果 <request_header> 为 1,它表示 HTTP(S) PUT 请求信息的长度,包括 HTTP(S) PUT 请求头和正文。范围:1--1024000。单位:字节。
<input_time> 整数类型。输入 HTTP(S) PUT 正文或 HTTP(S) PUT 请求信息的最大时间。范围:1--65535。默认值:60。单位:秒。
<rsptime> 整数类型。范围:1--65535。默认值:60。单位:秒。用于配置在返回 OK 后输出 HTTP(S) PUT 响应 +QHTTPPUT: <err>,[<httprspcode>[,<content_length>]] 的超时。
<httprspcode> HTTP(S) 服务器响应代码。详情请参见第 5 章。
<request_header> 整数类型。禁用或启用自定义 HTTP(S) 请求头。
- 禁用
- 启用
<content_length> 整数类型。HTTP(S) 响应正文的长度。单位:字节。
<err> 结果代码。详情请参见第 5 章。
AT+QHTTPREAD
描述: 发送 HTTP(S) GET/POST/PUT 请求后,可以通过 AT+QHTTPREAD 从 HTTP(S) 服务器检索 HTTP(S) 响应信息。AT+QHTTPREAD 只能在接收到以下任一 URC 后执行。
+QHTTPGET: <err>[,<httprspcode>[,<content_length>]]+QHTTPPOST: <err>[,<httprspcode>[,<content_length>]]+QHTTPPUT: <err>[,<httprspcode>[,<content_length>]]
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QHTTPREAD=? |
+QHTTPREAD: (list of supported <wait_time>s)OK |
| Write Command | AT+QHTTPREAD[=<wait_time>] |
如果参数格式正确且读取成功:CONNECT<输出 HTTP(S) 响应信息> OK当正文读取完毕或 <wait_time> 达到时,它将报告:+QHTTPREAD: <err>如果有任何错误: +CME ERROR: <err> |
最大响应时间: 由 <wait_time> 决定
特性: 命令立即生效。配置不保存。
参数:
<wait_time> 整数类型。接收两个数据包之间的最大间隔时间。范围:1--65535。默认:60。单位:秒。
<err> 结果代码。详情请参见第 5 章。
AT+QHTTPSTOP
描述: MCU 可以通过此命令取消 HTTP(S) GET/POST/PUT 请求,并断开与 HTTP(S) 服务器的会话。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QHTTPSTOP=? |
OK |
| Execution Command | AT+QHTTPSTOP |
如果参数格式正确且没有其他错误:OK如果参数格式不正确或其他错误: +CME ERROR: <err> |
最大响应时间: 10 s
特性: 命令立即生效。配置不保存。
参数:
<err> 结果代码。详情请参见第 5 章。
PING 相关 AT 命令描述
AT+QPING
描述: 测试互联网协议网络上主机的可达性。在使用 AT+QPING 之前,主机应首先连接到 Wi-Fi 网络。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QPING=? |
+QPING: <host>,(list of supported <timeout>s),(list of supported <pingnum>s)OK |
| Write Command | AT+QPING=<host>[,<timeout>[,<pingnum>]] |
如果远程主机 ping 成功。OK[+QPING: <ping_result>[,<IP_address>,<bytes>,<time>,<ttl>]<CR><LF>...][...]+QPING: <finresult>[,<sent>,<rcvd>,<lost>,<min>,<max>,<avg>]如果有任何错误: ERROR |
最大响应时间: -
特性: -
参数:
<host> 字符串类型。主机地址。它是域名或点分十进制 IP 地址。
<timeout> 整数类型。等待每个 ping 请求响应的最大时间。范围:1--255。默认值:4。单位:秒。
<pingnum> 整数类型。ping 请求的最大数量。范围:1--10。默认值:4。
<ping_result> 整数类型。每个 ping 请求的结果。
0 从主机接收到 ping 响应。在这种情况下,后跟 ,<IP_address>,<bytes>,<time>,<ttl>。
其他值 结果代码。详情请参见第 5 章。
<IP_address> 字符串类型。远程主机的 IP 地址,以点分十进制表示。
| Parameter | Description |
|---|---|
<bytes> |
整数类型。每个发送 ping 请求的长度。单位:字节。 |
<time> |
整数类型。等待 ping 请求响应的时间。单位:ms。 |
<ttl> |
整数类型。ping 请求响应数据包的生存时间值。 |
<finresult> |
整数类型。命令的最终结果。 0 Ping 成功。它在激活上下文和查找主机方面成功。在这种情况下,后跟 ,<sent>,<rcvd>,<lost>,<min>,<max>,<avg>其他值 结果代码。详情请参见第 5 章。 |
<sent> |
整数类型。已发送的 ping 请求总数。 |
<rcvd> |
整数类型。已接收响应的 ping 请求总数。 |
<lost> |
整数类型。超时的 ping 请求总数。 |
<min> |
整数类型。最小响应时间。单位:ms。 |
<max> |
整数类型。最大响应时间。单位:ms。 |
<avg> |
整数类型。平均响应时间。单位:ms。 |
DNS 相关 AT 命令描述
AT+QIDNSGIP
描述: 通过域名获取 IP 地址。在查询 DNS 之前,主机应首先连接到 Wi-Fi 网络。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QIDNSGIP=? |
+QIDNSGIP: <hostname>OK |
| Write Command | AT+QIDNSGIP=<hostname> |
OK如果有任何错误: ERROR在 URC 中返回结果: +QIURC: "dnsgip",<err>,<IP_count>,<DNS_ttl>[...+QIURC: "dnsgip",<hostIPaddr> |
最大响应时间: 60 s,由网络决定。
特性: -
参数:
<hostname> 字符串类型。域名。
<err> 结果代码。详情请参见第 5 章。
<IP_count> 整数类型。与 <hostname> 对应的 IP 地址数量。
<DNS_ttl> 整数类型。DNS 的生存时间。单位:秒。
<hostIPaddr> 字符串类型。<hostname> 的 IP 地址。
NTP 相关 AT 命令描述
AT+QNTP
描述: 通过 NTP 服务器同步本地时间。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QNTP=? |
+QNTP: "<server>"[,<port>[,(list of supported <auto_set_time>s)]]OK |
| Write Command | AT+QNTP=<server>[,<port>] |
如果本地时间与 NTP 服务器同步成功:OK+QNTP: <err>,<time>如果有任何错误: ERROR |
| Execution Command | AT+QNTP |
如果本地时间与 NTP 服务器同步成功:OK+QNTP: <err>,<time>如果有任何错误: ERROR |
最大响应时间: 300 ms
特性: -
参数:
| Parameter | Description |
|---|---|
<server> |
字符串类型。NTP 服务器地址。它是域名或点分十进制 IP 地址。最大长度:50 字节。 |
<port> |
整数类型。NTP 服务器端口号。范围:1--65535。默认值:123。 |
<time> |
字符串类型。与 NTP 服务器同步的时间。格式:"YY/MM/DD,hh:mm:ss±zz"。 |
<err> |
整数类型。结果代码。详情请参见第 5 章。 |
FILE 相关 AT 命令描述
AT+QFOPEN
描述: 打开文件并获取文件句柄,用于 AT+QFREAD、AT+QFWRITE 和 AT+QFCLOSE 等命令。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QFOPEN=? |
+QFOPEN: <filename>,(list of supported <mode>s)OK |
| Read Command | AT+QFOPEN? |
+QFOPEN: <filename>,<filehandle>,<mode>[+QFOPEN: <filename>,<filehandle>,<mode>[...]]OK |
| Write Command | AT+QFOPEN=<filename>[,<mode>] |
+QFOPEN: <filehandle>OK如果有任何错误: ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<filename> 字符串类型。要打开的文件名。最大长度:80 字节。
<filehandle> 整数类型。文件的句柄。大小:4 字节。
<mode> 整数类型。文件的打开模式。
- 如果文件不存在,将创建它。如果文件存在,将直接打开。两者都可以读写。
- 如果文件不存在,将创建它。如果文件存在,将覆盖并清除。两者都可以读写。
- 如果文件存在,打开它并且只能读取。当文件不存在时,将响应错误。
AT+QFREAD
描述: 读取由文件句柄指定的文件的数据。数据从属于文件句柄的文件指针的当前位置开始。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QFREAD=? |
+QFREAD: <filehandle>,<length>OK |
| Write Command | AT+QFREAD=<filehandle>[,<length>] |
CONNECT <read_length>TA 切换到数据模式。当数据的总大小达到 <length>(单位:字节)时,TA 将返回到命令模式:OK如果有任何错误: ERROR |
最大响应时间: 5 s
特性: 命令立即生效。配置不保存。
参数:
<filehandle> 整数类型。要操作的文件的句柄。
<length> 整数类型。要读取的文件的预期长度。默认值:文件的长度。单位:字节。
<read_length> 整数类型。实际读取长度。单位:字节。
AT+QFWRITE
描述: 将数据写入文件。数据从属于文件句柄的文件指针的当前位置开始。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QFWRITE=? |
+QFWRITE: <filehandle>,<length>,<timeout>OK |
| Write Command | AT+QFWRITE=<filehandle>[,<length>[,<timeout>]] |
CONNECTTA 切换到数据模式。当写入数据的总大小达到 <length> 或时间达到 <timeout> 时,TA 将返回到命令模式并回复以下代码:+QFWRITE: <written_length>,<total_length>OK如果有任何错误: ERROR |
最大响应时间: 5 s
特性: 命令立即生效。配置不保存。
参数:
| Parameter | Description |
|---|---|
<filehandle> |
整数类型。要操作的文件的句柄。 |
<length> |
整数类型。要写入的文件的长度。范围:1--65535。默认值:10240。单位:字节。 |
<timeout> |
整数类型。等待数据输入到 USB/UART 的时间。范围:1--179。默认值:5。单位:s。 |
<written_length> |
整数类型。实际写入长度。单位:字节。 |
<total_length> |
整数类型。文件的总长度。单位:字节。 |
AT+QFCLOSE
描述: 关闭文件并结束对文件的操作。此后,文件句柄被释放,不应再次使用,除非通过 AT+QFOPEN 再次打开文件。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QFCLOSE=? |
+QFCLOSE: <filehandle>OK |
| Write Command | AT+QFCLOSE=<filehandle> |
OKOr ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<filehandle> 整数类型。要操作的文件的句柄。
AT+QFLST
描述: 列出指定存储介质中的单个文件或所有文件的信息。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QFLST=? |
OK |
| Write Command | AT+QFLST=<name_pattern> |
+QFLST: <filename>,<file_size>[+QFLST: <filename>,<file_size>[...]]OK如果有任何错误: ERROR |
| Execution Command | AT+QFLST |
返回 UFS 文件的信息:+QFLST: <filename>,<file_size>[+QFLST: <filename>,<file_size>[...]]OK如果有任何错误: ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<name_pattern> 字符串类型。要列出的文件。
"UFS:" UFS 中的所有文件
<filename> 字符串类型。文件名。
<file_size> 整数类型。文件大小。单位:字节。
AT+QFDEL
描述: 删除指定存储介质中的单个文件或所有文件。
| Command Type | Syntax | Response |
|---|---|---|
| Test Command | AT+QFDEL=? |
+QFDEL: <file_name>OK |
| Write Command | AT+QFDEL=<file_name> |
OKOr ERROR |
最大响应时间: 300 ms
特性: 命令立即生效。配置不保存。
参数:
<file_name> 字符串类型。要删除的文件名。
URCs 描述
Wi-Fi 相关 URCs
+QSTASTAT
此 URC 表示 STA 状态变化。
| URC | Description |
|---|---|
+QSTASTAT:<event> |
此 URC 表示 STA 状态变化。 |
参数:
<event> 字符串类型。STA 状态变化时报告的事件。
- "WLAN DISCONNECTED" 已断开连接
- "WLAN_CONNECTED" 已连接
- "GOT_IP" 已获取 IP
- "SCAN_NO_AP" 扫描到无 AP
+QAPSTAT
此 URC 表示 AP 状态变化。
| URC | Description |
|---|---|
+QAPSTAT: <event> |
此 URC 表示 AP 状态变化。 |
参数:
<event> |
Description |
|---|---|
| "AP_UP" | 已启用 |
| "AP_DOWN" | 已禁用 |
| "AP_CONNECT" | 已连接到 STA |
| "AP_DISCONNECT" | 已断开与 STA 的连接 |
+QOTASTAT
此 URC 表示 OTA 升级状态变化。
| URC | Description |
|---|---|
+QOTASTAT: <event> |
此 URC 表示 OTA 升级状态变化。 |
参数:
<event> 字符串类型。OTA 升级状态变化时报告的事件。
- "START_DOWNLOAD" 开始下载
- "DOWNLOAD_SUCCEED" 下载成功
- "DOWNLOAD_FAILED" 下载失败
- "DOWNLOADING" 下载中
BLE 相关 URCs
+QBLESTAT
此 URC 表示 BLE 连接状态变化。
| URC | Description |
|---|---|
+QBLESTAT: <event> |
此 URC 表示 BLE 连接状态变化。 |
参数:
<event> 字符串类型。BLE 连接状态变化时报告的事件。
- "CONNECTED" BLE 已连接
- "DISCONNECTED" BLE 已断开连接
+QBLEMTU
此 URC 表示 BLE MTU 值变化。
| URC | Description |
|---|---|
+QBLEMTU: <MTU_value> |
此 URC 表示 BLE MTU 值变化。 |
参数:
<MTU_value> 整数类型。最大传输单元值。默认值:23。范围:64--512(模块作为中央设备操作)。范围:23--512(模块作为外围设备操作)。单位:字节。
+QBLERECV
此 URC 表示 BLE 设备接收数据。
| URC | Description |
|---|---|
+QBLERECV: <conn_idx>,<UUID>,<length><CR><LF><data><CR><LF> |
此 URC 表示 BLE 设备接收数据。 |
参数:
| Parameter | Description |
|---|---|
<conn_idx> |
整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。 |
<UUID> |
字符串类型。特征 UUID。长度:4 字节或 32 字节。 |
<length> |
整数类型。接收数据的长度(最大长度不能超过 <MTU_value>-1,您可以通过 URC +QBLEMTU 获取 <MTU_value> 的长度)。单位:字节。 |
<data> |
无双引号的字符串类型。接收的数据。 |
+QBLEINFO
当模块作为中央设备成功连接到对等设备时,此 URC 被报告以显示对等设备的特征 UUID。
| URC | Description |
|---|---|
+QBLEINFO: <char> |
此 URC 表示 BLE 连接成功建立后对等设备服务发现结果。 |
参数:
<char> 字符串类型。
- "DOWN" 对等设备服务发现完成
- 其他 对等设备的特征 UUID。长度:4 字节或 32 字节。
+QBLECONNPARAM
此 URC 在 BLE 连接成功建立后报告以更新连接参数。
| URC | Description |
|---|---|
+QBLECONNPARAM: <conn_idx>,<con_interval>,<timeout>,<latency> |
此 URC 表示 BLE 连接成功建立后连接参数更新。 |
参数:
| Parameter | Description |
|---|---|
<conn_idx> |
整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。 |
<con_interval> |
整数类型。连接间隔。 |
<timeout> |
整数类型。BLE 链路监督超时 |
<latency> |
整数类型。连接中特定数量连接事件的从属延迟 |
TCP/UDP 相关 URCs
+QIURC: "closed"
当 TCP 套接字服务被远程对等方关闭或由于网络错误关闭时,将输出 URC,套接字服务的状态将为 "closing"(<socket_state>=4)。可以使用 AT+QICLOSE=<connectID> 将 <socket_state> 更改为初始。
| URC | Description |
|---|---|
+QIURC: "closed",<connectID> |
套接字服务连接已关闭。 |
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
+QIURC: "recv"
在缓冲访问模式或直接推送模式下,接收数据后,模块向主机报告 URC。
在缓冲访问模式下,接收数据后,模块报告
+QIURC: "recv",<connectID>以通知主机。然后主机可以通过AT+QIRD检索数据。如果缓冲区不为空,且模块再次接收数据,它不会报告新的 URC,直到通过AT+QIRD从缓冲区检索所有接收的数据。在直接推送模式下,接收的数据直接输出到 COM 端口。
| URC | Description |
|---|---|
+QIURC: "recv",<connectID> |
表示缓冲访问模式下的传入数据。主机可以通过 AT+QIRD 检索数据。 |
+QIURC: "recv",<connectID>,<current_recvlength><CR><LF><data> |
表示 <service_type> 为 "TCP"、"UDP" 或 "TCP INCOMING" 时直接推送模式下的传入数据。 |
+QIURC: "recv",<connectID>,<current_recvlength>,<remoteIP>,<remote_port><CR><LF><data> |
表示 <service_type> 为 "UDP SERVICE" 时直接推送模式下的传入数据。 |
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<current_recvlength> 整数类型。实际接收数据的长度。
<remoteIP> 字符串类型。远程 IP 地址。
<remote_port> 整数类型。远程端口号。
<data> 接收的数据。单位:字节。
+QIURC: "incoming full"
如果传入连接达到限制,或无法分配套接字系统资源,则模块将为新的传入连接请求报告 URC 为 +QIURC: "incoming full"。
| URC | Description |
|---|---|
+QIURC: "incoming full" |
表示传入连接数量已达到限制。 |
+QIURC: "incoming"
如果 <service_type> 是 "TCP LISTENER",当远程客户端连接到此服务器时,主机将自动为新连接分配一个空闲的 <connectID>。<connectID> 的范围是 0 到 11。在这种情况下,模块将报告 URC。新连接的 <service_type> 将为 "TCP INCOMING",缓冲访问模式将被分配为 "TCP LISTENER" 的 <access mode>。
| URC | Description |
|---|---|
+QIURC: "incoming",<connectID>,<serverID>,<remoteIP>,<remote_port> |
当新传入连接被 <serverID> 接受时,通过此 URC 通知分配的 <connectID>、<remoteIP> 和 <remote_port>。 |
参数:
<connectID> 整数类型。传入连接分配的套接字 ID,由模块自动指定。范围:0--11。
<serverID> 整数类型。服务器接受此 TCP 传入连接。服务器的 <service_type> 为 "TCP LISTENER",监听套接字 ID 为 <serverID>。
<remoteIP> 字符串类型。传入 <connectID> 的远程 IP 地址。
<remote_port> 整数类型。传入 <connectID> 的远程端口号。
+QIOPEN
使用 AT+QIOPEN 打开套接字服务后,URC 被报告以指示套接字服务打开的结果。
| URC | Description |
|---|---|
+QIOPEN: <connectID>,<err> |
表示打开 TCP/UDP 套接字服务的结果。 |
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<err> 结果代码。详情请参见第 5 章。
SSL 相关 URCs
+QSSLURC: "recv"
此 URC 通知主机从服务器接收到的数据。
| URC | Description |
|---|---|
+QSSLURC: "recv",<connectID> |
缓冲访问模式下 SSL 数据传入的 URC。可以通过 AT+QSSLRECV 接收数据。 |
+QSSLURC: "recv",<connectID>,<current_recvlength><CR><LF><data> |
直接推送模式下 SSL 数据传入的 URC。 |
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<current_recvlength> 整数类型。实际接收数据的长度。单位:字节。
<data> 实际读取的数据。单位:字节。
+QSSLURC: "closed"
此 URC 通知连接已断开。断开连接的原因有很多。例如,互联网关闭连接或 GPRS PDP 状态被停用,基于指定套接字的 SSL 连接状态可能为 "closing"。在这种情况下,必须执行 AT+QSSLCLOSE=<connectID> 以将 SSL 连接状态更改为 "initial"。
| URC | Description |
|---|---|
+QSSLURC: "closed",<connectID> |
基于指定套接字的 SSL 连接已关闭。 |
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
+QSSLOPEN
使用 AT+QSSLOPEN 打开 SSL 客户端后,URC 被报告以指示 SSL 客户端打开的结果。
| URC | Description |
|---|---|
+QSSLOPEN: <connectID>,<err> |
URC 表示 SSL 客户端打开的结果。 |
参数:
<connectID> 整数类型。套接字 ID。范围:0--11。
<err> 结果代码。详情请参见第 5 章。
MQTT 相关 URCs
+QMTSTAT
当 MQTT 链路层状态发生变化时,客户端将断开与 MQTT 服务器的连接并报告此 URC。
| URC | Description |
|---|---|
+QMTSTAT: <client_idx>,<err_code> |
当 MQTT 链路层状态发生变化时,客户端将断开与 MQTT 服务器的连接并报告此 URC。 |
参数:
<client_idx> 整数类型。MQTT 客户端 ID。范围:0--5。
<err_code> 整数类型。结果代码。详情请参见下表。
<err_code> |
Description | Solution |
|---|---|---|
| 1 | 连接被对等方关闭或重置。 | 执行 AT+QMTOPEN 并重新打开 MQTT 连接。 |
| 2 | 发送 PINGREQ 数据包超时或失败。 | 首先,停用并激活 PDP。然后,重新打开 MQTT 连接。 |
| 3 | 发送 CONNECT 数据包超时或失败。 | 1. 检查输入的用户名和密码是否正确。 2. 确保客户端 ID 未被使用。 3. 重新打开 MQTT 连接并尝试再次向服务器发送 CONNECT 数据包。 |
| 4 | 接收 CONNACK 数据包超时或失败。 | 1. 检查输入的用户名和密码是否正确。 2. 确保客户端 ID 未被使用。 3. 重新打开 MQTT 连接并尝试再次向服务器发送 CONNECT 数据包。 |
| 5 | 客户端向服务器发送 DISCONNECT 数据包,服务器关闭 MQTT 连接。 | 这是一个正常过程。 |
| 6 | 客户端由于数据包发送始终失败而关闭 MQTT 连接。 | 1. 确保数据正确。 2. 尝试重新打开 MQTT 连接,因为可能存在网络拥塞或错误。 |
| 7 | 链路未激活,或服务器不可用。 | 确保链路激活,或服务器可用。 |
| 8 | 客户端关闭了 MQTT 连接。 | 尝试重新连接。 |
| 9--255 | 保留供将来使用。 |
+QMTRECV
此 URC 被报告以通知主机读取 MQTT 服务器报告的接收 MQTT 数据包数据。
| URC | Description |
|---|---|
+QMTRECV: <client_idx>,<msgID>,<topic>[,<payload_length>],<payload> |
通知主机读取 MQTT 服务器报告的接收数据。 |
+QMTRECV: <client_idx>,<recv_id> |
当从 MQTT 服务器接收的消息已存储在缓冲区中时报告。 |
参数:
| Parameter | Description |
|---|---|
<client_idx> |
整数类型。MQTT 客户端 ID。范围:0--5。 |
<msgID> |
整数类型。数据包的消息 ID。范围:0--65535。 |
<topic> |
字符串类型。从 MQTT 服务器接收的主题。 |
<payload_length> |
整数类型。有效负载长度。范围:0--10240。单位:字节。 |
<payload> |
字符串类型。与主题名称相关的有效负载。 |
<recv_id> |
整数类型。每个接收消息的序列号。范围:0--4。 |
HTTP(S) 相关 URCs
+QHTTPURC: "recv"
当模块接收到 HTTP 数据时报告此 URC。只有在 AT+QHTTPCFG="rspout/auto" 中启用了 HTTP(S) 响应头的自动输出时,才会报告 URC。
| URC | Description |
|---|---|
+QHTTPURC: "recv",<length> |
此 URC 表示传入响应数据。 |
参数:
<length> 整数类型。接收数据的长度。单位:字节。
+QHTTPURC: "closed"
此 URC 被报告以指示 HTTP 会话已关闭。关闭的原因包括 HTTP 请求响应成功断开或 HTTP 响应超时异常。只有在 AT+QHTTPCFG="closed/ind" 中启用了 HTTP(S) 会话关闭 URC 的报告时,才会报告 URC。
| URC | Description |
|---|---|
+QHTTPURC: "closed" |
此 URC 被报告以指示 HTTP 会话已关闭。 |
+QHTTPGET
使用 AT+QHTTPGET 发送 GET 请求后,URC 被报告以指示 GET 请求发送的结果。
| URC | Description |
|---|---|
+QHTTPGET: <err>[,<httprspcode>[,<content_length>]] |
URC 被报告以指示 GET 请求的发送结果。 |
参数:
<err> 结果代码。详情请参见第 5 章。
<httprspcode> HTTP(S) 服务器响应代码。详情请参见第 5 章。
<content_length> 整数类型。HTTP(S) 响应正文的长度。单位:字节。
+QHTTPPOST
使用 AT+QHTTPPOST 发送 POST 请求后,URC 被报告以指示 POST 请求发送的结果。
| URC | Description |
|---|---|
+QHTTPPOST: <err>[,<httprspcode>[,<content_length>]] |
URC 被报告以指示 POST 请求发送的结果。 |
参数:
<err> 结果代码。详情请参见第 5 章。
<httprspcode> HTTP(S) 服务器响应代码。详情请参见第 5 章。
<content_length> 整数类型。HTTP(S) 响应正文的长度。单位:字节。
+QHTTPPUT
使用 AT+QHTTPPUT 发送 PUT 请求后,URC 被报告以指示 PUT 请求发送的结果。
| URC | Description |
|---|---|
+QHTTPPUT: <err>[,<httprspcode>[,<content_length>]] |
URC 被报告以指示 PUT 请求发送的结果。 |
参数:
<err> 结果代码。详情请参见第 5 章。
<httprspcode> HTTP(S) 服务器响应代码。详情请参见第 5 章。
<content_length> 整数类型。HTTP(S) 响应正文的长度。单位:字节。
示例
Wi-Fi 相关 AT 示例
AT+QSTAAPINFO="testssid","123456789" // 将模块设置为 STA 模式并连接到 AP 热点。
OK // 启用 AP 模式。
AT+QSOFTAP="testap","12345678"
OK
BLE 相关 AT 示例
外围设备角色
BLE 设备接受建立主动物理连接的请求,是外围设备。当连接建立时,外设在链路层中作为从属设备运行。
将模块设置为外围设备**
AT+QBLEINIT=2,1 // 将模块初始化为外围设备以初始化 BLE。
OK
AT+QBLEADVPARAM=150,150 // 设置 BLE 广播参数。
OK
AT+QBLENAME="QuecFGM842D" // 将 BLE 设备名称设置为 "QuecFGM842D"。
OK
AT+QBLEADDR? // 查询并获取 BLE 设备地址。
+QBLEADDR: "c8e4a1b1c1f9"
OK
AT+QBLEGATTSSRV="FFF1" // 建立 BLE 服务并将特征 UUID 设置为 "FFF1"。
OK
AT+QBLEGATTSCHAR="FFF2" // 将 GATT 特征 UUID 设置为 "FFF2"。
OK
AT+QBLEGATTSSRVDONE // 完成添加 BLE 服务。
OK
AT+QBLEADVSTART // 开始 BLE 广播。
OK
连接到 nRF Connect 应用程序
步骤 1: 点击 "SCAN" 扫描外围设备,在扫描结果中选择 "QuecFGM842D",然后点击 "CONNECT",如下图所示。

步骤 2: 模块连接成功后,界面显示 "CONNECTED",添加的 UUID 显示在 "CLIENT" 中:

向模块发送数据
步骤 1: 选择可编辑的特征,然后点击向上箭头。

步骤 2: 以 "TEXT" 格式输入要发送的数据。然后点击 "SEND",如下图所示。

数据发送成功后,模块接收到的数据通过串口输出,并在 QCOM 工具中显示。
+QBLERECV: 0,"fff2",10 from phone
向 nRF Connect 应用程序发送数据
步骤 1: 使用 QCOM 工具发送以下命令,通过通知向 UUID 0xFFF2 发送数据。
AT+QBLEGATTSNTFY=0,"FFF2","123456789"
OK
步骤 2: 接收到的数据显示在 nRF Connect 应用程序中 UUID 0xFFF2 的未知特征的 Value 字段中,如下图所示。

TCP/UDP 相关 AT 命令
透明传输模式
建立 TCP 连接并进入透明传输模式。
AT+QIOPEN=0,"TCP","192.0.2.2",8009,0,2 // <connectID> 为 0。在执行 AT+QIOPEN 之前,主机必须执行 AT+QIACT 来激活上下文。
CONNECT // TCP 客户端连接成功。建议等待 150 s 以获得 CONNECT。如果在 150 s 内没有响应返回,主机可以通过 AT+QICLOSE 关闭套接字连接。
在透明传输模式下发送数据。
<从 COM 端口获取的所有数据将直接发送到互联网>
在透明传输模式下接收来自远程服务器的数据。
Test 1 // 从互联网接收的所有数据将直接通过 COM 端口输出。
关闭 TCP 客户端
AT+QICLOSE=0 // 使用 `+++` 从透明访问模式退出后,主机可以使用 `AT+QICLOSE` 关闭 TCP 链接。根据网络,最大响应时间为 10 秒。
OK
SSL 相关 AT 命令
在透明传输模式下配置 SSL 上下文
AT+QSSLCFG="sslversion",1,1 // 将 SSL 上下文 ID 设置为 1,SSL 版本设置为 TLS1.0
OK // 将 SSL 上下文 ID 设置为 1,SSL 密码套件设置为 TLS_RSA_WITH_AES_256_CBC_SHA
AT+QSSLCFG="ciphersuite",1,0×0035
OK // 将 SSL 上下文 ID 设置为 1,认证模式设置为服务器认证
AT+QSSLCFG="seclevel",1,1
OK
AT+QFOPEN="ca.pem"
+QFOPEN: 1
OK
AT+QFWRITE=1,1757
CONNECT
+QFWRITE: 1757,1757
OK // 设置可信 CA 证书的路径。
AT+QSSLCFG="cacert",1,"ca.pem"
OK
缓冲访问模式下的 SSL 客户端
// 在缓冲访问模式下建立 SSL 连接。
AT+QSSLOPEN=1,4,"192.0.2.2",8010,0
OK
+QSSLOPEN: 4,0 // SSL 连接建立成功。
// 查询所有 SSL 连接的状态。
AT+QSSLSTATE
+QSSLSTATE: 4,"SSLClient","192.0.2.2",8010,65344,2,4,0,"uart1",1
OK
// 在缓冲访问模式下发送数据。
// 发送可变长度数据。
AT+QSSLSEND=4
>
Test data from SSL
<CTRL+Z>
SEND OK
// 发送固定长度数据(18 字节)。
AT+QSSLSEND=4,18
>
Test data from SSL
SEND OK
// 在缓冲访问模式下接收数据。
// URC 表示在套接字 4 上接收到数据。
+QSSLURC: "recv",4
// 读取数据(最多 1500 字节)。
AT+QSSLRECV=4,1500
+QSSLRECV: 18 // 实际数据长度:18 字节。
Test data from SSL
OK
// 检查更多数据。
AT+QSSLRECV=4,1500
+QSSLRECV: 0 // 缓冲区中没有更多数据。
OK
// 关闭 SSL 连接。
AT+QSSLCLOSE=4 // 最大响应时间:10 秒(网络相关)。
OK
直接推送模式下的 SSL 客户端
// 建立 SSL 连接并进入直接推送模式。
AT+QSSLOPEN=1,4,"192.0.2.2",8011,1
OK
+QSSLOPEN: 4,0 // SSL 连接建立成功。
AT+QSSLSTATE // 查询所有 SSL 连接的状态。
+QSSLSTATE: 4,"SSLClient","192.0.2.2",8011,65047,2,4,1,"uart1",1
OK
// 在直接推送模式下发送数据。
AT+QSSLSEND=4 // 发送可变长度数据。
>
Test data from SSL
<CTRL+Z> SEND OK
AT+QSSLSEND=4,18 // 发送固定长度数据,数据长度为 18 字节。
>
Test data from SSL
SEND OK
// 在直接推送模式下接收数据。
+QSSLURC: "recv",4,18
Test data from SSL
// 关闭 SSL 连接。
AT+QSSLCLOSE=4 // 关闭 SSL 连接(`<clientID>` = 4)。根据网络,最大响应时间为 10 s。
OK
透明传输模式下的 SSL 客户端
// 建立 SSL 连接并在透明传输模式下发送数据。
AT+QSSLOPEN=1,4,"192.0.2.2",8011,2 // 建立 SSL 连接。
CONNECT // 进入透明访问模式。
// 客户端正在从 COM 端口直接向网络发送数据。
OK // 使用 +++ 退出透明访问模式。NO CARRIER 结果代码表示服务器已停止 SSL 连接。
// 建立 SSL 连接并在透明传输模式下接收数据。
AT+QSSLOPEN=1,4,"192.0.2.2",8011,2 // 建立 SSL 连接。
CONNECT
<接收到的数据> // 客户端正在读取数据。
// 关闭 SSL 连接。
AT+QSSLCLOSE=4 // 关闭 SSL 连接(<connectID> = 4)。根据网络,最大响应时间为 10 s。
OK
MQTT 相关 AT 命令
无 SSL 的 MQTT 操作
// 配置接收模式。
AT+QMTCFG="recv/mode",0,0
OK
AT+QMTOPEN=?
+QMTOPEN: (0-5),<host_name>,(1-65535)
OK
# 为 MQTT 客户端打开网络。
AT+QMTOPEN=0,"192.0.2.2",8306
OK
+QMTOPEN: 0,0 # MQTT 客户端网络打开成功。
AT+QMTOPEN?
+QMTOPEN: 0,"192.0.2.2",8306
OK
AT+QMTCONN=?
+QMTCONN: (0-5),<clientID>,<username>,<password>
OK
# 将客户端连接到 MQTT 服务器。
AT+QMTCONN=0,"test","quectel","quectel"
OK
+QMTCONN: 0,0,0 # 客户端连接到 MQTT 服务器成功。
AT+QMTSUB=?
+QMTSUB: (0-5),(0-65535),<topic>,(0-2)
OK
# 订阅主题。
AT+QMTSUB=0,1,"topic/example",2
OK
+QMTSUB: 0,1,0,2
AT+QMTSUB=0,1,"topic/pub",0
OK
+QMTSUB: 0,1,0,0
# 如果客户端订阅了 "topic/example",其他设备向服务器发布相同主题,模块将报告以下信息。
+QMTRECV: 0,0,"topic/example",36,"This is the payload related to topic"
# 取消订阅主题。
AT+QMTUNS=0,2,"topic/example"
OK
+QMTUNS: 0,2,0 AT+QMTPUB=?
+QMTPUB: (0-5),(0-65535),(0-2),(0,1),<topic>,(1-2048)
OK
# 接收 > 后,输入数据 "This is test data, hello MQTT." 然后发送。数据的最大长度为 1500 字节,超出 1500 字节的数据将被删除。
AT+QMTPUB=0,0,0,0,"topic/pub",30 >This is test data, hello MQTT.
OK
+QMTPUB: 0,0,0
# 如果客户端订阅了名为 "topic/pub" 的主题,其他设备向服务器发布相同主题,模块报告以下信息。
+QMTRECV: 0,0,"topic/pub",30,This is test data, hello MQTT.
# 断开客户端与 MQTT 服务器的连接。
AT+QMTDISC=0
OK
+QMTDISC: 0,0 # 连接关闭成功。
带 SSL 的 MQTT 操作
// 配置接收模式。
AT+QMTCFG="recv/mode",0,0
OK
# 将 MQTT 会话配置为 SSL 模式。
AT+QMTCFG="ssl",0,1,2
OK
# 如果 SSL 认证模式为 "Perform server and client authentication if requested by the remote server",将 CA 证书存储到 UFS。
AT+QFOPEN="ca.pem"
+QFOPEN: 1
OK
AT+QFWRITE=1,1757
CONNECT
+QFWRITE: 1757,1757
OK
AT+QFCLOSE=1
OK
# 如果 SSL 认证模式为 "Perform server and client authentication if requested by the remote server",将 CC 证书存储到 UFS。
AT+QFOPEN="user.pem"
+QFOPEN: 1
OK
AT+QFWRITE=1,1639
CONNECT
+QFWRITE: 1639,1639
OK
AT+QFCLOSE=1
OK
# 如果 SSL 认证模式为 "Perform server and client authentication if requested by the remote server",将 CK 证书存储到 UFS。
AT+QFOPEN="user_key.pem"
+QFOPEN: 1
OK
AT+QFWRITE=1,2455
CONNECT
+QFWRITE: 2455,2455
OK
AT+QFCLOSE=1
OK
# 配置 SSL 参数。
AT+QSSLCFG="cacert",1,"ca.pem" # 为 SSL 上下文设置可信 CA 证书的路径。
OK
AT+QSSLCFG="clientcert",1,"user.pem" # 为 SSL 上下文设置客户端证书的路径。
OK
AT+QSSLCFG="clientkey",1,"user_key.pem" # 为 SSL 上下文设置客户端私钥。
OK
AT+QSSLCFG="seclevel",2,2 # 如果 SSL 认证模式为 "Perform server and client authentication if requested by the remote server",执行服务器和客户端认证。
OK
AT+QSSLCFG="sslversion",2,4 # 将 SSL 版本设置为所有 SSL 版本。
OK
AT+QSSLCFG="ciphersuite",2,0×FFFF # 将 SSL 密码套件设置为所有 SSL 密码套件。
OK
AT+QSSLCFG="ignorelocaltime",2,1 # 忽略证书有效期检查。
OK
# 开始 MQTT SSL 连接。
AT+QMTOPEN=0,"192.0.2.2",8307
OK
+QMTOPEN: 0,0
# 连接到 MQTT 服务器。
AT+QMTCONN=0,"test","quectel","quectel"
OK
+QMTCONN: 0,0,0
# 订阅主题。
AT+QMTSUB=0,1,"$aws/things/M26_0206/shadow/update/accepted",1 OK
+QMTSUB: 0,1,0,1
# 发布消息。
AT+QMTPUB=0,1,1,0,"$aws/things/M26_0206/shadow/update/accepted",32 >This is publish data from client
OK
+QMTPUB: 0,1,0
# 如果客户端订阅了名为 "$aws/things/M26_0206/shadow/update/accepted" 的主题,其他设备向服务器发布相同主题,模块将报告以下信息。
+QMTRECV: 0,1,"$aws/things/M26_0206/shadow/update/accepted",32,"This is publish data from client"
# 断开与 MQTT 服务器的连接。
AT+QMTDISC=0
OK
+QMTDISC: 0,0
HTTP(S) 相关 AT 命令
发送 HTTPS GET 请求并读取响应
以下示例显示如何发送 HTTP GET 请求并启用 HTTP 响应头的输出,以及如何读取 HTTP GET 响应。
// 发送 HTTP GET 响应。
AT+QHTTPCFG="rsp/header",1 # 启用输出 HTTP(S) 响应头。
OK
AT+QHTTPCFG="url","http://www.example.com" # 设置要访问的 URL。
OK
AT+QHTTPGET=80 # 发送 HTTPS GET 请求,最大响应时间为 80 s。
OK
+QHTTPGET: 0,200,601710 # 如果 HTTPS 响应头包含 Content-Length 信息,则将报告 <content_length> 信息。
# 读取 HTTPS 响应。
# 解决方案 1:读取 HTTPS 响应信息并通过 UART 输出。
AT+QHTTPREAD=80 # 读取 HTTPS 响应信息并通过 UART 输出。等待 HTTPS 会话关闭的最大时间为 80 s。
CONNECT
HTTP/1.1 200 OK <CR><LF> # HTTPS 响应头和正文。
Server: nginx<CR><LF>
Date: Tue, 12 Sep 2017 05:57:29 GMT<CR><LF>
Content-Type: text/html<CR><LF>
Content-Length: 601710<CR><LF>
Connection: close<CR><LF>
Last-Modified: Tue, 12 Sep 2017 05:54:48 GMT<CR><LF>
Vary: Accept-Encoding<CR><LF>
Expires: Tue, 12 Sep 2017 05:58:28 GMT<CR><LF>
Cache-Control: max-age=60<CR><LF>
X-Powered-By: shci_v1.03<CR><LF>
Age: 1<CR><LF>
......<CR><LF> # 此处省略行。
<CR><LF>
<body>
OK
+QHTTPREAD: 0 # 成功读取 HTTPS 响应头和正文。
# 发送 HTTPS POST 请求并读取响应。
# 以下示例显示如何发送 HTTPS POST 请求以及如何读取 HTTPS POST 响应。
AT+QHTTPCFG="url","http://example.com/DEMOWebServices2.8/Service.asmx/Echo?" # 设置要访问的 URL。
OK
AT+QHTTPPOST=20,80,80 # 发送 HTTPS POST 请求。HTTPS POST 正文从 UART 获取。最大输入正文时间为 80 s,最大响应时间为 80 s。
CONNECT
Message=HelloQuectel # 输入 HTTPS POST 正文,其长度为 20 字节。(此 POST 正文仅为示例。请在实践中输入正确的。
OK
+QHTTPPOST: 0,200,177 # 如果 HTTPS 响应头包含 Content-Length 信息,则报告 <content_length> 信息。
AT+QHTTPREAD=80 # 读取 HTTPS 响应正文并通过 UART 输出。等待 HTTPS 会话关闭的最大时间为 80 s。
CONNECT
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="httpHTTPs://example.com/webservices2.3">Message='HelloQuectel' ASCII:72 101 108 108 111 81 117 101 99 116 101 108 </string> # 输出 HTTP 响应。
OK
+QHTTPREAD: 0 # HTTPS 响应正文输出成功。
# 发送 HTTPS PUT 请求并读取响应
以下示例显示如何发送 HTTPS PUT 请求以及如何读取 HTTPS PUT 响应。
AT+QHTTPCFG="url","http://example.com/DEMOWebServices2.8/Service.asmx/Echo?" # 设置要访问的 URL。
OK
AT+QHTTPPUT=20,80,80 # 发送 HTTPS PUT 请求。HTTPS PUT 正文从 UART 获取。最大输入正文时间为 80 s,最大响应时间为 80 s。
CONNECT
Message=HelloQuectel # 输入 HTTPS PUT 正文,其长度为 20 字节。(此 PUT 正文仅为示例。请在实践中输入正确的。
OK
+QHTTPPUT: 0,200,177 # 如果 HTTPS 响应头包含 Content-Length 信息,则报告 <content_length> 信息。
AT+QHTTPREAD=80 # 读取 HTTPS 响应正文并通过 UART 输出。等待 HTTPS 会话关闭的最大时间为 80 s。
CONNECT
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="httpHTTPs://example.com/webservices2.3">Message='HelloQuectel' ASCII:72 101 108 108 111 81 117 101 99 116 101 108 </string> # 输出 HTTP 响应。
OK
+QHTTPREAD: 0 # HTTPS 响应正文输出成功。
# 访问 HTTPS 服务器。
# 发送 HTTPS GET 请求并读取响应
# 以下示例显示如何发送 HTTP GET 请求并启用 HTTP 响应头的输出,以及如何读取 HTTP GET 响应。
# 发送 HTTP GET 请求。
AT+QHTTPCFG="rsp/header",1 # 启用输出 HTTP(S) 响应头。
OK
AT+QHTTPCFG="sslctxid",1 # 将 SSL 上下文 ID 设置为 1。
OK
AT+QSSLCFG="sslversion",1,1 # 将 SSL 版本设置为 TLSV1.0。
OK
AT+QSSLCFG="ciphersuite",1,0×0005 # 将 SSL 密码套件设置为 TLS_RSA_WITH_RC4_128_SHA。
OK
AT+QSSLCFG="seclevel",1,0 # 将认证模式设置为 "no authentication"。
OK
AT+QHTTPCFG="url","https://www.example.com" # 设置要访问的 URL。
OK
AT+QHTTPGET=80 # 发送 HTTPS GET 请求,最大响应时间为 80 s。
OK
+QHTTPGET: 0,200,21472 # 如果 HTTPS 响应头包含 Content-Length 信息,则将报告 <content_length> 信息。
# 读取 HTTPS 响应。
# 解决方案 1:读取 HTTPS 响应信息并通过 UART 输出。
AT+QHTTPREAD=80 # 读取 HTTPS 响应信息并通过 UART 输出。等待 HTTPS 会话关闭的最大时间为 80 s。
CONNECT # HTTPS 响应头和正文。
HTTP/1.1 200 OK<CR><LF>
Server: Tengine/2.1.0<CR><LF>
Date: Tue, 12 Sep 2017 05:54:34 GMT <CR><LF>
Content-Type: text/html; charset=utf-8<CR><LF>
Content-Length: 21451<CR><LF>
Connection: keep-alive <CR><LF>
......<CR><LF> # 此处省略行。
<CR><LF>
<body>
OK
+QHTTPREAD: 0 # 成功读取 HTTPS 响应头和正文。
# 发送 HTTPS POST 请求并读取响应。
# 以下示例显示如何发送 HTTPS POST 请求以及如何读取 HTTPS POST 响应。
AT+QHTTPCFG="sslctxid",1 # 将 SSL 上下文 ID 设置为 1。
OK
AT+QSSLCFG="sslversion",1,1 # 将 SSL 版本设置为 TLSV1.0。
OK
AT+QSSLCFG="ciphersuite",1,0×0005 # 将 SSL 密码套件设置为 TLS_RSA_WITH_RC4_128_SHA。
OK
AT+QSSLCFG="seclevel",1,2 # 将认证模式设置为 "Perform server and client authentication if requested by the remote server"。
OK
AT+QFOPEN="ca.pem"
+QFOPEN: 1
OK
AT+QFWRITE=1,1757
CONNECT
+QFWRITE: 1757,1757
OK
AT+QFCLOSE=1
OK
AT+QFOPEN="user.pem"
+QFOPEN: 1
OK
AT+QFWRITE=1,1684
CONNECT
+QFWRITE: 1684,1684
OK
AT+QFCLOSE=1
OK
AT+QFOPEN="user_key.pem"
+QFOPEN: 1
OK
AT+QFWRITE=1,2455
CONNECT
+QFWRITE: 2455,2455
OK
AT+QFCLOSE=1
OK
AT+QSSLCFG="cacert",1,"ca.pem" # 为 SSL 上下文设置可信 CA 证书的路径。
OK
AT+QSSLCFG="clientcert",1,"user.pem" # 为 SSL 上下文设置客户端证书的路径。
OK
AT+QSSLCFG="clientkey",1,"user_key.pem" # 为 SSL 上下文设置客户端私钥。
OK
AT+QHTTPCFG="url","https://192.0.2.2:8011/processorder.php" # 设置要访问的 URL。
OK
AT+QHTTPPOST=48,80,80 # 发送 HTTPS POST 请求。HTTPS POST 正文从 UART 获取。最大输入正文时间为 80 s,最大响应时间为 80 s。
CONNECT
Message=1111&Appleqty=2222&Orangeqty=3333&find=1 # 输入 HTTPS POST 正文,其长度为 48 字节。(此 POST 正文仅为示例。请在实践中输入正确的。
OK
+QHTTPPOST: 0,200,285 # 如果 HTTPS 响应头包含 Content-Length 信息,则报告 <content_length> 信息。
AT+QHTTPREAD=80 # 读取 HTTPS 响应正文并通过 UART 输出。等待 HTTPS 会话关闭的最大时间为 80 s。
CONNECT # HTTPS 响应读取成功。
<html>
<head>
<title>Quectel's Auto Parts - Order Results</title>
</head>
<body>
<h1>Quectel's Auto Parts</h1>
<h2>Order Results</h2>
<p>Order processed at 02:49, 27th December</p><p>Your order is as follows: </p>1111 message<br />2222 apple<br />3333 orange<br /></body> </html>
OK
+QHTTPREAD: 0 # HTTPS 响应输出成功。
# 发送 HTTPS PUT 请求并读取响应。
以下示例显示如何发送 HTTPS PUT 请求以及如何读取 HTTPS PUT 响应。
AT+QHTTPCFG="sslctxid",1 # 将 SSL 上下文 ID 设置为 1。
OK
AT+QSSLCFG="sslversion",1,1 # 将 SSL 版本设置为 TLSV1.0。
OK
AT+QSSLCFG="ciphersuite",1,0×0005 # 将 SSL 密码套件设置为 TLS_RSA_WITH_RC4_128_SHA。
OK
AT+QSSLCFG="seclevel",1,2 # 将认证模式设置为 "Perform server and client authentication if requested by the remote server"。
OK
AT+QHTTPCFG="url","https://192.0.2.2:8011/processorder.php" # 设置要访问的 URL。
OK
AT+QHTTPPUT=48,80,80 # 发送 HTTPS PUT 请求。HTTPS PUT 正文从 UART 获取。最大输入正文时间为 80 s,最大响应时间为 80 s。
CONNECT
Message=1111&Appleqty=2222&Orangeqty=3333&find=1 # 输入 HTTPS PUT 正文,其长度为 48 字节。(此 PUT 正文仅为示例。请在实践中输入正确的。
OK
+QHTTPPUT: 0,200,285 # 如果 HTTPS 响应头包含 Content-Length 信息,则报告 <content_length> 信息。
AT+QHTTPREAD=80 # 读取 HTTPS 响应正文并通过 UART 输出。等待 HTTPS 会话关闭的最大时间为 80 s。
CONNECT # HTTPS 响应读取成功。
<html>
<head>
<title>Quectel's Auto Parts - Order Results</title>
</head>
<body>
<h1>Quectel's Auto Parts</h1>
<h2>Order Results</h2>
<p>Order processed at 02:49, 27th December</p><p>Your order is as follows: </p>1111 message<br />2222 apple<br />3333 orange<br /></body>
</html>
OK
+QHTTPREAD: 0 # HTTPS 响应输出成功。
结果代码总结
TCP/UDP/SSL 结果代码:
| 结果代码 | 描述 |
|---|---|
| 0 | 操作成功 |
| 550 | 未知错误 |
| 551 | 操作被阻塞 |
| 552 | 参数无效 |
| 553 | 内存不足 |
| 554 | 套接字创建失败 |
| 555 | 不支持的操作 |
| 556 | 套接字绑定失败 |
| 557 | 套接字监听失败 |
| 558 | 套接字写入失败 |
| 559 | 套接字读取失败 |
| 560 | 套接字接受失败 |
| 561 | 套接字身份已被使用 |
| 562 | DNS 忙碌 |
| 563 | DNS 失败 |
| 564 | 套接字连接失败 |
| 565 | 套接字已关闭 |
| 566 | 操作忙碌 |
| 567 | 操作超时 |
| 568 | 取消发送 |
| 569 | 不允许的操作 |
| 570 | 端口忙碌 |
HTTP(S) 结果代码:
| 结果代码 | 描述 |
|---|---|
| 0 | 操作成功 |
| 701 | HTTP(S) 未知错误 |
| 702 | HTTP(S) 超时 |
| 703 | HTTP(S) 忙碌 |
| 704 | HTTP(S) UART 忙碌 |
| 705 | HTTP(S) 无请求 |
| 706 | HTTP(S) 网络错误 |
| 707 | HTTP(S) URL 错误 |
| 708 | HTTP(S) 空 URL |
| 709 | HTTP(S) IP 地址错误 |
| 710 | HTTP(S) DNS 错误 |
| 711 | HTTP(S) 套接字创建错误 |
| 712 | HTTP(S) 套接字连接错误 |
| 713 | HTTP(S) 套接字读取错误 |
| 714 | HTTP(S) 套接字写入错误 |
| 715 | HTTP(S) 套接字已关闭 |
| 716 | HTTP(S) 数据编码错误 |
| 717 | HTTP(S) 数据解码错误 |
| 718 | HTTP(S) 读取超时 |
| 719 | HTTP(S) 响应失败 |
| 720 | 输入超时 |
| 721 | 等待数据超时 |
| 722 | HTTP(S) 响应超时 |
| 723 | 内存不足 |
| 724 | 参数无效 |
附录参考
术语和缩写:
| 缩写 | 描述 |
|---|---|
| ACK | 确认 |
| AP | 接入点 |
| BLE | 低功耗蓝牙 |
| BSSID | 基本服务集标识符 |
| DHCP | 动态主机配置协议 |
| DNS | 域名服务器 |
| DTIM | 传递流量指示消息 |
| GATT | 通用属性配置文件 |
| MAC | 介质访问控制 |
| MQTT | 消息队列遥测传输 |
| MTU | 最大传输单元 |
| HTTP | 超文本传输协议 |
| HTTPS | 超文本传输协议安全 |
| ID | 大多数情况下指软件中的标识符 |
| IP | 互联网协议 |
| OTA | 空中技术 |
| PSK | 预共享密钥 |
| QoS | 服务质量 |
| RSSI | 接收信号强度指示器 |
| SNI | 服务器名称指示 |
| STA | 站点 |
| SSID | 服务集标识符 |
| SSL | 安全套接字层 |
| TA | 终端适配器 |
| TCP | 传输控制协议 |
| TLS | 传输层安全 |
| TTL | 生存时间 |
| UDP | 用户数据报协议 |
| UFS | 用户文件系统 |
| URC | 非请求结果代码 |
| UUID | 通用唯一标识符 |