summaryrefslogtreecommitdiffstatshomepage
path: root/tools/pyboard.py
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2014-04-03 22:44:37 +0100
committerDamien George <damien.p.george@gmail.com>2014-04-03 22:44:37 +0100
commitd71fc37af7a76df545c69b108e35edfd129ad1f1 (patch)
treebc4919573fa60672b732b829519631ea1d3f984d /tools/pyboard.py
parent57ad7aa66bef1ce414203d8e4c0ed671c8172a73 (diff)
downloadmicropython-d71fc37af7a76df545c69b108e35edfd129ad1f1.tar.gz
micropython-d71fc37af7a76df545c69b108e35edfd129ad1f1.zip
tools: Improve reading back from pyboard.
Diffstat (limited to 'tools/pyboard.py')
-rw-r--r--tools/pyboard.py21
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()