miniterm: new option --ask to repeat port question on errors
diff --git a/serial/tools/miniterm.py b/serial/tools/miniterm.py
index ee4b14e..ac1773d 100644
--- a/serial/tools/miniterm.py
+++ b/serial/tools/miniterm.py
@@ -711,6 +711,12 @@
help="set initial DTR line state (possible values: 0, 1)",
default=default_dtr)
+ group.add_argument(
+ "--ask",
+ action="store_true",
+ help="ask again for port when open fails",
+ default=False)
+
group = parser.add_argument_group("data handling")
group.add_argument(
@@ -783,17 +789,6 @@
if args.menu_char == args.exit_char:
parser.error('--exit-char can not be the same as --menu-char')
- # no port given on command line -> ask user now
- if args.port is None or args.port == '-':
- try:
- args.port = ask_for_port()
- except KeyboardInterrupt:
- sys.stderr.write('\n')
- parser.error('user aborted and port is not given')
- else:
- if not args.port:
- parser.error('port is not given')
-
if args.filter:
if 'help' in args.filter:
sys.stderr.write('Available filters:\n')
@@ -806,31 +801,47 @@
else:
filters = ['default']
- try:
- serial_instance = serial.serial_for_url(
- args.port,
- args.baudrate,
- parity=args.parity,
- rtscts=args.rtscts,
- xonxoff=args.xonxoff,
- timeout=1,
- do_not_open=True)
+ while True:
+ # no port given on command line -> ask user now
+ if args.port is None or args.port == '-':
+ try:
+ args.port = ask_for_port()
+ except KeyboardInterrupt:
+ sys.stderr.write('\n')
+ parser.error('user aborted and port is not given')
+ else:
+ if not args.port:
+ parser.error('port is not given')
+ try:
+ serial_instance = serial.serial_for_url(
+ args.port,
+ args.baudrate,
+ parity=args.parity,
+ rtscts=args.rtscts,
+ xonxoff=args.xonxoff,
+ timeout=1,
+ do_not_open=True)
- if args.dtr is not None:
- if not args.quiet:
- sys.stderr.write('--- forcing DTR {}\n'.format('active' if args.dtr else 'inactive'))
- serial_instance.dtr = args.dtr
- if args.rts is not None:
- if not args.quiet:
- sys.stderr.write('--- forcing RTS {}\n'.format('active' if args.rts else 'inactive'))
- serial_instance.rts = args.rts
+ if args.dtr is not None:
+ if not args.quiet:
+ sys.stderr.write('--- forcing DTR {}\n'.format('active' if args.dtr else 'inactive'))
+ serial_instance.dtr = args.dtr
+ if args.rts is not None:
+ if not args.quiet:
+ sys.stderr.write('--- forcing RTS {}\n'.format('active' if args.rts else 'inactive'))
+ serial_instance.rts = args.rts
- serial_instance.open()
- except serial.SerialException as e:
- sys.stderr.write('could not open port {}: {}\n'.format(repr(args.port), e))
- if args.develop:
- raise
- sys.exit(1)
+ serial_instance.open()
+ except serial.SerialException as e:
+ sys.stderr.write('could not open port {}: {}\n'.format(repr(args.port), e))
+ if args.develop:
+ raise
+ if not args.ask:
+ sys.exit(1)
+ else:
+ args.port = '-'
+ else:
+ break
miniterm = Miniterm(
serial_instance,