# Quectel LTE Standard(A) 系列 TCP/IP 应用指导
**版本:** V1.6
**日期:** 2023-10-30
**状态:** 受控文件
---
## 前言
移远通信提供该文档内容以支持客户的产品设计。客户须按照文档中提供的规范、参数来设计产品。同时,您理解并同意,移远通信提供的参考设计仅作为示例。您同意在设计您目标产品时使用您独立的分析、评估和判断。在使用本文档所指导的任何硬软件或服务之前,请仔细阅读本声明。您在此承认并同意,尽管移远通信采取了商业范围内的合理努力来提供尽可能好的体验,但本文档和其所涉及服务是在"可用"基础上提供给您的。移远通信可在未事先通知的情况下,自行决定随时增加、修改或重述本文档。
### 使用和披露限制
### 许可协议
除非移远通信特别授权,否则我司所提供硬软件、材料和文档的接收方须对接收的内容保密,不得将其用于除本项目的实施与开展以外的任何其他目的。
### 版权声明
移远通信产品和本协议项下的第三方产品可能包含受移远通信或第三方材料、硬软件和文档版权保护的相关资料。除非事先得到书面同意,否则您不得获取、使用、向第三方披露我司所提供的文档和信息,或对此类受版权保护的资料进行复制、转载、抄袭、出版、展示、翻译、分发、合并、修改,或创造其衍生作品。移远通信或第三方对受版权保护的资料拥有专有权,不授予或转让任何专利、版权、商标或服务商标权的许可。为避免歧义,除了正常的非独家、免版税的产品使用许可,任何形式的购买都不可被视为授予许可。对于任何违反保密义务、未经授权使用或以其他非法形式恶意使用所述文档和信息的违法侵权行为,移远通信有权追究法律责任。
### 商标
除另行规定,本文档中的任何内容均不授予在广告、宣传或其他方面使用移远通信或第三方的任何商标、商号及名称,或其缩略语,或其仿冒品的权利。
### 第三方权利
您理解本文档可能涉及一个或多个属于第三方的硬软件和文档("第三方材料")。您对此类第三方材料的使用应受本文档的所有限制和义务约束。
移远通信针对第三方材料不做任何明示或暗示的保证或陈述,包括但不限于任何暗示或法定的适销性或特定用途的适用性、平静受益权、系统集成、信息准确性以及与许可技术或被许可人使用许可技术相关的不侵犯任何第三方知识产权的保证。本协议中的任何内容都不构成移远通信对任何移远通信产品或任何其他硬软件、设备、工具、信息或产品的开发、增强、修改、分销、营销、销售、提供销售或以其他方式维持生产的陈述或保证。此外,移远通信免除因交易过程、使用或贸易而产生的任何和所有保证。
### 隐私声明
为实现移远通信产品功能,特定设备数据将会上传至移远通信或第三方服务器(包括运营商、芯片供应商或您指定的服务器)。移远通信严格遵守相关法律法规,仅为实现产品功能之目的或在适用法律允许的情况下保留、使用、披露或以其他方式处理相关数据。当您与第三方进行数据交互前,请自行了解其隐私保护和数据安全政策。
### 免责声明
1. 移远通信不承担任何因未能遵守有关操作或设计规范而造成损害的责任。
2. 移远通信不承担因本文档中的任何因不准确、遗漏、或使用本文档中的信息而产生的任何责任。
3. 移远通信尽力确保开发中功能的完整性、准确性、及时性,但不排除上述功能错误或遗漏的可能。除非另有协议规定,否则移远通信对开发中功能的使用不做任何暗示或法定的保证。在适用法律允许的最大范围内,移远通信不对任何因使用开发中功能而遭受的损害承担责任,无论此类损害是否可以预见。
4. 移远通信对第三方网站及第三方资源的信息、内容、广告、商业报价、产品、服务和材料的可访问性、安全性、准确性、可用性、合法性和完整性不承担任何法律责任。
版权所有 © 上海移远通信技术股份有限公司 2023,保留一切权利。
---
## 文档历史
| 版本 | 日期 | 作者 | 变更表述 |
|:---|:---|:---|:---|
| 1.0 | 2019-10-28 | Larson Li | 初始版本 |
| 1.1 | 2019-10-30 | Larson Li | 1. 更新参数APN鉴权方式取值含义(第2.1.1章)
2. 更新参数取值范围(第2.1.4章、第2.1.6章和第2.1.12章) |
| 1.2 | 2020-07-24 | Larson Li | 1. 增加文档适用模块EG912Y系列和EC200S-CN
2. 更新 AT+QICFG="tcp/keepalive"中的取值范围(第2.2.15章)
3. 新增如下AT命令:AT+QICFG="viewmode"、AT+QICFG="passiveclosed"、AT+QICFG="recvind"、AT+QICFG="tcp/accept" |
| 1.3 | 2021-04-20 | Larson Li | 1. 增加文档适用模块EC200N-CN和EC600N-CN
2. 更新参数取值范围(第2.3.1章)
3. 新增如下AT命令(第2.3.15章):AT+QICFG="tcp/retranscfg"、AT+QICFG="send/buffersize"、AT+QICFG="send/auto"、AT+QICFG="recv/ignore"、AT+QICFG="formatcfg"、AT+QICFG="qisend/timeout"、AT+QICFG="close/mode" |
| 1.4 | 2022-03-02 | Larson Li | 1. 增加文档适用模块EC200A系列、EC800N-CN和EG915N-EU |
| 1.5 | 2023-01-11 | Larson Li | 1. 更新适用模块:新增EC200M-CN、EC600M-CN、EC800M-CN、EG810M-CN和EG912N-EN;更新EG915N-EU为EG915N系列;删除EC200T系列和EC600S-CN
2. 删除TCP/IP AT命令使用流程图中的AT+CREG?命令(第1.2章)
3. 新增如下AT命令(第2.3.1章):AT+QICFG="sendinfo"、AT+QICFG="pdp/retry" |
| **1.6** | **2023-10-23** | **Fawei ZHOU** | 1. 更新适用模块:新增EC600K-CN、**EC800K系列**、EG800K系列和EG950A系列;更新EC200N-CN为EC200N系列
2. 新增 AT+QICFG="wakeup/data"和 URC +QIURC:"wakeup/data"(第2.3.1章和第2.4.6章)
3. 新增AT+QICFG="send/auto"的参数(第2.3.1章)
4. 新增AT+QICFG="recv/ignore"的参数(第2.3.1章)
5. 新增AT+QICFG相关备注(第2.3.1章)
6. 新增TCP可选项配置示例(第3.10章) |
---
## 目录
- [1 引言](#1-引言)
- [1.1 适用模块](#11-适用模块)
- [1.2 使用TCP/IP AT命令的流程](#12-使用tcpip-at命令的流程)
- [1.3 数据访问模式说明](#13-数据访问模式说明)
- [2 TCP/IP AT命令详解](#2-tcpip-at命令详解)
- [2.1 AT命令说明](#21-at命令说明)
- [2.2 AT示例声明](#22-at示例声明)
- [2.3 AT命令详解](#23-at命令详解)
- [2.3.1 AT+QICFG 配置可选参数](#231-atqicfg-配置可选参数)
- [2.3.2 AT+QICSGP 配置TCP/IP场景参数](#232-atqicsgp-配置tcpip场景参数)
- [2.3.3 AT+QIACT 激活PDP场景](#233-atqiact-激活pdp场景)
- [2.3.4 AT+QIDEACT 去激活PDP场景](#234-atqideact-去激活pdp场景)
- [2.3.5 AT+QIOPEN 打开Socket服务](#235-atqiopen-打开socket服务)
- [2.3.6 AT+QICLOSE 关闭Socket服务](#236-atqiclose-关闭socket服务)
- [2.3.7 AT+QISTATE 查询Socket服务状态](#237-atqistate-查询socket服务状态)
- [2.3.8 AT+QISEND 发送数据](#238-atqisend-发送数据)
- [2.3.9 AT+QIRD 读取收到的TCP/IP数据](#239-atqird-读取收到的tcpip数据)
- [2.3.10 AT+QISENDEX 发送16进制字符串数据](#2310-atqisendex-发送16进制字符串数据)
- [2.3.11 AT+QISWTMD 切换数据访问模式](#2311-atqiswtmd-切换数据访问模式)
- [2.3.12 AT+QPING 进行远程服务器Ping操作](#2312-atqping-进行远程服务器ping操作)
- [2.3.13 AT+QNTP 使用NTP服务器同步本地时间](#2313-atqntp-使用ntp服务器同步本地时间)
- [2.3.14 AT+QIDNSCFG 配置DNS服务器地址](#2314-atqidnscfg-配置dns服务器地址)
- [2.3.15 AT+QIDNSGIP 用域名获取IP地址](#2315-atqidnsgip-用域名获取ip地址)
- [2.3.16 AT+QISDE 控制是否回显AT+QISEND要发送的数据](#2316-atqisde-控制是否回显atqisend要发送的数据)
- [2.3.17 AT+QIGETERROR 查询上一个AT命令错误代码](#2317-atqigeterror-查询上一个at命令错误代码)
- [2.4 URC说明](#24-urc说明)
- [2.4.1 +QIURC:"closed" 连接断开通知](#241-qiurcclosed-连接断开通知)
- [2.4.2 +QIURC:"recv" 数据接收通知](#242-qiurcrecv-数据接收通知)
- [2.4.3 +QIURC:"incoming full" 客户端连接已满通知](#243-qiurcincoming-full-客户端连接已满通知)
- [2.4.4 +QIURC:"incoming" 客户端连接通知](#244-qiurcincoming-客户端连接通知)
- [2.4.5 +QIURC:"pdpdeact" PDP去激活通知](#245-qiurcpdpdeact-pdp去激活通知)
- [2.4.6 +QIURC:"wakeup/data" 唤醒报文数据接收通知](#246-qiurcwakeupdata-唤醒报文数据接收通知)
- [3 示例](#3-示例)
- [3.1 场景配置和激活](#31-场景配置和激活)
- [3.2 TCP客户端在缓存模式下工作](#32-tcp客户端在缓存模式下工作)
- [3.3 TCP客户端在透传模式下工作](#33-tcp客户端在透传模式下工作)
- [3.4 TCP客户端在直吐模式下工作](#34-tcp客户端在直吐模式下工作)
- [3.5 TCP服务器在缓存模式下工作](#35-tcp服务器在缓存模式下工作)
- [3.6 UDP服务示例](#36-udp服务示例)
- [3.7 PING](#37-ping)
- [3.8 同步本地时间](#38-同步本地时间)
- [3.9 获取上一个错误代码示例](#39-获取上一个错误代码示例)
- [3.10 TCP可选配置项示例](#310-tcp可选配置项示例)
- [4 错误代码](#4-错误代码)
- [5 附录:参考文档及术语缩写](#5-附录参考文档及术语缩写)
---
## 1 引言
移远通信 LTE Standard(A) 系列模块内置 TCP/IP 协议栈,Host 可以直接通过 AT 命令访问网络;这极大降低了模块对 PPP 和外部 TCP/IP 协议栈的依赖性,从而降低终端设计的成本。
LTE Standard(A) 系列模块可提供 TCP 客户端、UDP 客户端、TCP 服务器和 UDP 服务器等 Socket 服务。
### 1.1 适用模块
| 模块系列 | 模块 |
|:---|:---|
| **LTE Standard(A)** | EC200A 系列、EC200S 系列、EC600N-CN、EC600K-CN、EC800M-CN、EC800N-CN、**EC800K 系列**、EG800K 系列、EG810M-CN、EG912N-EN、EG912Y-EU、EG915N 系列、EG950A 系列 |
### 1.2 使用TCP/IP AT命令的流程
通过 TCP/IP AT 命令,Host 可以配置 PDP 场景、激活/去激活 PDP 场景、打开/关闭 Socket 服务,并通过 Socket 服务发送/接收数据。
**TCP/IP AT 命令使用流程:**
1. **建议开关机流程**
- 关机:发送 `AT+QPOWD`,等待 12s 以上,直接断电
- 开机:先使 Power Key 按键处于低电平状态,等待 2s 后,再拉高 Power Key
2. **查询 (U)SIM 卡状态**
- 执行 `AT+CPIN`,如果 20s 后命令 `AT+CPIN` 无法识别 (U)SIM 卡状态,建议重启模块
3. **PS 业务**
- 当 `AT+CGREG?` / `AT+CEREG?` 结果中的 `` 等于 1 或者 5,表示模块已在 UMTS/LTE 网络注册上 PS 业务
- 等待 60s 后,不管是否注册上 PS 业务,都进入下一个流程
4. **配置 PDP Context 激活参数**
- 通过 `AT+QICSGP` 命令配置 APN、User Name、Password 和 Auth Type
- 通过 `AT+CGQMIN` / `AT+CGEQMIN` / `AT+CGQREQ` / `AT+CGEQREQ` 配置 QoS 参数
5. **激活 PDP Context**
- 通过 `AT+QIACT=` 激活 PDP Context
- 通过 `AT+QIACT?` 查询 PDP Context IP 地址
6. **打开连接**
- 通过 `AT+QIOPEN` 打开连接
- 等待 `+QIOPEN:,` 输出,建议等待 150 秒
7. **发送数据**
- 通过 `AT+QISEND=` 命令发送数据
8. **TCP 连接的维护和检测**
- 通过 `AT+QISEND=[,]` 发送数据,建议定期向远程端发送小数据包以维护和检测 TCP 连接
- 通过 `AT+QISEND=,0` 查询 ACK 的发送
- 如果在 2 分钟后(每 5s 查询一次,一共查询 24 次),对方没有收到数据,说明 TCP 连接可能出现异常,请执行 `AT+QICLOSE` 关闭这个 TCP 连接,然后通过 `AT+QIOPEN` 重新建立 TCP 连接
**注意事项:**
1. 请注意必须接收到上一个 AT 命令的执行结果后(例如:OK / CME ERROR / CMS ERROR),才能执行下一个 AT 命令。一般情况下,如果在 60s 内没有收到 AT 命令执行结果,建议重启模块。
2. 若 150s 内未收到 `AT+QIACT` 响应,10s 内未收到 `AT+QICLOSE` 响应,40s 内未收到 `AT+QIDEACT` 响应,建议重启模块。
3. 不建议频繁重启模块。如果因为执行 AT 命令连续 3 次重启模块失败,此后第一次可立即重启,然后等待 10 分钟,再进行第二次重启,如果仍重启失败,建议等待 30 分钟,再进行第三次重启,以此类推,逐渐增大重启的时间间隔。
4. 请注意,根据 3GPP 协议,LTE 模块在成功附着网络后将自动激活默认承载(通常 PDP 上下文 ID 为 1)。若因 APN 问题导致激活失败或类型不符,需通过以下步骤重新配置:先执行 `AT+CFUN=0` 关闭网络,再使用 `AT+QICSGP` 配置正确的 APN,最后执行 `AT+CFUN=1` 重启模块以重新激活。
### 1.3 数据访问模式说明
LTE Standard(A) 系列模块支持以下 3 种数据访问模式:
| 模式 | 说明 |
|:---|:---|
| **缓存模式** | 可以通过 `AT+QISEND` 发送数据。从网络接收数据时,模块会缓存所接收的数据,并直接上报 URC `+QIURC:"recv",`,之后用户可以通过 `AT+QIRD` 来读取缓存数据。 |
| **直吐模式** | 可以通过 `AT+QISEND` 发送数据。从网络接收数据时,数据会以 URC 格式直接输出到 COM 口。 |
| **透传模式** | 相对应的串口(比如 UART 口、USB Modem 口等)会进入独占模式,通过 COM 口接收的数据会直接发送到网络端,从网络接收到的数据会从 COM 口直接输出。`+++` 可以用来退出透传模式。 |
**退出透传模式:**
用户可以通过 `+++` 或者 DTR(需先设置 `AT&D1`)两种方式退出透传模式。为了防止 `+++` 被当成数据发送,实际操作时必须遵循以下步骤:
1. `+++` 输入前 1 秒或更长时间内不能输入其它任何数据;
2. 必须在 1 秒内输入 `+++`,并且不能输入其它任何数据;
3. `+++` 输入后 1 秒内不能输入其它任何数据;
4. 通过 `+++` 或者 DTR(设置 `AT&D1`)方式使模块退出透传模式,直到模块返回 OK;此时模块成功退出透传模式。
**切换到透传模式:**
1. 通过执行 `AT+QISWTMD`:执行此命令时,指定 `` 为 2;若返回 CONNECT,则表示成功切换至透传模式。
2. 通过 `ATO` 方式:退出透传模式后,可通过 `ATO` 再切换回至透传模式;若返回 CONNECT,则表示成功切换至透传模式。若模块之前未曾进入过透传模式,执行 `ATO` 则会返回 NO CARRIER。
**备注:**
1. 在缓存模式和直吐模式下,可通过 `AT+QISEND` 发送数据。
2. 在缓存模式下,如果缓存不为空,直到通过 `AT+QIRD` 读取缓存里面所有接收的数据后,模块才会上报一个新的 URC。
3. 在透传模式下,不可执行 AT 命令。若因网络错误或者其他原因导致 Socket 连接断开,模块会上报 NO CARRIER,并退出透传模式,在这种情况下可以执行 `AT+QICLOSE` 来关闭 Socket 服务。
---
## 2 TCP/IP AT命令详解
### 2.1 AT命令说明
#### 2.1.1 定义
- `` 回车符
- `` 换行符
- `<...>` 参数名称。实际命令行中不包含尖括号
- `[...]` 可选参数或 TA 信息响应的可选部分。实际命令行中不包含方括号。若无特别说明,配置命令中的可选参数被省略时,将默认使用其之前已设置的值或其默认值
- 下划线参数的默认设置
#### 2.1.2 AT命令语句
前缀 AT 或 at 必须加在每个命令行的开头。输入 `` 将终止命令行。通常,命令后面跟随形式为 `` 的响应。在本文档中表现命令和响应的表格中,省略了 ``,仅显示命令和响应。
| AT命令类型 | 语句 | 描述 |
|:---|:---|:---|
| 测试命令 | `AT+=?` | 测试是否存在相应的命令,并返回有关其参数的类型、值或范围的信息 |
| 查询命令 | `AT+?` | 查询相应命令的当前参数值 |
| 设置命令 | `AT+=[,[,...]]` | 设置用户可定义的参数值 |
| 执行命令 | `AT+` | 返回特定的参数信息或执行特定的操作 |
### 2.2 AT示例声明
本文中的示例仅为方便用户了解 AT 命令的使用方法,不构成移远通信对终端流程设计的建议或意见,也不代表模块应被设置成相应示例中的状态。某些 AT 命令存在多个示例,这些示例之间不存在承接关系或连续性。AT 命令示例中存在的 URL、域名、IP 地址、用户名/账号以及密码等(若有),仅为示意以供说明之用;实际使用时须根据实际情况进行修改。
### 2.3 AT命令详解
#### 2.3.1 AT+QICFG 配置可选参数
该命令用于配置可选参数。
**测试命令:** `AT+QICFG=?`
**设置命令格式:**
| 功能 | 命令 | 响应 |
|:---|:---|:---|
| 设置待发数据包最大长度 | `AT+QICFG="transpktsize"[,]` | 查询:`+QICFG:"transpktsize",`
OK |
| 设置透传模式下自动发送数据前的等待时间 | `AT+QICFG="transwaittm"[,]` | 查询:`+QICFG:"transwaittm",`
OK |
| 设置收发数据格式(仅限非透传模式) | `AT+QICFG="dataformat"[,,]` | 查询:`+QICFG:"dataformat",,`
OK |
| 设置已接收数据的输出格式 | `AT+QICFG="viewmode"[,]` | 查询:`+QICFG:"viewmode",`
OK |
| 设置是否在服务器关闭时被动关闭TCP连接 | `AT+QICFG="passiveclosed"[,]` | 查询:`+QICFG:"passiveclosed",`
OK |
| 设置UDP数据的读取模式 | `AT+QICFG="udp/readmode"[,]` | 查询:`+QICFG:"udp/readmode",`
OK |
| 设置UDP数据的发送模式 | `AT+QICFG="udp/sendmode"[,]` | 查询:`+QICFG:"udp/sendmode",`
OK |
| 设置是否发送TCP保活信息 | `AT+QICFG="tcp/keepalive"[,[,[,[,]]]]` | 查询:`+QICFG:"tcp/keepalive",,,,`
OK |
| 设置在缓存模式下接收数据后上报URC是否显示数据长度 | `AT+QICFG="recvind"[,]` | 查询:`+QICFG:"recvind",`
OK |
| 设置重传次数和重传间隔 | `AT+QICFG="tcp/retranscfg"[,,]` | 查询:`+QICFG:"tcp/retranscfg",,`
OK |
| 启用或禁用自动接收来自客户端的TCP连接 | `AT+QICFG="tcp/accept"[,]` | 查询:`+QICFG:"tcp/accept",`
OK |
| 设置单次发送数据的最大长度 | `AT+QICFG="send/buffersize"[,]` | 查询:`+QICFG:"send/buffersize",`
OK |
| 设置周期性发送心跳包数据 | `AT+QICFG="send/auto",[,[,][,][,]]` | 查询:`+QICFG:"send/auto",,,,,`
OK |
| 设置过滤指定数据 | `AT+QICFG="recv/ignore",[,][,]` | 查询:`+QICFG:"recv/ignore",,,`
OK |
| 设置发送 AT+QISEND 命令返回 `>` 的格式 | `AT+QICFG="formatcfg"[,]` | 查询:`+QICFG:"formatcfg",`
OK |
| 设置发送 AT+QISEND 命令的最大响应时间 | `AT+QICFG="qisend/timeout"[,]` | 查询:`+QICFG:"qisend/timeout",`
OK |
| 设置异步断开TCP连接 | `AT+QICFG="close/mode"[,]` | 查询:`+QICFG:"close/mode",`
OK |
| 启用或禁用以URC形式显示AT+QISEND返回信息 | `AT+QICFG="sendinfo"[,]` | 查询:`+QICFG:"sendinfo",`
OK |
| 设置SEND OK返回模式 | `AT+QICFG="TCP/SendMode"[,]` | 查询:`+QICFG:"TCP/SendMode",`
OK |
| 设置PDP激活或去激活重试次数和时间 | `AT+QICFG="pdp/retry",,,,` | 查询:`+QICFG:"pdp/retry",,,,`
OK |
| 设置唤醒报文数据 | `AT+QICFG="wakeup/data",[,[,]]` | 查询:`+QICFG:"wakeup/data",,,`
OK |
**参数说明:**
| 参数 | 说明 |
|:---|:---|
| `` | 整型。透传模式下,待发数据包最大长度。范围:1~1460;默认值:1024;单位:字节 |
| `` | 整型。透传模式下,待发数据小于 `` 时,自动发送数据前的等待时间。范围:0~20;默认值:2;单位:100毫秒 |
| `` | 整型。发送数据格式。0=文本模式,1=十六进制模式 |
| `` | 整型。接收数据格式。0=文本模式,1=十六进制模式 |
| `` | 整型。接收数据的输出方式。0=data header\r\ndata,1=data header,data |
| `` | 整型。启用或禁用TCP连接在服务器关闭后自动断开。0=禁用,1=启用 |
| `` | 整型。UDP数据读取/发送模式。0=禁用块模式,1=启用流模式 |
| `` | 整型。启用或禁用发送TCP保活信息。0=禁用,1=启用 |
| `` | 整型。触发保活循环时间。范围:1~1800;单位:秒 |
| `` | 整型。在循环时间内发送数据包间隔时间。范围:25~100;单位:秒 |
| `` | 整型。保活探测次数 |
| `` | 整型。在缓存模式下,启用或禁用在接收数据后上报的URC中显示数据长度。0=禁用,1=启用 |
| `` | 整型。在循环时间内重连次数。范围:3~12 |
| `` | 整型。在循环时间内重连间隔。范围:5~1000;单位:毫秒 |
| `` | 整型。0=禁用自动接受来自客户端的TCP连接,1=启用自动接受来自客户端的TCP连接 |
| `` | 整型。单次发送数据的最大长度 |
| `` | 整型。Socket连接号。范围:0~11 |
| `` | 整型。设置发送心跳包的时间周期。范围:20~86400;单位:秒 |
| `` | 字符串类型。发送心跳包内容 |
| `` | 字符串类型。过滤数据内容 |
| `` | 整型。`>` 输出格式。0=`0D0A>`,1=`0D0A>0D0A` |
| `` | 整型。设置输出 `>` 后的超时时间 |
| `` | 整型。启用或禁用异步断开TCP连接。0=禁用,1=启用 |
| `` | 整型。启用或禁用以URC形式显示AT+QISEND或AT+QISENDEX返回信息。0=禁用,1=启用 |
| `` | 整型。SEND OK返回模式。0=发送数据后立即返回SEND OK,1=收到服务器ACK后返回SEND OK,2=收到服务器ACK后返回`,SEND OK`,3=收到服务器ACK后上报`+QIURC:SEND OK`,4=收到服务器ACK后上报`+QIURC:,SEND OK` |
| `` | 整型。0=去激活模式,1=激活模式 |
| `` | 整型。0=4G模式,1=2G模式 |
| `` | 整型。实际执行激活或去激活的次数 = `` 的取值 + 1 |
| `` | 整型。单次执行激活或去激活的最大时间。单位:秒 |
| `` | 字符串类型。唤醒报文数据 |
| `` | 整型。输入的报文数据类型。0=十六进制ASCII码(自动转换为十六进制字符串处理),1=十六进制字符串,2=字符串 |
| `` | 整型。重试次数。范围:0~10 |
**最大响应时间:** 300 毫秒
**特性说明:** 参数配置不保存(部分命令立即生效)
**备注:**
1. 若配置为 2(字符串类型),则需注意字符串数据中不能包含特殊字符(如 ASCII 特殊控制字符和转义字符等),否则需配置为 0 或 1。
2. `AT+QICFG="wakeup/data"` 配置完指定的数据后,服务器下发的其他数据均会被丢弃,仅当报文数据被唤醒时或者网络发生异常事件时,才会通知 MCU 唤醒。
---
#### 2.3.2 AT+QICSGP 配置TCP/IP场景参数
该命令用于配置 ``、`` 和 `` 以及其他 TCP/IP 场景参数。QoS 配置需通过 `AT+CGQMIN`、`AT+CGEQMIN`、`AT+CGQREQ` 和 `AT+CGEQREQ`。
| 命令类型 | 命令 | 响应 |
|:---|:---|:---|
| 测试命令 | `AT+QICSGP=?` | `+QICSGP:(支持的范围),(支持的范围),,,,(支持的范围)`
OK |
| 查询命令 | `AT+QICSGP=` | `+QICSGP:,,,,`
OK |
| 设置命令 | `AT+QICSGP=,[,[,[,[,[,]]]]]` | OK
如有错误:ERROR |
**参数说明:**
| 参数 | 说明 |
|:---|:---|
| `` | 整型。场景ID。范围:1~15 |
| `` | 整型。协议类型。1=IPv4,2=IPv6,3=IPv4v6 |
| `` | 字符串类型。接入点名称 |
| `` | 字符串类型。用户名。最大长度:127字节 |
| `` | 字符串类型。密码 |
| `` | 整型。APN鉴权方式。0=None,1=PAP,2=CHAP,3=PAP或CHAP |
| `` | 整型。是否在CDMA网络下保存 `` 和 ``。0=不保存,1=保存 |
**特性说明:** 该命令立即生效;参数配置自动保存。
**举例:**
```
AT+QICSGP=1
+QICSGP: 1,"","","",0
OK
AT+QICSGP=1,1,"UNINET","","",1
OK
```
---
#### 2.3.3 AT+QIACT 激活PDP场景
在用 `AT+QIACT` 激活 PDP 场景前,需要使用 `AT+QICSGP` 配置场景。场景激活后,可以通过 `AT+QIACT?` 查询 IP 地址。
虽然 `` 的范围为 1~15,但是模块最多仅可同时激活 3 路 PDP 场景。受网络状态影响,执行 `AT+QIACT` 后,等待返回结果 OK 或者 ERROR 的最大时间为 150 秒,在结果尚未返回之前,无法执行任何 AT 命令。
| 命令类型 | 命令 | 响应 |
|:---|:---|:---|
| 测试命令 | `AT+QIACT=?` | `+QIACT:(支持的范围)`
OK |
| 查询命令 | `AT+QIACT?` | 返回当前所有被激活的场景与IP地址:
`+QIACT: ,,,`
...
OK |
| 设置命令 | `AT+QIACT=` | 激活指定场景:OK
如有错误:ERROR |
**参数说明:**
| 参数 | 说明 |
|:---|:---|
| `` | 整型。场景ID。范围:1~15 |
| `` | 整型。场景状态。0=去激活,1=激活 |
| `` | 整型。协议类型。1=IPv4,2=IPv6,3=IPv4v6 |
| `` | 字符串类型。场景激活后的本地IP地址 |
**最大响应时间:** 受网络状态影响,最大响应时间 150 秒。
---
#### 2.3.4 AT+QIDEACT 去激活PDP场景
该命令用于去激活特定场景,断开在这个场景内建立的所有 TCP/IP 连接。受网络状态影响,执行 `AT+QIDEACT` 后,等待返回结果 OK 或者 ERROR 的最大时间为 40 秒。在结果尚未返回之前,无法执行任何 AT 命令。
| 命令类型 | 命令 | 响应 |
|:---|:---|:---|
| 测试命令 | `AT+QIDEACT=?` | OK |
| 设置命令 | `AT+QIDEACT=` | OK
如有错误:ERROR |
**参数说明:**
| 参数 | 说明 |
|:---|:---|
| `` | 整型。场景ID。范围:1~15 |
**最大响应时间:** 受网络状态影响,最大响应时间 40 秒。
---
#### 2.3.5 AT+QIOPEN 打开Socket服务
该命令用于打开 Socket 服务。服务类型可通过 `` 指定,数据访问模式(缓存模式、直吐模式和透传模式)可通过 `` 配置,URC `+QIOPEN` 将指示 Socket 服务是否成功打开。
| 命令类型 | 命令 | 响应 |
|:---|:---|:---|
| 测试命令 | `AT+QIOPEN=?` | `+QIOPEN:(支持的范围),(支持的范围),"TCP/UDP/TCPLISTENER/UDPSERVICE","/",,,(支持的范围)`
OK |
| 设置命令 | `AT+QIOPEN=,,"","/",,,` | 如果数据访问模式是透传模式(=2)并且成功打开服务:CONNECT
如有错误:ERROR
如果数据访问模式是缓存模式(=0)或者直吐模式(=1):OK
`+QIOPEN:,`
当服务成功打开,`` 是 0 |
**参数说明:**
| 参数 | 说明 |
|:---|:---|
| `` | 整型。场景ID。范围:1~15 |
| `` | 整型。Socket连接号。范围:0~11 |
| `` | 字符串类型。Socket服务类型。
"TCP"=客户端建立TCP连接
"UDP"=客户端建立UDP连接
"TCPLISTENER"=建立TCP服务器监听TCP连接
"UDPSERVICE"=建立UDP服务 |
| `` | 如果 `` 是 "TCP" 或 "UDP",则为远程服务器的IP地址;如果 `` 是 "TCPLISTENER" 或 "UDPSERVICE",请输入 127.0.0.1 |
| `` | 字符串类型。远程服务器的域名地址 |
| `` | 整型。远程服务器端口。范围:0~65535。仅当 `` 是 "TCP" 或 "UDP" 时才有效 |
| `` | 整型。本地端口。范围:0~65535。如果配置本地端口;否则本地端口会被指定 |
| `` | 整型。连接数据访问模式。0=缓存模式,1=直吐模式,2=透传模式 |
| `` | 错误码。请参考第4章 |
**最大响应时间:** 受网络状态影响,最大响应时间 150 秒。
**备注:**
1. 如果 `` 是 "TCP LISTENER",那么模块作为 TCP 服务器使用。接受一个新的 TCP 连接后,模块会自动指定一个 `` 并上报 URC `+QIURC:"incoming",,,,`;其中 `` 范围为 0~11。
2. 如果 `` 是 "UDP SERVICE",则可通过 `` 向远程 IP 收发 UDP 数据。
3. 等待 `+QIOPEN:,` 输出,建议等待 150 秒;如果 150 秒内未接收到该 URC,则需通过 `AT+QICLOSE` 来关闭 Socket。
---
#### 2.3.6 AT+QICLOSE 关闭Socket服务
该命令用于关闭特定的 Socket 服务。受网络状态影响,执行 `AT+QICLOSE` 后,等待返回结果 OK 或者 ERROR 的最大时间为 10 秒(此为默认值,可以通过 `` 来修改)。在结果尚未返回之前,无法执行任何 AT 命令。
| 命令类型 | 命令 | 响应 |
|:---|:---|:---|
| 测试命令 | `AT+QICLOSE=?` | `+QICLOSE:(支持的范围),(支持的范围)`
OK |
| 设置命令 | `AT+QICLOSE=[,]` | 关闭成功:OK
关闭失败:ERROR |
**参数说明:**
| 参数 | 说明 |
|:---|:---|
| `` | 整型。Socket连接号。范围:0~11 |
| `` | 整型。输出响应结果的超时时间值。若未在时间范围内接收到其他客户端的 FIN ACK,模块会强制关闭 Socket。范围:0~65535;默认值:10;单位:秒 |
**最大响应时间:** 默认 10 秒,取决于 `` 取值。
---
#### 2.3.7 AT+QISTATE 查询Socket服务状态
该命令用于查询 Socket 服务状态。若 `` 为 0,则返回在特定场景下现存所有 Socket 服务的状态;若 `` 为 1,则返回特定 Socket 服务的状态。
| 命令类型 | 命令 | 响应 |
|:---|:---|:---|
| 测试命令 | `AT+QISTATE=?` | OK |
| 查询/执行命令 | `AT+QISTATE?` 或 `AT+QISTATE` | 返回现存所有连接状态:
`+QISTATE: ,,,,,,,,,`
...
OK |
| 设置命令(query_type=0) | `AT+QISTATE=,` | 返回特定场景下现存所有连接的状态:
`+QISTATE: ,,,,,,,,