Skip to content

Commit

Permalink
Merge 313460a into 6e0f9b9
Browse files Browse the repository at this point in the history
  • Loading branch information
dpgeorge committed Apr 21, 2021
2 parents 6e0f9b9 + 313460a commit 1acc19b
Showing 1 changed file with 18 additions and 4 deletions.
22 changes: 18 additions & 4 deletions tools/pyboard.py
Expand Up @@ -4,7 +4,7 @@
#
# The MIT License (MIT)
#
# Copyright (c) 2014-2019 Damien P. George
# Copyright (c) 2014-2021 Damien P. George
# Copyright (c) 2017 Paul Sokolovsky
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
Expand Down Expand Up @@ -252,7 +252,9 @@ def inWaiting(self):


class Pyboard:
def __init__(self, device, baudrate=115200, user="micro", password="python", wait=0):
def __init__(
self, device, baudrate=115200, user="micro", password="python", wait=0, exclusive=True
):
self.use_raw_paste = True
if device.startswith("exec:"):
self.serial = ProcessToSerial(device[len("exec:") :])
Expand All @@ -264,10 +266,15 @@ def __init__(self, device, baudrate=115200, user="micro", password="python", wai
else:
import serial

# Set options, and exclusive if pyserial supports it
serial_kwargs = {"baudrate": baudrate, "interCharTimeout": 1}
if serial.__version__ >= "3.3":
serial_kwargs["exclusive"] = exclusive

delayed = False
for attempt in range(wait + 1):
try:
self.serial = serial.Serial(device, baudrate=baudrate, interCharTimeout=1)
self.serial = serial.Serial(device, **serial_kwargs)
break
except (OSError, IOError): # Py2 and Py3 have different errors
if wait == 0:
Expand Down Expand Up @@ -650,6 +657,11 @@ def main():
action="store_true",
help="Do not follow the output after running the scripts.",
)
group.add_argument(
"--no-exclusive",
action="store_true",
help="Do not try to open the serial device for exclusive access.",
)
cmd_parser.add_argument(
"-f",
"--filesystem",
Expand All @@ -662,7 +674,9 @@ def main():

# open the connection to the pyboard
try:
pyb = Pyboard(args.device, args.baudrate, args.user, args.password, args.wait)
pyb = Pyboard(
args.device, args.baudrate, args.user, args.password, args.wait, not args.no_exclusive
)
except PyboardError as er:
print(er)
sys.exit(1)
Expand Down

0 comments on commit 1acc19b

Please sign in to comment.