# -*- coding: utf-8 -*- import sys if hasattr(sys.stdout, "reconfigure"): sys.stdout.reconfigure(encoding='utf-8') import serial import re # Adjust as needed SERIAL_PORT = "/dev/ttyACM0" BAUD_RATE = 115200 # Updated pattern to match drop-frame (;) and non-drop (:) timecode ltc_pattern = re.compile( r"\[(LOCK|FREE)\]\s+(\d{2}:\d{2}:\d{2}[:;]\d{2})\s+\|\s+([\d.]+fps)", re.IGNORECASE ) def main(): print(f"šŸ”Œ Connecting to serial port: {SERIAL_PORT} @ {BAUD_RATE} baud") try: with serial.Serial(SERIAL_PORT, BAUD_RATE, timeout=1) as ser: print("šŸ“” Listening for LTC messages...\n") while True: line = ser.readline().decode(errors='ignore').strip() match = ltc_pattern.match(line) if match: status, timecode, framerate = match.groups() framerate = framerate.upper() if status == "LOCK": print(f"šŸ”’ {status:<4} | ā± {timecode} | šŸŽž {framerate}") else: print(f"🟔 {status:<4} | ā± {timecode} | šŸŽž {framerate}") else: if line: print(f"āš ļø Unrecognised line: {line}") except serial.SerialException as e: print(f"āŒ Serial error: {e}") except KeyboardInterrupt: print("\nšŸ›‘ Stopped by user.") if __name__ == "__main__": main()