Quectel EC20 R2.1 AT指令集(TCP/部分)

lichongyang
lichongyang
lichongyang
111
文章
0
评论
2020年1月7日09:25:20 评论 922 次浏览

1、介绍


Quectel EC2x 模块具有嵌入式 TCP/IP堆栈,使主机可以通过 AT 命令直接上网。可以实现TCP客户端、UDP客户端、TCP服务器和UDP服务器。

1.1 使用 AT 命令的过程

  • 开启模块电源,发送 AT指令,等待模块返回 OK。
    • 开机过程:保持电源键拉低 2 秒,然后拉高。
    • 关机过程:发送 AT + QPOWD 命令,再过12 秒后,切断电源。
  • 查询 SIM 卡状态(AT + CPIN?),如果 20 秒后还无法识别 SIM 卡,重新启动模块。
  • 查询 CS 服务(AT + CREG?),如果 90秒后未能在 CS 上注册域名服务,重新启动模块。
    • 如果返回 1 或 5 ,代表 CS 服务注册成功。
  • 在 60秒内成功注册CS域名服务后,查询 PS 服务(AT + CGREG?/AT + CEREG?)
    • 如果返回 1 或 5 ,代表 PS 服务注册成功。
  • 配置 PDP 上下文和 Qos(AT+QICSGP/AT+CGQREQ/AT+CGEQREQ/AT+CGQMIN/AT+CGEQMIN)
  • 激活 PDP 上下文(AT+QIACT=和 AT+QiACT?)
    • 如果 150 秒内没有回应,则需重启模块。
    • 如果重试 3 次都无法激活 PDP,则需停用 PDP 上下文(AT+QIDEACT=),停止成功,转到第 2 步(查询SIM卡状态)重新执行。如果 3 次都没停止成功或超过40秒没有回应,则重启模块。
  • 打开连接(AT+QIOPEN),返回 connectID,err
    • 如果重试 5 次或 150 秒内都没连接成功,则需停止 PDP后,转到第 6 步(激活 PDP 上下文)。
  • 发送数据(AT+QISEND=)
    • 发送数据后,每 5 秒 发送一次确认,如果 24 次后仍未确认,可能 TCP 连接异常,需要关闭当前连接,转到第 7 步(打开连接)重新建立连接。
    • TCP心跳:定时发送小数据包,来检测 TCP 连接是否正常。
  • 关闭连接(AT+QICLOSE=)
    • 如果 10 秒内无法关闭连接,需要重新启动模块。

1.2 数据访问模式

  • Buffer access mode  (缓冲区访问模式)
    • 可以通过 AT+QISEND命令发送数据,收到互联网数据时,先保存到缓冲区,并发送 URC 报告(+QIURC:“recv”,)。客户端可以通过 AT+QIRD 命令读取数据。
  • Direct push mode  (直推模式)
    • 可以通过 AT+QISEND命令发送数据,收到互联网数据时,数据直接输出到客户端(+QIURC:“recv”,)。
  • Transparent access mode (透明访问模式,透传)
    • 客户端直接发送数据到互联网,接收的数据直接输出到客户端。
    • 模块切换到缓冲区访问模式。客户端可以使用 “+++”退出透传模式。返回 OK 。退出透传模式时,为了防止 “+++” 被解释为数据,输入 “+++” 之前和之后,1 秒内不能输入任何字符。
    • 可以通过 AT+QISWTMD 命令返回透传模式。将设为 2。如果成功进入透传模式,将返回 CONNECT。
    • 如果ATO从透明访问模式退出后。如果成功重新进入透明访问模式,将返回“CONNECT” 。如果没有进入透明访问模式,ATO将返回“NO CARRIER”。

2、TCP / IP AT命令的描述


2.1、AT命令的描述


AT+QICSGP 配置TCP / IP参数
该命令可用于配置,,等TCP / IP上下文参数。QoS设置可以由AT + CGQMIN,AT + CGEQMIN,AT + CGQREQ和AT + CGEQREQ配置 。

AT+QICSGP=?:查询命令参数。
AT+QICSGP=:查询 contextID的配置信息。
AT+QICSGP=[,,[,,)[,]]]:配置 contextID信息。
:整数类型。上下文ID。范围是1-16。
:整数类型。协议类型。1(IPV4)、2(IPV4V6)。 
:字符串类型。接入点名称。
:字符串类型。用户名。 
:字符串类型。密码。
:整数类型。身份验证方法。0(没有)、1(PAP)、2(CHAP)、3(PAP或CHAP)。
返回信息:OK 或 ERROR。
AT+QIACT 激活 PDP 上下文
在PDP上下文激活之前,应该配置TCP/IP参数。激活后,通过 AT+QIACT 可以查询IP地址。根据3GPP规范中,该模块同时只支持三个PDP上下文激活,所以客户必须确保PDP上下文激活的数量小于3。根据网络,在 150 秒内返回 OK 或 ERROR,然后执行 AT+QIACT?。在这之前不能执行任何命令。

AT+QIACT=? :查询命令参数
AT+QIACT?:查询当前激活的 PDP 上下文信息。
:激活的 PDP 上下文 ID。
:整数类型。上下文状态。0(停用)、1(活动)
:协议类型。1(IPV4)、2(IPV4V6)。
:本地 IP 地址。
AT+QIACT=:激活 PDP 上下文。
:激活的 PDP 上下文 ID。
返回信息:OK 或 ERROR、超时时间 150 秒。
AT+QIDEACT 停用 PDP 上下文
AT+QIDEACT=?:查询命令参数。
AT+QIDEACT= :停用指定 PDP 上下文。返回 OK 或 ERROR,超时时间 40 秒。
AT+QIOPEN 打开 Socket 服务
该命令用于打开套接字服务。

AT+QIOPEN=?:查询命令参数。
AT+QIOPEN=,,,/,[,[,]] :打开 Socket 服务。
  :整数类型。上下文ID。范围是1-16。  
  :整数类型。套接字服务索引。范围是0-11。  
:字符串类型。套接字服务类型。  
“ TCP ” :作为客户端启动TCP连接  
“ UDP ”:作为客户端启动UDP连接  
“TCP LISTENER”  :启动TCP服务器以侦听TCP连接  
“UDP SERVICE” :启动UDP服务  
:字符串类型。 
如果是TCP或UDP ,则表示远程服务器的IP地址,例如 “220.180.239.212”。 
如果是TCP LISTENER或UDP SERVICE 地址,请输入“127.0.0.1”。  
:字符串类型。远程服务器的域名地址。  
 :远程服务器的端口,仅在为“TCP”或“UDP”时有效。范围是0-65535。  
 :本地端口。范围是0-65535。 
如果是“TCP LISTENER”或“UDP SERVICE”,则此参数必须指定。
如果是“TCP”或“UDP”。如果为0,那么本地端口将是自动分配。否则,将按指定分配本地端口。
:整数类型。套接字服务的数据访问模式。
0: 缓冲区访问模式
1:直推模式  
2:透明访问模式
:整数类型。操作的错误代码。请参阅第4章。
A T + QICLOSE关闭套接字服务
该命令用于关闭指定的套接字服务。根据网络的不同,最多需要一次 10秒(默认值,可以通过修改)在执行后   返回“ OK ” 或“ ERROR ”AT + QICLOSE。在返回响应之前,无法执行其他AT命令。

AT + QICLOSE =?:返回命令参数。
AT + QICLOSE = [,]:如果成功关闭,响应: OK, 如果未能关闭,则回复:  错误 
  :整数类型。套接字服务索引。范围是0-11。
:整数类型。如果在内没有收到其他对等体的FIN ACK,则  
模块将强制关闭套接字。范围是1-65535,默认值是10。  单位:秒。

AT+QISTATE 查询套接字服务状态
该命令用于查询套接字服务状态。如果为0,则返回所有现有套接字服务状态 。如果为1,则返回指定的套接字服务状态 。

AT+QISTATE=?:测试模块返回是否正常。
AT+QISTATE? or AT+QISTATE:返回所有套接字的信息。
AT+QISTATE=,:查询指定上下文的所有套接字的连接状态。
:整数类型。查询类型。
0:查询指定上下文的连接状态  
1:查询指定套接字服务的连接状态
  :整数类型。上下文ID。范围是1-16。  
  :整数类型。套接字服务索引。范围是0-11。  
:字符串类型。套接字服务类型。  
“ TCP ” :作为客户端启动TCP连接  
“ UDP ”:作为客户端启动UDP连接  
“TCP LISTENER”  :启动TCP服务器以侦听TCP连接 
“TCP INCOMING”:启动TCP服务器接受的TCP连接
“UDP SERVICE” :启动UDP服务  
:字符串类型。 
如果是TCP或UDP ,则表示远程服务器的IP地址,例如 “220.180.239.212”。 
如果是TCP LISTENER或UDP SERVICE 地址,请输入“127.0.0.1”。  
 :远程服务器的端口,仅在为“TCP”或“UDP”时有效。范围是0-65535。  
 :本地端口。范围是0-65535。 
如果是“TCP LISTENER”或“UDP SERVICE”,则此参数必须指定。
如果是“TCP”或“UDP”。如果为0,那么本地端口将是自动分配。否则,将按指定分配本地端口。
:整数类型。套接字服务状态
0:“初始”:尚未建立连接
1:“打开”:客户端正在连接或服务器正在尝试l isten
2:“已连接”:已建立客户端/传入连接
3:“侦听”:服务器在侦听客户端连接”
4:“关闭”:连接正在关闭 
:仅在为“TCP INCOMING”时有效。代表哪个服务器接受此TCP传入连接,其值与之相同此服务器的“TCP LISTENER”的。
:整数类型。套接字服务的数据访问模式。
0: 缓冲区访问模式
1:直推模式  
2:透明访问模式
:字符串类型。套接字服务的COM端口。  
“usbmodem”  :USB MODEM端口
“USBAT”  :USB AT PORT
“UART1”  :UART PORT1
“cmux1”  :MUX PORT 1
“cmux2”  :MUX PORT 2
“cmux3”  :MUX PORT 3  
​​​​​​​“cmux4”:MUX PORT  4
A T + QISEND发送数据
如果指定套接字服务的是缓冲区访问模式或直接推送模式,则数据可以是通过AT + QISEND发送。如果数据成功发送到模块,将返回“ SEND OK ” 。否则它将返回“ SEND FAIL ” 或“ ERROR ” 。“ SEND FAIL ” 表示发送缓冲区已满客户可以尝试重新发送数据。“ERROR”表示在发送过程中遇到错误  数据。客户应该延迟一段时间来发送数据。最大数据长度为1460字。“SEND OK”并不意味着数据已成功发送到服务器。客户可以查询数据是否通过AT + QISEND = ,0命令到达服务器。透传模式下不需要AT指令发送数据

AT + QISEND =? :所有命令的这种格式(=?)的作用是测试模块是否支持此指令。
AT+QISEND=:指定通过那个连接发送不定长的数据。输入完数据后按 CTRL+Z 发送,或按ESC取消发送,如果缓冲区满 返回 SEND FAIL,如果连接关闭或参数错误则返回 ERROR。
AT+QISEND=,:发送定长的数据,在提示符 “>" 后输入数据,长度到达指定值时将自动发送数据。如果缓冲区满 返回 SEND FAIL,如果连接关闭或参数错误则返回 ERROR。
AT+QISEND=,,, :当服务类型是UDP SERVICE时,使用这条语句发送。流程同上。
AT + QISEND = ,0:当数据长度为0时,语句的作用就是查询发送缓冲区状态。
:整数类型。套接字服务索引。范围是0-11。
:整数类型。要发送的数据长度,不能超过1460字节。 
:字符串类型。远程IP地址(必须是点格式),仅在是“UDP SERVICE”时才有效。
:整数类型。远程端口,仅在为“UDP SERVICE”时有效。
:整数类型。发送数据的总长度。单位:字节。
:整数类型。确认数据的总长度。单位:字节。
:整数类型。未确认数据的总长度。单位:字节。
:整数类型。操作的错误代码。请参阅第4章。
AT+QIRD 检索 TCP/IP 数据
在缓冲区访问模式下,模块接收数据后,将数据存入缓冲区,并报告“ + QIURC:“recv”,“ ,然后AT + QIRD可以检索数据。  请注意,如果缓冲区不为空,并且模块再次接收数据,则不会报告新的数据URC,直到通过AT + QIRD从缓冲区检索到所有接收到的数据。

AT+QIRD=?:测试命令
AT+QIRD=[,]:当是“TCP” / “ UD P” / “TCP INCOMING”时如果指定的连接已收到数据,则响应:+ QIRD:  
AT + QIRD = :当是“UDP服务”时,如果数据存在则相应+ QIRD: , 。
:整数类型。套接字服务索引。范围是0-11。
:要检索的最大数据长度。范围是0-1500字节。 
:接收数据的实际长度。单位:字节。
:字符串类型。远程IP地址(必须是点格式),仅在是“UDP”时才有效。
:整数类型。远程端口,仅在为“UDP”时有效。
:检索到的数据。
:接收数据的总长度。单位:字节。
:读取数据的长度。单位:字节。
:未读数据的长度。单位:字节。
A T + QISENDEX发送十六进制字符串
AT+QISENDEX=?:测试命令
AT+QISENDEX=,:返回 Send OK,SEND FAIL 或 ERROR。
​​​​​​​:整数类型。套接字服务索引。范围是0-11。
​​​​​​​   :字符串类型。十六进制字符 最大长度为512字节。
AT + QISWTMD切换数据访问模式
该命令可用于切换数据访问模式:缓冲区访问模式、直接推送模式和透明访问模式。启动套接字服务时,可以通过以下方式指定数据访问模式  AT + QIOPEN的参数。打开套接字后,数据访问模式可以通过AT + QISWTMD进行更改。

AT + QISWTMD =?:测试命令
AT+QISWTMD=,:如果为0或1时,切换成功返回 OK,如果为2时,切换成功返回 CONNECT。如果发生错误返回 ERROR。
:整数类型。套接字服务索引。范围是0-11。
:整数类型。连接的数据访问模式。 0 缓冲区访问模式、1 直推模式 、2 透明访问模式。
A T + QPING Ping远程服务器 
AT + QPING =?测试命令
AT+QPING=,[,[,]]:Ping远程服务器。
AT+QNTP 从NTP服务器同步本地时间
AT+QNTP=?:测试命令,如果在同步时,则返回 NTP 服务器地址。
AT+QIDNSCFG 配置DNS服务器
AT+QIDNSCFG=?:测试命令。
AT+QIDNSCFG=:查询DNS服务器地址。
AT+QIDNSCFG=,[,] :配置DNS服务器地址。
AT+QIDNSGIP 通过域名查询IP地址
AT+QIDNSGIP=? :测试命令。
AT+QIDNSGIP=,:查询域名对应的 IP 地址。
A T + QICFG 配置可选参数
AT+QICFG=?:测试命令。
AT+QICFG="transpktsize"[,]:发送数据包大小。默认1024。
AT+QICFG="transwaittm"[,] :透明模式下如果发送数据未到数据包大小时,时间超过设定值时自动发送。默认值 2,单位:100毫秒。
AT+QICFG="dataformat"[,,]:发送和接收的默认数据格式,0 文本、1 16进制。
AT+QICFG="viewmode"[,]:接收到的数据的输出格式,0=data header\r\ndata、1= data header,data。
AT+QICFG="tcp/retranscfg"[,,] :整数类型。TCP重传的最大数量。范围是 3-20,默认值为12。这个值无法保存到NV,将对于所有TCP套接字生效。
AT+QICFG="dns/cache"[,dns_cache] :0 禁用DNS缓存、1 启用 DNS 缓存。
AT+QICFG="qisend/timeout"[,time]:AT + QISEND的超时时间,默认 0 ,单位毫秒。
AT+QICFG="passiveclosed"[,closed] :0  关闭服务器时禁用TCP连接的被动关闭。1 关闭服务器时启用TCP连接的被动关闭。
AT+QICFG="udp/readmode"[,mode]:0 禁用阻止模式。1 启用流模式。 
AT+QICFG="udp/sendmode"[,mode] :0 禁用阻止模式。1 启用流模式。 
AT+QICFG="tcp/accept"[,state]:0 禁用自动接受来自客户端的TCP连接。1 启用自动接受来自客户端的TCP连接。
AT+QISDE 用于控制是否回显AT + QISEND的数据
AT + QISDE =?:测试命令。
AT+QISDE= :0 不回显数据,1 回显数据。
A T + QIGETERROR 查询上一个错误代码
如果在执行TCP / IP命令后返回“ERROR”,则可以通过查询错误的详细信息  AT + QIGETERROR。请注意,AT + IGETERROR只返回最后一个TCP / IP AT命令的错误代码 。

AT + QIGETERROR =?:测试命令。
AT + QIGETERROR:查询错误详细信息。


2.2、URC 的描述


TCP / IP AT命令的URC将以“+ QIURC:” 开头的格式报告给主机。 它包含有关传入数据,连接已关闭和传入连接等的报告。实际上,在URC之前和之后都有“ ” ,但可以省略 “ ” 。

连接关闭:+QIURC: "closed",。
当有传入的数据:
+QIURC: "recv",:缓冲区访问模式下的传入数据的URC。可以通过AT + QIRD接收数据。
+QIURC:"recv",,:直接访问模式下的URC。
+QIURC:"recv",,,,:UDP SERVICE模式下的URC。
传入连接已满:+QIURC: "incoming full"
有新的连接:+QIURC:"incoming",,,, 。
PDP停用:+QIURC: "pdpdeact",。​​​​​​​


3、代码示例(略)
4、错误代码(略)
5、术语和缩写


APN:接入点名称
CHAP:挑战握手认证协议
CS:电路交换
DNS:域名系统
ID:互联网协议
IP:互联网协议
NTP:网络时间协议
NV:永久存储,不消失
PAP:密码验证协议
PDP:分组数据协议
PPP:点对点协议
PS:分组交换
QoS:网络通讯服务质量
TCP:传输控制协议
UART:通用异步收发器
UDP:用户数据报协议
URC:未经请求的结果代码
USB:通用串行总线
(U)SIM:(通用)用户身份识别卡
UTC:世界标准时间

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信小程序
  • 我的微信小程序扫一扫
  • weinxin
lichongyang
  • 本文由 发表于 2020年1月7日09:25:20
  • 转载请务必保留本文链接:https://www.chongyangli.com/archives/quectel-ec20-r2-1-at%e6%8c%87%e4%bb%a4%e9%9b%86%ef%bc%88tcp-%e9%83%a8%e5%88%86%ef%bc%89/
IAP协议 总线

IAP协议

协议采用Yomdem协议, Ymodem协议主要有3部分组成: 1.文件传输开启 2.数据传输 3.文件传输结束 文件传输过程: (1)开启是由接收方开启传输,它发一个大写字母"C"开启传输。然后进入...
汽车boot loader开发要点 车载知识

汽车boot loader开发要点

1. Bootloader 的功能 Bootloader,顾名思义,就是驻留在 ECU 非易失性存储器中的一段程序加载代码,每次 ECU 复位后,都会运行 Bootloader。它会检查是否有来自通信...
汽车CAN总线资料下载 CANoe

汽车CAN总线资料下载

CAN总线基础 CAN总线技术基础下载 CAN总线详细教程精心编制不可错过下载 CANoe介绍 CANoe培训介绍下载 Part1-CANoe概述下载 Part2-CANoe软件界面介绍下载 Part...
CAPL语言学习文档 车载知识

CAPL语言学习文档

(一)CAPL简介 CAPL全称为Communication Access Programming Language。CAPL语言允许你编写单独的应用程序。比如说:当你添加新节点的时候,你要测试新添加...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: