FCM242D 和 FGM842D 系列模块的 AT 命令手册

介绍

本文档概述了 Quectel FCM242D 和 FGM842D 系列模块支持的 Wi-Fi、BLE、TCP/UDP、SSL、MQTT、HTTP(S) 和其他功能的 AT 命令。

定义

  • 回车字符。
  • 换行字符。
  • <...> 参数名称。尖括号不出现在命令行中。
  • [...] 可选参数或命令的可选部分。方括号不出现在命令行中。当命令中未给出可选参数时,新值等于其以前的值或默认设置,除非另有指定。
  • 下划线 参数的默认设置。

AT 命令语法

所有命令行必须以 ATat 开头,并以 结尾。信息响应和结果代码始终以回车字符和换行字符开始和结束:。在本文档中呈现命令和响应的表格中,仅呈现命令和响应,并故意省略

模块实现的 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 命令处理器完成处理一行后,将输出 OKERROR+CME ERROR: 以指示它已准备好接受新命令。征求的信息响应在最终 OKERROR+CME ERROR: 之前发送。

响应将采用以下格式:

+CMD1:

OK

OK

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 广告数据。

BLE Advertising Format

Command Type Syntax Response
Write Command AT+QBLEADVDATA=<adv_data> OK
Or
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>] OK
Or
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

注意

  1. 通过命令最多只能设置三个 BLE 特征 UUID。当 <att_cfg> 被省略时,每个特征 UUID 的属性默认为 Notify 和 Write no response。

  2. 当模块作为外围设备操作时,您必须通过 AT+QBLEGATTSSRV 建立 BLE 服务,然后通过 AT+QBLEGATTSCHAR 设置 BLE 特征 UUID。否则,蓝牙广告、扫描和连接功能无法正常使用。

  3. 您必须先创建 BLE 服务,然后设置 BLE 特征 UUID。

AT+QBLEGATTSSRVDONE

此命令完成外围设备操作时的 BLE 服务添加。

Command Type Syntax Response
Execute Command AT+QBLEGATTSSRVDONE OK
Or
ERROR

最大响应时间: 300 ms

特性: -

注意

当模块作为外围设备操作时,您必须通过 AT+QBLEGATTSCHAR 设置 BLE 特征 UUID,然后通过 AT+QBLEGATTSSRVDONE 完成 BLE 服务添加。否则,蓝牙广告、扫描和连接功能无法正常使用。

AT+QBLEADVSTART

此命令启动外围设备操作时的 BLE 广告。

Command Type Syntax Response
Read Command AT+QBLEADVSTART? +QBLEADVSTART: <adv_state>
OK
If there is any error:
ERROR
Execution Command AT+QBLEADVSTART OK
Or
ERROR

最大响应时间: 1000 ms

特性: -

参数:

<adv_state> 整数类型。广告状态。

  1. 广告已停止
  2. 广告已启动

AT+QBLEADVSTOP

此命令停止外围设备操作时的 BLE 广告。

Command Type Syntax Response
Execution Command AT+QBLEADVSTOP OK
Or
ERROR

最大响应时间: 300 ms

特性: -

AT+QBLEGATTSNTFY

此命令发送外围设备操作时的 GATT 数据。

Command Type Syntax Response
Write Command AT+QBLEGATTSNTFY=<conn_idx>,<UUID>[,<hex_length>],<data> OK
Or
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>
OK
If there is any error:
ERROR
Write Command AT+QBLESCAN=<scan>[,<timeout>] If is 0:
OK
Or
ERROR
If is 1:
OK
+QBLESCAN: <name>,<address_type>,<BLE_addr>
Or
ERROR
If is 2 or 3:
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。当 为 2 时必须设置。
字符串类型。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>
OK
If there is any error:
ERROR
Write Command AT+QBLESCANPARAM=<scan_interval>,<scan_window> OK
Or
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>] OK
Or
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>
OK
If there is any error:
ERROR
Write Command AT+QBLECONNPARAM=<conn_idx>,<con_interval>,<timeout>,<latency> OK
Or
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> 之间的关系应如下:<con_interval> × 小于 的值。

AT+QBLECFGMTU

此命令配置中央设备操作时的 BLE MTU。

BLE 的最大传输单元只能在单次 BLE 连接后设置一次。

Command Type Syntax Response
Read Command AT+QBLECFGMTU? +QBLECFGMTU: <MTU_value>
OK
If there is any error:
ERROR
Write Command AT+QBLECFGMTU=<MTU_value> OK
Or
ERROR

最大响应时间: 300 ms

特性: 命令立即生效。配置不保存。

参数:

<MTU_value> 整数类型。最大传输单元值。单位:字节。范围:64--512。默认值:64。

AT+QBLEGATTCNTFCFG

此命令启用或禁用中央设备操作时的通知。

Command Type Syntax Response
Write Command AT+QBLEGATTCNTFCFG=<conn_idx>,<UUID>,<enable> OK
Or
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。

字符串类型。特征 UUID。长度:4 字节或 32 字节。

无双引号的字符串类型。要读取的 GATT 数据。

AT+QBLEGATTCWRCMD

此命令通过写入命令发送中央设备操作时的 GATT 数据。

Command Type Syntax Response
Write Command AT+QBLEGATTCWRCMD=<conn_idx>,<UUID>[,<hex_length>],<data> OK
Or
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> OK
Or
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>] OK
Or
ERROR

最大响应时间: 300 ms

特性: -

参数:

<conn_idx> 整数类型。BLE 连接建立时模块自动分配的目标设备索引。<conn_idx> 当前只能设置为 0。

AT+QBLESTAT

此命令查询中央设备或外围设备操作时的 BLE 设备状态。

Command Type Syntax Response
Execution Command AT+QBLESTAT +QBLESTAT: <BLE_state>
OK
If 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>] CONNECT
Or
ERROR

最大响应时间: 500 ms

特性: -

参数:

Parameter Description
字符串类型。特征 UUID。长度:4 字节或 32 字节。
整数类型。此参数仅在模块作为外围设备操作时生效。
1. 如果模块先进入透明传输模式,然后在 BLE 断开连接后退出透明传输模式,则在成功 BLE 连接后模块不会进入透明传输模式。
2. 如果模块先进入透明传输模式,然后在 BLE 断开连接后退出透明传输模式,则在成功 BLE 连接后模块会自动进入透明传输模式。

注意

  1. 当模块作为中央设备操作时,建立 BLE 连接并完成对等设备服务发现后,执行 AT+QBLETRANMODE 以启用模块进入透明传输模式。断开 BLE 连接后,模块自动退出透明传输模式。您只能在透明传输模式下通过写入命令发送数据。

  2. 当模块作为外围设备操作时,启用广告或建立 BLE 连接后,执行命令以启用模块进入透明传输模式。您只能在透明传输模式下通过 Notify 发送数据。

  3. 如果您输入 +++ 以启用模块退出透明传输模式,则在成功 BLE 连接后模块不会进入透明传输模式。

  4. 模块进入透明传输模式后,每个数据包的长度不能超过 <MTU_value>-3。否则,数据包可能会丢失。您可以通过 URC +QBLEMTU 获取 <MTU_value> 的长度。

+++

此命令启用模块退出透明传输模式。

Command Type Syntax Response
Execution Command +++ OK
Or
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> 表示套接字服务是否已成功打开。

  1. 如果 <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" 相同。

  2. 如果 <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> 检索接收的数据。

  3. 建议在执行写命令后等待 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 章*。

注意

  1. 命令中的 <IP_address>/<domain_name> 表示可以配置 <IP_address><domain_name>,但不能同时指定。

  2. <service_type> 为 "TCP LISTENER"/"UDP SERVICE" 时,<access_mode> 不能设置为 2。要在透明传输模式下传输数据,必须使用客户端连接的 <connectID>

AT+QICLOSE

描述: 关闭指定的套接字服务。根据网络,执行 AT+QICLOSE 后最多需要 10 s(默认值,可通过 <timeout> 修改)返回 OKERROR。只有在响应返回后才能执行其他 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> 整数类型。套接字服务状态。

  1. "Initial": 连接尚未建立
  2. "Opening": 客户端正在连接或服务器正在尝试监听
  3. "Connected": 客户端/传入连接已建立
  4. "Listening": 服务器正在监听
  5. "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 FAILERROR

  • 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: 0
OK
如果有任何错误:
ERROR
Write Command AT+QIRD=<connectID>
(when <service_type> is "UDP SERVICE")
如果数据存在:
+QIRD: <read_actual_length>,<remoteIP>,<remote_port>,<CR><LF><data>
OK
如果没有数据:
+QIRD: 0
OK
如果有任何错误:
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 CONNECT
Or
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>] OK
Or
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。

注意

  1. 如果 <will_fg>=1,则必须指定 <will_qos><will_retain><willtopic><willmessage>。否则,它们被省略。

  2. <clean_session>=0 仅在服务器支持存储会话信息操作时有效。

  3. 如果 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>]
[...]
OK
If 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>]
[...]
OK
If 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。
  1. 如果此命令执行成功并返回 OK,客户端可以继续发布新数据包。要传输的数据包的最大数量不应大于飞行窗口大小(5);否则,返回 ERROR

注意

  1. 执行此命令后,客户端准备发送数据,该数据作为有效负载发送。一次输入数据的最大长度为 2048 字节。如果输入数据的长度超过 2048 字节,请分段发送数据。

  2. 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>]
[...]
OK
If 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>
OK
If 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+QHTTPREADAT+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) 请求头已完全发送,它将提示输入正文:
CONNECT
TA 切换到透明访问模式,可以输入 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) 请求头。

  1. 禁用
  2. 启用

<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) 请求头已完全发送:
CONNECT
TA 切换到透明访问模式,可以输入 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) 请求头。

  1. 禁用
  2. 启用

<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+QFREADAT+QFWRITEAT+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> 整数类型。文件的打开模式。

  1. 如果文件不存在,将创建它。如果文件存在,将直接打开。两者都可以读写。
  2. 如果文件不存在,将创建它。如果文件存在,将覆盖并清除。两者都可以读写。
  3. 如果文件存在,打开它并且只能读取。当文件不存在时,将响应错误。

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>]] CONNECT
TA 切换到数据模式。当写入数据的总大小达到 <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> OK
Or
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> OK
Or
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 字段中,如下图所示。

UUID 0xFFF2 中接收到的数据

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 通用唯一标识符