新手上路
- 积分
- 42
- 金钱
- 42
- 注册时间
- 2011-6-27
- 在线时间
- 4 小时
|
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()
|
|