一 前记
使用cat1模块做产品的过程中,遇到了不少问题。其中很重要的一个就是怎么测试单个模块的好坏。这里笔者专门写了一个工具,来测试cat1模块的是否好用,这里做一个分享吧。
二 源码解析
这个是一个完全可以工作的程序,只需要改成你的模块的即可;
# -*- 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()
三 总结
at指令在c代码中和python中是不同的,c代码中要针对逗号要添加隔离符,python中是不需要的。
还要就是回撤和换行,每个产品都不同,这个添加的时候要具体情况具体分析了。
作者:虚生 出处:https://www.cnblogs.com/dylancao/ 以音频和传感器算法为核心的智能可穿戴产品解决方案提供商 ,提供可穿戴智能软硬件解决方案的设计,开发和咨询服务。 勾搭热线:邮箱:1173496664@qq.com weixin:18019245820 市场技术对接群:347609188 |
![]() |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 本地部署 DeepSeek:小白也能轻松搞定!
· 如何给本地部署的DeepSeek投喂数据,让他更懂你
· 在缓慢中沉淀,在挑战中重生!2024个人总结!
· 大人,时代变了! 赶快把自有业务的本地AI“模型”训练起来!
· 从 Windows Forms 到微服务的经验教训
2019-12-26 基于ESP8266的JSON解析实例分析
2019-12-26 python下进行10进制转16进制不带0x并且将16进制转成小端序
2018-12-26 grep的正则表达式结合的几个典型应用