shuichan_new/serial_capture.py

31 lines
948 B
Python

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)