From 684b8c27e61ad968c7289eda04fc3defdf457c45 Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 21 Oct 2013 14:31:09 +0200 Subject: [PATCH] Update commandline programmer. --- Cura/avr_isp/stk500v2.py | 40 ++++++++++++++++++++++++++++------------ 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/Cura/avr_isp/stk500v2.py b/Cura/avr_isp/stk500v2.py index d52311b6..8bacdab9 100644 --- a/Cura/avr_isp/stk500v2.py +++ b/Cura/avr_isp/stk500v2.py @@ -145,23 +145,39 @@ class Stk500v2(ispBase.IspBase): 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() -- 2.30.2