龙空技术网

RPA解决:python GSM 模块 - 电脑接收短信

艺赛旗RPA 147

前言:

而今同学们对“python接收短信”都比较关注,兄弟们都需要剖析一些“python接收短信”的相关内容。那么小编同时在网络上网罗了一些有关“python接收短信””的相关文章,希望小伙伴们能喜欢,咱们一起来了解一下吧!

前言:

最近做了一个需求,需要接收手机短信验证码。因此我这里考虑到了 GSM 模块。

目前电信已退 2g 网,联通正在退,只剩下移动。不过大家以后可以直接购买 4g 的模块进行使用。

1. 安装依赖

pip install pyserial

2. 窗口连接

import serials = serial.Serial("/dev/ttyUSB0")
3. 打电话
s.write("ATD10086;\r\n".encode())
4. 发短信设置短信模式为 PDU
s.write(b'AT+CMGF=0\r\n')
设置短信编码
s.write(b'AT+CSCS="UCS2"\r\n')
手机号码 16 进制 unicode 码
s.write('AT+CMGS="00310030003000380036"\r\n'.encode())
短信内容 16 进制 unicode 码
s.write('00680065006c006c006f00204e16754c'.encode())
发送代码
s.write(b'\\x1A\r\n')
5. 读取短信
import re
读取所有短信
s.write(b'AT+CMGL="ALL"\r\n')
获取全部返回
res = s.read()while True:    count = s.inWaiting()    if count == 0:        break    res += s.read(count)
匹配短信文本
msg_list = re.findall('\+CMGL\: (\d+),"REC READ","(.*?)","","(.*?)"\\r\\n(.*?)\\r\\n', res.decode())msg_list = [list(i) for i in msg_list]for msg in msg_list:    msg[1] = unicode2str(msg[1])    msg[-1] = unicode2str(msg[-1])print(msg_list)
6. 字符串转 16 进制 unicode 码
def str2unicode(text):    code = ''    for i in text:        hex_i = hex(ord(i))        if len(hex_i) == 4:            code += hex_i.replace('0x', '00')        else:            code += hex_i.replace('0x', '')    return code
7. 16 进制 unicode 码转字符串
def unicode2str(code):    text = ''    tmp = ''    for i in range(len(code)):        tmp += code[i]        if len(tmp) == 4:            text += "\\\u" + tmp            tmp = ''    text = eval(f'"{text}"')    return text

标签: #python接收短信