美文网首页测试之路
#Python#向手机发送AT指令

#Python#向手机发送AT指令

作者: 我叫GTD | 来源:发表于2018-06-12 23:32 被阅读0次

由于工作的原因,在某个常用流程中会用到软件给手机发送AT指令,会发送4个不同的指令,用到两个不同的软件。熟练操作耗时大概2.5分钟。工作空闲时我在想,能不能用Python做个四合一?看了几个博客,了解到了相关的包,还有API。
第三方包,需要安装(还好公司镜像里面有):

pip install pyserial

注意是pyserial,不是serial。
代码如下:

# -*- coding: utf-8 -*-
import time
import hashlib
from serial import Serial
import serial.tools.list_ports


def findPort():
    ports = serial.tools.list_ports.comports()
    for each in ports:
        if 'Android' in each:
            com_android = each.split(' - ')[0]
            return com_android


def sendAT(port, bsn):
    try:
        serial = Serial(port=port, baudrate=9600, timeout=1)
        at_bsn = 'AT*****={}'.format(bsn)  # 具体命令就不给出了,各位看官根据需要看。
        sha256 = hashlib.sha256()  # 用到了哈希函数。
        sha256.update(bsn.encode('utf-8'))
        hash = 'AT******={}'.format(sha256.hexdigest())

        serial.write(at_bsn.encode('utf-8') + b'\r\n')  # 向端口发送指令必须二进制格式;末尾添加\r\n表示发送。
        serial.write(b'AT******\r\n')
        serial.write(b'AT******\r\n')
        serial.write(hash.encode('utf-8') + b'\r\n')
        print('SUCCESS!')
    except Exception as e:
        print(e)
    finally:
        serial.close()  # 最后不要忘记把占用的端口关掉。


if __name__ == '__main__':
    port = findPort()
    if 'COM' in port:
        _bsn = input('Please input your BSN number: ')
        sendAT(port=port, bsn=_bsn)
    else:
        print("Can't find the port!")
        time.sleep(2)  # CMD终端运行时,打印语句一闪而过,需要设置等待。

加上一个bat批处理文件:

python autoAT.py

直接运行bat文件,输入bsn码,完事儿。把两分半的时间缩短到20秒。

然而把代码共享到组内,并没有人去使用,相信大多数人的想法还是习惯的才是最好的。#-_-#

pyserial官方文档
https://pythonhosted.org/pyserial/pyserial.html

相关文章

  • #Python#向手机发送AT指令

    由于工作的原因,在某个常用流程中会用到软件给手机发送AT指令,会发送4个不同的指令,用到两个不同的软件。熟练操作耗...

  • electron指令.md

    1. 主进程向渲染进程发送指令 主进程代码 渲染进程代码 2. 渲染进程向主进程发送指令 渲染进程代码 主进程代码

  • 游戏后期优化

    1.1 开发中的重点问题 两个瓶颈 Cpu向Gpu发送指令,每发送一次数据,称为DrawCall(DC) Cpu从...

  • Backbone

    是一个 JavaScript 框架 用户可以向 View 发送指令(DOM 事件),再由 View 直接要求 Mo...

  • 游戏后期优化

    1. 概述 1.1 开发中的重点问题 两个瓶颈 Cpu向Gpu发送指令,每发送一次数据,称为DrawCall(DC...

  • Swift 蓝牙十六进制指令的发送与接收

    1、指令的发送初始化待发送的指令数据 将字节数组转化为 Data 数据 发送数据 2、指令的接收将接收到的 Dat...

  • MVP篇二,与MVC、MVVM的区别

    1、MVC的特点 (1) 用户可以向view发送指令,再由view直接要求model改变状态 (2) 用户也可以直...

  • scp发送指令

    scp-P31131/home/peaimage.startup.shroot@117.34.72.134:/ho...

  • 记录蓝牙中用到的进制换算

    最近蓝牙项目中,蓝牙手环中的指令比较多,比如同步时间,发送震动指令,来点提醒等等,根据和硬件定义的规则来发送指令。...

  • #计算机#

    #python#

网友评论

    本文标题:#Python#向手机发送AT指令

    本文链接:https://www.haomeiwen.com/subject/kfxdeftx.html