diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-03 22:44:37 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-03 22:44:37 +0100 |
commit | d71fc37af7a76df545c69b108e35edfd129ad1f1 (patch) | |
tree | bc4919573fa60672b732b829519631ea1d3f984d /tools/pyboard.py | |
parent | 57ad7aa66bef1ce414203d8e4c0ed671c8172a73 (diff) | |
download | micropython-d71fc37af7a76df545c69b108e35edfd129ad1f1.tar.gz micropython-d71fc37af7a76df545c69b108e35edfd129ad1f1.zip |
tools: Improve reading back from pyboard.
Diffstat (limited to 'tools/pyboard.py')
-rw-r--r-- | tools/pyboard.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/tools/pyboard.py b/tools/pyboard.py index 8b16f7f333..1c5c84f304 100644 --- a/tools/pyboard.py +++ b/tools/pyboard.py @@ -58,16 +58,25 @@ class Pyboard: if data != b'OK': raise Exception('could not exec command') data = self.serial.read(2) - while self.serial.inWaiting() > 0: - data = data + self.serial.read(self.serial.inWaiting()) - time.sleep(0.01) + timeout = 0 + while True: + if self.serial.inWaiting() > 0: + data = data + self.serial.read(self.serial.inWaiting()) + timeout = 0 + elif data.endswith(b'\x04>'): + break + else: + timeout += 1 + if timeout > 100: + break + time.sleep(0.1) if not data.endswith(b'\x04>'): print(data) - raise Exception('could not exec command') + raise Exception('timeout waiting for EOF reception') if data.startswith(b'Traceback') or data.startswith(b' File '): print(data) raise Exception('command failed') - return str(data[:-2], encoding='ascii') + return data[:-2] def execfile(self, filename): with open(filename) as f: @@ -82,7 +91,7 @@ def execfile(filename, device='/dev/ttyACM0'): pyb = Pyboard(device) pyb.enter_raw_repl() output = pyb.execfile(filename) - print(output, end='') + print(str(output, encoding='ascii'), end='') pyb.exit_raw_repl() pyb.close() |