Skip to content
Snippets Groups Projects
Commit 50f6f3d8 authored by Neil Gershenfeld's avatar Neil Gershenfeld
Browse files

Upload New File

parents
No related branches found
No related tags found
No related merge requests found
upy.py 0 → 100644
#!/usr/bin/env python3
#
# upy.py: raw REPL tool
# udp.py port ls
# udp.py port run file.py
# udp.py port put file.py
# use single quotes for triple quote strings
# udp.py port get file.py
# udp.py port rm file.py
#
# Neil Gershenfeld 6/23/23
#
# This work may be reproduced, modified, distributed,
# performed, and displayed for any purpose, but must
# acknowledge this project. Copyright is retained and
# must be preserved. The work is provided as is; no
# warranty is provided, and users accept all liability.
#
import sys,serial,time
if (len(sys.argv) < 3):
print("upy.py port command [arguments]")
s = serial.Serial(sys.argv[1])
s.write(b'\r\n\x03\r\n') # ^c break
s.write(b'\x01') # ^a enter raw mode
while (s.in_waiting > 0): # clear buffer
s.read()
if (sys.argv[2] == 'run'):
file = open(sys.argv[3],'r')
str = file.read()
file.close()
for i in str:
s.write(bytes(i,'ascii'))
time.sleep(0.001)
s.write(b'\x04') # ^d exit raw mode and execute
while (True): # show output
sys.stdout.write(s.read().decode('utf-8'))
elif (sys.argv[2] == 'ls'):
s.write(b'import os\n')
s.write(b'files = os.listdir()\n')
s.write(b'print("")\n')
s.write(b'for i in files:\n')
s.write(b' print(i)\n')
s.write(b'\x04') # ^d exit raw mode and execute
time.sleep(0.1)
while (s.in_waiting > 0): # show output
sys.stdout.write(s.read().decode('utf-8'))
print('')
elif (sys.argv[2] == 'put'):
file = open(sys.argv[3],'r')
str = file.read()
file.close()
s.write(bytes(f'str = """{str}"""\n','ascii'))
s.write(bytes(f'file = open("{sys.argv[3]}","w")\n','ascii'))
s.write(b'file.write(str)\n')
s.write(b'file.close()\n')
s.write(b'del str\n')
s.write(b'\x04') # ^d exit raw mode and execute
time.sleep(0.1)
while (s.in_waiting > 0): # show output and quit
sys.stdout.write(s.read().decode('utf-8'))
print('')
elif (sys.argv[2] == 'get'):
s.write(bytes(f'file = open("{sys.argv[3]}","r")\n','ascii'))
s.write(b'print(file.read())\n')
s.write(b'file.close()\n')
s.write(b'\x04') # ^d exit raw mode and execute
time.sleep(0.1)
while (s.in_waiting > 0): # show output and quit
sys.stdout.write(s.read().decode('utf-8'))
print('')
elif (sys.argv[2] == 'rm'):
s.write(b'import os\n')
s.write(bytes(f'os.remove("{sys.argv[3]}")\n','ascii'))
s.write(b'\x04') # ^d exit raw mode and execute
time.sleep(0.1)
while (s.in_waiting > 0): # show output and quit
sys.stdout.write(s.read().decode('utf-8'))
print('')
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment