import _thread import time PERIODIC = 0x00 ONE_SHOT = 0x01 class Timer: PERIODIC = 0x00 ONE_SHOT = 0x01 def __init__(self, period, mode, callback): self.callback = callback self.nextTime = time.ticks_ms() + period self.period = period self.mode = mode self.dead = False def update(self): if time.ticks_ms() > self.nextTime: self.nextTime = time.ticks_ms() + self.period self.callback() if self.mode == Timer.ONE_SHOT: self.dead = True def deinit(self): self.dead = True delete_num = [] class TimerEx: PERIODIC = 0x00 ONE_SHOT = 0x01 def __init__(self): _thread.start_new_thread(self.timeCb, ()) self.timerList = [] def addTimer(self, period, mode, callback): timer = Timer(period, mode, callback) self.timerList.append(timer) return timer def timeCb(self): global delete_num while True: for i in self.timerList: if i.dead: delete_num.append(i) else: i.update() if delete_num: for i in delete_num: self.timerList.remove(i) delete_num = [] time.sleep_ms(10) def deinit(self): pass