|
@@ -31,29 +31,28 @@ class Statepoint:
|
|
|
self.do_reset()
|
|
|
|
|
|
def __update_state(self):
|
|
|
- self.lock.acquire()
|
|
|
- last_state = self.state
|
|
|
- self.state = self.converter(self.data)
|
|
|
- if last_state == False and self.state == True:
|
|
|
- self.pre_reset = False
|
|
|
- self.excite()
|
|
|
- elif last_state == True and self.state == False:
|
|
|
- if self.keep_time <= 0:
|
|
|
- self.reset()
|
|
|
- elif self.pre_reset:
|
|
|
+ with self.lock:
|
|
|
+ last_state = self.state
|
|
|
+ self.state = self.converter(self.data)
|
|
|
+ if last_state == False and self.state == True:
|
|
|
+ self.pre_reset = False
|
|
|
+ self.excite()
|
|
|
+ elif last_state == True and self.state == False:
|
|
|
+ if self.keep_time <= 0:
|
|
|
+ self.reset()
|
|
|
+ elif self.pre_reset:
|
|
|
+ self.pre_reset = False
|
|
|
+ self.reset()
|
|
|
+ else:
|
|
|
+ self.state = True
|
|
|
+ self.__private_allow_update(False)
|
|
|
+ self.pre_reset = True
|
|
|
+ timer = threading.Timer(self.keep_time/1000, lambda: self.__private_allow_update())
|
|
|
+ timer.start()
|
|
|
+ elif last_state == True and self.state == True:
|
|
|
self.pre_reset = False
|
|
|
- self.reset()
|
|
|
else:
|
|
|
- self.state = True
|
|
|
- self.__private_allow_update(False)
|
|
|
- self.pre_reset = True
|
|
|
- timer = threading.Timer(self.keep_time/1000, lambda: self.__private_allow_update())
|
|
|
- timer.start()
|
|
|
- elif last_state == True and self.state == True:
|
|
|
- self.pre_reset = False
|
|
|
- else:
|
|
|
- self.pre_reset = False
|
|
|
- self.lock.release()
|
|
|
+ self.pre_reset = False
|
|
|
|
|
|
def __async_update_state(self):
|
|
|
threading.Thread(target=self.__update_state).start()
|