Tool/software:
Hello team,
My customer cannot open GUI. Please teach me how to solove this issue.
I posted E2E before, change some script, it was solved.
The other engineer challenge today, and faced similar problem. But seeing from code, the script is newer. It means there are already changed script from previous version.
Regards,
Youhei MIYAOKA
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()
import serial from serial.tools import list_ports import numpy as np import re import time import globalDefs as Globals def send(ser, cmd): ser.write(cmd+'\r') time.sleep(1e-3) timeOut = 0xFFFF while ((not ser.inWaiting()) and timeOut > 0): timeOut -= 1 if (timeOut > 0): retCode = ser.readline() retCode = retCode.splitlines()[0] retSp = retCode.split(':') return retSp, retCode, timeOut def sendCheck(ser, cmd): retSp, retCode, timeOut = send(ser, cmd) assert timeOut > 0 assert retSp[1] == '0' return retSp, retCode, timeOut def decodeHwrz(s): a = "" for i in range(3): a += chr(int(s[2*i:2*i+2])) return a class EVMSelector(): VID=0x2047 PID=0x0A3C dv=-1 def __init__(self): portList=np.array([]) for port in serial.tools.list_ports.comports(): #print 'VID is 0x%04x PID is 0x%04x'%(port.vid,port.pid) if((port.vid==self.VID) and (port.pid==self.PID)): portList=np.append(portList,port) if(np.size(portList)%2): Globals.error('Number of ports with EVM\'s VID and PID seems to be odd number. Expected even number') return locList=dict() self.control=np.array([]) self.data=np.array([]) self.controlP=np.array([]) self.dataP=np.array([]) #print portList # import imp # mMSP5503Programmer=imp.load_source('mMSP5503Programmer','c:/Asterix/projects/OPT3101/OPT3101EVMrevE3_TIDAWideFov/'+'/mMSP5503Programmer.py') for i,port in enumerate(portList): try: ser=serial.Serial(port.device,9600) #print "Passed to open",port.device except: #print "Failed to open",port.device Globals.log('Serial port [%s] Locked'%port.device) continue ser.write('HWR?'+'\r') storeSize=5 time.sleep(1e-3) timeOut=0xFFFF while((not ser.inWaiting()) and timeOut>0): timeOut-=1 if(timeOut>0): retCode=ser.readline() retCode=retCode.splitlines()[0] retSp=retCode.split(':') #print "Appending ",retCode if(retSp[1]=='C'): retSp2, retCode2, timeOut2 = send(ser, 'HWRF') if (timeOut2 > 0): if (retSp2[1] == 'F'): Globals.error("Invalid EVM detected") return elif (int(retSp2[1]) >= 1): sendCheck(ser, 'FLS!R') z = sendCheck(ser, 'FLSH')[0] assert z[2] == '%02d'%storeSize r = [sendCheck(ser, 'FLSR')[0][2] for i in range(storeSize)] sendCheck(ser, 'FLS!R') s = "".join([decodeHwrz(st) if i != 1 else st[2:6] for i, st in enumerate(r)]) Globals.log("Device detected: " + s) assert s == "OPT4001DNP-Q1EVM" self.dv=1 else: Globals.error('Communication Error.') assert 0 self.controlP=np.append(self.controlP,port) self.control=np.append(self.control,port.device) if(retSp[1]=='D'): self.dataP=np.append(self.dataP,port) self.data=np.append(self.data,port.device) ser.close() if(not (np.size(self.controlP)==np.size(self.dataP))): Globals.error('Number of Control and Data ports not matched. Unlock all COM ports') return for c0,port in enumerate(self.controlP): try: ser=serial.Serial(port.device,9600) except: Globals.log('Serial port [%s] Locked'%port) continue ser.write('HWRX%d'%(c0+1)+'\r') ser.close() dataOrder=[] for c0,port in enumerate(self.dataP): try: ser=serial.Serial(port.device,9600) except: Globals.log('Serial port [%s] Locked'%port) continue ser.write('HWRX'+'\r') time.sleep(1e-3) timeOut=0xFFFF while((not ser.inWaiting()) and timeOut>0): timeOut-=1 if(timeOut>0): retCode=ser.readline() retCode=retCode.splitlines()[0] retSp=retCode.split(':') dataOrder.append(np.uint8(retSp[1])-1) ser.close() self.data=self.data[dataOrder] self.dataP=self.dataP[dataOrder] #for c0 in np.arange(np.size( return if __name__ == '__main__': evmList=EVMSelector() for c0 in np.arange(evmList.control.shape[0]): print "Control Port for EVM %d is "%c0,evmList.control[c0] print "Data Port for EVM %d is "%c0,evmList.data[c0]