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) == 2: ser = serial.Serial("COM3", 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[1] size = os.path.getsize(path) ser.write([size & 0xFF]) ser.write([(size >> 8) & 0xFF]) 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()