(cnt=10, safe=0, ang=[1,1,3], su=None)
| 22 | # 不同电脑鼠标移动速度、放缩比、分辨率等不同,因此需要校准 |
| 23 | # 基本逻辑:每次转60度,然后计算实际转了几度,计算出误差比 |
| 24 | def main(cnt=10, safe=0, ang=[1,1,3], su=None): |
| 25 | if su is None or 'Diver' in su.__class__.__name__: |
| 26 | from utils.diver.config import config |
| 27 | else: |
| 28 | from utils.simul.config import config |
| 29 | if float(config.angle)>2 and len(ang)<3 and su is not None: |
| 30 | su.multi = config.multi |
| 31 | return |
| 32 | log.info("开始校准") |
| 33 | if su is None: |
| 34 | from utils.simul.utils import UniverseUtils |
| 35 | su = UniverseUtils() |
| 36 | su.multi = 1 |
| 37 | init_ang = get_angle(su, safe) |
| 38 | lst_ang = init_ang |
| 39 | for i in ang: |
| 40 | if lst_ang != init_ang and i==1: |
| 41 | continue |
| 42 | ang_list = [] |
| 43 | for j in range(i): |
| 44 | su.mouse_move(60, fine=3 // i) |
| 45 | time.sleep(0.2) |
| 46 | now_ang = get_angle(su, safe) |
| 47 | sub = lst_ang - now_ang |
| 48 | while sub < 0: |
| 49 | sub += 360 |
| 50 | ang_list.append(sub) |
| 51 | lst_ang = now_ang |
| 52 | ang_list = np.array(ang_list) |
| 53 | # 十/3次转身的角度 |
| 54 | print(ang_list) |
| 55 | ax = 0 |
| 56 | ay = 0 |
| 57 | for j in ang_list: |
| 58 | if abs(j - np.median(ang_list)) <= 3: |
| 59 | ax += 60 |
| 60 | ay += j |
| 61 | su.multi *= ax / ay |
| 62 | su.multi += 1e-9 |
| 63 | try: |
| 64 | if not abs(su.multi) <= 2: |
| 65 | su.multi = 1 |
| 66 | except: |
| 67 | su.multi = 1 |
| 68 | config.angle = str(su.multi+len(ang)-1) |
| 69 | config.save() |
| 70 | if su is None: |
| 71 | from utils.simul.config import config |
| 72 | config.angle = str(su.multi+len(ang)-1) |
| 73 | config.save() |
| 74 | log.info("校准完成") |
| 75 | return 1 |
| 76 | |
| 77 | |
| 78 | if __name__ == "__main__": |
no test coverage detected