self.progressCallback = None
def connect(self, port = 'COM22', speed = 115200):
- if self.serial != None:
+ if self.serial is not None:
self.close()
try:
self.serial = Serial(str(port), speed, timeout=1, writeTimeout=10000)
time.sleep(0.1)
self.serial.setDTR(0)
time.sleep(0.2)
-
+
self.sendMessage([1])
if self.sendMessage([0x10, 0xc8, 0x64, 0x19, 0x20, 0x00, 0x53, 0x03, 0xac, 0x53, 0x00, 0x00]) != [0x10, 0x00]:
self.close()
self.serial.timeout = 5
def close(self):
- if self.serial != None:
+ if self.serial is not None:
self.serial.close()
self.serial = None
else:
return data
+def portList():
+ ret = []
+ import _winreg
+ key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM")
+ i=0
+ while True:
+ try:
+ values = _winreg.EnumValue(key, i)
+ except:
+ return ret
+ if 'USBSER' in values[0]:
+ ret.append(values[1])
+ i+=1
+ return ret
-def main():
+def runProgrammer(port, filename):
programmer = Stk500v2()
+ programmer.connect(port = port)
+ programmer.programChip(intelHex.readHex(filename))
+ programmer.close()
+
+def main():
+ import threading
if sys.argv[1] == 'AUTO':
- import _winreg
- key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM")
- i=0
- while True:
- values = _winreg.EnumValue(key, i)
- if 'USBSER' in values[0]:
- programmer.connect(port = values[1])
- break
- i+=1
+ print portList()
+ for port in portList():
+ threading.Thread(target=runProgrammer, args=(port,sys.argv[2])).start()
+ time.sleep(5)
else:
+ programmer = Stk500v2()
programmer.connect(port = sys.argv[1])
- programmer.programChip(intelHex.readHex(sys.argv[2]))
- sys.exit(1)
+ programmer.programChip(intelHex.readHex(sys.argv[2]))
+ sys.exit(1)
if __name__ == '__main__':
main()