import serial import time import requests def Unicode2HexStr(Unicde_Str): Hex_Str = "" for i in range(0, len(Unicde_Str)): Hex_Str += (hex(ord(Unicde_Str[i])).replace('0x', '').zfill(4)) return Hex_Str def decode2HexStr(Unicde_Str): strText = (bytes.fromhex(Unicde_Str)).decode('utf-16-be') # print(strText) return strText # bot发消息到tg群组 def sendTg(message): baseUrl="https://api.telegram.org/bot" toekn="558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw" chat_id="-861577609" text=message url=f'{baseUrl}{toekn}/sendMessage?chat_id={chat_id}&text={text}' try: r = requests.get(url) except: print('请检查网络代理') # https://api.telegram.org/bot558659722:AAENA3v8gKq7R7_nsr8V58Iu-_Z6BWx2SCw/sendMessage?chat_id=-861577609&text=1234 def deleteALLsms(): #删除所有短信 modem.write(("AT+CMGD=1,4"+"\r\n").encode()) print(modem.readline()) time.sleep(1) print(modem.readline()) print('删除所有短信完成') def deleteIndexsms(index): #删除指定短信 modem.write((f"AT+CMGD={index}\r\n").encode()) print(modem.readline()) time.sleep(1) print(modem.readline()) print(f'删除{index}完成') def viewSMS(): modem.write(("AT"+"\r\n").encode()) print(modem.readline()) time.sleep(1) print(modem.readline()) modem.write(("AT+CMGF=1"+"\r\n").encode()) print(modem.readline()) time.sleep(1) print(modem.readline()) modem.write(("AT+CMGL="+'"ALL"'+"\r\n").encode()) print(modem.readline()) # 命令显示 nowIndex=-1 while True: itext = (modem.readline()[:-2]).decode('utf-8') # [:-2]==>先删除\r\n if itext.startswith("+CMGL"): # spilt解析手机号码 textArr=itext.split(",") # 手机号 phoneNUm=textArr[2] print(phoneNUm) # 短信索引 smsindex=(textArr[0]).split(":")[1] nowIndex=int(smsindex) print(smsindex) print(itext) sendTg(itext) elif itext == "OK": print('查询短信列表完成') if nowIndex>0 or nowIndex==0: deleteIndexsms(str(nowIndex)) # time.sleep(5) break else : if len(itext)>0: try: print(decode2HexStr(((itext)))) sendTg(decode2HexStr(((itext)))) except: # print(itext) sendTg(itext) modem.close() #关闭终端 # time.sleep(1) while True: try: modem = serial.Serial(port='/dev/ttyUSB2', baudrate=9600) print("短信助手硬件USB接口已连接成功...正在启动") viewSMS() # time.sleep(1) except Exception as e: print(e) print("请检查短信模块是否插上usb 或 确定端口号是否正确") time.sleep(60) #每30s检测1次短信