import serial from PySide import QtCore, QtGui def evmSelectorSelected(val): global regProg,capDev,dev,evmTitle,evmSelectList,evmSelectWindow,evmSelectCentralWidget,evmProgressBar evmSelectCentralWidget.setEnabled(False) evmProgressBar.setValue(10) if(type(val) is QtGui.QListWidgetItem): selection=evmSelectListWidget.currentRow() else: selection=val evmTitle=evmSelectList[selection] regProg = mMSPF5529Controller.MSP5529RegProgrammer(addr=evmList.control[0]) capDev = mMSPF5529Controller.MSP5529_OPT4XXX_Capture(dataPort=evmList.data[0],controlPort=evmList.control[0]) dev = mDevice.Device(fileName=scriptsRootDir+'OPT4001_EVM.dml',ignoreLast=False,regProgDevice=regProg,name='Registers View') evmProgressBar.setValue(30) mainWindow.runFile(scriptsRootDir+r'/resetDevice.py') evmProgressBar.setValue(40) mainWindow.runFile(scriptsRootDir+r'/updateGUIFromDevice.py') evmProgressBar.setValue(50) mainWindow.runFile(scriptsRootDir+r'/captureDataStructure.py') evmProgressBar.setValue(70) mainWindow.runFile(scriptsRootDir+r'/04-launchGUI.py') evmProgressBar.setValue(100) evmSelectWindow.close() if('dev' in locals().keys()): errorMessage=QtGui.QErrorMessage() errorMessage.showMessage("Please clear session. Session->Clear Session (CTRL+T) or close and restart Latte") errorMessage.resize(500,250) else: ## Imports # ------- import imp import mDevice scriptsRootDir=PROJECTS_DIR+r'OPT4001/OPT4001DNPQ1_EVM/' mEVMSelector=imp.load_source('mEVMSelector',scriptsRootDir+r'mEVMSelector.py') mMSPF5529Controller=imp.load_source('mMSPF5529Controller',scriptsRootDir+'/mMSP5529Programmer.py') ## Instance creation # ----------------- evmFound=False while(not evmFound): evmList=mEVMSelector.EVMSelector() if(len(evmList.control)>0): evmFound=True break msgBox=QtGui.QMessageBox() msgBox.setText("OPT4001 Connection Problem") msgBox.setIcon(QtGui.QMessageBox.Critical) msgBox.setInformativeText('OPT4001 not connected. Please check USB connection') msgBox.setStandardButtons(QtGui.QMessageBox.Retry | QtGui.QMessageBox.Abort) msgBox.setWindowTitle ('Connection Problem') result=msgBox.exec_() if(result==QtGui.QMessageBox.Retry): continue if(result==QtGui.QMessageBox.Abort): #sys.exit(0) mainWindow.closeEvent(QtGui.QCloseEvent) break evmSelectList=[] for c0 in np.arange(len(evmList.control)): evmSelectList.append('EVM%d:Control:%s/Data:%s'%(c0,evmList.control[c0],evmList.data[c0])) evmSelectWindow=QtGui.QMainWindow() evmSelectWindow.setWindowTitle('EVM Selector') evmSelectListWidget= QtGui.QListWidget() evmProgressBar=QtGui.QProgressBar() evmProgressBar.setValue(0) evmSelectListWidget.setToolTip('Double click to select EVM') evmSelectListWidget.addItems(evmSelectList) usableEVMsFlag=np.zeros(len(evmList.control),dtype=np.bool) for c0 in np.arange(len(evmList.control)): try: ser=serial.Serial(port=evmList.control[c0]) ser.close() alreadyOpen=False except: alreadyOpen=True usableEVMsFlag[c0]=not alreadyOpen if(alreadyOpen): evmSelectListWidget.item(c0).setFlags(QtCore.Qt.NoItemFlags) evmSelectCentralWidget=QtGui.QWidget() evmSelectionLayout=QtGui.QVBoxLayout() evmSelectionLayout.addWidget(evmSelectListWidget) evmSelectionLayout.addWidget(evmProgressBar) evmSelectCentralWidget.setLayout(evmSelectionLayout) evmSelectWindow.setCentralWidget(evmSelectCentralWidget) evmSelectListWidget.itemDoubleClicked.connect(evmSelectorSelected) if(np.sum(usableEVMsFlag)==1): evmSelectorSelected(np.argwhere(usableEVMsFlag).ravel()[0]) else: evmSelectWindow.show()