EC200S-CN 是移远通讯推出的LTE Cat 1 无线通讯模块,支持最大下行速率10Mbps 和最大上行速率5Mbps,具备超高的性价比。python
同时在封装上兼容移远通讯多网络制式LTE Standard EC2x(EC2五、EC2一、EC20 R2.0、EC20 R2.1)和EC200T/EG25-G/EG21-G 模块以及UMTS/HSPA+ UC20/UC200T 模块,实现了3G 网络与4G 网络之间的无缝切换。web
EC200S-CN 还支持标准的Mini PCIe 封装,以知足不一样行业产品应用需求。缓存
EC200S通讯模组(mini PCIE封装)+ PCIE通讯模组底座 + USB转串口:
服务器
EC200S.ini
)使用AT指令测试移远EC200S模组有两种方法:微信
① 第一种是使用USB转串口链接模组。网络
② 第二种是安装官方提供的驱动,而后直接使用USB线链接到模组,使用虚拟AT串口测试。dom
本文使用第一种方法,将模组直接经过USB转串口链接到电脑。socket
使用QCOM工具打开该串口,波特率115200-8-N-1:
tcp
此文档来自于移远官方!阅读本教程时,关于AT指令的详细说明请参考该文档!svg
指令:AT
功能:测试AT指令功能是否正常
示例:
AT OK
指令:AT+CPIN?
功能:查询SIM卡是否正常,返回ready则表示SIM卡正常
示例,若是SIM卡插入成功,则返回结果为:
AT+CPIN? +CPIN: READY OK
若是未插入SIM卡,则返回结果为:
AT+CPIN? +CME ERROR: 10
指令:AT+CSQ
功能:查询模组的信号强度,第一个值为0-31则正常,99为不正常
示例:
AT+CSQ +CSQ: 17,0 OK
此处有问题,模组实际返回+CSQ:22,99
指令:AT+CREG?
功能:查询模组是否注册上GSM网络,+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。
示例:
AT+CREG? +CREG: 0,1 OK
指令:AT+CERGE?
功能:查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。
示例:
AT+CGREG? +CGREG: 0,1 OK
必须在查询GPRS网络已正常注册网络的状况下进行本节实验!
指令:AT+QICSGP=1,1,“CMNET”
功能:设置GPRS的APN,移动CMNET,联通UNINET
示例:
AT+QICSGP=1,1,"CMNET" OK
指令:AT+QIDEACT=1
功能:在激活GPRS场景以前先关闭GPRS场景,确保链接正确
示例:
AT+QIDEACT=1 OK
指令:AT+QIACT=1
功能:激活移动场景
示例:
AT+QIACT=1 OK
首先咱们须要搭建一个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
效果以下:
使用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
链接以后,在服务器端也能够看到:
模组链接到服务器后,服务器会自动发送消息,模组尚未配置,因此直接打印出了:
+QIURC: "recv",0
使用命令读取数据:
AT+QIRD=0,1500 +QIRD: 14 Hello, client! OK
若是上一步创建socket时配置为直接接收模式,效果以下:
+QIURC: "recv",0,14 Hello, client!
使用以下的命令便可向TCP服务器发送消息,首先设置要发送数据的字节数,等待模组返回>
后,输入要发送的数据便可,若是发送的数据超过了设置的n个字节,则只发送前n个字节,后面的数据被认为是无效数据,不会发送:
AT+QISEND=0 >hello<0x1a>
示例:
AT+QISEND=0 > hello SEND OK
发送成功看服务器上运行的TCP服务器是否收到:
该命令用于发送 16 进制字符串数据:
AT+QISENDEX=<connectID>,<hex_string>
命令参数说明:
模组响应结果为:
示例:
AT+QISENDEX=0,"303132333435" SEND OK
服务器接收结果为:
通讯完毕以后,可使用下面的命令关闭TCP链接:
AT+QICLOSE=<connectID>[,<timeout>]
示例:
AT+QICLOSE=0 OK
指令:
AT+QIDNSGIP=<contextID>,<hostname>
功能:域名解析
返回内容:
+QIURC: "dnsgip",<err>,<IP_count>,<DNS_ttl> …… +QIURC: "dnsgip",<hostIPaddr>
返回参数说明:
示例:
AT+QIDNSGIP=1,"www.mculover666.cn" OK +QIURC: "dnsgip",0,1,600 +QIURC: "dnsgip","122.51.89.94"
解析百度:
AT+QIDNSGIP=1,"www.baidu.com" OK +QIURC: "dnsgip",0,2,10 +QIURC: "dnsgip","183.232.231.174" +QIURC: "dnsgip","183.232.231.172"
接收更多精彩文章及资源推送,欢迎订阅个人微信公众号:『mculover666』。