diff --git a/tools/pyboard.py b/tools/pyboard.py index 0374893a85..efb43f26c2 100755 --- a/tools/pyboard.py +++ b/tools/pyboard.py @@ -35,6 +35,7 @@ import serial def stdout_write_bytes(b): sys.stdout.buffer.write(b) + sys.stdout.buffer.flush() class PyboardError(BaseException): pass @@ -207,6 +208,7 @@ def main(): import argparse cmd_parser = argparse.ArgumentParser(description='Run scripts on the pyboard.') cmd_parser.add_argument('--device', default='/dev/ttyACM0', help='the serial device of the pyboard') + cmd_parser.add_argument('--follow', action='store_true', help='follow the output after running the scripts [default if no scripts given]') cmd_parser.add_argument('--test', action='store_true', help='run a small test suite on the pyboard') cmd_parser.add_argument('files', nargs='*', help='input files') args = cmd_parser.parse_args() @@ -214,20 +216,6 @@ def main(): if args.test: run_test(device=args.device) - if len(args.files) == 0: - try: - pyb = Pyboard(args.device) - ret, ret_err = pyb.follow(timeout=None, data_consumer=stdout_write_bytes) - pyb.close() - except PyboardError as er: - print(er) - sys.exit(1) - except KeyboardInterrupt: - sys.exit(1) - if ret_err: - stdout_write_bytes(ret_err) - sys.exit(1) - for filename in args.files: try: pyb = Pyboard(args.device) @@ -246,5 +234,19 @@ def main(): stdout_write_bytes(ret_err) sys.exit(1) + if args.follow or len(args.files) == 0: + try: + pyb = Pyboard(args.device) + ret, ret_err = pyb.follow(timeout=None, data_consumer=stdout_write_bytes) + pyb.close() + except PyboardError as er: + print(er) + sys.exit(1) + except KeyboardInterrupt: + sys.exit(1) + if ret_err: + stdout_write_bytes(ret_err) + sys.exit(1) + if __name__ == "__main__": main()