赞
踩
EC20 内嵌了 TCP/IP 协议栈, Host 直接通过 AT 命令可以方便的访问 internet, Host 可以减少对 PPP和 TCP/IP协议栈的依赖,实现低成本的设计。UC20提供TCP Client、UDP Client、TCP Server、UDP Service这些内置的 socket 服务功能。
UC20 TCPIP AT
涉及 context profile 配置
、激活和关闭
、 socket 服务的启动和关闭
、数据的收发
这几种类型的命令,一般流程如下:
AT+QICSGP
配置 context profile
的<apn>、 <username>、 <password>
等,同时假如需要修改该 context profile 的 QoS 参数
,可以利用 AT+CGQMIN、 AT+CGEQMIN、 AT+CGQREQ、AT+CGEQREQ
这些命令来配置。AT+QIACT
激活 context profile
,激活后可以利用 AT+QIACT?
查询分配到的 IP 地址。第三步使用 AT+QIOPEN
启动一个socket
服务,通过<servicetype>
可以指定服务类型。通过上报的“+QIOPEN:”这个 URC,可以看出启动 socket 服务是否成功。
发送和接收:socket
服务启动后,可以进行数据的收发。数据收发方式根据数据访问模式不同有所变化,如在 buffer access mode
下, 利用 AT+QISEND
进行数据的发送,接收到数据后,会先上报+QIURC: “recv”,<connectid>
这个 URC 通知 Host 使用 AT+QIRD
去获取数据。 数据传输完毕后,可以使用 AT+QICLOSE
关闭 socket 服务;(第 3 ~ 5 步可以重复进行)。
AT+QIDEACT
关闭 context profile
。按照上面的步骤,举一个AT命令示例。
AT+QICSGP=1,1,”UNINET”,””,””,1 //配置 context profile 1,这里以中国联通举例
AT+QICSGP=1,1,"CMNET","","",1 //移动APN:CMNET; 联通APN:UNINET
OK
AT+QIACT=1 //激活 context profile 1
OK //激活成功
AT+QIACT? //查询 context profile 状态
+QIACT: 1,1,1,"10.7.157.1"
OK
关闭 context profile
AT+QIDEACT=1 //关闭 context profile 1
OK //关闭成功
因为有三种不同的数据访问模式模式,通过<accessmode>
指定数据访问模式 buffer access mode
、 direct push mode
或 transparent access mode
,所以会有三种发送和接受的方式,这里以最简便的transparent access mode
为例,并附上 buffer access mode
的例子。
建立 TCP client 连接,进入 transparent access mode
AT+QIOPEN=1,0,"TCP","61.190.19.174",8705,0,2 //在 context profile 1建立 TCP连接,<connectid>为 0
OK
CONNECT //连接成功
在 transparent access mode 发送数据
<串口上输入要发送的数据,将直接发送到 internet 上>
在 transparent access mode 接收远端 server 发来的数据
test1 //从 internet 接收的数据将直接输出到串口
关闭 TCP client 连接
+++ //输入“+++” 或者在 AT&D1 设置下拉 DTR 退出数据模式, 然后才可以输入 AT
OK
AT+QICLOSE=0 //关闭<connectid>为 0 的连接
OK
- 建立 TCP client 连接,进入 buffer access mode
AT+QIOPEN=1,0,"TCP","61.190.19.174",8705,0,0 //在 context profile 1建立 TCP连接,<connectid>为 0
OK
+QIOPEN: 0,0 //连接成功
------------------------------------
AT+QISTATE=1,0 //查询<connectid>为 0 下的连接状态
+QISTATE: 0,”TCP”,“61.190.19.174”,8705,0,2,1,0,0,”usbmodem”
OK
- 在 buffer access mode 发送数据
AT+QISEND=0 //发送不指定长度数据
> test1<ctrl+Z>
SEND OK
---------------------------
AT+QISEND=0,4 //发送长度为 4 的数据
test
SEND OK
------------------------------
AT+QISEND=0,0 //查询已发送的数据长度
+QISEND: 9,0,0
OK
- 在 buffer access mode 接收远端 server 发来的数据
+QIURC: “recv”,0 //表示<connectid>为 0 的连接上收到数据(假设接收到 5 个字节的数据) AT+QIRD=0,1500 //读取 buffer 中长度为 1500 字节的数据 +QIRD: 5 //表示实际数据仅仅为 5 个字节 test1 OK ----------------------------------- AT+QIRD=0,1500 +QIRD: 0 //buffer 中无数据 OK -------------------------------- AT+QIRD=0,0 //查看总共接收的数据长度、 已读取的数据长度和 Buffer 中未读取的数据长度 +QIRD: 5,5,0 OK
4.关闭连接
AT+QICLOSE=0 //关闭<connectid>为 0 的连接
OK
套接字链接
A T + Q I O P E N = 1 , 0 , " T C P " , " 172.16.33.242 " , 6666 , 0 , 0 A T + Q I O P E N = 1 , 6 , " T C P " , " 172.18.0.207 " , 9999 , 0 , 2 AT+QIOPEN=1,0,"TCP","172.16.33.242",6666,0,0\\ AT+QIOPEN=1,6,"TCP","172.18.0.207",9999,0,2 AT+QIOPEN=1,0,"TCP","172.16.33.242",6666,0,0AT+QIOPEN=1,6,"TCP","172.18.0.207",9999,0,2
发送长度为 4 的数据
A T + Q I S E N D = 0 , 4 t e s t AT+QISEND=0,4 \\ test\\ AT+QISEND=0,4test
读取 buffer 中长度为 1500 字节的数据
A T + Q I R D = 0 , 1500 AT+QIRD=0,1500 AT+QIRD=0,1500
关闭连接
A T + Q I C L O S E = 0 AT+QICLOSE=0 AT+QICLOSE=0
获取错误信息
A T + Q I G E T E R R O R AT+QIGETERROR AT+QIGETERROR
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。