LiteOS通信模组教程02-AT指令玩转2G通信
时间: 2020-02-15来源:OSCHINA
前景提要
1. 环境准备
硬件准备 小熊派开发板
M26通信模组

软件准备 QCOM串口助手

文档准备 M26 AT命令手册 此文档来自于移远官方!阅读本教程时,关于AT指令的详细说明请参考该文档!
切换开关
小熊派开发板右上角的开关拨到AT-PC一端,则模组直接与PC相连,方便调试。 所有工具和文档均在『小熊派开源社区』公众号回复“通信模组”获取!
2. 模组信号查询与网络查询AT指令
AT
指令:AT
功能:测试AT指令功能是否正常
示例: AT OK
AT+CPIN?
指令:AT+CPIN?
功能:查询SIM卡是否正常,返回ready则表示SIM卡正常
示例: AT+CPIN? +CPIN: READY OK
AT+CSQ
指令:AT+CSQ
功能:查询模组的信号强度,第一个值为0-31则正常,99为不正常
示例: AT+CSQ +CSQ: 17,0 OK
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. 激活移动场景,获取ip地址 必须在查询GPRS网络已正常注册网络的情况下进行本节实验!
AT+QIFGTCNT=0
指令:AT+QIFGTCNT=0
功能:配置当前场景
示例: AT+QIFGCNT=0 OK
AT+QICSGP=1, "CMNET"
指令:AT+QICSGP=1, "CMNET"
功能:设置GPRS的APN,移动CMNET,联通UNINET
示例: AT+QICSGP=1, "CMNET" OK
AT+QIMODE=0
指令:AT+QIMODE=0
功能:设置数据传输模式,0表示非透传模式,1表示透传模式
示例: AT+QIMODE=0 OK
AT+QIDEACT
指令:AT+QIDEACT
功能:在激活GPRS场景之前先关闭GPRS场景,确保连接正确
示例: AT+QIDEACT DEACT OK
AT+QIREGAPP
指令:AT+QIREGAPP
功能:启动任务并设置接入点APN、用户名和密码
示例: AT+QIREGAPP OK
AT+QIACT
指令:AT+QIACT
功能:激活移动场景
示例: AT+QIACT OK
AT+QILOCIP
指令:AT+QILOCIP
功能:查看模组获取的IP地址
示例: AT+QILOCIP 100.125.208.23
4. 基于 TCP 协议连接远程服务器通信实例
4.1. 搭建远程TCP服务器
首先我们需要搭建一个TCP服务器,有两种方式: 在服务器上使用Python、Java、C#等语言自行编写服务器程序; 在本地PC上使用网络调试助手开启TCP服务器;
因为M26模组直接注册的是公网ip地址,所以这里我们使用第一种方式,在Linux服务器上运行一个Python编写的tcp测试服务器: 本地PC使用的是局域网,公网不可以直接根据ip地址访问到本PC,需要进行内网穿透,不推荐使用。
这里的Python程序如下: # tcp-server.py from socket import * host = '' port = 8000 # 创建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. 模组连接服务器
查询ip地址: AT+QILOCIP 100.125.208.23
使用AT命令连接TCP服务器,其中第一个参数是协议类型,“TCP”则表示使用TCP协议,第二个参数是TCP服务器ip地址,也可以使用域名,最一个参数是TCP服务器开启监听的端口: AT+QIOPEN=<mode>,<IPaddress>/<domain name>,<port>
示例: AT+QIOPEN="TCP","122.51.89.94","8000" OK CONNECT OK
连接之后,在服务器端也可以看到:

4.2. 模组接收消息
模组连接到服务器后,服务器会自动发送消息,模组会打印出收到的信息: Hello, client!
4.3. 模组主动发送消息
使用如下的命令即可向TCP服务器发送消息,首先设置要发送数据的字节数,等待模组返回 > 后,输入要发送的数据即可,如果发送的数据超过了设置的n个字节,则只发送前n个字节,后面的数据被认为是无效数据,不会发送: AT+QISEND >hello<0x1a>
示例: Hello, client!AT+QISEND > hello SEND OK
发送成功看服务器上运行的TCP服务器是否收到:

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

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行