diff options
author | Damien George <damien.p.george@gmail.com> | 2015-05-07 10:14:51 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-05-07 10:14:51 +0100 |
commit | 4865a22f788e0997771d15e00d2d895d904eb92a (patch) | |
tree | adf1ab5c09ead1a00af4ad7f00c9d977b36302e4 /tools/pyboard.py | |
parent | ff987ccf11ece1317ab97dbc5dd6a901ad33ddc1 (diff) | |
download | micropython-4865a22f788e0997771d15e00d2d895d904eb92a.tar.gz micropython-4865a22f788e0997771d15e00d2d895d904eb92a.zip |
tools/pyboard.py: Add "--follow" option to wait for output indefinitely.
Also flush stdout so you can see output as it comes.
Diffstat (limited to 'tools/pyboard.py')
-rwxr-xr-x | tools/pyboard.py | 18 |
1 files changed, 10 insertions, 8 deletions
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,10 +216,14 @@ def main(): if args.test: run_test(device=args.device) - if len(args.files) == 0: + for filename in args.files: try: pyb = Pyboard(args.device) - ret, ret_err = pyb.follow(timeout=None, data_consumer=stdout_write_bytes) + pyb.enter_raw_repl() + with open(filename, 'rb') as f: + pyfile = f.read() + ret, ret_err = pyb.exec_raw(pyfile, timeout=None, data_consumer=stdout_write_bytes) + pyb.exit_raw_repl() pyb.close() except PyboardError as er: print(er) @@ -228,14 +234,10 @@ def main(): stdout_write_bytes(ret_err) sys.exit(1) - for filename in args.files: + if args.follow or len(args.files) == 0: try: pyb = Pyboard(args.device) - pyb.enter_raw_repl() - with open(filename, 'rb') as f: - pyfile = f.read() - ret, ret_err = pyb.exec_raw(pyfile, timeout=None, data_consumer=stdout_write_bytes) - pyb.exit_raw_repl() + ret, ret_err = pyb.follow(timeout=None, data_consumer=stdout_write_bytes) pyb.close() except PyboardError as er: print(er) |