MrDraw/SkeinPyPy_NewUI/newui/machineCom.py

62 lines
1.5 KiB
Python

from __future__ import absolute_import
import __init__
import os, glob, wx
from serial import Serial
from avr_isp import stk500v2
from avr_isp import ispBase
from avr_isp import intelHex
try:
import _winreg
except:
pass
def serialList():
baselist=[]
if os.name=="nt":
try:
key=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,"HARDWARE\\DEVICEMAP\\SERIALCOMM")
i=0
while(1):
baselist+=[_winreg.EnumValue(key,i)[1]]
i+=1
except:
pass
return baselist+glob.glob('/dev/ttyUSB*') + glob.glob('/dev/ttyACM*') +glob.glob("/dev/tty.*")+glob.glob("/dev/cu.*")+glob.glob("/dev/rfcomm*")
def installFirmware(filename, port = 'AUTO'):
hexFile = intelHex.readHex(filename)
programmer = stk500v2.Stk500v2()
if port == 'AUTO':
for port in serialList():
try:
programmer.connect(port)
except ispBase.IspError:
pass
else:
programmer.connect(port)
if programmer.isConnected():
programmer.programChip(hexFile)
programmer.close()
return True
wx.MessageBox('Failed to find machine for firmware upgrade\nIs your machine connected to the PC?', 'Firmware update', wx.OK | wx.ICON_ERROR)
return False
def serialOpen(port = 'AUTO', baudrate = 115200):
if port == 'AUTO':
programmer = stk500v2.Stk500v2()
for port in serialList():
try:
programmer.connect(port)
programmer.close()
return Serial(port, baudrate, timeout=5)
except ispBase.IspError:
pass
programmer.close()
else:
return Serial(port, baudrate, timeout=5)
return False