import serial, sys, time port = sys.argv[1] if len(sys.argv) > 1 else "COM8" baud = int(sys.argv[2]) if len(sys.argv) > 2 else 115200 outfile = sys.argv[3] if len(sys.argv) > 3 else "serial_capture.log" while True: try: ser = serial.Serial(port, baud, timeout=1) print(f"opened {port} @ {baud}", flush=True) break except Exception as e: print(f"open failed: {e}, retry in 2s", flush=True) time.sleep(2) with open(outfile, "ab", buffering=0) as f: while True: try: data = ser.read(4096) if data: f.write(data) except serial.SerialException as e: print(f"read error: {e}, reopening...", flush=True) time.sleep(2) while True: try: ser = serial.Serial(port, baud, timeout=1) break except Exception: time.sleep(2)