import ports import psutil import urllib.request import ssl ssl._create_default_https_context = ssl._create_unverified_context import os import shutil import platform import time import subprocess def get_drive(): def get_windows_drive_name(letter): return subprocess.check_output(["cmd", "/c vol " + letter]).decode().split("\r\n")[0].split(" ").pop() if platform.system().lower() == 'windows': disks = [(x.mountpoint, get_windows_drive_name(x.mountpoint.strip('\\'))) for x in psutil.disk_partitions()] disks = [(x, name) for x, name in disks if 'TRINKEY' in name or 'CIRCUIT' in name] else: disks = [(x.mountpoint, x.mountpoint) for x in psutil.disk_partitions( ) if 'TRINKEY' in x.mountpoint.upper() or 'CIRCUIT' in x.mountpoint.upper()] if len(disks) != 1: print("Could not find the Trinkey. Did you click the reset button twice and connect it?") exit(1) disk, name = disks[0] return disk, name def reset_drive(): urllib.request.urlretrieve( "https://downloads.circuitpython.org/bin/adafruit_proxlight_trinkey_m0/en_US/adafruit-circuitpython-adafruit_proxlight_trinkey_m0-en_US-9.1.4.uf2", os.path.join( disk, 'trinkey.uf2')) print("The drive will now eject and then re-attach. Please wait 10 seconds.") time.sleep(10) disk, name = get_drive() if 'TRINKEY' in name: reset_drive() disk, name = get_drive() trinkey = ports.get_trinkey_port() if not trinkey: print("Could not find the Trinkey to connect to...try removing it from the USB drive and plugging it back in.") exit(1) # Kill any running program trinkey.write(bytes(chr(0x03), 'utf-8')) trinkey.flush() print("Connected to Trinkey! Transfering files...") shutil.rmtree(os.path.join('src', '__pycache__'), True) shutil.rmtree(os.path.join('support', '__pycache__'), True) shutil.rmtree(os.path.join(disk, '__pycache__'), True) for x in os.listdir(disk): try: os.unlink(os.path.join(disk, x)) except (PermissionError, FileNotFoundError, OSError): pass shutil.rmtree(os.path.join(disk, 'lib'), True) shutil.rmtree(os.path.join(disk, 'src'), True) shutil.copytree('src', os.path.join(disk, 'src'), dirs_exist_ok=True) shutil.rmtree(os.path.join(disk, 'support'), True) shutil.copytree('support', os.path.join(disk, 'support'), dirs_exist_ok=True) shutil.copy('code.py', os.path.join(disk, 'code.py')) print("Files transfered...connecting to Trinkey...") time.sleep(1) print("Restarting Trinkey!") # Kill any running program trinkey.write(bytes(chr(0x04), 'utf-8')) trinkey.flush() time.sleep(1) miniterm = ports.connect_to_serial(trinkey)