查看“︁AT模块 4: TCP/IP 相关 AT 命令(TCP/IP Related AT Commands)”︁的源代码
←
AT模块 4: TCP/IP 相关 AT 命令(TCP/IP Related AT Commands)
跳转到导航
跳转到搜索
因为以下原因,您没有权限编辑该页面:
不允许您执行您所请求的操作。
您可以查看和复制此页面的源代码。
= TCP/IP 相关 AT 命令 = == 指令列表 == {| class="wikitable" ! 指令 ! 描述 |- | <code>AT+CIPV6</code> | 启用/禁用互联网协议第 6 版 (IPv6) 网络 |- | <code>AT+CIFSR</code> | 获取本地 IP 地址和 MAC 地址 |- | <code>AT+CIPDOMAIN</code> | 解析域名 |- | <code>AT+CIPDNS</code> | 查询/设置 DNS 服务器信息 |- | <code>AT+CIPSTATE</code> | 获取 TCP/UDP/SSL 连接信息 |- | <code>AT+CIPRECVBUF</code> | 查询/设置 TCP/UDP/SSL 接收缓冲区大小 |- | <code>AT+CIPSTART</code> | 建立 TCP 连接、UDP 传输或 SSL 连接 |- | <code>AT+CIPSTARTEX</code> | 使用自动分配的 ID 建立 TCP 连接、UDP 传输或 SSL 连接 |- | <code>AT+CIPTCPOPT</code> | 查询/设置 socket 选项 |- | <code>AT+CIPCLOSE</code> | 关闭 TCP/UDP/SSL 连接 |- | <code>AT+CIPSEND</code> | 在普通传输模式或 Wi-Fi 透传模式下发送数据 |- | <code>AT+CIPSENDL</code> | 在普通传输模式下并行发送长数据 |- | <code>AT+CIPSENDLCFG</code> | 设置命令 AT+CIPSENDL 的配置 |- | <code>AT+CIPSENDEX</code> | 以扩展方式在普通传输模式下发送数据 |- | <code>AT+CIPDINFO</code> | 设置 "+IPD" 消息模式 |- | <code>AT+CIPMUX</code> | 启用/禁用多连接模式 |- | <code>AT+CIPSERVER</code> | 删除/创建 TCP/SSL 服务器 |- | <code>AT+CIPSERVERMAXCONN</code> | 查询/设置服务器允许的最大连接数 |- | <code>AT+CIPSTO</code> | 查询/设置本地 TCP 服务器超时时间 |- | <code>AT+SAVETRANSLINK</code> | 设置是否在启动时进入 Wi-Fi 透传模式 |- | <code>AT+CIPSNTPCFG</code> | 查询/设置时区和 SNTP 服务器 |- | <code>AT+CIPSNTPTIME</code> | 查询 SNTP 时间 |- | <code>AT+CIPSNTPINTV</code> | 查询/设置 SNTP 时间同步间隔 |- | <code>AT+CIPRECONNINTV</code> | 查询/设置 Wi-Fi 透传模式下的 TCP/UDP/SSL 重连间隔 |- | <code>AT+CIPRECVMODE</code> | 查询/设置 socket 接收模式 |- | <code>AT+CIPRECVDATA</code> | 在被动接收模式下获取 socket 数据 |- | <code>AT+CIPRECVLEN</code> | 在被动接收模式下获取 socket 数据长度 |- | <code>AT+PING</code> | Ping 远程主机 |- | <code>AT+CIPEVT</code> | 开启或关闭以 +CIP 为前缀的事件消息通知 |- | <code>AT+CWEVT</code> | 开启或关闭以 +CW 为前缀的事件消息通知 |- | <code>AT+CIPSSLCCONF</code> | 查询/设置 SSL 客户端 |- | <code>AT+CIPSSLCSNI</code> | 查询/设置 SSL 客户端服务器名称指示 |- | <code>AT+CIPSSLCALPN</code> | 查询/设置 SSL 客户端应用层协议协商 (ALPN) |- | <code>AT+CIPSSLCPSK</code> | 查询/设置字符串格式的 SSL 客户端预共享密钥 (PSK) |- | <code>AT+CIPSSLCPSKHEX</code> | 查询/设置十六进制格式的 SSL 客户端预共享密钥 (PSK) |- | <code>AT+IPERF</code> | 测试 BFLB 在独立模式下的吞吐量 |- | <code>AT+IPERFSTOP</code> | 停止测试 BFLB 的吞吐量 |} == 基本 AT 命令描述 == === AT+CIPV6 === '''功能''':启用/禁用互联网协议第 6 版 (IPv6) 网络。 ==== 查询命令 ==== '''功能''': 查询是否启用了 IPv6。 '''命令''': <pre> AT+CIPV6? </pre> '''响应''': <pre> +CIPV6:<enable> OK </pre> ==== 设置命令 ==== '''功能''': 启用/禁用 IPv6 网络。 '''命令''': <pre> AT+CIPV6=<enable> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<enable>''':IPv6 网络的状态。默认值:0。 * 0:禁用 IPv6 网络 * 1:启用 IPv6 网络 === AT+CIFSR === '''功能''':获取本地 IP 地址和 MAC 地址。 ==== 执行命令 ==== '''命令''': <pre> AT+CIFSR </pre> '''响应''': <pre> // AP 模式 // AT+CWMODE=2 +CIFSR:APIP,<"APIP"> +CIFSR:APIP6LL,<"APIP6LL"> +CIFSR:APMAC,<"APMAC"> // STA 模式 // AT+CWMODE=1 +CIFSR:STAIP,<"STAIP"> +CIFSR:STAIP6LL,<"STAIP6LL"> +CIFSR:STAIP6GL,<"STAIP6GL"> +CIFSR:STAMAC,<"STAMAC"> OK </pre> ==== 参数 ==== * '''<"APIP">''':Wi-Fi softAP 接口的 IPv4 地址 * '''<"APIP6GL">''':Wi-Fi softAP 接口的全球 IPv6 地址 * '''<"APMAC">''':Wi-Fi softAP 接口的 MAC 地址 * '''<"STAIP">''':Wi-Fi station 接口的 IPv4 地址 * '''<"STAIP6LL">''':Wi-Fi station 接口的本地链路 IPv6 地址 * '''<"STAIP6GL">''':Wi-Fi station 接口的全球 IPv6 地址 * '''<"STAMAC">''':Wi-Fi station 接口的 MAC 地址 === AT+CIPDOMAIN === '''功能''':解析域名。 ==== 设置命令 ==== '''命令''': <pre> AT+CIPDOMAIN=<"domain name">[,<ip network>] </pre> '''响应''': <pre> +CIPDOMAIN:<"IP address"> OK </pre> ==== 参数 ==== * '''<"domain name">''':域名 * '''<ip network>''':首选 IP 网络。默认值:1 * 1:优先解析 IPv4 地址 * 2:仅解析 IPv4 地址 * 3:仅解析 IPv6 地址 * '''<"IP address">''':解析后的 IPv4 地址或 IPv6 地址 ==== 示例 ==== <pre> AT+CWMODE=1 // 设置 station 模式 AT+CWJAP="SSID","password" // 连接到互联网 AT+CIPDOMAIN="www.google.com" // 域名解析功能 // 仅解析 IPv4 地址的域名解析功能 AT+CIPDOMAIN="www.google.com",2 // 仅解析 IPv6 地址的域名解析功能 AT+CIPDOMAIN="www.google.com",3 </pre> === AT+CIPDNS === '''功能''':设置/查询当前 DNS 服务器信息。 ==== 查询命令 ==== '''功能''': 查询当前 DNS 服务器信息。 '''命令''': <pre> AT+CIPDNS? </pre> '''响应''': <pre> +CIPDNS:<enable>[,<"DNS IP1">][,<"DNS IP2">][,<"DNS IP3">] OK </pre> ==== 设置命令 ==== '''功能''': 设置 DNS 服务器信息。 '''命令''': <pre> AT+CIPDNS=<enable>[,<"DNS IP1">][,<"DNS IP2">][,<"DNS IP3">] </pre> '''响应''': <pre> OK </pre> 或 <pre> ERROR </pre> ==== 参数 ==== * '''<enable>''':域名 * 0:启用来自 DHCP 的自动 DNS 服务器设置。DNS 将恢复为 208.67.222.222 和 8.8.8.8。仅当 BFLB station 完成 DHCP 过程时,BFLB station 的 DNS 服务器才能更新 * 1:启用手动 DNS 服务器设置。如果您未为 <DNS IPx> 设置值,默认将使用 208.67.222.222 和 8.8.8.8 * '''<"DNS IP1">''':第一个 DNS 服务器 IP 地址。对于设置命令,此参数仅在您将 <enable> 设置为 1 时有效,即启用手动 DNS 设置。如果您将 <enable> 设置为 1 并为此参数设置值,当您运行查询命令时,BLC-AT 将返回此参数作为当前 DNS 设置 * '''<"DNS IP2">''':第二个 DNS 服务器 IP 地址。对于设置命令,此参数仅在您将 <enable> 设置为 1 时有效,即启用手动 DNS 设置。如果您将 <enable> 设置为 1 并为此参数设置值,当您运行查询命令时,BLC-AT 将返回此参数作为当前 DNS 设置 * '''<"DNS IP3">''':第三个 DNS 服务器 IP 地址。对于设置命令,此参数仅在您将 <enable> 设置为 1 时有效,即启用手动 DNS 设置。如果您将 <enable> 设置为 1 并为此参数设置值,当您运行查询命令时,BLC-AT 将返回此参数作为当前 DNS 设置 ==== 注意事项 ==== * 如果 AT+SYSSTORE=1,配置更改将保存在 NVS 区域中 * 三个参数不能设置为同一个服务器 * 当 <enable> 设置为 1 时,DNS 服务器可能会根据 BFLB 连接的路由器配置而更改 ==== 示例 ==== <pre> AT+CIPDNS=0 AT+CIPDNS=1,"114.114.114.114" </pre> === AT+CIPSTATE === '''功能''':获取 TCP/UDP/SSL 连接信息。 ==== 查询命令 ==== '''命令''': <pre> AT+CIPSTATE? </pre> '''响应''': 当有连接时,AT 返回: <pre> +CIPSTATE:<link ID>,<"type">,<"remote IP">,<remote port>,<local port>,<tetype> OK </pre> 当没有连接时,AT 返回: <pre> OK </pre> ==== 参数 ==== * '''<link ID>''':连接的 ID(0~4),用于多连接 * '''<"type">''':显示传输类型的字符串参数:"TCP"、"TCPv6"、"UDP"、"UDPv6"、"SSL" 或 "SSLv6" * '''<"remote IP">''':显示远程 IPv4 地址的字符串参数 * '''<remote port>''':远程端口号 * '''<local port>''':本地端口号 * '''<tetype>''': * 0:BL61x 作为客户端运行 * 1:BL61x 作为服务器运行 === AT+CIPRECVBUF === '''功能''':查询/设置 TCP/UDP/SSL 接收缓冲区大小。 ==== 设置命令 ==== '''命令''': <pre> // 单连接 (AT+CIPMUX=0): AT+CIPRECVBUF=<size> // 多连接 (AT+CIPMUX=1): AT+CIPRECVBUF=<linkid>,<size> </pre> '''响应''': 此命令需要在该 ID 没有连接时使用;否则将返回 ERROR。 <pre> +CIPRECVBUF OK </pre> ==== 参数 ==== * '''<linkid>''':连接的 ID(0~4),用于多连接 * '''<size>''':设置缓冲区大小,单位字节 ==== 查询命令 ==== '''命令''': <pre> // 单连接 (AT+CIPMUX=0): AT+CIPRECVBUF? // 多连接 (AT+CIPMUX=1): AT+CIPRECVBUF=<linkid>? </pre> '''响应''': 返回 linkid 的缓冲区大小,默认缓冲区大小为 2920。 <pre> +CIPRECVBUF:<size> OK </pre> === AT+CIPSTART === '''功能''':建立 TCP 连接、UDP 传输或 SSL 连接。 ==== 建立 TCP 连接 ==== ===== 设置命令 ===== '''命令''': <pre> // 单连接 (AT+CIPMUX=0): AT+CIPSTART=<"type">,<"remote host">,<remote port>[,<keep_alive>][,<"local IP">][,<timeout>] // 多连接 (AT+CIPMUX=1): AT+CIPSTART=<link ID>,<"type">,<"remote host">,<remote port>[,<keep_alive>][,<"local IP">][,<timeout>] </pre> '''响应''': 对于单连接,返回: <pre> +CIP:CONNECTED OK </pre> 对于多连接,返回: <pre> +CIP:<link ID>,CONNECTED OK </pre> ===== 参数 ===== * '''<link ID>''':网络连接的 ID(0~4),用于多连接 * '''<"type">''':显示传输类型的字符串参数:"TCP"、"TCPv6"、"UDP"、"UDPv6"、"SSL"、"SSLv6"。默认值:"TCP" * '''<"remote host">''':远程主机的 IPv4/IPv6 地址或域名。最大长度为 64 字节。如果您需要使用域名且域名长度超过 64 字节,请使用 AT+CIPDOMAIN 命令获取域名对应的 IP 地址,然后使用该 IP 地址建立连接 * '''<remote port>''':远程端口号 * '''<keep_alive>''':它为 socket 配置 <code>SO_KEEPALIVE</code> 选项。单位:秒 * 范围:[0,7200] * 0:禁用 keep-alive 功能(默认) * 1 ~ 7200:启用 keep-alive 功能。<code>TCP_KEEPIDLE</code> 值为 '''<keep_alive>''',<code>TCP_KEEPINTVL</code> 值为 1,<code>TCP_KEEPCNT</code> 值为 3 * 此命令的参数与 AT+CIPTCPOPT 命令的 <code><keep_alive></code> 参数相同。它始终采用这两个命令中后设置的值。如果省略或未设置,默认使用最后配置的值 * '''<"local IP">''':连接绑定的本地 IPv4 地址或 IPv6 地址。此参数在使用多个网络接口或多个 IP 地址时很有用。默认情况下,它是禁用的。如果要使用它,应该先指定它。空值也是有效的 * '''<timeout>''':命令超时时间。单位:毫秒。默认值:0。范围:[0,20000]。设置为 0 时,命令超时取决于网络和 lwIP 协议栈;设置为非零值时,命令将在指定的超时时间内返回 ===== 注意事项 ===== * 要基于 IPv6 网络建立 TCP 连接,请执行以下操作: * 确保 AP 支持 IPv6 * 设置 AT+CIPV6=1 * 通过 AT+CWJAP 命令获取 IPv6 地址 * (可选)使用 AT+CIPSTA? 命令检查 BFLB 是否已获取 IPv6 地址 ===== 示例 ===== <pre> AT+CIPSTART="TCP","192.168.101.110",1000 AT+CIPSTART="TCP","192.168.101.110",2500,60 AT+CIPSTART="TCP","192.168.101.110",1000,,"192.168.101.100" AT+CIPSTART="TCPv6","test-ipv6.com",80 AT+CIPSTART="TCPv6","fe80::860d:8eff:fe9d:cd90",1000,,"fe80::411c:1fdb:22a6:4d24" </pre> ==== 查询命令 ==== '''命令''': <pre> AT+CIPSTART? </pre> '''响应''': 对于单连接,返回: <pre> +CIPSTART:<link ID>,<"type">,<"ip">,<remote_port>,<local_port>,<tetype> OK </pre> ===== 参数 ===== * '''<link ID>''':连接的 ID(0~4),用于多连接 * '''<"type">''':显示传输类型的字符串参数:"TCP"、"TCPv6"、"UDP"、"UDPv6"、"SSL" 或 "SSLv6" * '''<"remote IP">''':显示远程 IPv4 地址的字符串参数 * '''<remote port>''':远程端口号 * '''<local port>''':本地端口号 * '''<tetype>''': * 0:BL61x 作为客户端运行 * 1:BL61x 作为服务器运行 === AT+CIPSTARTEX === '''功能''':使用自动分配的 ID 建立 TCP 连接、UDP 传输或 SSL 连接。 此命令类似于 AT+CIPSTART,只是在多连接模式下(AT+CIPMUX=1)不需要自己分配 ID。系统将自动为新连接分配一个 ID。 === +++:退出数据模式 === ==== 特殊执行命令 ==== '''功能''': 从数据模式退出并进入命令模式。 '''命令''': <pre> // 仅用于数据模式 +++ </pre> ==== 注意事项 ==== * 此特殊执行命令由三个相同的 <code>+</code> 字符(0x2b ASCII)组成,命令尾部不附加 CR-LF * 确保第一个 <code>+</code> 字符之前的间隔大于 20 毫秒,第三个 <code>+</code> 字符之后的间隔大于 20 毫秒,三个 <code>+</code> 字符之间的间隔小于 20 毫秒。否则,<code>+</code> 字符将作为正常数据发送 * 此命令不返回任何响应 * 请在发送下一个 AT 命令之前至少等待一秒 === AT+CIPTCPOPT === '''功能''':查询/设置 socket 选项。 ==== 查询命令 ==== '''功能''': 查询当前 socket 选项。 '''命令''': <pre> AT+CIPTCPOPT? </pre> '''响应''': <pre> +CIPTCPOPT:<link_id>,<so_linger>,<tcp_nodelay>,<so_sndtimeo>,<keepalive> OK </pre> ==== 设置命令 ==== '''命令''': <pre> // 单 TCP 连接 (AT+CIPMUX=0): AT+CIPTCPOPT=[<so_linger>],[<tcp_nodelay>],[<so_sndtimeo>],[<keepalive>] // 多 TCP 连接 (AT+CIPMUX=1): AT+CIPTCPOPT=<link ID>,[<so_linger>],[<tcp_nodelay>],[<so_sndtimeo>],[<keepalive>] </pre> '''响应''': <pre> OK </pre> 或 <pre> ERROR </pre> ==== 参数 ==== * '''<link_id>''':连接的 ID(0 ~ max)。对于多连接,如果值为 max,则表示所有连接。默认情况下,max 为 5 * '''<so_linger>''':为 socket 配置 <code>SO_LINGER</code> 选项。单位:秒。默认值:-1 * = -1:关闭 * = 0:开启,linger 时间 = 0 * > 0:开启,linger 时间 = <so_linger> * '''<tcp_nodelay>''':为 socket 配置 <code>TCP_NODELAY</code> 选项。默认值:0 * 0:禁用 TCP_NODELAY * 1:启用 TCP_NODELAY * '''<so_sndtimeo>''':为 socket 配置 <code>SO_SNDTIMEO</code> 选项。单位:毫秒。默认值:0 * '''<keepalive>''':它为 socket 配置 <code>SO_KEEPALIVE</code> 选项。单位:秒 * 范围:[0,7200] * 0:禁用 keep-alive 功能(默认) * 1 ~ 7200:启用 keep-alive 功能。<code>TCP_KEEPIDLE</code> 值为 '''<keepalive>''',<code>TCP_KEEPINTVL</code> 值为 1,<code>TCP_KEEPCNT</code> 值为 3 * 此命令的参数与 AT+CIPTCPOPT 命令的 <code><keepalive></code> 参数相同。它始终采用这两个命令中后设置的值。如果省略或未设置,默认使用最后配置的值 在低功耗模式下设置较低的 keepalive 值将导致功耗增加 ==== 注意事项 ==== * 在配置这些 socket 选项之前,'''请确保您完全了解它们的功能以及配置后可能产生的影响''' * 不建议将 SO_LINGER 选项设置为较大的值。例如,如果将 SO_LINGER 值设置为 60,那么如果 BL61x 由于网络问题无法从远程 TCP 对等方接收 TCP FIN 数据包,AT+CIPCLOSE 命令将阻塞 60 秒,因此 BL61x 无法响应任何其他 AT 命令。因此,建议保持 SO_LINGER 选项的默认值 * TCP_NODELAY 选项适用于吞吐量小但实时性要求高的情况。如果启用此选项,LwIP 将加速 TCP 传输,但在网络环境较差的情况下,由于重传,吞吐量会降低。因此,建议保持 TCP_NODELAY 选项的默认值 * SO_SNDTIMEO 选项适用于未在 AT+CIPSTART 命令中配置 keepalive 参数的情况。配置此选项后,AT+CIPSEND、AT+CIPSENDL 和 AT+CIPSENDEX 命令将在此超时时间内退出,无论数据是否成功发送。这里,建议将 SO_SNDTIMEO 设置为 5 ~ 10 秒 * SO_KEEPALIVE 选项用于主动定期检测连接是否断开。通常建议在 AT 作为 TCP 服务器时配置此选项。配置此选项后,将消耗额外的网络带宽。SO_KEEPALIVE 的建议值应不小于 60 秒 在低功耗模式下设置较低的 keepalive 值将导致功耗增加 === AT+CIPCLOSE === '''功能''':关闭 TCP/UDP/SSL 连接。 ==== 设置命令 ==== '''功能''': 在多连接模式下关闭 TCP/UDP/SSL 连接。 '''命令''': <pre> AT+CIPCLOSE=<link ID> </pre> '''响应''': <pre> <link ID>,CLOSED OK </pre> ==== 执行命令 ==== '''功能''': 在单连接模式下关闭 TCP/UDP/SSL 连接。 '''命令''': <pre> AT+CIPCLOSE </pre> '''响应''': <pre> CLOSED OK </pre> ==== 参数 ==== * '''<link ID>''':要关闭的连接的 ID。如果设置为 5,则所有连接都将关闭 === AT+CIPSEND === '''功能''':在普通传输模式或 Wi-Fi 透传模式下发送数据 ==== 设置命令 ==== '''功能''': 设置在普通传输模式下要发送的数据长度。如果您需要发送的数据长度超过 8192 字节,请使用 AT+CIPSENDL 命令。 '''命令''': <pre> // 单连接:(AT+CIPMUX=0) AT+CIPSEND=<length> // 多连接:(AT+CIPMUX=1) AT+CIPSEND=<link ID>,<length> // 可以为 UDP 传输设置远程主机和端口: AT+CIPSEND=[<link ID>,]<length>[,<"remote host">,<remote port>] </pre> '''响应''': <pre> OK > </pre> 此响应表示 AT 已准备好接收串口数据。您应该输入数据,当数据长度达到 <code><length></code> 值时,开始数据传输。 如果无法建立连接或在数据传输期间连接中断,系统返回: <pre> ERROR </pre> 如果数据已成功发送到协议栈(并不意味着数据已发送到对端),系统返回: <pre> SEND OK </pre> ==== 执行命令 ==== '''功能''': 进入 Wi-Fi 透传模式。 '''命令''': <pre> AT+CIPSEND </pre> '''响应''': <pre> OK > </pre> 或 <pre> ERROR </pre> 进入 Wi-Fi 透传模式。BL61x 每次最多可以接收 8192 字节并发送 2920 字节。如果 BL61x 接收到的数据达到或超过 2920 字节,数据将立即以 2920 字节的块发送。否则,它将等待 20 毫秒后再发送(您可以使用 AT+TRANSINTVL 命令配置此间隔)。当接收到包含 +++ 的单个数据包时,BL61x 将退出 Wi-Fi 透传模式下的数据发送模式。请在发送下一个 AT 命令之前至少等待一秒。 此命令仅可用于 Wi-Fi 透传模式下的单连接。对于 UDP Wi-Fi 透传,使用 AT+CIPSTART 时 <code><mode></code> 参数必须为 0。 ==== 参数 ==== * '''<link ID>''':连接的 ID(0~4),用于多连接 * '''<length>''':数据长度。最大值:8192 字节 * '''<"remote host">''':远程主机的 IPv4 地址或域名。可以在 UDP 传输中设置 * '''<remote port>''':远程端口号 ==== 注意事项 ==== * 您可以使用 AT+CIPTCPOPT 命令为每个 TCP 连接配置 socket 选项。例如,将 <so_sndtimeo> 设置为 5000 将使 TCP 发送操作在 5 秒内返回结果,无论成功还是失败。这可以节省 MCU 等待 AT 命令响应的时间 === AT+CIPSENDL === '''功能''':在普通传输模式下并行发送长数据。 ==== 设置命令 ==== '''功能''': 在普通传输模式下,设置要发送的数据长度,然后并行向远程主机发送数据(AT 命令端口与 AT 向远程主机发送数据并行接收数据)。您可以使用 AT+CIPSENDLCFG 命令配置此命令。如果您需要发送的数据长度小于 8192 字节,也可以使用 AT+CIPSEND 命令。 '''命令''': <pre> // 单连接:(AT+CIPMUX=0) AT+CIPSENDL=<length> // 多连接:(AT+CIPMUX=1) AT+CIPSENDL=<link ID>,<length> // 可以为 UDP 传输设置远程主机和端口: AT+CIPSENDL=[<link ID>,]<length>[,<"remote host">,<remote port>] </pre> '''响应''': <pre> OK > </pre> 此响应表示 AT 进入数据模式,AT 命令端口已准备好接收数据。您现在可以输入数据。一旦端口接收到数据,它将被推送到底层协议栈并开始传输。 如果传输开始,系统根据 AT+CIPSENDLCFG 配置报告消息: <pre> +CIPSENDL:<had sent len>,<port recv len> </pre> 如果传输被 +++ 命令取消,系统返回: <pre> SEND CANCELLED </pre> 如果不是所有数据都已发送,系统最终返回: <pre> SEND FAIL </pre> 如果数据已成功发送到协议栈(并不意味着数据已发送到对端),系统最终返回: <pre> SEND OK </pre> 当连接断开时,您可以发送 +++ 命令取消传输,然后 BL61x 将退出数据模式,否则,数据模式将不会结束,直到 AT 命令端口接收到指定 <code><length></code> 的所有数据。 ==== 参数 ==== * '''<link ID>''':连接的 ID(0~4),用于多连接 * '''<length>''':数据长度。最大值:2³¹ - 1 字节 * '''<"remote host">''':远程主机的 IPv4 地址或域名。可以在 UDP 传输中设置 * '''<remote port>''':远程端口号 * '''<had sent len>''':已成功发送到底层协议栈的数据长度 * '''<port recv len>''':AT 命令端口接收的数据长度 ==== 注意事项 ==== * 建议使用 UART 流控制,因为如果 UART 接收数据的速度比网络发送速度快,可能会发生数据丢失 * 您可以使用 AT+CIPTCPOPT 命令为每个 TCP 连接配置 socket 选项。例如,将 <so_sndtimeo> 设置为 5000 将使 TCP 发送操作在 5 秒内返回结果,无论成功还是失败。这可以节省 MCU 等待 AT 命令响应的时间 === AT+CIPSENDLCFG === '''功能''':设置命令 AT+CIPSENDL 的配置。 ==== 查询命令 ==== '''功能''': 查询 AT+CIPSENDL 的配置 '''命令''': <pre> AT+CIPSENDLCFG? </pre> '''响应''': <pre> +CIPSENDLCFG:<report size>,<transmit size> OK </pre> ==== 设置命令 ==== '''功能''': 设置 AT+CIPSENDL 的配置。 '''命令''': <pre> AT+CIPSENDLCFG=<report size>[,<transmit size>] </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<report size>''':AT+CIPSENDL 的报告块大小。默认值:1024。范围:[100,2²⁰]。例如,将 <code><report size></code> 设置为 100,AT+CIPSENDL 响应中的 <code><had sent len></code> 报告序列将为(100, 200, 300, 400, ...)。最终的 <code><had sent len></code> 报告始终等于已发送的数据长度 * '''<transmit size>''':AT+CIPSENDL 的传输块大小。它指定发送到底层协议栈的数据块的大小。默认值:2920。范围:[100,2920]。如果 BL61x 接收到的数据达到或超过 <code><transmit size></code> 字节,数据将立即以 <code><transmit size></code> 字节的块发送。否则,它将等待 20 毫秒后再发送(您可以使用 AT+TRANSINTVL 命令配置此间隔) ==== 注意事项 ==== * 对于吞吐量小但实时性要求高的设备,建议设置较小的 <code><transmit size></code>。还建议通过 AT+CIPTCPOPT 命令设置 <code>TCP_NODELAY</code> * 对于吞吐量大的设备,建议设置较大的 <code><transmit size></code> === AT+CIPSENDEX === '''功能''':以扩展方式在普通传输模式下发送数据。 ==== 设置命令 ==== '''功能''': 设置在普通传输模式下要发送的数据长度,或使用 <code>\0</code>(0x5c, 0x30 ASCII)触发数据传输。 '''命令''': <pre> // 单连接:(AT+CIPMUX=0) AT+CIPSENDEX=<length> // 多连接:(AT+CIPMUX=1) AT+CIPSENDEX=<link ID>,<length> // 可以为 UDP 传输设置远程主机和端口: AT+CIPSENDEX=[<link ID>,]<length>[,<"remote host">,<remote port>] </pre> '''响应''': <pre> OK > </pre> 此响应表示 AT 已准备好接收数据。您应该输入指定长度的数据。当数据长度达到 <code><length></code> 值,或数据中出现字符串 <code>\0</code> 时,开始传输。 如果无法建立连接或在传输期间连接断开,系统返回: <pre> ERROR </pre> 如果数据已成功发送到协议栈(并不意味着数据已发送到对端),系统返回: <pre> SEND OK </pre> ==== 参数 ==== * '''<link ID>''':连接的 ID(0~4),用于多连接 * '''<length>''':数据长度。最大值:8192 字节 * '''<"remote host">''':远程主机的 IPv4 地址或域名。可以在 UDP 传输中设置 * '''<remote port>''':可以在 UDP 传输中设置远程端口 ==== 注意事项 ==== * 当满足数据长度要求,或出现字符串 <code>\0</code>(ASCII 中为 0x5c, 0x30)时,开始数据传输。返回到正常命令模式并等待下一个 AT 命令 * 如果数据包含 \<any>,则表示删除反斜杠符号,仅使用 <code><any></code> 字符 * 发送 <code>\0</code> 时,请使用反斜杠将其转义为 <code>\\0</code> * 您可以使用 AT+CIPTCPOPT 命令为每个 TCP 连接配置 socket 选项。例如,将 <so_sndtimeo> 设置为 5000 将使 TCP 发送操作在 5 秒内返回结果,无论成功还是失败。这可以节省 MCU 等待 AT 命令响应的时间 === AT+CIPDINFO === '''功能''':设置 "+IPD" 消息模式。 ==== 查询命令 ==== '''命令''': <pre> AT+CIPDINFO? </pre> '''响应''': <pre> +CIPDINFO:true OK </pre> 或 <pre> +CIPDINFO:false OK </pre> ==== 设置命令 ==== '''命令''': <pre> AT+CIPDINFO=<mode> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<mode>''': * 0:不在 "+IPD" 消息中显示远程主机和端口 * 1:在 "+IPD" 消息中显示远程主机和端口 ==== 示例 ==== <pre> AT+CIPDINFO=1 </pre> === AT+CIPMUX === '''功能''':启用/禁用多连接。 ==== 查询命令 ==== '''功能''': 查询连接类型。 '''命令''': <pre> AT+CIPMUX? </pre> '''响应''': <pre> +CIPMUX:<mode> OK </pre> ==== 设置命令 ==== '''功能''': 设置连接类型。 '''命令''': <pre> AT+CIPMUX=<mode> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<mode>''':连接模式。默认值:0 * 0:单连接 * 1:多连接 ==== 注意事项 ==== * 此模式只能在所有连接断开后更改 * 如果要在 TCP/SSL 服务器运行时设置单连接模式,应先删除服务器。(AT+CIPSERVER=0) ==== 示例 ==== <pre> AT+CIPMUX=1 </pre> === AT+CIPSERVER === '''功能''':删除/创建 TCP/SSL 服务器。 ==== 查询命令 ==== '''功能''': 查询 TCP/SSL 服务器状态。 '''命令''': <pre> AT+CIPSERVER? </pre> '''响应''': <pre> +CIPSERVER:<mode>[,<port>,<"type">][,<CA enable>][,<keepalive>] OK </pre> ==== 设置命令 ==== '''命令''': <pre> AT+CIPSERVER=<mode>[,<param2>][,<"type">][,<CA enable>][,<keepalive>] </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<mode>''': * 0:删除服务器 * 1:创建服务器 * '''<param2>''':根据参数 <code><mode></code> 表示不同的含义: * 如果 <code><mode></code> 为 1,<code><param2></code> 表示端口号。默认值:333 * 如果 <code><mode></code> 为 0,<code><param2></code> 表示服务器是否关闭所有连接。默认值:0 * 0:关闭服务器并保持现有连接 * 1:关闭服务器并关闭所有连接 * '''<"type">''':服务器类型:"TCP"、"TCPv6"、"SSL" 或 "SSLv6"。默认值:"TCP" * '''<CA enable>''': * 0:禁用 CA * 1:启用 CA * '''<keepalive>''':它为 socket 配置 <code>SO_KEEPALIVE</code> 选项。单位:秒 * 范围:[0,7200] * 0:禁用 keep-alive 功能(默认) * 1 ~ 7200:启用 keep-alive 功能。<code>TCP_KEEPIDLE</code> 值为 '''<keepalive>''',<code>TCP_KEEPINTVL</code> 值为 1,<code>TCP_KEEPCNT</code> 值为 3 * 此命令的参数与 AT+CIPTCPOPT 命令的 <code><keepalive></code> 参数相同。它始终采用这两个命令中后设置的值。如果省略或未设置,默认使用最后配置的值 在低功耗模式下设置较低的 keepalive 值将导致功耗增加 ==== 注意事项 ==== * 只有在启用多连接时才能创建 TCP/SSL 服务器(AT+CIPMUX=1) * 创建服务器时会自动创建服务器监视器。最多只能创建一个服务器 * 当客户端连接到服务器时,它将占用一个连接并被分配一个 ID * 删除服务器时必须省略参数 <code><"type"></code> 和 <code><CA enable></code> ==== 示例 ==== <pre> // 创建 TCP 服务器 AT+CIPMUX=1 AT+CIPSERVER=1,80 // 创建 SSL 服务器 AT+CIPMUX=1 AT+CIPSERVER=1,443,"SSL",1 // 删除服务器并关闭所有客户端 AT+CIPSERVER=0,1 </pre> === AT+CIPSERVERMAXCONN === '''功能''':查询/设置服务器允许的最大连接数。 ==== 查询命令 ==== '''功能''': 获取允许连接到 TCP/SSL 服务器的最大客户端数。 '''命令''': <pre> AT+CIPSERVERMAXCONN? </pre> '''响应''': <pre> +CIPSERVERMAXCONN:<num> OK </pre> ==== 设置命令 ==== '''功能''': 设置允许连接到 TCP/SSL 服务器的最大客户端数。 '''命令''': <pre> AT+CIPSERVERMAXCONN=<num> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<num>''':允许连接到 TCP/SSL 服务器的最大客户端数。范围:[1,5]。关于如何更改此范围的上限,请参考 AT+CIPSTART 命令的 <code><link ID></code> 参数的描述 ==== 注意事项 ==== * 您应该在创建服务器之前调用命令 <code>AT+CIPSERVERMAXCONN=<num></code> ==== 示例 ==== <pre> AT+CIPMUX=1 AT+CIPSERVERMAXCONN=2 AT+CIPSERVER=1,80 </pre> === AT+CIPSTO === '''功能''':查询/设置本地 TCP/SSL 服务器超时时间。 ==== 查询命令 ==== '''功能''': 查询本地 TCP/SSL 服务器超时时间。 '''命令''': <pre> AT+CIPSTO? </pre> '''响应''': <pre> +CIPSTO:<time> OK </pre> ==== 设置命令 ==== '''功能''': 设置本地 TCP/SSL 服务器超时时间。 '''命令''': <pre> AT+CIPSTO=<time> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<time>''':本地 TCP/SSL 服务器超时时间。单位:秒。范围:[0,7200] ==== 注意事项 ==== * 当 TCP/SSL 客户端在 <code><time></code> 值内不与 BL61x 服务器通信时,服务器将终止此连接 * 如果您将 <code><time></code> 设置为 0,连接将永远不会超时。不建议此配置 * 当客户端在设定时间内与服务器发起通信或服务器与客户端发起通信时,定时器将重新启动。超时后,客户端关闭 ==== 示例 ==== <pre> AT+CIPMUX=1 AT+CIPSERVER=1,1001 AT+CIPSTO=10 </pre> === AT+SAVETRANSLINK === '''功能''':设置是否在启动时进入 Wi-Fi 透传模式。 ==== 对于 TCP/SSL 单连接 ==== ===== 设置命令 ===== '''命令''': <pre> AT+SAVETRANSLINK=<mode>,<"remote host">,<remote port>[,<"type">,<keep alive>] </pre> '''响应''': <pre> OK </pre> ===== 参数 ===== * '''<mode>''': * 0:BL61x 不会在启动时进入 Wi-Fi 透传模式 * 1:BL61x 将在启动时进入 Wi-Fi 透传模式 * '''<"remote host">''':显示远程主机 IPv4 地址或域名的字符串参数 * '''<remote port>''':远程端口号 * '''<"type">''':显示传输类型的字符串参数:"TCP"、"TCPv6"、"SSL" 或 "SSLv6"。默认值:"TCP" * '''<keep alive>''':TCP keep-alive 间隔。默认值:0 * 0:禁用 keep-alive 功能 * 1 ~ 7200:检测间隔。单位:秒 ===== 注意事项 ===== * 此命令将 Wi-Fi 透传模式配置保存在 easyflash 区域中。如果 <code><mode></code> 设置为 1,BL61x 设备将在任何后续电源循环中进入 Wi-Fi 透传模式。配置将在 BL61x 重启后生效 * 只要远程主机和端口有效,配置就会保存在 flash 中 ===== 示例 ===== <pre> AT+SAVETRANSLINK=1,"192.168.6.110",1002,"TCP" AT+SAVETRANSLINK=1,"www.google.com",443,"SSL" AT+SAVETRANSLINK=1,"240e:3a1:2070:11c0:55ce:4e19:9649:b75",8080,"TCPv6" AT+SAVETRANSLINK=1,"240e:3a1:2070:11c0:55ce:4e19:9649:b75",8080,"SSLv6" </pre> ==== 对于 UDP 传输 ==== ===== 设置命令 ===== '''命令''': <pre> AT+SAVETRANSLINK=<mode>,<"remote host">,<remote port>,[<"type">,<local port>] </pre> '''响应''': <pre> OK </pre> ===== 参数 ===== * '''<mode>''': * 0:BL61x 不会在启动时进入 Wi-Fi 透传模式 * 1:BL61x 将在启动时进入 Wi-Fi 透传模式 * '''<"remote host">''':显示远程主机 IPv4 地址或域名的字符串参数 * '''<remote port>''':远程端口号 * '''<"type">''':显示传输类型的字符串参数:"UDP" 或 "UDPv6"。默认值:"TCP" * '''<local port>''':在启动时启用 UDP Wi-Fi 透传时的本地端口 ===== 注意事项 ===== * 此命令将 Wi-Fi 透传模式配置保存在 easyflash 区域中。如果 <code><mode></code> 设置为 1,BL61x 设备将在任何后续电源循环中进入 Wi-Fi 透传模式。配置将在 BL61x 重启后生效 * 只要远程主机和端口有效,配置就会保存在 flash 中 ===== 示例 ===== <pre> AT+SAVETRANSLINK=1,"192.168.6.110",1002,"UDP",1005 AT+SAVETRANSLINK=1,"240e:3a1:2070:11c0:55ce:4e19:9649:b75",8081,"UDPv6",1005 </pre> === AT+CIPSNTPCFG === '''功能''':查询/设置时区和 SNTP 服务器。 ==== 查询命令 ==== '''命令''': <pre> AT+CIPSNTPCFG? </pre> '''响应''': <pre> +CIPSNTPCFG:<enable>,<timezone>,<SNTP server1>[,<SNTP server2>,<SNTP server3>] OK </pre> ==== 设置命令 ==== '''命令''': <pre> AT+CIPSNTPCFG=<enable>,<timezone>[,<SNTP server1>,<SNTP server2>,<SNTP server3>] </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<enable>''':配置 SNTP 服务器: * 1:已配置 SNTP 服务器 * 0:未配置 SNTP 服务器 * '''<timezone>''':支持以下两种格式: * 第一种格式范围为 [-12,14]。它通过与世界协调时 (UTC) 的**整小时**偏移来标记大多数时区(`UTC–12:00`__ 到 `UTC+14:00`_) * 第二种格式是 <code>UTC offset</code>。<code>UTC offset</code> 指定必须加到 UTC 时间以获取本地时间值的时间值。它的语法类似于 <code>[+|-][hh]mm</code>。如果本地时区位于本初子午线以西,则为负;如果在以东,则为正。小时(hh)必须介于 -12 和 14 之间,分钟(mm)介于 0 和 59 之间。例如,如果要将时区设置为新西兰(查塔姆群岛),它位于 <code>UTC+12:45</code>,则应将参数 <code><timezone></code> 设置为 <code>1245</code>。有关更多信息,请参考 `UTC offset wiki`_ * '''[<SNTP server1>]''':第一个 SNTP 服务器 * '''[<SNTP server2>]''':第二个 SNTP 服务器 * '''[<SNTP server3>]''':第三个 SNTP 服务器 ==== 注意事项 ==== * 如果未配置三个 SNTP 服务器,将使用以下默认服务器之一:"cn.ntp.org.cn"、"ntp.sjtu.edu.cn" 和 "us.pool.ntp.org" * 对于查询命令,响应中的 <code><timezone></code> 参数可能与设置命令中的 <code><timezone></code> 参数不同。因为 <code><timezone></code> 参数支持第二种 <code>UTC offset</code> 格式,例如,设置 <code>AT+CIPSNTPCFG=1,015</code>,对于查询命令,BL61x-AT 忽略 <code><timezone></code> 参数的前导零,有效值为 <code>15</code>。它不属于第一种格式,因此根据第二种 <code>UTC offset</code> 格式解析,即 <code>UTC+00:15</code>,即响应中的 <code>timezone</code> 为 0 ==== 示例 ==== <pre> // 启用 SNTP 服务器,将时区设置为美国纽约 (UTC–05:00) AT+CIPSNTPCFG=1,-5,"0.pool.ntp.org","time.google.com" 或 AT+CIPSNTPCFG=1,-500,"0.pool.ntp.org","time.google.com" // 启用 SNTP 服务器,将时区设置为新西兰(查塔姆群岛,UTC+12:45) AT+CIPSNTPCFG=1,1245,"0.pool.ntp.org","time.google.com" </pre> === AT+CIPSNTPTIME === '''功能''':查询 SNTP 时间。 ==== 查询命令 ==== '''命令''': <pre> AT+CIPSNTPTIME? </pre> '''响应''': <pre> +CIPSNTPTIME:<asctime style time> OK </pre> ==== 注意事项 ==== * asctime 风格的时间定义在 `asctime man page`_ * 当 BL61x 进入 Light-sleep 或 Deep-sleep 模式然后唤醒时,系统时间可能变得不准确。建议重新发送 AT+CIPSNTPCFG 命令以从 NTP 服务器获取新时间 ==== 示例 ==== <pre> AT+CWMODE=1 AT+CWJAP="AP_TEST","1234567890" AT+CIPSNTPCFG=1,-5,"0.pool.ntp.org","time.google.com" AT+CIPSNTPTIME? +CIPSNTPTIME:Tue Oct 19 17:47:56 2021 OK 或 AT+CWMODE=1 AT+CWJAP="AP_TEST","1234567890" AT+CIPSNTPCFG=1,530 AT+CIPSNTPTIME? +CIPSNTPTIME:Tue Oct 19 15:17:56 2021 OK </pre> === AT+CIPSNTPINTV === '''功能''':查询/设置 SNTP 时间同步间隔。 ==== 查询命令 ==== '''命令''': <pre> AT+CIPSNTPINTV? </pre> '''响应''': <pre> +CIPSNTPINTV:<interval second> OK </pre> ==== 设置命令 ==== '''命令''': <pre> AT+CIPSNTPINTV=<interval second> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<interval second>''':SNTP 时间同步间隔。单位:秒。范围:[15,4294967] ==== 注意事项 ==== * 它配置同步间隔,这意味着它设置 BL61x 连接到 NTP 服务器获取新时间的频率 ==== 示例 ==== <pre> AT+CIPSNTPCFG=1,-5,"0.pool.ntp.org","time.google.com" OK // 每小时同步 SNTP 时间 AT+CIPSNTPINTV=3600 OK </pre> === AT+CIPRECONNINTV === '''功能''':查询/设置 Wi-Fi 透传模式下的 TCP/UDP/SSL 重连间隔。 ==== 查询命令 ==== '''功能''': 查询 Wi-Fi 透传模式的自动连接间隔。 '''命令''': <pre> AT+CIPRECONNINTV? </pre> '''响应''': <pre> +CIPRECONNINTV:<interval> OK </pre> ==== 设置命令 ==== '''功能''': 设置 Wi-Fi 透传模式下 TCP/UDP/SSL 传输中断时的自动重连间隔。 '''命令''': <pre> AT+CIPRECONNINTV=<interval> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<interval>''':自动重连之间的持续时间。单位:100 毫秒。默认值:1。范围:[1,36000] ==== 注意事项 ==== * 如果 AT+SYSSTORE=1,配置更改将保存在 easyflash 区域中 ==== 示例 ==== <pre> AT+CIPRECONNINTV=10 </pre> === AT+CIPRECVMODE === '''功能''':查询/设置 socket 接收模式。 ==== 查询命令 ==== '''功能''': 查询 socket 接收模式。 '''命令''': <pre> AT+CIPRECVMODE? </pre> '''响应''': <pre> +CIPRECVMODE:<mode> OK </pre> ==== 设置命令 ==== '''命令''': <pre> AT+CIPRECVMODE=<mode> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<mode>''':socket 数据的接收模式。默认值:0 * 0:主动模式。BLC-AT 将立即将所有接收到的 socket 数据发送到主机 MCU,并带有 "+IPD" 标头(socket 接收窗口默认为 2920 字节。每次发送到 MCU 的最大有效字节数为 2920 字节) * 1:被动模式。BLC-AT 将接收到的 socket 数据保存在内部缓冲区(socket 接收窗口,默认为 2920 字节)中,并等待主机 MCU 读取。如果缓冲区已满,socket 传输将被阻塞(对于 TCP/SSL 连接),或者数据将丢失(对于 UDP 连接) ==== 注意事项 ==== * 该配置不能在 Wi-Fi 透传模式下使用。如果是被动模式下的 UDP 传输,缓冲区已满时数据将丢失 * 当 BLC-AT 在被动模式下接收 socket 数据时,它将在不同场景下提示以下消息: 对于多连接模式(AT+CIPMUX=1),消息为 +IPD:<link ID>,<len> 对于单连接模式(AT+CIPMUX=0),消息为 +IPD:<len> * <len> 是缓冲区中 socket 数据的总长度 * 一旦有 +IPD 报告,您应该通过运行 AT+CIPRECVDATA 来读取数据。否则,在读取之前的 +IPD 之前,不会向主机 MCU 报告下一个 +IPD * 连接断开时,缓存将被清除 ==== 示例 ==== <pre> AT+CIPRECVMODE=1 </pre> === AT+CIPRECVDATA === 在被动接收模式下获取 socket 数据。 ==== 设置命令 ==== '''命令''': <pre> // 单连接:(AT+CIPMUX=0) AT+CIPRECVDATA=<len> // 多连接:(AT+CIPMUX=1) AT+CIPRECVDATA=<link_id>,<len> </pre> '''响应''': <pre> +CIPRECVDATA:<actual_len>,<data> OK </pre> ==== 参数 ==== * '''<mode>''':socket 数据的接收模式。默认值:0 * '''<link_id>''':多连接模式下的连接 ID * '''<len>''':最大值为 0x7fffffff。如果接收数据的实际长度小于 len,则返回实际长度 * '''<actual_len>''':您实际获取的数据长度 * '''<data>''':您要获取的数据 ==== 示例 ==== <pre> AT+CIPRECVMODE=1 // 例如,如果主机 MCU 获取到在 No.0 连接中接收 100 字节数据的消息, // 消息将为 "+IPD:0,100" // 然后您可以使用以下命令读取这 100 字节数据 AT+CIPRECVDATA=0,100 </pre> === AT+CIPRECVLEN === '''功能''':在被动接收模式下获取 socket 数据长度。 ==== 查询命令 ==== '''功能''': 查询为连接缓冲的整个数据的长度。 '''命令''': <pre> AT+CIPRECVLEN? </pre> '''响应''': <pre> // 单连接:(AT+CIPMUX=0) +CIPRECVLEN:<data length of link> OK // 多连接:(AT+CIPMUX=1) +CIPRECVLEN:<data length of link0>,<data length of link1>,<data length of link2>,<data length of link3>,<data length of link4> OK </pre> ==== 注意事项 ==== * 对于 SSL 连接,BLC-AT 返回的数据长度可能小于实际数据长度 ==== 示例 ==== <pre> AT+CIPRECVLEN? // 多连接:(AT+CIPMUX=1) +CIPRECVLEN:100,0,0,0,0, // 单连接:(AT+CIPMUX=0) +CIPRECVLEN:100 OK </pre> === AT+PING === '''功能''':Ping 远程主机。 ==== 设置命令 ==== '''功能''': Ping 远程主机。 '''命令''': <pre> AT+PING=<"host"> AT+PING=<"host">,[<len>,<count>,<interval>] </pre> '''响应''': <pre> +PING:<time> OK </pre> 或 <pre> +PING:TIMEOUT // 仅在域名解析失败或 ping 超时时返回此响应 ERROR </pre> ==== 参数 ==== * '''<"host">''':显示主机 IPv4 或 IPV6 地址或域名的字符串参数 * '''<len>''':ping 数据包的长度。单位:字节。范围:(0,65535) * '''<count>''':ping 数据包的计数 * '''<interval>''':ping 数据包之间的间隔。单位:毫秒。范围:(0,65535) * '''<time>''':ping 的响应时间。单位:毫秒。范围:(0,1000) ==== 注意事项 ==== * 如果远程主机是域名字符串,ping 将首先从 DNS(域名服务器)解析域名(首选 IPv4 地址),然后 ping 远程 IP 地址 ==== 示例 ==== <pre> AT+PING="192.168.1.1" AT+PING="www.google.com" AT+PING="192.168.1.1",64,8,500 // 中国未来互联网工程技术中心 AT+PING="240c::6666" </pre> === AT+CIPEVT === '''功能''':开启或关闭以 +CIP 为前缀的事件消息通知。 ==== 设置命令 ==== '''功能''': 开启或关闭以 +CIP 为前缀的事件消息通知。 '''命令''': <pre> AT+CIPEVT=<enable> </pre> '''响应''': <pre> +CIPEVT OK </pre> ==== 参数 ==== * '''<enable>''':开启或关闭以 +CIP 为前缀的事件消息通知 * 1:启用打印 "+CIP" 事件 * 0:禁用打印 "+CIP" 事件 ==== 查询命令 ==== '''功能''': 查询以 +CIP 为前缀的事件消息通知。 '''命令''': <pre> AT+CIPEVT? </pre> '''响应''': <pre> +CIPEVT:<enable> OK </pre> === AT+CWEVT === '''功能''':开启或关闭以 +CW 为前缀的事件消息通知。 ==== 设置命令 ==== '''功能''': 开启或关闭以 +CW 为前缀的事件消息通知。 '''命令''': <pre> AT+CWEVT=<enable> </pre> '''响应''': <pre> +CWEVT OK </pre> ==== 参数 ==== * '''<enable>''':开启或关闭以 +CW 为前缀的事件消息通知 * 1:启用打印 "+CW" 事件 * 0:禁用打印 "+CW" 事件 ==== 查询命令 ==== '''功能''': 查询以 +CW 为前缀的事件消息通知。 '''命令''': <pre> AT+CWEVT? </pre> '''响应''': <pre> +CWEVT:<enable> OK </pre> === AT+CIPSSLCCONF === '''功能''':查询/设置 SSL 客户端。 ==== 查询命令 ==== '''功能''': 查询 BFLB 作为 SSL 客户端的每个连接的配置。 '''命令''': <pre> AT+CIPSSLCCONF? </pre> '''响应''': <pre> +CIPSSLCCONF:<linkid>,<auth_mode>,"<cert_name>","<key_name>","<ca_name>" OK </pre> ==== 设置命令 ==== '''命令''': <pre> // 单连接:(AT+CIPMUX=0) AT+CIPSSLCCONF=<auth_mode>[,"<cert_name>"][,"<key_name>"][,"<ca_name>"] // 多连接:(AT+CIPMUX=1) AT+CIPSSLCCONF=<linkid>,<auth_mode>[,"<cert_name>"][,"<key_name>"][,"<ca_name>"] </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<linkid>''':连接的 ID(0~4),用于多连接 * '''<auth_mode>''': * 0:无认证。在这种情况下,不需要 <pki_number> 和 <ca_number> * 1:客户端提供客户端证书供服务器验证 * 2:客户端加载 CA 证书以验证服务器的证书 * 3:双向认证 * '''<cert_name>''':证书的文件名 * '''<key_name>''':私钥的文件名 * '''<ca_name>''':客户端用于验证服务器的 CA 的文件名 ==== 示例 ==== <pre> // 单连接:(AT+CIPMUX=0) AT+CIPSSLCCONF=3,"cert_01.crt","private_01.key","ca_01.crt" // 无认证 (AT+CIPMUX=1) AT+CIPSSLCCONF=0,0 // 客户端认证 (AT+CIPMUX=1) AT+CIPSSLCCONF=0,1,"","","ca_01.crt" // 服务器认证 (AT+CIPMUX=1) AT+CIPSSLCCONF=0,2,"cert_01.crt","private_01.key" // 双向认证 (AT+CIPMUX=1) AT+CIPSSLCCONF=0,3,"cert_01.crt","private_01.key","ca_01.crt" </pre> ==== 注意事项 ==== * 如果您希望此配置立即生效,请在建立 SSL 连接之前运行此命令 * 下载 AT 固件时,必须下载 littlefs 文件系统,默认文件系统挂载到 /lfs * 如果需要动态修改证书内容,可以参考命令:<code>AT+FS_</code> * 如果 <auth_mode> 配置为 2 或 3,为了检查服务器证书有效期, 请确保 BFLB 在发送 AT+CIPSTART 命令之前已获取当前时间 (您可以发送 AT+CIPSNTPCFG 命令配置 SNTP 并获取当前时间,发送 AT+CIPSNPTIME? 命令查询当前时间) === AT+CIPSSLCSNI === '''功能''':查询/设置 SSL 客户端服务器名称指示 (SNI)。 ==== 查询命令 ==== '''功能''': 查询每个连接的 SNI 配置。 '''命令''': <pre> AT+CIPSSLCSNI? </pre> '''响应''': <pre> +CIPSSLCSNI:<link ID>,<"sni"> OK </pre> ==== 设置命令 ==== '''命令''': <pre> // 单连接:(AT+CIPMUX=0) AT+CIPSSLCSNI=<"sni"> // 多连接:(AT+CIPMUX=1) AT+CIPSSLCSNI=<link ID>,<"sni"> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<linkid>''':连接的 ID(0~4),用于多连接 * '''<"sni">''':ClientHello 中的服务器名称指示,此参数用于验证服务器发送的证书中的通用名称 sni 的最大长度为 64 字节 ==== 注意事项 ==== * 如果您希望此配置立即生效,请在建立 SSL 连接之前运行此命令 * 下载 AT 固件时,必须下载 romfs 文件系统,默认文件系统挂载到 /romfs === AT+CIPSSLCALPN === '''功能''':查询/设置 SSL 客户端应用层协议协商 (ALPN)。 ==== 查询命令 ==== '''功能''': 查询 BFLB 作为 SSL 客户端的每个连接的 ALPN 配置。 '''命令''': <pre> AT+CIPSSLCALPN? </pre> '''响应''': <pre> +CIPSSLCALPN:<link ID>[,<"alpn">][,<"alpn">][,<"alpn">] OK </pre> ==== 设置命令 ==== '''命令''': <pre> // 单连接:(AT+CIPMUX=0) AT+CIPSSLCALPN=<counts>[,<"alpn">][,<"alpn">][,<"alpn">] // 多连接:(AT+CIPMUX=1) AT+CIPSSLCALPN=<link ID>,<counts>[,<"alpn">][,<"alpn">][,<"alpn">] </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<linkid>''':连接的 ID(0~4),用于多连接 * '''<counts>''':ALPN 的数量。范围:[0,5] * 0:清除 ALPN 配置 * [1,5]:设置 ALPN 配置 * '''<"alpn">''':显示 ClientHello 中 ALPN 的字符串参数。alpn 的最大长度受命令长度限制 ==== 注意事项 ==== * 如果您希望此配置立即生效,请在建立 SSL 连接之前运行此命令 === AT+CIPSSLCPSK === '''功能''':查询/设置字符串格式的 SSL 客户端预共享密钥 (PSK)。 ==== 查询命令 ==== '''功能''': 查询 BFLB 作为 SSL 客户端的每个连接的 PSK 配置。 '''命令''': <pre> AT+CIPSSLCPSK? </pre> '''响应''': <pre> +CIPSSLCPSK:<link ID>,<"psk">,<"hint"> OK </pre> ==== 设置命令 ==== '''命令''': <pre> // 单连接:(AT+CIPMUX=0) AT+CIPSSLCPSK=<"psk">,<"hint"> // 多连接:(AT+CIPMUX=1) AT+CIPSSLCPSK=<link ID>,<"psk">,<"hint"> </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<linkid>''':连接的 ID(0~4),用于多连接 * '''<"psk">''':字符串格式的预共享密钥。最大长度:32。如果您的 <"psk"> 参数包含 \0 字符,请使用 <code>AT+CIPSSLCPSKHEX</code>_ 命令 * '''<"hint">''':预共享密钥标识。最大长度:32 ==== 注意事项 ==== * 如果您希望此配置立即生效,请在建立 SSL 连接之前运行此命令 === AT+CIPSSLCPSKHEX === '''功能''':查询/设置十六进制格式的 SSL 客户端预共享密钥 (PSK)。 ==== 注意事项 ==== * 与 <code>AT+CIPSSLCPSK</code>_ 命令类似,此命令也设置或查询 SSL 客户端 PSK,但其 <"psk"> 是十六进制格式而不是字符串格式。因此,<"psk"> 参数中的 \0 表示 00 ==== 示例 ==== <pre> // 单连接:(AT+CIPMUX=0),预共享密钥为 "psk",预共享密钥标识为 "myhint" AT+CIPSSLCPSKHEX="70736b","myhint" // 多连接:(AT+CIPMUX=1),预共享密钥为 "psk",预共享密钥标识为 "myhint" AT+CIPSSLCPSKHEX=0,"70736b","myhint" </pre> === AT+IPERF === '''功能''':测试 BFLB 在独立模式下的吞吐量。 ==== 设置命令 ==== '''命令''': <pre> AT+IPERF=<"direct">,<"type">,[<"ipaddr">],[<time>],[<port>] </pre> '''响应''': <pre> OK </pre> ==== 参数 ==== * '''<"direct">''':iperf 的方向,"TX" 或 "RX" * '''<"type">''':连接类型,"TCP" 或 "UDP" * '''<"ipaddr">''':目标 IP 地址。如果作为客户端,必须设置此参数 * '''<"time">''':iperf 的持续时间,默认值 10S(单位秒) * '''<"port">''':iperf 的端口号,默认值 5001 ==== 示例 ==== <pre> AT+IPERF="RX","TCP" AT+IPERF="TX","TCP","192.168.1.2",1000 AT+IPERF="TX","TCP","192.168.1.2",1000,5001 </pre> === AT+IPERFSTOP === '''功能''':停止测试 BFLB 的吞吐量。 ==== 设置命令 ==== '''命令''': <pre> AT+IPERFSTOP </pre> '''响应''': <pre> OK </pre> ==== 示例 ==== <pre> AT+IPERF="TX","TCP","192.168.1.2",1000 AT+IPERFSTOP </pre> ----
返回
AT模块 4: TCP/IP 相关 AT 命令(TCP/IP Related AT Commands)
。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息