X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=Cura%2Favr_isp%2Fstk500v2.py;h=8bacdab9f1d812a8ece2f73229af1b7b7b8eb068;hb=684b8c27e61ad968c7289eda04fc3defdf457c45;hp=d52311b6e8fd3d079629a281f7d7da00b97ab032;hpb=8abc47dbea126577f81c4df7cf4bae8fe5c70a8e;p=cura.git 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()