diff options
author | Damien George <damien.p.george@gmail.com> | 2014-04-03 22:12:01 +0100 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2014-04-03 22:12:01 +0100 |
commit | 0e49642965d839fe4c9d6751acd8dc1b57652c1f (patch) | |
tree | ecf9a7a91b4243ca83b514e7e797fc74d0d30275 /tools/pyboard.py | |
parent | d8b47d3e027de49cb06ab619cedfe072e6ebded8 (diff) | |
download | micropython-0e49642965d839fe4c9d6751acd8dc1b57652c1f.tar.gz micropython-0e49642965d839fe4c9d6751acd8dc1b57652c1f.zip |
tools: pyboard.py can now execute a file remotely!
Diffstat (limited to 'tools/pyboard.py')
-rw-r--r-- | tools/pyboard.py | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/tools/pyboard.py b/tools/pyboard.py index 3ce6da5215..8b16f7f333 100644 --- a/tools/pyboard.py +++ b/tools/pyboard.py @@ -12,6 +12,11 @@ Example usage: pyb.exec('pyb.Led(1).on()') pyb.exit_raw_repl() +To run a script from the local machine on the board and print out the results: + + import pyboard + pyboard.execfile('test.py', device='/dev/ttyACM0') + """ import time @@ -45,8 +50,8 @@ class Pyboard: def exec(self, command): command_bytes = bytes(command, encoding='ascii') - for i in range(0, len(command_bytes), 10): - self.serial.write(command_bytes[i:min(i+10, len(command_bytes))]) + for i in range(0, len(command_bytes), 32): + self.serial.write(command_bytes[i:min(i+32, len(command_bytes))]) time.sleep(0.01) self.serial.write(b'\x04') data = self.serial.read(2) @@ -55,19 +60,32 @@ class Pyboard: data = self.serial.read(2) while self.serial.inWaiting() > 0: data = data + self.serial.read(self.serial.inWaiting()) - time.sleep(0.1) + time.sleep(0.01) if not data.endswith(b'\x04>'): print(data) raise Exception('could not exec command') if data.startswith(b'Traceback') or data.startswith(b' File '): print(data) raise Exception('command failed') - return data[:-2] + return str(data[:-2], encoding='ascii') + + def execfile(self, filename): + with open(filename) as f: + pyfile = f.read() + return self.exec(pyfile) def get_time(self): t = str(self.exec('pyb.time()'), encoding='ascii').strip().split()[1].split(':') return int(t[0]) * 3600 + int(t[1]) * 60 + int(t[2]) +def execfile(filename, device='/dev/ttyACM0'): + pyb = Pyboard(device) + pyb.enter_raw_repl() + output = pyb.execfile(filename) + print(output, end='') + pyb.exit_raw_repl() + pyb.close() + def run_test(): device = '/dev/ttyACM0' pyb = Pyboard(device) |