diff --git a/NS.py b/NS.py index 29e4ba4..446df32 100644 --- a/NS.py +++ b/NS.py @@ -44,6 +44,7 @@ class NS(Game, Animation): STEP = .4 IDLE_TIMEOUT = 60000 * 5 CHANNEL_COUNT = 8 + NO_RESET_TIMEOUT = 3000 def __init__(self): Game.__init__(self) @@ -109,36 +110,37 @@ class NS(Game, Animation): name = self.get_configuration("input", "arduino-port") try: transmission = self.serial_reader.readline().strip() - print transmission + print(transmission) except SerialException: - print "Serial not ready... passing..." + print("Serial not ready... passing...") transmission = "" if len(transmission) == 4: try: self.serial_data = int(transmission, 2) except ValueError: - print "Value error checking four digit serial transmission" + print("Value error checking four digit serial transmission") self.handle_garbage(transmission) self.reset_arduino() - self.idle_elapsed = 0 + self.idle_elapsed = 0 elif len(transmission) > 0: try: int(transmission, 2) except ValueError: - print "Received a non-four digit serial transmission" + print("Received a non-four digit serial transmission") self.handle_garbage(transmission) else: self.serial_data = 0 def handle_garbage(self, transmission): self.serial_data = 0 - print "Garbage detected: %s" % transmission + print("Garbage detected: %s" % transmission) self.serial_reader.reset_input_buffer() def reset_arduino(self): - self.serial_reader.dtr = False - self.serial_reader.reset_input_buffer() - self.serial_reader.dtr = True + if self.serial_enabled(): + self.serial_reader.dtr = False + self.serial_reader.reset_input_buffer() + self.serial_reader.dtr = True def end(self, evt): if evt.type == QUIT or self.delegate.compare(evt, "quit"): @@ -162,6 +164,7 @@ class NS(Game, Animation): self.chemtrails.reset() self.platform.reset() self.dialogue.reset() + self.no_reset_elapsed = 0 def set_most_recent_time(self, score): self.most_recent_time = score @@ -201,8 +204,16 @@ class NS(Game, Animation): def update(self): Animation.update(self) - if self.serial_enabled(): - self.apply_serial() + last_frame_duration = self.time_filter.get_last_frame_duration() + if self.serial_enabled() or True: + # self.apply_serial() + if self.title.active or self.introduction.active or self.ending.active or \ + self.dialogue.active: + self.no_reset_elapsed += last_frame_duration + if self.no_reset_elapsed >= self.NO_RESET_TIMEOUT: + print("auto arduino reset triggered") + self.reset_arduino() + self.no_reset_elapsed = 0 self.title.update() self.introduction.update() self.ending.update()