Add support for Windows (#494)

This commit is contained in:
Daniel Ritchie
2024-11-22 11:14:25 -07:00
committed by GitHub
parent 963738d983
commit 8af693548e

View File

@@ -1,30 +1,36 @@
import os
import time import time
from pathlib import Path from pathlib import Path
from serial.tools import list_ports # Part of pyserial library
def find_available_ports(): def find_available_ports():
ports = [] if os.name == "nt": # Windows
for path in Path("/dev").glob("tty*"): # List COM ports using pyserial
ports.append(str(path)) ports = [port.device for port in list_ports.comports()]
else: # Linux/macOS
# List /dev/tty* ports for Unix-based systems
ports = [str(path) for path in Path("/dev").glob("tty*")]
return ports return ports
def find_port(): def find_port():
print("Finding all available ports for the MotorsBus.") print("Finding all available ports for the MotorsBus.")
ports_before = find_available_ports() ports_before = find_available_ports()
print(ports_before) print("Ports before disconnecting:", ports_before)
print("Remove the usb cable from your MotorsBus and press Enter when done.") print("Remove the USB cable from your MotorsBus and press Enter when done.")
input() input() # Wait for user to disconnect the device
time.sleep(0.5) time.sleep(0.5) # Allow some time for port to be released
ports_after = find_available_ports() ports_after = find_available_ports()
ports_diff = list(set(ports_before) - set(ports_after)) ports_diff = list(set(ports_before) - set(ports_after))
if len(ports_diff) == 1: if len(ports_diff) == 1:
port = ports_diff[0] port = ports_diff[0]
print(f"The port of this MotorsBus is '{port}'") print(f"The port of this MotorsBus is '{port}'")
print("Reconnect the usb cable.") print("Reconnect the USB cable.")
elif len(ports_diff) == 0: elif len(ports_diff) == 0:
raise OSError(f"Could not detect the port. No difference was found ({ports_diff}).") raise OSError(f"Could not detect the port. No difference was found ({ports_diff}).")
else: else:
@@ -32,5 +38,5 @@ def find_port():
if __name__ == "__main__": if __name__ == "__main__":
# Helper to find the usb port associated to all your MotorsBus. # Helper to find the USB port associated with your MotorsBus.
find_port() find_port()