mirror of
https://github.com/platformio/platformio-core.git
synced 2025-07-31 18:44:27 +02:00
Ask about serial port for device monitor when more than one is found
This commit is contained in:
@@ -100,9 +100,7 @@ def AutodetectUploadPort(*args, **kwargs): # pylint: disable=unused-argument
|
|||||||
board_hwids = []
|
board_hwids = []
|
||||||
if "BOARD" in env and "build.hwids" in env.BoardConfig():
|
if "BOARD" in env and "build.hwids" in env.BoardConfig():
|
||||||
board_hwids = env.BoardConfig().get("build.hwids")
|
board_hwids = env.BoardConfig().get("build.hwids")
|
||||||
for item in util.get_serialports():
|
for item in util.get_serialports(filter_hwid=True):
|
||||||
if "VID:PID" not in item['hwid']:
|
|
||||||
continue
|
|
||||||
port = item['port']
|
port = item['port']
|
||||||
for hwid in board_hwids:
|
for hwid in board_hwids:
|
||||||
hwid_str = ("%s:%s" % (hwid[0], hwid[1])).replace("0x", "")
|
hwid_str = ("%s:%s" % (hwid[0], hwid[1])).replace("0x", "")
|
||||||
|
@@ -100,10 +100,9 @@ def device_list(json_output):
|
|||||||
help="Diagnostics: suppress non-error messages, default=Off")
|
help="Diagnostics: suppress non-error messages, default=Off")
|
||||||
def device_monitor(**kwargs):
|
def device_monitor(**kwargs):
|
||||||
if not kwargs['port']:
|
if not kwargs['port']:
|
||||||
for item in get_serialports():
|
ports = get_serialports(filter_hwid=True)
|
||||||
if "VID:PID" in item['hwid']:
|
if len(ports) == 1:
|
||||||
kwargs['port'] = item['port']
|
kwargs['port'] = ports[0]['port']
|
||||||
break
|
|
||||||
|
|
||||||
sys.argv = ["monitor"]
|
sys.argv = ["monitor"]
|
||||||
for k, v in kwargs.iteritems():
|
for k, v in kwargs.iteritems():
|
||||||
@@ -120,10 +119,10 @@ def device_monitor(**kwargs):
|
|||||||
sys.argv.extend([k, str(v)])
|
sys.argv.extend([k, str(v)])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
miniterm.main( # pylint: disable=E1123
|
miniterm.main(
|
||||||
default_port=kwargs['port'],
|
default_port=kwargs['port'],
|
||||||
default_baudrate=kwargs['baud'],
|
default_baudrate=kwargs['baud'],
|
||||||
default_rts=kwargs['rts'],
|
default_rts=kwargs['rts'],
|
||||||
default_dtr=kwargs['dtr'])
|
default_dtr=kwargs['dtr'])
|
||||||
except Exception as e: # pylint: disable=W0702
|
except Exception as e:
|
||||||
raise MinitermException(e)
|
raise MinitermException(e)
|
||||||
|
@@ -358,7 +358,7 @@ def copy_pythonpath_to_osenv():
|
|||||||
os.environ['PYTHONPATH'] = os.pathsep.join(_PYTHONPATH)
|
os.environ['PYTHONPATH'] = os.pathsep.join(_PYTHONPATH)
|
||||||
|
|
||||||
|
|
||||||
def get_serialports():
|
def get_serialports(filter_hwid=False):
|
||||||
try:
|
try:
|
||||||
from serial.tools.list_ports import comports
|
from serial.tools.list_ports import comports
|
||||||
except ImportError:
|
except ImportError:
|
||||||
@@ -373,7 +373,11 @@ def get_serialports():
|
|||||||
d = unicode(d, errors="ignore")
|
d = unicode(d, errors="ignore")
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
result.append({"port": p, "description": d, "hwid": h})
|
if not filter_hwid or "VID:PID" in h:
|
||||||
|
result.append({"port": p, "description": d, "hwid": h})
|
||||||
|
|
||||||
|
if filter_hwid:
|
||||||
|
return result
|
||||||
|
|
||||||
# fix for PySerial
|
# fix for PySerial
|
||||||
if not result and platform.system() == "Darwin":
|
if not result and platform.system() == "Darwin":
|
||||||
|
Reference in New Issue
Block a user