Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
0e496429
Commit
0e496429
authored
Apr 03, 2014
by
Damien George
Browse files
tools: pyboard.py can now execute a file remotely!
parent
d8b47d3e
Changes
1
Hide whitespace changes
Inline
Side-by-side
tools/pyboard.py
View file @
0e496429
...
...
@@ -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.
0
1
)
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
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment