LuatOS-Air AT应用指南--TCP/UDP指令流程

1 概述
Air724模组内置TCP/IP协议栈,提供TCP客户端服务(PS:模块没有公网IP所以不能用于服务端模式)。

通过AT指令使用TCP服务主要包含设备联网,配置连接,建立连接,发送数据等步骤,具体流程如图建立连接流程.pdf

指令流程.png

2 相关AT指令介绍
2.1 启动多IP连接:AT+CIPMUX
语法规则:

命令类型 语法 返回
设置命令 AT+CIPMUX= OK
查询命令 AT+CIPMUX? +CIPMUX: OK
测试命令 AT+CIPMUX=? +CIPMUX: (0,1) OK
注意事项 只在 IP initial 状态,本命令的设置命令才能设置成功
参数定义:

参数 定义 取值 对取值的说明
多路连接开关 0 单路连接(缺省值)
1 多路连接
2.2 启动任务并设置接入点APN、用户名、密码:AT+CSTT
语法规则:

命令类型 语法 返回
设置命令 AT+CSTT=[,[,]] OK
查询命令 AT+CSTT? +CSTT: ,, OK
测试命令 AT+CSTT=? +CSTT: “APN”,“USER”,“PWD” OK
注意事项 1) 设置命令和执行命令只有在 IP INITIAL 状态下执行有效。执行设置命令后,状态变为 IP START 2) 模块注册网络后会从网络自动获取并激活一个PDP上下文,用于RNDIS上网使用。此可以通过AT+CGDCONT?来查询 V980之前(不含V980),需要AT+CGDCONT?查询得到后设置AT+CSTT= V980之后(包含V980),直接输入AT+CSTT即可,模块会按照自动获取的来设置CSTT的APN
参数定义:

参数 定义 取值 对取值的说明
GPRS 接入点名称 - 字符串参数(双引号可加可不加),不超过128个字符
GPRS 用户名 - 字符串参数(双引号可加可不加),不超过32个字符
GPRS 密码 - 字符串参数(双引号可加可不加),不超过32个字符
2.3 激活移动场景(或发起GPRS 或CSD无线连接):AT+CIICR
语法规则:

命令类型 语法 返回和说明
执行命令 AT+CIICR 如果激活成功,返回: OK 如果激活失败,返回: ERROR
测试命令 AT+CIICR=? 返回: OK
注意事项 AT+CIICR 只有在IP START状态下才能激活移动场景,执行后状态变为IP CONFIG。 在模块接受激活场景操作后,如果移动场景激活成功,状态变为IPGPRSACT,返回OK,否则返回ERROR。
2.4 查询本地IP地址:AT+CIFSR
语法规则:

命令类型 语法 返回和说明
执行命令 AT+CIFSR
测试命令 AT+CIFSR=? OK
注意事项 只 有 在 移 动 场 景 已 激 活 的 状 态 : IP GPRSACT 、 TCP/UDPCONNECTING 、 CONNECT OK 、 IP CLOSE 下 才 可 以 通 过AT+CIFSR 查询得到本地 IP 地址,否则返回 ERROR
参数定义:

参数 定义 取值 对取值的说明
IP 地址 - 字符串参数(字符串需要加引号)
2.5 设置TCP使用SSL功能:AT+CIPSSL
语法规则:

命令类型 语法 返回
设置命令 AT+CIPSSL= OK
查询命令 AT+CIPSSL? +CIPSSL: OK
测试命令 AT+CIPSSL=? +CIPSSL: (0-1) OK
注意事项 在CIPSTART之前输入设置命令AT+CIPSSL=1来打开SSL功能。打开SSL功能后,模块会在TCP连接建立后自动进行SSL验证。 当前仅支持作为SSL Client应用。
参数定义:

参数 定义 取值 对取值的说明
SSL功能开关 0 关闭SSL
1 打开SSL
2.6 配置TCP SSL参数:AT+SSLCFG
设置命令用来设置SSL版本,SSL加密算法(ciphersuites),安全等级(security level),CA 证书(Certificate Authority Certificate),客户端证书(client certificate)和客户端密钥(client key)。这些参数在SSL协议的握手过程中会用到。

语法规则:

命令类型 语法 返回
设置命令 AT+SSLCFG=“sslversion”,[,] 如果**缺失,则查询对应的SSL版本:** +SSLCFG: “sslversion”,, OK 否则,设置对应的SSL版本: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“ciphersuite”,[,] 如果**缺失,则查询对应的加密算法: +SSLCFG: ciphersuite",, OK 否则,设置对应的加密算法: 如果格式和参数正确,返回: OK 如果目录格式或参数错误,返回: ERROR
AT+SSLCFG=“cacert”,[,] 如果
参数缺失,则查询对应的CA证书路径:** +SSLCFG:“cacert”,, OK 否则,设置对应的CA证书路径: 如果格式和参数正确,返回: OK 如果目录格式或参数错误,返回: ERROR
AT+SSLCFG=“clientcert”,[,<client_cert_path>] 如果**<client_cert_path>参数缺失,则是查询对应的客户端证书路径: +SSLCFG:“clientcert”,,<client_cert_path> OK 否则,设置对应的客户端证书路径: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“clientkey”,[,<client_key_path>] 如果
<client_key_path>缺失,则是查询对应的客户端密钥路径: +SSLCFG:“clientkey”,,<client_key_path> OK 否则,设置对应的客户端密钥路径: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“seclevel”,[,] 如果
参数缺失,则是查询相关的安全等级: +SSLCFG:“seclevel”,, OK 否则,设置对应的安全等级: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“hostname”,[,] 如果
参数缺失,则是查询相关的域名: +SSLCFG:“hostname”,, OK 否则,设置对应的主机名: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“ignorelocaltime”,[,] 如果
缺失,则是查询相关的证书过期时间检查这项的设置: +SSLCFG:“ignorelocaltime”,, OK 否则,设置对应的证书过期时间检查参数: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“negotiatetimeout”,[,<negotiate_time>] 如果
<negotiate_time>参数缺失,则是查询对应的最大SSL协商时间:** +SSLCFG:“negotiatetimeout”,,<negotiate_time> OK 否则,设置对应的最大SSL写上协商时间: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“clientrandom”,[,] 如果**缺失,则是查询相关的随机数: +SSLCFG:“clientrandom”,, OK 否则,设置对应的随机数: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“premaster”,[,] 如果
缺失,则是查询相关的:** +SSLCFG:“premaster”,, OK 否则,设置对应的premaster**:** 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“verifymode”,[,] 如果**缺失,则查询**相关的证书验证模式,此时返回: +SSLCFG:" verifymode",, OK 否则,设置证书认证模式是根证书认证还是其他证书认证: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=”XXXXX”,, 擦除相应的参数。”XXXXX”是指:“sslversion”,“ciphersuite”,"cacert"等关键字。 **注意:****后一定要有逗号,如果**后面没有逗号,则只是查询。
测试命令 AT+SSLCFG=? OK
注意事项 TCP SSL的功能示例,请参考本章后面的例子。
参数定义:

参数 定义 取值 对取值的说明
SSL上下文 id 0~5,34,88,153 整数型。 TCP功能时与CIPSTART中的绑定。例如:当多链接中CIPSTART中设置链接号为1,则SSL上下文id也为1。 TCP单链接中SSL上下文id固定为0. FTP功能时=34(十进制) MQTT功能时=88(十进制) HTTP功能时=153(十进制)
SSL 版本 0 SSL3.0
1 TLS1.0
2 TLS1.1
3 TLS1.12
4 ALL above
SSL ciphersuites 0X0035 TLS_RSA_WITH_AES_256_CBC_SHA
0X002F TLS_RSA_WITH_AES_128_CBC_SHA
0X0005 TLS_RSA_WITH_RC4_128_SHA
0X0004 TLS_RSA_WITH_RC4_128_MD5
0X000A TLS_RSA_WITH_3DES_EDE_CBC_SHA
0X003D TLS_RSA_WITH_AES_256_CBC_SHA256
0XFFFF ALL above
被信任的CA 证书路径 字符串型
<client_cert_path> 客户端证书路径 字符串型
<client_key_path> 客户端密钥路径 字符串型
安全等级 0 No authentication
1 服务器鉴权
2 服务器鉴权和客户端鉴权(如果服务器要求的话)
主机名
该参数决定如何对待过期证书 0 关心证书的过期时间
1 忽略证书的过期时间
<negotiate_time> SSL协商阶段的最大时间 10~300 单位:秒
随机数,十六进制数组成的字符串,支持56和64个字节 数字和字母的组合 字符串型,双引号可加可不加,数字的范围:0~9,字母的范围:ABCDEF(大小写不敏感)。例如56个字节的:101B12C3141516171F19202122232425262728293031323334353637
premaster
证书验证模式 0 根证书认证
1 其他证书认证
2.7 建立TCP连接或注册UDP端口号:AT+CIPSTART
语法规则:

命令类型 语法 返回和说明
设置命令 单 路 连 接 (+CIPMUX=0)时: AT+CIPSTART=,, 或 AT+CIPSTART=,, 如果格式正确且处于IP INITIAL 或者 IP STATUS或TCP/UDP CLOSE状态,返回: OK 否则返回: +CME ERROR 紧接着会有URC上报,上报内容如下: 如果连接已经存在,返回: ALREADY CONNECT 如果连接成功(非透传),返回: CONNECT OK 如果连接成功(透传),返回: CONNECT 否则返回: STATE: <sl_state> CONNECT FAIL
多路连接(+CIPMUX=1)时: AT+CIPSTART=,,< IP address>, 或 AT+CIPSTART=,,, 如果格式正确且处于 IP STATUS或IP PROCESSING时,返回: OK 否则返回: +CME ERROR 紧接着会有URC上报,上报内容如下: 如果连接已经存在, 返回: ,ALREADY CONNECT 如果连接成功,返回: ,CONNECT OK 否则返回: ,CONNECT FAIL
测试命令 AT+CIPSTART=? 单路连接(+CIPMUX=0)时返回: +CIPSTART: (取值列表),(IP address range),(port range)? +CIPSTART: (取值列表),(domain name),(port range) OK
多路连接(+CIPMUX=1)时返回: +CIPSTART: ( 取 值 列 表 ),( 取 值 列 表 ),(IP addressrange),(port range) +CIPSTART: (取值列表),( 取值列表),(domain name),(portrange) OK
注意事项 此命令应用于建立 TCP/UDP 连接; 当前状态可用AT+CIPSTATUS查询; 单路连接时只当前状态为IP INITIAL 或者 IP STATUS或TCP/UDP CLOSE 时可执行,多路连接时当前状态为 IP STATUS或IP PROCESSING时可执行; 在当前状态不是上述可执行状态时,需执行 AT+CIPSHUT后再开始建立连接; 多路连接时,设置此命令前,必须先执行AT+CSTT, AT+CIICR,AT+CIFSR这三个命令。
参数定义:

参数 定义 取值 对取值的说明
Link No. 0~5 整数型,表示连接序号
连接类型,字符串型(双引号可加可不加) “TCP” 建立TCP连接
“UDP” 建立UDP连接
远端服务器 IP 地址 最大32个字节 字符串参数(双引号可加可不加)
远端服务器域名 最大32个字节 字符串参数(双引号可加可不加)
远端服务端口 1~65535 整数型
<sl_state> 单连接状态 IP INITIAL 初始化
IP START 启动任务
IP CONFIG 配置场景
IP GPRSACT 场景已激活
IP STATUS 获得本地 IP 状态
TCP CONNECTING/UDP CONNECTING/SERVER LISTENING TCP 连接中/UDP 端口注册中/服务器侦听中
CONNECT OK 连接建立成功
TCP CLOSING/UDP CLOSING 正在关闭 TCP 连接,正在注销 UDP 端口
TCP CLOSED/UDP CLOSED 连接断开 /UDP 端口被注销
PDP DEACT 场景被释放
2.8 选择TCPIP应用模式:AT+CIPMODE
语法规则:

命令类型 语法 返回
设置命令 AT+CIPMODE= OK
查询命令 AT+CIPMODE? +CIPMODE: OK
测试命令 AT+CIPMODE=? +CIPMODE: (0-NORMAL MODE,1-TRANSPARENT MODE) OK
注意事项 此命令只有在IP INITIAL状态下才能进行设置 只有TCP单链接才支持透明传输模式
参数定义:

参数 定义 取值 对取值的说明
TCPIP应用模式 0 非透明传输模式
1 透明传输模式
2.9 选择非透传数据发送模式:AT+CIPQSEND
语法规则:

命令类型 语法 返回
设置命令 AT+CIPQSEND= OK
查询命令 AT+CIPQSEND? +CIPQSEND: OK
测试命令 AT+CIPQSEND=? +CIPQSEND: (0,1,2) OK
参数定义:

参数 定义 取值 对取值的说明
非透传数据发送模式 0 缺省值。快发模式0。 当服务器收到数据,模块返回: SEND OK (单链接) 或 , SEND OK (多链接)
1 快发模式1。当数据发送到模块 , 终 端 返 回: DATAACCEPT: (单链接) DATAACCEPT:, (多链接)
2 慢发模式 当服务器收到数据,模块返回: SEND OK (单链接) 或 , SEND OK (多链接)
注:

慢发模式每发送一笔数据需要服务器那边的确认,而快发则发送到模块就可以了,不需要服务器的确认。推荐使用0或1,即快发模式;

这两种快发模式实现机制没有区别,区别只在于发送完数据,模式0提示SEDN OK,模式1提示DATA ACCEPT;

建议使用CIPACK命令查询每笔数据对端是否已经收到

2.10 设置接收的数据末尾是否自动添加回车换行:AT+CIPRXF
语法规则:

命令类型 语法 返回
设置命令 AT+CIPRXF= OK
查询命令 AT+CIPRXF? +CIPRXF: OK
测试命令 AT+CIPRXF=? +CIPRXF: (的取值列表) OK
参数定义:

参数 定义 取值 对取值的说明
模式 0 每笔收到的数据末尾自动添加一个回车换行(\r\n)
1 每笔收到的数据末尾不添加回车换行(\r\n)
2.11 配置透明传输模式:AT+CIPCCFG
语法规则:

命令类型 语法 返回
设置命令 AT+CIPCCFG=,,,[,,,,] OK
查询命令 AT+CIPCCFG? +CIPCCFG: ,,,,,,, OK
测试命令 AT+CIPCCFG=? +CIPCCFG: (NmRetry:3-8),(WaitTm:2-10),(SendSz:1-1460),(esc:0,1),(Rxmode:0,1),(RxSize:50-1460),(Rxtimer:20-1000),(BufClean:0,1) OK
注意事项 此命令只在单路连接(AT+CIPMUX=0)且AT+CIPMODE=1的情况下可以设置
参数定义:

参数 定义 取值 对取值的说明
一个IP包的重传次数 3~8 缺省值为5
间隔发送时间 2~10 单位为 100ms,缺省值为2。
每次发送数据字节数 1~1460 缺省值为1024
是否开启转义序列 1 开启转义序列,缺省值
0 不开启转义序列
从串口接收数据的时间间隔设置 1 设置时间间隔,间隔为
0 没有时间间隔
每次接收数据的长度 50-1460 单位为bytes
从串口接收数据的时间间隔 20-1000 单位为ms,缺省值为50ms
退出透传后是否清空发送缓存区 0 不清空缓冲区 一旦出错自动退出透传模式后,保留缓存数据。下次重连进入透传模式后,会发送之前缓冲区中的数据给服务器
1 清空缓存区 一旦出错自动退出透传模式后,缓存被清空。下次重连进入透传模式后,不会发送之前缓冲区中被清空的数据给服务器
2.12 发送数据:AT+CIPSEND
语法规则:

命令类型 语法 返回和说明
设置命令 单路连接(AT+CIPMUX=0): AT+CIPSEND= 本命令用于在单链接模式下发送长度不可变的数据 1) 正常情况下返回 > >后输入长度的数据,则数据自动发送出去。 如果是慢发模式,则数据发送成功后,有如下的返回: (不推荐使用慢发模式!) SEND OK 如果是快发模式,则数据发送成功后,有如下的返回: (推荐使用快发模式!) DATA ACCEPT: 如果数据发送失败,则有如下的返回: SEND FAIL 2) 如果连接未建立或者连接被断开,返回: +CME ERROR
多路连接(+CIPMUX=1): AT+CIPSEND=[,] 当省略时,本命令用于多连接模式下发送长度可变的数据。响应”> ”, 此时 输入数据,执行CTRL+Z(0x1A)发送,或执行ESC(0x1B)中止操作; 当不省略时,本命令用于多连接模式下发送长度不可变的数据。响应”> ”,>后输入长度的数据,则数据自动发送出去。 如果连接未建立或者连接被断开,返回: +CME ERROR 如果是慢发模式,则数据发送成功后,有如下的返回: (不推荐使用慢发模式!) ,SEND OK 如果是快发模式,则数据发送成功后,有如下的返回: (推荐使用快发模式!) DATA ACCEPT:, 如果数据发送失败,返回: ,SEND FAIL
执行命令 AT+CIPSEND 本命令用于在单链接模式下发送长度可变的数据 响应”> ”, 此时 输入数据,执行CTRL+Z(0x1A)发送,或执行ESC(0x1B)中止操作 如果连接未建立或已被断开,返回: +CME ERROR 如果是慢发模式,则数据发送成功后,有如下的返回: (不推荐使用慢发模式!) SEND OK 如果是快发模式,则数据发送成功后,有如下的返回: (推荐使用快发模式!) DATA ACCEPT: 如果数据发送失败,返回: SEND FAIL
查询命令 AT+CIPSEND? 单路连接(AT+CIPMUX=0)返回: +CIPSEND: OK
多路连接(AT+CIPMUX=1)返回: +CIPSEND: , OK
测试命令 AT+CIPSEND=? 单路连接(AT+CIPMUX=0)返回: +CIPSEND: OK
多路连接(AT+CIPMUX=1)返回: +CIPSEND: <0-7>, OK
注意事项 l 数据的最大发送长度由网络决定。 l 通过AT+CIPATS可以在设定的时间内自动发送数据。 l 只有在连接已建立的状态下才可以发送数据。 l 一次最多能发送字节数不大于值 l 不推荐使用慢发模式! l 发送命令AT+CIPSEND或AT+CIPSEND=以\r或\r\n为结尾。若用户以\r结尾,如果发送的数据第一个字节恰好是\n,模块会判断发送命令以\r\n为结尾,导致发送的数据的第一个字符\n被吞掉。所以,此时建议用户用CIPSEND发送数据以\r\n为结尾。 例如: AT+CIPSEND\r >\n123456 模块会判断为AT+CIPSEND\r\n,会把数据中第一个字符\n吃掉。服务器那边收到的数据是123456。解决的方法是: AT+CIPSEND\r\n >\n123456 再例如: AT+CIPSEND=7\r >\n123456 模块会判断为AT+CIPSEND\r\n,会把数据中第一个字符\n吃掉,导致数据少一个字符,会一直发不出去。解决的方法是: AT+CIPSEND=7\r\n >\n123456
参数定义:

参数 定义 取值 对取值的说明
Link No. 与+CIPSTRAT中定义一致 0~5 整数型,表示连接序号
发送数据长度 - 整数型,它必须小于
每次发送数据最大值 - 整数型,目前是1460字节
2.13 设置自动发送数据前的定时时间:AT+CIPATS
语法规则:

命令类型 语法 返回
设置命令 AT+CIPATS=[,

参数 定义 取值 对取值的说明
是否设置自动发送时间,整数型 0 未设置自动发送数据 (缺省值)
1 设置自动发送数据

命令类型 语法 返回
设置命令 AT+CIPSPRT= OK
查询命令 AT+CIPSPRT? +CIPSPRT: OK
测试命令 AT+CIPSPRT=? +CIPSPRT: (取值列表) OK
参数定义:

参数 定义 取值 对取值的说明
执行 AT+CIPSEND 后是否显示‘>’ 和发送情况提示(即‘SEND OK‘或‘DATA ACCEPT‘)。 整数型 0 不显示‘>’,但返回 “SEND OK”或”DATA ACCEPT” 注**:返回 “SEND OK”或”DATA ACCEPT”由AT+CIPQSEND这个命令的设定来决定
1 显示‘>’,且返回 “SEND OK” 或”DATA ACCEPT” 缺省值 注
😗*返回 “SEND OK”或”DATA ACCEPT” 由AT+CIPQSEND这个命令的设定来决定
2 不显示‘>’,不返回 “SEND OK” 或”DATA ACCEPT”
状态机

◆输入 AT+CIICR,会马上进入 IPCONFIG 状态,当返回 OK 后,会进入到 IPGPRSACT 状态;

◆输入 AT+CIPSTART 后,会立马进入 IP/UDPCONNECTING 状态,如果后续模块上报 CONNECTOK 这个 URC,
表明连接服务器成功,此时进入 CONNECTOK 状态;

◆输入 AT+CIPCLOSE 后,立马进入 TCP/UDPCLOSING 状态,此时如果模块上报 CLOSEOK,则表明关闭与服务 器的连接成功,此时模块进入 TCP/UDPCLOSED 状态;

◆如果模块上报+PDPDEACT 这个 URC,则标志着模块释放 PDP 上下文,并进入了 PDPDEACT 状态;

◆在 IPGPRSACT,IPSTATUS,CONNECT OK 以及 TCP/UDPCLOSED 状态下,输入 AT+CGATT=0,则也可以使模 块释放上下文,进入 PDPDEACT 状态;

◆模块进入 PDPDEACT 状态,仍需要输入 AT+CIPSHUT,进入 IPINITIAL 状态; ◆模块在各个状态下均可以输入 AT+CIPSHUT,进入 IPINITIAL 状态。

3 AT指令示例
3.1 连接网络
3.1.1 开机
通过拉低powerkey2秒进行开机,开机以后通过串口循环发送AT直到收到OK,如果90秒没有收到OK请拉低 RESET_IN_N 引脚 150ms 以上。或使用其他方法见开关机章节

3.1.2 查询卡状态
**AT+CPIN?**查询卡状态,直到收到+CPIN: READY,如果10s内没有收到建议重启模块

3.1.3 查询网络注册情况
**AT+CGATT?**查询是否注册网络收到+CGATT: 1值是1即为注册成功,正常情况下注册时间不会超过两分钟,如果超过两分钟没有注册可以进入飞行模式五秒后退出再查询,或者直接重启模块。

3.1.4 激活网络
AT+CSTT配置网络,非私有APN以外Cat1的固件支持根据卡自动配置APN,直接输入AT+CSTT即可,模块会按照自动获取的APN设置CSTT的APN。

AT+CIICR激活网络,在IP START的状态使用AT+CIICR激活网络
AT+CIFSR查询是否获取IP,如果成功就可以开始配置TCP连接了,如果不成功使用AT+CIPSHUT关闭移动网络,从AT+CSTT重新进行。一定要查询一次再进行服务器连接。

3.2 连接TCP
此处使用的是非SSL连接

AT+CIPSTART建立连接

命令类型 语法 返回和说明
设置命令 单 路 连 接 (+CIPMUX=0)时:AT+CIPSTART=,, 或 AT+CIPSTART=,,
多路连接(+CIPMUX=1)时:AT+CIPSTART=,,< IP address>, 或 AT+CIPSTART=,,, 如 果 格 式 正 确 且 处 于 IP INITIAL 或 者 IP STATUS或TCP/UDP CLOSE状态,返回: OK 否则返回: +CME ERROR
紧接着会有URC上报,上报内容如下:
如果连接已经存在,返回: ALREADY CONNECT
如果连接成功(非透传),返回: CONNECT OK 如果连接成功(透传),返回: CONNECT
否则返回: STATE: <sl_state>
CONNECT FAIL如果格式正确且处于 IP STATUS或IP PROCESSING时,返回: OK 否则返回: +CME ERROR
紧接着会有URC上报,上报内容如下:
如果连接已经存在, 返回: ,ALREADY CONNECT
如果连接成功,返回: ,CONNECT OK 否则返回: ,CONNECT FAIL
测试命令 AT+CIPSTART=? 单路连接(+CIPMUX=0)时返回: +CIPSTART: (取值列表),(IP address range),(port range)? +CIPSTART: (取值列表),(domain name),(port range)
OK 多路连接(+CIPMUX=1)时返回: +CIPSTART: ( 取 值 列 表 ),( 取 值 列 表 ),(IP addressrange),(port range) +CIPSTART: (取值列表),( 取值 列表),(domain name),(portrange)
OK
注意事项 此命令应用于建立 TCP/UDP 连接;
当前状态可用 AT+CIPSTATUS 查询;
单路连接时只当前状态为 IP INITIAL 或者 IP STATUS 或 TCP/UDP CLOSE 时可执行,多路连接时当 前状态为 IP STATUS 或 IP PROCESSING 时可执行;
在当前状态不是上述可执行状态时,需执行 AT+CIPSHUT 后再开始建立连接;
多路连接时,设置此命令前,必须先执行 AT+CSTT, AT+CIICR,AT+CIFSR 这三个命令。
参数定义

参数 参数 取值 对取值的说明
Link No. 0~5 整数型,表示连接序号
连接类型,字符串型
(双引号可加可不加) “TCP”
“UDP” 建立TCP连接
建立UDP连接
远端服务器 IP 地址 最大32个字节 字符串参数(双引号可加可不加)
远端服务器域名 最大 32 个字节 字符串参数(双引号可加可不加)
远端服务端口 1~65535 整数型
示例

AT+CIPSTART=“TCP”,“120.76.201.131”,2000

返回

CONNECT OK表示连接成功

3.3 发送数据
AT+CIPSEND发送不定长数据,收到>以后就可以发送数据,然后发送十六进制1A结束发送,发送完1A以后设备会向服务器发送1A之前的所有数据。

3.4 接收数据
当连接服务器成功以后默认配置是服务器下发的数据会通过串口自动上报,直接就可以接收数据。

其他说明

最新的AT固件支持开机直接发送AT+CIPSTART联网,不过不推荐使用,推荐根据状态机一步一步实现

4TCP使用SSL功能
为什么需要SSL

不使用SSL/TLS的HTTP通信,就是不加密的通信。所有信息明文传播,带来了三大风险。

(1) 窃听风险(eavesdropping):第三方可以获知通信内容。
(2) 篡改风险(tampering):第三方可以修改通信内容。
(3) 冒充风险(pretending):第三方可以冒充他人身份参与通信。

SSL/TLS协议是为了解决这三大风险而设计的,希望达到:

(1) 所有信息都是加密传播,第三方无法窃听。
(2) 具有校验机制,一旦被篡改,通信双方会立刻发现。
(3) 配备身份证书,防止身份被冒充。

总而言之,SSL就是为了数据安全。

4.1 相关AT指令介绍
4.2 设置TCP 使用SSL 功能:AT+CIPSSL
命令类型 语法 返回
设置命令 AT+CIPSSL= OK
查询命令 AT+CIPSSL? +CIPSSL: OK
测试命令 AT+CIPSSL=? +CIPSSL: (0-1)OK
注意事项 在 CIPSTART 之前输入设置命令 AT+CIPSSL=1 来打开 SSL 功能。打开 SSL 功能后,模块会在 TCP 连接建立后自动进行 SSL 验证。当前仅支持作为 SSL Client 应用。
参数定义:

参数 定义 取值 对取值的说明
SSL 功能开关 0 关闭 SSL
1 打开 SSL
4.3 配置 TCP SSL 参数:AT+SSLCFG
设置命令用来设置 SSL 版本,SSL 加密算法(ciphersuites),安全等级(security level),CA 证书(Certificate Authority Certificate),客户端证书(client certificate)和客户端密钥(client key)。这些参数在 SSL 协议的握手过程中会用到。语法规则:

命令类型 语法 返回
设置命令 AT+SSLCFG=“sslversion”,[,] 如果缺失,则查询对应的SSL版本: +SSLCFG: “sslversion”,, OK 否则,设置对应的SSL版本: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“ciphersuite”,[,] 如果缺失,则查询对应的加密算法: +SSLCFG: ciphersuite",, OK 否则,设置 对应的加密算法: 如果格式和参数正确,返回: OK 如果目录格式或参数错误,返回: ERROR
AT+SSLCFG=“cacert”,[,] 如果 参数缺失,则查询 对应的 CA 证书路径: +SSLCFG:“cacert”,, OK 否则,设置 对应的 CA 证书路径: 如果格式和参数正确,返回: OK 如果目录格式或参数错误,返回: ERROR
AT+SSLCFG=“clientcert”,[,<client_cert_path>] 如果 <client_cert_path> 参数缺失,则是查询 对应的客户端证书路径: +SSLCFG:“clientcert”,,<client_cert_path> OK 否则,设置 对应的客户端证书路径: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“clientkey”,[,<client_key_path>] 如果 <client_key_path> 缺失,则是查询 对应的客户端密钥路径: +SSLCFG:“clientkey”,,<client_key_path> OK 否则,设置 对应的客户端密钥路径: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“seclevel”,[,] 如果 参数缺失,则是查询 相关的安全等级 : +SSLCFG:“seclevel”,, OK 否则,设置 对应的安全等级: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“hostname”,[,] 如果 参数缺失,则是查询 相关的域名: +SSLCFG:“hostname”,, OK 否则,设置 对应的主机名: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“ignorelocaltime”,[,] 如果 缺失,则是查询 相关的证书过期时间检查这项的设置: +SSLCFG:“ignorelocaltime”,, OK 否则,设置 对应的证书过期时间检查参数: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“negotiatetimeout”,[,<negotiate_time>] 如果 <negotiate_time> 参数缺失,则是查询 对应的最大 SSL 协商时间: +SSLCFG:“negotiatetimeout”,,<negotiate_time> OK 否则,设置 对应的最大 SSL 写上协商时间: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“clientrandom”,[,] 如果 缺失,则是查询 相关的随机数 : +SSLCFG:“clientrandom”,, OK 否则,设置 对应的随机数: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“premaster”,[,] 如果 缺失,则是查询 相关的 : +SSLCFG:“premaster”,, OK 否则,设置 对应的 premaster : 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=“verifymode”,[,] 如果 缺失,则查询 相关的证书验证模式,此时返回: +SSLCFG:" verifymode",, OK 否则,设置证书认证模式是根证书认证还是其他证书认证: 如果格式和参数正确,返回: OK 如果命令格式或参数错误,返回: ERROR
AT+SSLCFG=”XXXXX”,, 擦除相应的参数。”XXXXX”是指:“sslversion”,“ciphersuite”,"cacert"等关键字。 注意: 后一定要有逗号,如果 后面没有逗号,则只是查询。
测试命令 AT+SSLCFG=? OK
注意事项 TCP SSL的功能示例,请参考本章后面的例子。
参数定义:

参数 定义 取值 对取值的说明
SSL 上下文 id 0~5,34,88,153 整数型。TCP 功能时与 CIPSTART 中的绑定。例如:当多链接中 CIPSTART 中设置链接号为 1,则SSL 上下文 id 也为 1。TCP 单链接中 SSL 上下文 id 固定为 0.FTP 功能时=34(十进制)MQTT 功能时=88(十进制)HTTP 功能时=153(十进制)
SSL 版本 0 SSL3.0
1 TLS1.0
2 TLS1.1
3 TLS1.12
4 ALL above
SSL ciphersuites 0X0035 TLS_RSA_WITH_AES_256_CBC_SHA
0X002F TLS_RSA_WITH_AES_128_CBC_SHA
0X0005 TLS_RSA_WITH_RC4_128_SHA
0X0004 TLS_RSA_WITH_RC4_128_MD5
0X000A TLS_RSA_WITH_3DES_EDE_CBC_SHA
0X003D TLS_RSA_WITH_AES_256_CBC_SHA256
0XFFFF ALL above
被信任的 CA 证书路径 字符串型
<client_cert_path> 客户端证书路径 字符串型
<client_key_path> 客户端密钥路径 字符串型
安全等级 0 No authentication
1 服务器鉴权
2 服务器鉴权和客户端鉴权(如果服务器要求的话)
主机名
该参数决定如何对待过期证书 0 关心证书的过期时间
1 忽略证书的过期时间
<negotiate_time> SSL 协商阶段的最大时间 10~300 单位:秒
随机数,十六进制数组成的字符串,支持 56 和 64 个字节 数字和字母的组合 字符串型,双引号可加可不加,数字的范围:0~9,字母的范围:ABCDEF(大小写不敏感)。例如 56 个字节的:101B12C3141516171F19202122232425262728293031323334353637
premaster
证书验证模式 0 根证书认证
1 其他证书认证
SSL使用参考 SSL

5 相关资料以及购买链接
AT指令手册链接: AT手册

相关开发板购买链接
Air724UG开发板
Air724 开发板使用说明

6 常见问题
(1) 连接服务器失败

服务器必须是公网地址
使用PC上的TCP UDP测试工具客户端、或者mqtt.fx,连接服务器确认一下是否可以连接成功,排除服务器故障
如果连接ssl服务器,确认下core文件是否支持ssl功能(例如2G模块的某些core文件不支持ssl功能)
2G模块不要使用中国联通卡
检查下模块信号、网络注册、网络附着、PDP激活状态
检查下SIM卡是否欠费【4G模块有一种欠费表现:无法注册4G网络,可以注册2G网络】
(2)最多同时支持多少个连接
AT版本最多8个连接

(3) 关于"TCP单/多链接时,刚开始发送数据成功,服务器能收到,间隔十几分钟,模块端AT+CIPSTATUS查询链接存在,AT+CIPSEND数据发送成功,但服务器却没收到数据"问题
1.用保活探针(CIPTKA)的方法来解决
2.用心跳包(HEARTCONFIG)来解决
详细解释和AT示例,可参考链接http://doc.openluat.com/shareArticle/9gI328ebaVFSr

(4)724ug 模块tcp联网成功 每次开机都需要重新下发AT指令连接吗?
是的,模块不保存已输入AT指令

(5)模块上报PDP: DEACT , 这个要怎么处理
4G模块会产生一个+PDP: DEACT的URC提示,出现此提示说明已经激活的PDP承载被网络端去激活了,此时仍然需要向4G模块发送AT+CIPSHUT命令主动关闭PDP,然后再重新激活,再重新连接TCP服务器。

(6)重试多次PDP一直激活失败
如果重试多次,PDP一直激活失败,则尝试使用如下手段恢复:
1、使用RESET引脚复位模块
2、极端情况下,直接给模块断电,再上电,POWER KEY引脚拉低开机

(7) 如何发送心跳包
cat1模块如何发送心跳包cat1模块如何发送心跳包

(8) 由数据透传状态转向命令状态,发+++切换不了
发送时不要勾选回车换行
image.png
测试效果
image.png
image.png

(9) TCP调试网址
https://netlab.luatos.com/

(10) 当我连续发送几百个字节的数据的时候,在里面会夹杂0x0a0x0d这种,如何避免这个呢
通过AT+CIPRXF设置接收的数据末尾是否自动添加回车换行(网络连接前设置)
image.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

l531798151

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值