基于python的cat1模块的AT指令串口通信解析
# -*- coding: utf-8 -*-
import time
import hashlib
import threading
from serial import Serial
import serial.tools.list_ports
import time #查找端口函数
def findPort():
ports = serial.tools.list_ports.comports()
for each in ports:
if 'Android' in each:
com_android = each.split(' - ')[0]
return com_android #发送AT指令函数
def at_send_cimi(serial):
try:
at_bsn = 'AT+CIMI' # 具体命令就不给出了。
serial.write(at_bsn.encode('utf-8') + b'\r') # 向端口发送指令必须二进制格式;末尾添加\r\n表示发送。
print('AT+CIMI SEND SUCCESS!')
except Exception as e:
print(e) def at_send_cmiot(serial):
try:
#at_bsn = 'AT+QICSGP=1,1,"CTNET","","",1' # 具体命令就不给出了。
#中国移动
at_bsn = 'AT+QICSGP=1,1,"CMIOT","","",1' # 具体命令就不给出了。
serial.write(at_bsn.encode('utf-8') + b'\r') # 向端口发送指令必须二进制格式;末尾添加\r\n表示发送。
print('AT+QICSGP SEND SUCCESS!')
except Exception as e:
print(e) def at_send_qiact(serial):
try:
at_bsn = 'AT+QIACT=1' # 具体命令就不给出了。
serial.write(at_bsn.encode('utf-8') + b'\r') # 向端口发送指令必须二进制格式;末尾添加\r\n表示发送。
print('AT+QIACT SEND SUCCESS!')
except Exception as e:
print(e) def at_send_tcprequest(serial):
try:
at_bsn = 'AT+QIOPEN=1,0,"TCP","47.103.67.239",8080,0,2' # 具体命令就不给出了。
serial.write(at_bsn.encode('utf-8') + b'\r') # 向端口发送指令必须二进制格式;末尾添加\r\n表示发送。
print('AT+tcp request SEND SUCCESS!')
except Exception as e:
print(e) def socket_send_data(serial):
try:
at_bsn = 'hello world test success' # 具体命令就不给出了。
serial.write(at_bsn.encode('utf-8') + b'\r') # 向端口发送指令必须二进制格式;末尾添加\r\n表示发送。
print('socket SEND data SUCCESS!')
except Exception as e:
print(e) def recv_msg(serial): # 接收消息(任务线程)
global g_tcp_state
while True:
data = serial.read(128)
if len(data) > 6:
print("data2:",data[2])
if data[2] == 0x52 and data[3] == 0x44:
print("ready cmd in")
at_send_cimi(serial)
time.sleep(0.1)
#at_send_cmiot(serial)
#osdelay(1000)
#time.sleep(0.1)
#at_send_qiact(serial) if len(data) > 30:
if data[29] == 0x4f and data[30] == 0x4b:
print("recv sim card success and send cmiot register")
at_send_cmiot(serial)
#at_send_qiact(serial)
#time.sleep(0.1)
#at_send_tcprequest(serial)
if len(data) > 35:
if data[32] == 0x4f and data[33] == 0x4b:
print("recv cmiot register success and send qiat cmd")
at_send_qiact(serial)
if len(data) == 17:
print("data13:",data[13])
if data[13] == 0x4f and data[14] == 0x4b:
print("recv qiact ack success and send tcp connect")
at_send_tcprequest(serial) if len(data) == 66:
print("data61:",data[61])
print("data62:",data[62])
if data[61] == 0x73 and data[62] == 0x73:
g_tcp_state = True
print("tcp socket connected success")
if g_tcp_state == True:
socket_send_data(serial)
time.sleep(0.1)
#主程序
if __name__ == '__main__': g_tcp_state = False serial = serial.Serial('/dev/ttyUSB0', 115200, timeout=0.5) #/dev/ttyUSB0
if serial.isOpen() :
print("open success")
else :
print("open failed") threading.Thread(target=recv_msg, args=(serial,)).start()
基于python的cat1模块的AT指令串口通信解析的更多相关文章
- 基于FPGA的红外遥控解码与PC串口通信
基于FPGA的红外遥控解码与PC串口通信 zouxy09@qq.com http://blog.csdn.net/zouxy09 这是我的<电子设计EDA>的课程设计作业(呵呵,这个月都拿 ...
- 基于Python的datetime模块和time模块源码阅读分析
目录 1 前言 2 datetime.pyi源码分步解析 2.1 头部定义源码分析 2.2 tzinfo类源码分析 2.3 date类源码分析 2.4 time类源码分析 2.5 timedelta ...
- 基于Python的多线程模块Threading小结
步入正题前,先准备下基本知识,线程与进程的概念. 相信作为一个测试人员,如果从理论概念上来说其两者的概念或者区别,估计只会一脸蒙蔽,这里就举个例子来说明下其中的相关概念. 平安夜刚过,你是吃到了苹果还 ...
- Python的socket模块与交互式指令
socket简介 在编程的过程中,我们需要使用网络编程,这时我们不得不和网络通信的底层基础打交道了.我们必须让自己传输的数据符合网络通信的基本协议,即TCP/IP协议,但是网络通信协议本身很复杂.我们 ...
- 基于python的extract_msg模块提取outlook邮箱保存的msg文件中的附件
笔者保存了一些outlook邮箱中保存的一些msg格式的邮件文件,现需要将其中的附件提取出来, 当然直接在outlook中就可以另存附件,但outlook默认是不支持批量提取邮件中的附件的 思考过几种 ...
- 基于python第三方requests 模块的HTTP请求类
使用requests模块构造的下载器,首先安装第三方库requests pip install requests 1 class StrongDownload(object): def __init_ ...
- 基于Python原生asyncio模块对DNS正向和反向的解析
一.正向解析:域名解析IP地址 import asyncio import socket domains = [ ('www.baidu.com', 'https'), ('cn.bing.com', ...
- 基于python的爬虫项目
一.项目简介 1.1 项目博客地址 https://www.cnblogs.com/xsfa/p/12083913.html 1.2 项目完成的功能与特色 爬虫和拥有三个可视化数据分析 1.3 项目采 ...
- 基于python的opcode优化和模块按需加载机制研究(学习与个人思路)(原创)
基于python的opcode优化和模块按需加载机制研究(学习与思考) 姓名:XXX 学校信息:XXX 主用编程语言:python3.5 个人技术博客:http://www.cnblogs.com/M ...
- psutil一个基于python的跨平台系统信息跟踪模块
受益于这个模块的帮助,在这里我推荐一手. https://pythonhosted.org/psutil/#processes psutil是一个基于python的跨平台系统信息监视模块.在pytho ...
随机推荐
- PostgreSQL-分区表介绍
一.分区简介 表分区是解决一些因单表过大引用的性能问题的方式,比如某张表过大就会造成查询变慢,可能分区是一种解决方案.一般建议当单表大小超过内存就可以考虑表分区了. 表的分区就是将一个逻辑上的大表(主 ...
- springboot、jvm调优(设置运行的参数)
1.工具 jdk自带的工具位置: 找到窗口->应用程序 2.问题和方式 在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行. 2.1 springboot修改配置文件 ...
- linux常用命令(六)
用于查找系统文件的相关命令 grep find locate grep:查找文件中符号条件的字符串(关键词) 命令语法:grep [选项] 查找模式 [文件名] 选项 选项含义 -E 模式是一个可扩展 ...
- Jmeter内的参数有文件时,如何传参?
文件类型:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 尊重原创,转载请注明出处,谢谢!!
- K8s部署轻量级日志收集系统EFK(elasticsear + filebeat + kibana)
目录 K8s部署EFK(elasticsear + filebeat + kibana)日志收集 一.准备镜像 二.搭建Elasticsearch + kibana 1.在可执行kubectl命令的服 ...
- 学习一下Java的ArrayList和contains函数和扩容机制
起因 在Leetcode上做题写了两种暴力解法,但是执行效率上不太一样. 时间上差很远,内存虽然差不多但是前者击败30%,后者击败94%.这两种解法区别是用一条ArrayList还是两条来存数据,所以 ...
- LCT(link cut tree) 详细图解与应用
樱雪喵用时 3days 做了 ybtoj 的 3 道例题,真是太有效率了!!1 写死自己系列. 为了避免自己没学明白就瞎写东西误人子弟,这篇 Blog 拖到了现在. 图片基本沿用 OIwiki,原文跳 ...
- 理解maven命令package、install、deploy的联系与区别(转)
https://blog.csdn.net/zhaojianting/article/details/80324533 我们在用maven构建java项目时,最常用的打包命令有mvn package. ...
- 全网最详细4W字Flink全面解析与实践(下)
本文已收录至GitHub,推荐阅读 Java随想录 微信公众号:Java随想录 原创不易,注重版权.转载请注明原作者和原文链接 承接上篇未完待续的话题,我们一起继续Flink的深入探讨 Flink S ...
- 树莓派4b部署samba服务实现文件共享
注意 samba 生命力很旺盛,软件是在不断更新的, 网上很多针对 samba 网速优化设置截止当前 实测发现有很多已经过期, 甚至有些设置会适得其反,使传输速度更低. 例如, 全网都在配置的参数,& ...