31 lines
948 B
Python
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)
|