48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
import serial
|
|
import os
|
|
import sys
|
|
|
|
def progressbar(it, prefix="", size=60, file=sys.stdout):
|
|
count = len(it)
|
|
def show(j):
|
|
x = int(size*j/count)
|
|
file.write("%s[%s%s] %i/%i\r" % (prefix, "#"*x, "."*(size-x), j, count))
|
|
file.flush()
|
|
show(0)
|
|
for i, item in enumerate(it):
|
|
yield item
|
|
show(i+1)
|
|
file.write("\n")
|
|
file.flush()
|
|
|
|
def main():
|
|
if len(sys.argv) == 3:
|
|
ser = serial.Serial(sys.argv[1], timeout=1, write_timeout=1)
|
|
if ser.is_open:
|
|
# Clear out any existing input
|
|
ser.write(b'\n')
|
|
ser.readline()
|
|
|
|
# Send the upload command
|
|
ser.write(b'#u\n')
|
|
print(ser.readline())
|
|
|
|
path = sys.argv[2]
|
|
size = os.path.getsize(path)
|
|
ser.write([size])
|
|
i = 0
|
|
with open(path, "rb") as f:
|
|
for i in progressbar(range(size), "Upload: ", 40):
|
|
ser.write(f.read(1))
|
|
|
|
print(ser.readline())
|
|
ser.close()
|
|
|
|
else:
|
|
print("Failed to open serial port")
|
|
else:
|
|
print("Please provide file to upload")
|
|
|
|
if "__main__":
|
|
main()
|