From 03bc5d5268df6fcd6404081dbefb17b3ac69343e Mon Sep 17 00:00:00 2001 From: Jeremy Shen Date: Fri, 12 Jun 2026 14:18:49 +0800 Subject: [PATCH] Revert "fix: try both COM11 and \\.\COM11 formats when opening serial port" This reverts commit 36fbb6a662dc8087198b1267c8e1bb41c148c29b. --- src/gui/widgets.py | 3 +-- src/reboot_manager.py | 5 ++--- src/serial_monitor.py | 36 ++++-------------------------------- 3 files changed, 7 insertions(+), 37 deletions(-) diff --git a/src/gui/widgets.py b/src/gui/widgets.py index 8262d64..51f1d4a 100644 --- a/src/gui/widgets.py +++ b/src/gui/widgets.py @@ -1097,8 +1097,7 @@ class UartMonitorWindow(ctk.CTkToplevel): def _bg_open() -> None: try: import serial - from serial_monitor import _open_serial - ser = _open_serial(self._port, self._baudrate, 1) + ser = serial.Serial(self._port, self._baudrate, timeout=1) ser.close() self.after(0, self._on_open_success) except Exception as e: diff --git a/src/reboot_manager.py b/src/reboot_manager.py index 4b014cc..d30e3a2 100644 --- a/src/reboot_manager.py +++ b/src/reboot_manager.py @@ -125,12 +125,11 @@ def reboot_via_serial( try: import serial - from serial_monitor import _open_serial - with _open_serial( + with serial.Serial( config.serial_port, config.serial_baudrate, - timeout=5.0, + timeout=5, ) as ser: ser.reset_input_buffer() # Send Ctrl+C to break out of any running process diff --git a/src/serial_monitor.py b/src/serial_monitor.py index c77071f..9e9acd5 100644 --- a/src/serial_monitor.py +++ b/src/serial_monitor.py @@ -8,7 +8,6 @@ Provides UartMonitor for continuous background monitoring. from __future__ import annotations import re -import sys import threading import time from dataclasses import dataclass @@ -18,33 +17,6 @@ import serial import serial.tools.list_ports -def _open_serial(port: str, baudrate: int, timeout: float = 1.0) -> serial.Serial: - """Open a serial port, trying both name formats on Windows. - - pyserial normally adds \\\\.\\COM prefix for COM>=10, but some - versions don't. Try raw name first, then explicit NT namespace. - """ - port = port.strip() - last_err = None - - # Try 1: port name as-is - try: - return serial.Serial(port, baudrate, timeout=timeout) - except serial.SerialException as e: - last_err = e - - # Try 2: Windows NT namespace prefix - if sys.platform == "win32": - m = re.match(r"^(COM\d+)$", port, re.IGNORECASE) - if m: - try: - return serial.Serial(r"\\.\%s" % port, baudrate, timeout=timeout) - except serial.SerialException as e: - last_err = e - - raise last_err or OSError(f"Cannot open serial port: {port}") - - @dataclass class BootInfo: """Parsed information extracted from Zynq boot output.""" @@ -197,7 +169,7 @@ def check_uart_available( # 3. Try to open and read try: - with _open_serial(port, baudrate, timeout) as ser: + with serial.Serial(port, baudrate, timeout=timeout) as ser: ser.reset_input_buffer() lines: list[str] = [] while ser.in_waiting: @@ -271,7 +243,7 @@ def test_serial_version( import serial try: - with _open_serial(port, baudrate, timeout) as ser: + with serial.Serial(port, baudrate, timeout=timeout) as ser: ser.reset_input_buffer() ser.reset_output_buffer() @@ -412,7 +384,7 @@ class UartMonitor: # Quick port check before starting thread try: - test_ser = _open_serial(self._port, self._baudrate, 1) + test_ser = serial.Serial(self._port, self._baudrate, timeout=1) test_ser.close() except serial.SerialException as e: if self.on_error: @@ -438,7 +410,7 @@ class UartMonitor: def _read_loop(self) -> None: """Main read loop running in background thread.""" try: - ser = _open_serial( + ser = serial.Serial( self._port, self._baudrate, timeout=self._timeout,