コード例 #1
0
    def test_timer_supports_args_and_kwargs(self):
        m = Mock(return_value=None)

        t = ResettableTimer(3, m, ["args"], {"kwarg": "kwarg"})
        t.start()
        t._timer.pass_time(3)
        m.assert_called_once_with("args", kwarg="kwarg")
コード例 #2
0
def _main():
    i = inotify.adapters.Inotify()
    i.add_watch(TARGET_DIR)

    global running_ti, files, cre
    ti = ResettableTimer(TIMER_TO, expired)

    cre = re.compile(REGEX)

    # watch directory for new file creation
    while 1 > 0 :
        for event in i.event_gen(yield_nones=False, timeout_s=1):
            (_, type_names, path, filename) = event
            for type_name in type_names:
                if (type_name == "IN_CREATE") :
                   # start a new timer 
                   if ( running_ti ) :
                       ti.reset()
                       files.append(filename)

                   if ( not running_ti ) :
                       running_ti = True
                       ti = ResettableTimer(TIMER_TO, expired)
                       ti.start()

                       files = []
                       files.append(filename)
コード例 #3
0
class ServoControl(object):
    def __init__(self,
                 pan_pin=12,
                 tilt_pin=18,
                 pan_limits=(500, 2500),
                 tilt_limits=(500, 2500),
                 initial_position=(90, 90),
                 auto_off=1.5):
        self.__pi = pigpio.pi()
        self.__pan = ServoDetails(pan_pin, *pan_limits)
        self.__tilt = ServoDetails(tilt_pin, *tilt_limits)

        if auto_off:
            self.__auto_off_timer = ResettableTimer(auto_off, self.off)
            self.__auto_off_timer.start()
        else:
            self.__auto_off_timer = None

        # Move to initial position to have servos in known position
        self.move_to(*initial_position)

    def __set_pw(self, servo, pw=None):
        # TODO: check input pw validity
        if pw is None:
            pw = servo.pulsewidth
        return self.__pi.set_servo_pulsewidth(servo.pin, pw)

    @property
    def position(self):
        return {"pan": self.__pan.pos, "tilt": self.__tilt.pos}

    def move_to(self, pan=None, tilt=None):
        if pan is not None:
            self.__pan.pos = pan
            self.__set_pw(self.__pan)
        if tilt is not None:
            self.__tilt.pos = tilt
            self.__set_pw(self.__tilt)
        if self.__auto_off_timer is not None:
            self.__auto_off_timer.reset()

    def off(self):
        for servo in [self.__pan, self.__tilt]:
            self.__set_pw(servo, 0)

    def min(self):
        self.move_to(0, 0)

    def max(self):
        self.move_to(180, 180)
コード例 #4
0
    def test_timer_can_be_reset_after_cancel(self):
        m = Mock(return_value=None)

        t = ResettableTimer(5, m)
        t.start()

        t._timer.pass_time(3)
        m.assert_not_called()
        t.cancel()
        t.reset()
        t.start()

        t._timer.pass_time(6)
        m.assert_called_once_with()
コード例 #5
0
class PiScreenOnOff(object):
    def __init__(self, timeout=15 * 60, pin=17):
        self.__sensor = HcSr501(pin)
        self.__timer = ResettableTimer(timeout, screen, [False])
        self.__timer.start()

    def __run(self):
        while True:
            if self.__sensor.active:
                screen(True)
                self.__timer.reset(start=True)
                sleep(0.5)

    def run(self):
        try:
            self.__run()
        except KeyboardInterrupt:
            self.__timer.cancel()
コード例 #6
0
ファイル: talk.py プロジェクト: SempaiEcchi/B.A.R.I.C.A.

def timeout_schedule_close():
    global driver_for_shown_schedule
    if driver_for_shown_schedule != None:
        close_schedule()


def timeout_command():
    m.listen_input()
    cp.copy('refresh_command')
    go_to_x_slide('1')


timer_command = ResettableTimer(45, timeout_command)
timer_command.start()


class NLPController(WebSocket):
    def __init__(self, *args, **kwargs):
        WebSocket.__init__(self, *args, **kwargs)
        _thread.start_new_thread(self.listen, ())

    def listen(self):
        global BUFFER
        while True:
            try:
                if BUFFER:
                    BUFFER = list(OrderedDict.fromkeys(BUFFER))
                    cmd = BUFFER.pop()
                    self.sendMessage(str(cmd))