121 lines
2.6 KiB
Python
121 lines
2.6 KiB
Python
import os
|
|
import sys
|
|
import time
|
|
import json
|
|
import serial
|
|
|
|
from ocr import get_text
|
|
from log import log_init, myprint
|
|
|
|
|
|
class ser(object):
|
|
gpio_table={
|
|
"enter":"pa0",
|
|
"1":"pa4",
|
|
"2":"pa5",
|
|
"3":"pa6",
|
|
"4":"pb0",
|
|
"5":"pb1",
|
|
"6":"pb10",
|
|
"7":"pa12",
|
|
"8":"pa11",
|
|
"9":"pb7",
|
|
"0":"pb6"
|
|
}
|
|
def __init__(self):
|
|
self.ser=None
|
|
def open(self,com:str):
|
|
try:
|
|
self.ser = serial.Serial(port=com, baudrate=115200, timeout=0.3)
|
|
except Exception:
|
|
print(f"serial com:{com} open failed.")
|
|
sys.exit(-1)
|
|
def close(self):
|
|
if not (self.ser is None):
|
|
self.ser.close()
|
|
self.ser=None
|
|
def write(self,t:str):
|
|
# print("send:",t.encode('utf-8').hex(' '))
|
|
if not (self.ser is None):
|
|
self.ser.write(t.encode(encoding="utf-8"))
|
|
def read(self):
|
|
data=bytearray()
|
|
if not (self.ser is None):
|
|
data=self.ser.read(4096)
|
|
try:
|
|
t=data.decode(encoding='utf-8')
|
|
except Exception as e:
|
|
print(e)
|
|
print(data.hex(' '))
|
|
t=""
|
|
return t
|
|
def touch(self,key:str):
|
|
if not (key in self.gpio_table):
|
|
return
|
|
gpio=self.gpio_table[key]
|
|
print(f"touch {key}:{gpio}")
|
|
self.write(f"output on {gpio}\r\n")
|
|
ret=self.read()
|
|
print(ret)
|
|
time.sleep(0.05)
|
|
self.write(f"output off {gpio}\r\n")
|
|
ret=self.read()
|
|
print(ret)
|
|
time.sleep(0.05)
|
|
def enter(self):
|
|
s.touch("enter")
|
|
def passsword(self,p:str):
|
|
for i in p:
|
|
self.touch(i)
|
|
|
|
|
|
def find_text(t:str):
|
|
text=get_text(1560,198,363,331)
|
|
print(text)
|
|
for item in text:
|
|
if(item[1]==t):
|
|
return True
|
|
return False
|
|
|
|
|
|
def data_save(data:dict):
|
|
data_file="index.json"
|
|
with open(data_file,mode='w+') as f:
|
|
f.write(json.dumps(data,sort_keys=True, indent=2, separators=(',', ': ')))
|
|
|
|
|
|
def data_get()->dict:
|
|
data_file="index.json"
|
|
if os.path.exists(data_file):
|
|
with open(data_file,mode='r') as f:
|
|
return json.loads(f.read())
|
|
return {"index":0}
|
|
|
|
if __name__ == "__main__":
|
|
s=ser()
|
|
s.open("com6")
|
|
password=data_get().get("index",0)
|
|
log_init("log.txt")
|
|
myprint(f"start_index:{password}")
|
|
while(True):
|
|
try:
|
|
if(find_text("手机存储")):
|
|
myprint("enter")
|
|
s.enter()
|
|
if(find_text("请输入解锁密码")):
|
|
myprint(f"try:{password:06d}")
|
|
s.passsword(f"{password:06d}")
|
|
except Exception as e:
|
|
myprint(e)
|
|
data_save({"index":password})
|
|
break
|
|
except KeyboardInterrupt as k:
|
|
myprint(k)
|
|
data_save({"index":password})
|
|
break
|
|
if password>999999:
|
|
myprint("try end")
|
|
break
|
|
myprint(f"end_index:{password}")
|
|
s.close()
|