OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2999|回复: 1

使用Python控制移远的EC20 R2.1模块作为客户端发送数据(通过USB接口)

[复制链接]

1

主题

3

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2011-6-27
在线时间
4 小时
发表于 2019-11-22 17:23:23 | 显示全部楼层 |阅读模式
from typing import Optional

import serial
import string
import binascii
import time
import serial.tools.list_ports

port_list = list(serial.tools.list_ports.comports())
if len(port_list) == 0:
    print("找不到串口可用...\r\n")
else:
    for i in range(0, len(port_list)):
        print(port_list)
        if port_list.description.find("USB AT Port") != -1:
            s = serial.Serial(port_list.device, 115200, timeout=0.5)
            print("当前打开的串口端口号如下所示:")
            print(port_list.name)
            print(port_list.description)
            print("------------------------------")
            if s.is_open:
                s.close()
                time.sleep(5)
# comX=input("plese input comport(like COM3):").encode('utf-8')
# BaundRate=input("plese input the baundrate:")
# s = serial.Serial('COM11', 115200 , timeout=1)
# if s.is_open:
    #     s.close()
    #    time.sleep(5)
#  print('open:the com is already opened,now close the comx!\r\n')
s.open()
time.sleep(5)
# 0.ATE1
str = 'ATE0' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(15).decode('utf-8')
print('Recv:' + a)
time.sleep(1)
# 1.AT+CIMI
str = 'AT+CIMI' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode()
print('Recv:' + a)
time.sleep(1)
# 1.1 在收到的字符串中搜索460
location = a.find('460')
if location == -1:
    print("用户未插入手机卡,请插卡重试......\r\n")
    exit(0)
MNC = a[location + 3] + a[location + 4]
YDlist = ['00', '02', '07']
LTlist = ['01', '06']
DXlist = ['03', '05', '11']
if MNC in YDlist:
    print("用户使用的是中国移动电话卡\r\n")
elif MNC in LTlist:
    print("用户使用的是中国联通手机卡\r\n")
elif MNC in DXlist:
    print("用户使用的是中国电信手机卡\r\n")
else:
    print("用户使用的手机卡未知\r\n")
# 2.AT+CPIN 检查手机卡的PIN码是否被锁
str = 'AT+CPIN?' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
time.sleep(1)
location = a.find('READY')
if location == -1:
    print("用户手机卡PIN码需要密码,请仔细查看后再决定是否需要换卡\r\n")
    exit(0)
# 3.AT+CREG=2/AT+CREG?
str = 'AT+CREG=2' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
time.sleep(1)
str = 'AT+CREG?' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
location = a.find('+CREG: ')
stat = a[location + 9]
if stat == '0':
    print("网络未注册\r\n")
    exit(0)
elif stat == '1':
    print("网络以注册:home network\r\n")
elif stat == '2':
    print("网络未注册,当前还在搜索网络\r\n")
    exit(0)
elif stat == '3':
    print("网络注册请求被拒绝\r\n")
    exit(0)
elif stat == '4':
    print("网络未注册发生未知错误\r\n")
    exit(0)
elif stat == '5':
    print("网络以注册:roaming\r\n")
else:
    print("未知情况\r\n")
    exit(0)
time.sleep(1)
# 4.AT+CGREG=2/AT+CGREG? 查看当前PS域注册情况
str = 'AT+CGREG=2' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
time.sleep(1)
str = 'AT+CGREG?' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
location = a.find('+CGREG: ')
stat = a[location + 10]
if stat == '0':
    print("网络未注册\r\n")
    exit(0)
elif stat == '1':
    print("网络以注册:home network\r\n")
elif stat == '2':
    print("网络未注册,当前还在搜索网络\r\n")
    exit(0)
elif stat == '3':
    print("网络注册请求被拒绝\r\n")
    exit(0)
elif stat == '4':
    print("网络未注册发生未知错误\r\n")
    exit(0)
elif stat == '5':
    print("网络以注册:roaming\r\n")
else:
    print("未知情况\r\n")
    exit(0)
time.sleep(1)
# 5.AT+QICSGP 设置环境
str = 'AT+QICSGP=1,1,"CTNET","","",0' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
location = a.find('OK')
if location == -1:
    print("用户连接网络情况异常,请检查\r\n")
    exit(0)
else:
    print("当前连接上网配置正常!\r\n")
# 6.AT+QIACT=1 激活连接
str = 'AT+QIACT=1' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
time.sleep(5)
str = 'AT+QIACT?' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
time.sleep(5)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
location = a.find('+QIACT: ')
if location == -1:
    print("当前网络连接激活有错误,请重启后再试\r\n")
    exit(0)
context_state = a[location + 10]
if context_state != '1':
    print("网络连接为激活\r\n")
    exit(0)
time.sleep(1)
# 7.AT+QIOPEN
str = 'AT+QIOPEN=1,1,"TCP","XXXXXXXXXX",XXXXX,0,0' + '\r\n' #IP地址和端口号,我就隐藏了
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
time.sleep(1)
location = a.find('OK')
if location == -1:
    print("前端服务器的IP地址或端口号有错误,请检查\r\n")
    exit(0)
else:
    print("已经和远程服务器建立连接...\r\n")
time.sleep(1)
# 8.AT+QISEND=1
str = 'AT+QISEND=1' + '\r\n'
s.write(bytes(str, 'UTF-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
location = a.find('> ')
if location == -1:
    print("发送命令有错误,请检查连接\r\n")
    exit(0)
# 9. 发送测试字符串
str = 'this is a test !' + '\r\n'
s.write(bytes(str, 'UTF-8'))
s.write("\x1A".encode('utf-8'))
print("Send:" + str)
a = s.read(1500).decode('utf-8')
print('Recv:' + a)
location = a.find('SEND OK')
if location == -1:
    print("发送数据失败\r\n")
    exit(0)
# 10. AT+QICLOSE=1 关闭连接
str = 'AT+QICLOSE=1' + '\r\n'
s.write(str.encode('utf-8'))
print("Send:" + str)
a = s.read(20).decode('utf-8')
print('Recv:' + a)
location = a.find('OK')
if location == -1:
    print("发送命令有错误,请检查连接\r\n")
    exit(0)
else:
    print("连接以关闭")
# 11. AT+QIDEACT=1
str = 'AT+QIDEACT=1' + '\r\n'
s.write(str.encode('utf-8'))
print("Send:" + str)
a = s.read(20).decode('utf-8')
print('Recv:' + a)
location = a.find('OK')
if location == -1:
    print("发送命令有错误,请检查连接\r\n")
    exit(0)
else:
    print("连接以关闭")
s.close()

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手上路

积分
42
金钱
42
注册时间
2011-6-27
在线时间
4 小时
 楼主| 发表于 2019-11-22 17:25:13 | 显示全部楼层
忘记告诉大家了,Python使用的是3.8版本的!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-3-14 00:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表