我是靠谱客的博主 神勇高跟鞋,最近开发中收集的这篇文章主要介绍移远 EC20 模组(4G通信模组)AT指令测试 TCP 通信过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

注: 使用移动,联通,电信卡时,选择好对应的APN。
4G模块 EC20 AT+QIACT=1 激活失败
移远EC20 4G 模组
在这里插入图片描述
LTE Standard EC20 R2.1是移远通信推出的 LTE Cat 4 无线通信模块,采用 LTE 3GPP Rel.11 技术,支持最大下行速率 150Mbps 和最大上行速率 50Mbps,使用LCC封装,主要特点有:
供电电压: 3.3V~4.3V,典型值 3.8V
支持的网络协议栈众多
TCP/UDP/PPP/FTP/HTTP/NTP/PING
QMI/NITZ/CMUX/HTTPS/SMTP/MMS/FTPS/SMTPS/SSL/FILE
驱动支持众多:
USB 虚拟串口驱动
RIL 驱动、NDIS 驱动、ECM 驱动、Gobinet 驱动、Linux qmi wwan 驱动:
GNSS支持:GPS/GLONASS/BeiDou/Galileo/QZSS

1. 环境准备

1.1. 硬件准备
EC20通信模组+USB转串口+一条USB线:
在这里插入图片描述
在这里插入图片描述
模组引脚图如下:
在这里插入图片描述
1.2. 软件准备
QCOM串口助手
EC20通信模组测试AT(EC20.ini)
Windows USB 驱动

使用AT指令测试移远EC20模组有两种方法:
① 第一种是使用USB转串口连接模组:
在这里插入图片描述
② 第二种是直接使用USB线连接到模组,使用虚拟AT串口测试。
本文使用第二种方法,将模组直接通过USB线连接到电脑之后,安装官方提供的驱动,驱动安装成功后在设备管理器中即可看到虚拟AT串口:
在这里插入图片描述
使用QCOM工具打开该串口,波特率115200-8-N-1:
在这里插入图片描述
1.3. 文档准备

EC20 AT命令手册:Quectel_EC20_R2.1_AT_Commands_Manual_V1.0.pdf
EC20 TCP/IP应用手册:Quectel_EC2x&EG9x&EM05_TCP(IP)_AT_Commands_Manual_V1.0.pdf
此文档来自于移远官方!阅读本教程时,关于AT指令的详细说明请参考该文档!

2. 模组信号查询与网络查询AT指令

AT
指令:AT

功能:测试AT指令功能是否正常

示例:

AT

OK
AT+CPIN?
指令:AT+CPIN?

功能:查询SIM卡是否正常,返回ready则表示SIM卡正常

示例,如果SIM卡插入成功,则返回结果为:

AT+CPIN?

+CPIN: READY

OK

如果未插入SIM卡,则返回结果为:

AT+CPIN?

+CME ERROR: 10

AT+CSQ
指令:AT+CSQ
功能:查询模组的信号强度,第一个值为0-31则正常,99为不正常
示例:

AT+CSQ

+CSQ: 17,0

OK
此处有问题,模组实际返回+CSQ:22,99
AT+CREG?
指令:AT+CREG?
功能:查询模组是否注册上GSM网络,+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。
示例:
AT+CREG?
+CREG: 0,1
OK
AT+CGREG?
指令:AT+CERGE?
功能:查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。
示例:
AT+CGREG?
+CGREG: 0,1
OK

3. 激活移动场景

必须在查询GPRS网络已正常注册网络的情况下进行本节实验

AT+QICSGP=1,1,“CMNET”
指令:AT+QICSGP=1,1,“CMNET”
功能:设置GPRS的APN,移动CMNET,联通UNINET
示例:
AT+QICSGP=1,1,“CMNET”
OK

AT+QIDEACT=1
指令:AT+QIDEACT=1
功能:在激活GPRS场景之前先关闭GPRS场景,确保连接正确
示例:
AT+QIDEACT=1
OK

AT+QIACT=1
指令:AT+QIACT=1
功能:激活移动场景
示例:
AT+QIACT=1
OK

4. 基于 TCP 协议连接远程服务器通信实例

4.1. 搭建远程TCP服务器
首先我们需要搭建一个TCP服务器,有两种方式:

  • 在服务器上使用Python、Java、C#等语言自行编写服务器程序;
  • 在本地PC上使用网络调试助手开启TCP服务器;
    因为EC20模组直接注册的是公网ip地址,所以这里我们使用第一种方式,在Linux服务器上运行一个Python编写的tcp测试服务器:

本地PC使用的是局域网,公网不可以直接根据ip地址访问到本PC,需要进行内网穿透,不推荐使用。

这里的Python程序如下:

# tcpserver.py

from socket import *

host = ''
port = 8902

# 创建server socket
server_socket = socket(AF_INET,SOCK_STREAM)

# 绑定socket监听地址
server_addr = (host,port)
server_socket.bind(server_addr)

# 开始监听,最大允许连接数5
server_socket.listen(5)

# 处理连接请求
try:
    while True:
        print('waiting for connect...')
        #阻塞等待客户端的连接 
        client_socket, client_addr = server_socket.accept()
        # 连接成功后,打印客户端信息
        print('a client connnect from:', client_addr)

        while(True):
            # 向客户端发送数据
            client_socket.send('Hello, client!'.encode())

            # 接收客户端的数据
            data = client_socket.recv(1024)
            print('recv data is ', data.decode())

            # 接收到quit则关闭socket
            if "quit" in data.decode():
                break
        
        # 关闭socket
        client_socket.close()
        server_socket.close()
        print("socket closed.")
        break
except:
    client_socket.close()
    server_socket.close()
    print("socket closed.")

运行:
python3 tcp-server.py
效果如下:
在这里插入图片描述
4.2. 模组连接服务器
使用AT命令连接TCP服务器,其中第一个参数是协议类型,“TCP”则表示使用TCP协议,第二个参数是TCP服务器ip地址,也可以使用域名,最一个参数是TCP服务器开启监听的端口:

AT+QIOPEN=<contextID>,<connectID>,<service_type>,<IP_address>/<domain_name>,<remote_port>[,<local_port>[,<access_mode>]]

最后一个参数access_mode是接收模式配置,0-缓冲区接收方式,1-直接接收方式。
示例:
AT+QIOPEN=1,0,“TCP”,“117.50.111.72”,8902,0,0
OK
+QIOPEN: 0,0
连接之后,在服务器端也可以看到:
在这里插入图片描述

4.2. 模组接收消息

模组连接到服务器后,服务器会自动发送消息,模组还没有配置,所以直接打印出了:
+QIURC: “recv”,0
使用命令读取数据:
AT+QIRD=0,1500
+QIRD: 14
Hello, client!
OK
直接模式接收效果如下:
+QIURC: “recv”,0,14
Hello, client!

4.3. 模组主动发送消息

使用如下的命令即可向TCP服务器发送消息,首先设置要发送数据的字节数,等待模组返回>后,输入要发送的数据即可,如果发送的数据超过了设置的n个字节,则只发送前n个字节,后面的数据被认为是无效数据,不会发送:

AT+QISEND=0

>hello<0x1a>

示例:

AT+QISEND=0

> hello

SEND OK

发送成功看服务器上运行的TCP服务器是否收到:
在这里插入图片描述

4.4. 关闭TCP连接

通信完毕之后,可以使用下面的命令关闭TCP连接:
AT+QICLOSE=[,]
示例:
AT+QICLOSE=0
OK

5. 域名解析

指令:
AT+QIDNSGIP=,
功能:域名解析
示例:

AT+QIDNSGIP=1,"www.mculover666.cn"

OK

+QIURC: "dnsgip",0,1,600

+QIURC: "dnsgip","122.51.89.94"

最后

以上就是神勇高跟鞋为你收集整理的移远 EC20 模组(4G通信模组)AT指令测试 TCP 通信过程的全部内容,希望文章能够帮你解决移远 EC20 模组(4G通信模组)AT指令测试 TCP 通信过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部