diff --git a/piNail2/tty_status_display.py b/piNail2/tty_status_display.py index 88593f4..2af84c7 100644 --- a/piNail2/tty_status_display.py +++ b/piNail2/tty_status_display.py @@ -31,7 +31,8 @@ except ImportError: # Configuration API_BASE = "http://localhost:5000" -UPDATE_INTERVAL = 1.0 # seconds +UPDATE_INTERVAL = 0.5 # seconds between fetches +DISPLAY_INTERVAL = 2.0 # seconds between screen redraws TTY_PATH = "/dev/tty1" # ANSI color codes @@ -72,6 +73,8 @@ class StatusDisplay: def __init__(self): self.running = True self.last_update = 0 + self.last_draw = 0 + self.last_frame = None self.data = { "nail1": {}, "nail2": {}, @@ -297,17 +300,28 @@ class StatusDisplay: fetch_thread.daemon = True fetch_thread.start() + # Initial draw + sys.stdout.write("\033[2J\033[H") + sys.stdout.flush() + self.last_draw = time.time() + try: while self.running: - # Clear screen (ANSI escape) - sys.stdout.write("\033[2J\033[H") - sys.stdout.flush() + now = time.time() - # Draw frame - frame = self.draw_frame() - sys.stdout.write(frame) - sys.stdout.write("\n") - sys.stdout.flush() + # Only redraw if enough time has passed (reduces flicker) + if now - self.last_draw >= DISPLAY_INTERVAL: + # Clear screen (ANSI escape) + sys.stdout.write("\033[2J\033[H") + sys.stdout.flush() + + # Draw frame + frame = self.draw_frame() + sys.stdout.write(frame) + sys.stdout.write("\n") + sys.stdout.flush() + + self.last_draw = now time.sleep(UPDATE_INTERVAL) except KeyboardInterrupt: