2022-07-29 12:55:21 +00:00
|
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
2022-07-10 13:04:56 +00:00
|
|
|
|
import sys
|
|
|
|
|
import pyboard
|
|
|
|
|
import serial.tools.list_ports
|
|
|
|
|
|
|
|
|
|
args = sys.argv
|
|
|
|
|
|
|
|
|
|
# port = args[1]
|
|
|
|
|
mode = args[1]
|
|
|
|
|
src = sys.stdin.read()
|
|
|
|
|
|
|
|
|
|
dest = 'main.py'
|
|
|
|
|
chunk_size=256
|
|
|
|
|
|
|
|
|
|
# USBシリアルポート自動認識:アルファベット順で最初に見つけたポートを使用
|
|
|
|
|
for p in sorted(serial.tools.list_ports.comports()):
|
|
|
|
|
if p.hwid.startswith('USB'):
|
|
|
|
|
port = p.device
|
|
|
|
|
print ('Device found: ' + port)
|
|
|
|
|
break
|
|
|
|
|
else:
|
|
|
|
|
print('No devices found.', file=sys.stderr)
|
|
|
|
|
sys.exit(1)
|
|
|
|
|
|
|
|
|
|
pyb = pyboard.Pyboard(port)
|
2022-11-16 13:57:00 +00:00
|
|
|
|
pyb.enter_raw_repl(False)
|
2022-07-10 13:04:56 +00:00
|
|
|
|
|
|
|
|
|
if mode == 'r':
|
|
|
|
|
print('Run code', flush=True)
|
2022-07-26 08:09:53 +00:00
|
|
|
|
pyb.exec_raw_no_follow(src)
|
2022-07-10 13:04:56 +00:00
|
|
|
|
elif mode == 'd':
|
|
|
|
|
print('Deploy code', flush=True)
|
|
|
|
|
pyb.exec("f=open('%s','wb')\nw=f.write" % dest)
|
|
|
|
|
pos = 0
|
|
|
|
|
while True:
|
|
|
|
|
data = src[pos:pos+chunk_size]
|
|
|
|
|
if not data:
|
|
|
|
|
break
|
|
|
|
|
if sys.version_info < (3,):
|
|
|
|
|
pyb.exec("w(b" + repr(data) + ")")
|
|
|
|
|
else:
|
|
|
|
|
pyb.exec("w(" + repr(data) + ")")
|
|
|
|
|
pos += chunk_size
|
|
|
|
|
pyb.exec("f.close()")
|
|
|
|
|
|
|
|
|
|
pyb.exit_raw_repl()
|
2022-07-26 08:09:53 +00:00
|
|
|
|
pyb.close()
|