From ad61f14f5a06c0ceb10e6cbd1716bbd11ea92e32 Mon Sep 17 00:00:00 2001 From: SnuffSocket <82658601+SnuffSocket@users.noreply.github.com> Date: Mon, 14 Apr 2025 01:48:39 +0300 Subject: [PATCH] Fix: Missing serial port after list refresh 'n "SteamVR dashboard reload": https://github.com/Project-Babble/ProjectBabble/issues/63 --- BabbleApp/utils/misc_utils.py | 26 +++++++++----------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/BabbleApp/utils/misc_utils.py b/BabbleApp/utils/misc_utils.py index e4a663f..83cc5e6 100644 --- a/BabbleApp/utils/misc_utils.py +++ b/BabbleApp/utils/misc_utils.py @@ -1,5 +1,6 @@ import typing import serial +import serial.tools.list_ports import sys import glob import os @@ -124,25 +125,16 @@ def list_serial_ports(): :returns: A list of the serial ports available on the system """ - if sys.platform.startswith("win"): - ports = ["COM%s" % (i + 1) for i in range(256)] - elif sys.platform.startswith("linux") or sys.platform.startswith("cygwin"): - # this excludes your current terminal "/dev/tty" - ports = glob.glob("/dev/tty[A-Za-z]*") - elif sys.platform.startswith("darwin"): - ports = glob.glob("/dev/tty.*") - else: + if not sys.platform.startswith(("win", "linux", "cygwin", "darwin")): raise EnvironmentError("Unsupported platform") - result = [] - for port in ports: - try: - s = serial.Serial(port) - s.close() - result.append(port) - except (OSError, serial.SerialException): - pass - return result + ports = [] + try: + for s in serial.tools.list_ports.comports(): + ports.append(s.device) + except (AttributeError, OSError, serial.SerialException): + pass + return sorted(ports) def get_camera_index_by_name(name):