首页 >> 大全

EC600S-CN QuecPython开发板,AT指令开发 (2)

2023-10-16 大全 36 作者:考证青年

-CN 使用AT指令控制TCP连接,并使用内网穿透工具映射外网IP,测试联网功能。

同样也适用于 。(不支持,体积比略大,但便宜很多)

1. 准备

.6

&&系列_TCP(IP)_应用指导_V1.2.pdf

以上工具和文档已上传:-CN 工具及文档下载

内网穿透工具(没有服务器和域名,且又急着要公网IP进行测试,可以使用花生壳、神卓互联等工具,非常方便。花生壳映射外网IP)

2. AT命令 - TCP/IP联网 - 流程图

详见应用指导的 1.1章节。

3. 关键AT命令格式

(1)查询指定场景的配置:AT+QICSGP=
(2)配置指定场景的参数:
AT+QICSGP=,,,,,,例:
AT+QICSGP=1,1,"CMNET","","",1
场景1,APN接入点名称为 中国移动。(设置完成后配置将保存在非易失性存储器中)

:场景ID,范围 1~15。

:协议类型。

1 - IPV4,2 - IPV6,3 - 。默认为1 - IPV4。

:接入点名称。

用运营商缩写,CMNET、、CTNET(中国移动、中国联通、中国电信)。

之后参数可以不用配置,为空为默认即可。

注意:在用AT+QIACT 激活场景之前,需要使用AT+ 配置场景。场景激活后,可以通过AT+QIACT? 查询IP地址(运营商为这个模块分配的IP)。

(1)激活PDP场景:AT+QIACT=
(2)返回当前所有被激活的场景与IP地址:AT+QIACT?

:场景ID,范围 1~15。虽然的范围为1~15,但是模块最多仅可同时激活3 路PDP 场景。受网络状态影响,执行AT+QIACT 后,等待返回结果OK 或者ERROR 的最大时间为150 秒,在结果尚未返回之前,无法执行任何AT 命令。

TCP场景、PDP场景 都是啥??:手册对他俩的描述没有区分,实际就是一个东西,包含了运营商信息。实际使用中只要根据自己的卡是移动、电信还是联通,配置一个场景就够了,不用深究什么意思。

(1)去激活(使能)PDP场景:AT+QIDEACT=

(1)建立Socket连接:AT+QIOPEN=,,,,,,例:
AT+QIOPEN=1,0,"TCP","103.46.128.21",8080,0,0

:场景ID,范围 1~15。

: ID,范围 0~11。

: 服务类型:

"TCP" 建立TCP客户端连接

"UDP" 建立UDP客户端连接

"TCP " 建立TCP服务器,并监听TCP连接

"UDP " 建立UDP服务(UDP不是不区分和嘛?文档咋回事?)

如果是"TCP"或"UDP",则为远程服务器的IP地址。如果是"TCP "或"UDP ",请输入 127.0.0.1。

:远程服务器端口,范围0~65535。

仅当是"TCP"或"UDP"时有效。

开发者指令_开发一个指令集很难吗_

:本地端口,范围0~65535。

如果是"TCP "或"UDP ",该参数必须指定端口。

如果是"TCP"或"UDP",且是0,那么将会自动分配本地端口;否则本地端口会被指定。

:服务的数据访问模式。

0-缓存模式();1-直吐模式(Push);2-透传模式。

URC又是啥?:作数据和连接提示用的,在下文实测时会经常看到 +QIURC:。吐槽下官方手册中为啥不写下英文全称?第一眼看好懵

(1)关闭Socket连接:AT+QICLOSE=

: ID,范围 0~11。

(1)查询现存所有Socket连接状态:AT+QISTATE
返回格式:
+QISTATE: ,,,,,,,,,例:
AT+QISTATE
+QISTATE: 0,"TCP","103.46.128.21",8080,7531,1,1,0,0,"uart1"OK

:场景ID,范围 1~15。

: 服务类型。

:远程服务器端口,范围0~65535。

:本地端口,范围0~65535。

:服务状态。

0 -"":尚未建立连接

1 - "":客户端正在连接或者服务器正尝试监听

2 - "":客户端连接已建立

3 - "":服务器正在监听

4 - "":连接断开

:场景ID,范围 1~15。

:只有当是"TCP "时才有。

:服务的数据访问模式。

: 服务的COM口。

(如仅使用透传模式,这部分的AT可以不看)

(如仅使用透传模式,这部分的AT可以不看)

(1)Socket发送数据:AT+QISEND=
指定Socket发送消息。Ctrl + z 发送。

注意:AT+ 仅限于 缓存模式、直吐模式 使用。

Ctrl + z 发送按不出来怎么办?:(QCOM上按不出来不要慌,左下角勾选上HEX,输入Ctrl+z对应的ASC2码 1A,可实现一样的效果)

4. 缓存模式的发送和接收

缓存模式:发送和接收都需要指令控制。

例程操作事项:-CN通过AT命令,用缓存模式发送了 "HELLO!" "HE" 两次消息共8个字节。外网服务器发送来 "Hi!" "I'm " 两次消息,但第二帧只命令显示了8个字节,共接收13,已读11,未读2。

RDY
ATOK
AT+CPIN?+CPIN: READYOK
AT+CREG?+CREG: 0,1OK
AT+CGREG?+CGREG: 0,1OK
AT+CEREG?+CEREG: 0,1OK
AT+QICSGP=1+QICSGP: 1,"CMNET","","",1OK
AT+QICSGP=1,1,"CMNET","","",1OK
AT+QIACT=1OK
AT+QIACT?+QIACT: 1,1,1,"10.152.49.227"OK
AT+QIOPEN=1,0,"TCP","103.46.128.21",12931,0,0OK+QIOPEN: 0,0
AT+QISEND=0> HELLO!
SEND OK
AT+QISEND=0,2> HE
SEND OK
AT+QISEND=0,0+QISEND: 8,8,0OK+QIURC: "recv",0
AT+QIRD=0+QIRD: 3
Hi!OK+QIURC: "recv",0
AT+QIRD=0,8+QIRD: 8
I'm ServOK
AT+QIRD=0,0+QIRD: 13,11,2OK

5. 直吐模式的发送和接收

直吐模式:发送与缓存模式一样,接收时不需要指令控制。

例程操作事项:-CN通过AT命令,用直吐模式发送了 "HELLO!" 1次消息共6个字节。外网服务器发送来 "Hi!" "I'm " 两次消息。

RDY
ATOK
AT+CPIN?+CPIN: READYOK
AT+CREG?+CREG: 0,1OK
AT+CGREG?+CGREG: 0,1OK
AT+CEREG?+CEREG: 0,1OK
AT+QICSGP=1+QICSGP: 1,"CMNET","","",1OK
AT+QICSGP=1,1,"CMNET","","",1OK
AT+QIACT=1OK
AT+QIACT?+QIACT: 1,1,1,"10.130.193.62"OK
AT+QIOPEN=1,0,"TCP","103.46.128.21",12931,0,1OK+QIOPEN: 0,0
AT+QISEND=0> HELLO!
SEND OK+QIURC: "recv",0,3
Hi!+QIURC: "recv",0,10
I'm Server

6. 透传模式

透传模式:如果用过的AT或者蓝牙透传模块,那这个就很好理解了。不需要任何指令,串口发送什么网络就传输什么。在透传模式下,发送 "+++" 退出透传输入模式,回到指令模式。

AT+=1,0,"TCP","103.46.128.21",12931,0,2

总结:透传模式,最方便使用。其次是 直吐模式。不推荐使用缓存模式,如未及时处理接收,容易造成堆积,造成类似TCP粘包的现象。

2.2.9之后的指令用处不大,不了解对应用也不会有什么影响。

2.2.9 发送16进制字符串数据

2.2.11 Ping

2.2.12 NTP服务器同步本地时间

2.2.13 配置DNS服务器地址

2.2.14 DNS域名解析指令

2.2.16 回显

2.2.17 查询上一个错误代码

7. 连接建立现象

不会立即返回 +: 0,x,且其中的x不为0。

AT+QIOPEN=1,0,"TCP","103.46.128.21",8080,0,0OK+QIOPEN: 0,566
AT+QISTATEOK

连接 内网穿透映射出的外网端口(连接成功后会立即返回 +: 0,0。通过 AT+ 查询连接状态显示2,""客户端连接已建立。)

AT+QIOPEN=1,0,"TCP","103.46.128.21",12931,0,0OK+QIOPEN: 0,0
AT+QISTATE+QISTATE: 0,"TCP","103.46.128.21",12931,6792,2,1,0,0,"uart1"OK

连接 内网穿透映射出的外网端口(连接成功后会立即返回 ,之后开始透传,直到输入 "+++" 退出透传模式。第三行的OK,是发送+++退出透传模式的响应。通过 AT+ 查询连接状态显示2,""客户端连接已建立。)

AT+QIOPEN=1,0,"TCP","103.46.128.21",12931,0,2CONNECTOK
AT+QISTATE+QISTATE: 0,"TCP","103.46.128.21",12931,9583,2,1,0,0,"uart1"OK

8. 注意事项 - 输入回车

左下角的输入框,直接按 "Enter回车" 是发送,换行需要使用 Ctrl + "Enter回车"。

9. 异常处理

遇到异常,合理应用AT+(查询现存所有连接状态,观察连接状态)、AT+=x(关闭指定),可以很判断错误位置并重新建立连接。

商业云平台的用户庞大、稳定性高,是开发物联网应用的首选。可由于接入数量巨大,云服务器会严格限制单个设备的无活动接入时间,超时后主动断开,以节约系统资源。下面以的80端口为例,模拟下服务器主动断开后的异常处理。

透传模式:连接的80端口。(第三行的OK,是发送+++退出透传模式的响应。第7行的的 +QIURC: "",0,是因为保持连接时间过长,服务器主动断开了连接。查询连接状态显示4,""连接断开。最后重新发起连接,可由于上次连接发生错误,指令不能被执行)

AT+QIOPEN=1,0,"TCP","183.230.40.33",80,0,2CONNECTOK
AT+QISTATE+QISTATE: 0,"TCP","183.230.40.33",80,6534,2,1,0,0,"uart1"OK+QIURC: "closed",0
AT+QISTATE+QISTATE: 0,"TCP","183.230.40.33",80,6534,4,1,0,0,"uart1"OK
AT+QIOPEN=1,0,"TCP","183.230.40.33",80,0,2ERROR

第三行 NO ,是因为长时间保持连接无动作,服务器主动断开了连接。查询连接状态显示4,""连接断开。之后重新发起连接,可由于上次连接发生错误,指令不能被执行。最后使用AT+=0断开后,再次重连成功。

AT+QIOPEN=1,0,"TCP","183.230.40.33",80,0,2CONNECTNO CARRIER
AT+QISTATE+QISTATE: 0,"TCP","183.230.40.33",80,5176,4,1,0,0,"uart1"OK
AT+QIOPEN=1,0,"TCP","183.230.40.33",80,0,2ERROR
AT+QICLOSE=0OK
AT+QIOPEN=1,0,"TCP","183.230.40.33",80,0,2CONNECT

GET请求没有按照规定的协议发送,导致返回有效信息失败,并且云服务器会主动断开连接。查询连接状态显示4,""连接断开。

AT+QIOPEN=1,0,"TCP","183.230.40.33",80,0,2CONNECT
HTTP/1.1 400 Bad Request
Server: nginx
Date: Wed, 27 Jan 2021 09:08:25 GMT
Content-Type: text/html
Content-Length: 150
Connection: close
400 Bad Request

400 Bad Request


nginx
NO CARRIER AT+QISTATE+QISTATE: 0,"TCP","183.230.40.33",80,7800,4,1,0,0,"uart1"OK

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了