Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # To facilitate WCDMA/LTETx tuning with GUI
- # William Chang
- import sys
- import time
- from PySide.QtCore import *
- from PySide.QtGui import *
- from WCDMA_attributes import *
- from QCOM import *
- from Agilent8960 import *
- from Anritsu8820C import *
- import mainGui
- __appname__ = "RF Tuning Tool"
- class MainDialog(QDialog, mainGui.Ui_mainDialog):
- # variables
- test_band = ""
- UL_ch = 0
- PDM = PDM_init
- SMPS_ON = SMPS_ON_init #SMPS ON/OFF
- SMPS_value = SMPS_init #SMPS value
- txp = None
- aclr = None
- tx_on_flag = 0 #ON(1)/OFF(0)
- PArange = iPArange_high #set to high gain mode as default
- gpib_addr = ""
- callbox = None
- phone = None
- eModeId = None
- eNewMode = None
- def __init__(self, parent = None):
- super(MainDialog, self).__init__(parent)
- self.setupUi(self)
- # Setup instrument and phone
- #self.setupInstrument()
- #self.setupPhone()
- self.comboBoxTech.addItems(("LTE","WCDMA"))
- self.comboBoxTech.activated[unicode].connect(self.comboBoxTechSelected)
- self.comboBoxBand.activated[unicode].connect(self.comboBoxBandSelected)
- self.qlMessage.clear()
- self.print_message("<font color=red> Select LTE/WCDMA first, then select Band. </color>")
- self.spinBoxPDMStart.setRange(PDM_min, PDM_max)
- self.spinBoxPDMStart.setValue(PDM_start)
- self.spinBoxPDMEnd.setRange(PDM_min, PDM_max)
- self.spinBoxPDMEnd.setValue(PDM_end)
- self.btnStartSweep.clicked.connect(self.startSweep)
- self.btnHPM.clicked.connect(self.setHPM)
- self.btnLPM.clicked.connect(self.setLPM)
- self.btnTxOn.clicked.connect(self.setTxOn)
- self.btnTxOff.clicked.connect(self.setTxOff)
- self.btnPDMPlus.clicked.connect(self.increasePDM)
- self.btnPDMMinus.clicked.connect(self.decreasePDM)
- self.btnChPlus.clicked.connect(self.increaseChannel)
- self.btnChMinus.clicked.connect(self.decreaseChannel)
- self.tableWidget.customContextMenuRequested.connect(self.tableWidgetMenu)
- self.actionCopy.triggered.connect(self.copySelectCells)
- def setupInstrument(self):
- self.print_message("Setup Instrument")
- # initial instrument and distinguish Agilent and Anritsu
- self.gpib_addr = "GPIB::{0}".format(Instrument_GPIB)
- self.callbox = instrument(self.gpib_addr)
- s = self.callbox.ask("*IDN?")
- self.print_message(s)
- self.callbox.close()
- self.callbox = None
- if "ANRITSU" in s:
- self.callbox = Anritsu8820C(self.gpib_addr)
- else:
- self.callbox = Agilent8960(self.gpib_addr)
- self.callbox.timeout = 10
- def setupPhone(self):
- self.print_message("Setup Phone")
- # initial phone
- self.phone = QCOM_phone()
- self.phone.initial_QMSL(bUseQPST)
- Phone_Com_Port_c = c_int(Phone_Com_Port)
- self.phone.connect_phone(Phone_Com_Port_c)
- self.phone.set_online_mode()
- self.phone.set_FTM_mode()
- def comboBoxTechSelected(self, tech):
- if tech == "LTE":
- self.comboBoxBand.clear()
- self.comboBoxBand.addItems(sorted(LTE_Band_QMSL_map.keys(), key=lambda x: int(x[1:])))
- self.qlBW.setText("5MHz")
- elif tech == "WCDMA":
- self.comboBoxBand.clear()
- self.comboBoxBand.addItems(sorted(Band_QMSL_map.keys(), key=lambda x: int(x[1:])))
- self.qlBW.setText("--")
- else:
- QMessageBox.warning(self, "Error", "comboBoxTech Error")
- self.print_title()
- def comboBoxBandSelected(self, band):
- #print("Band selected, need to setup display and start first measurement")
- if self.comboBoxTech.currentText() == "LTE":
- # Set Variable values
- self.test_band = band
- self.UL_ch = LTE_Band_UL_ch_map_5M[self.test_band][1]
- # Set PA range
- if (self.test_band in PA_range_map):
- self.PArange = PA_range_map[self.test_band][0]
- else:
- self.PArange = iPArange_high
- elif self.comboBoxTech.currentText() == "WCDMA":
- # Set Variable values
- self.test_band = band
- self.UL_ch = Band_UL_ch_map[self.test_band][1]
- # Set PA range
- if (self.test_band in PA_range_map):
- self.PArange = PA_range_map[self.test_band][0]
- else:
- self.PArange = iPArange_high
- # measure one time
- self.measure()
- # print result
- #self.print_title()
- self.print_result()
- def startSweep(self):
- print("Start Sweep")
- ch_list = []
- if self.comboBoxTech.currentText() == "LTE":
- ch_list = LTE_Band_UL_ch_map_5M[self.test_band]
- elif self.comboBoxTech.currentText() == "WCDMA":
- ch_list = Band_UL_ch_map[self.test_band]
- PDM_start = 0
- PDM_end = 0
- if self.spinBoxPDMStart.value() > self.spinBoxPDMEnd.value():
- PDM_start = self.spinBoxPDMEnd.value()
- PDM_end = self.spinBoxPDMStart.value()
- else:
- PDM_start = self.spinBoxPDMStart.value()
- PDM_end = self.spinBoxPDMEnd.value()
- for ch in ch_list:
- self.phone.set_Tx_off() # Set Tx OFF
- self.tx_on_flag = 0
- self.btnTxOff.setChecked(True)
- self.callbox.set_FDD_UL_channel(self.UL_ch) # Set instrument to new channel
- if self.comboBoxTech.currentText() == "LTE":
- self.set_phone_LTE_on()
- elif self.comboBoxTech.currentText() == "WCDMA":
- self.set_phone_WCDMA_on()
- # Set SMPS
- self.set_SMPS()
- for PDM_sweep in range(PDM_end, PDM_start-1, -1):
- if self.comboBoxTech.currentText() == "LTE":
- self.phone.set_LTE_PDM(self.PDM)
- elif self.comboBoxTech.currentText() == "WCDMA":
- self.phone.set_PDM(sel.fPDM)
- self.measure()
- self.print_result()
- def setHPM(self):
- print("set HPM")
- def setLPM(self):
- print("set LPM")
- def setTxOn(self):
- self.print_message("set Tx ON")
- def setTxOff(self):
- self.print_message("set Tx OFF")
- def increasePDM(self):
- print("increase PDM")
- def decreasePDM(self):
- print("decrease PDM")
- def increaseChannel(self):
- print("increase channel")
- self.print_result()
- def decreaseChannel(self):
- print("decrease channel")
- def set_SMPS(self):
- pass
- def set_phone_LTE_on(self):
- print("seet_phone_lte_on")
- def set_phone_WCDMA_on(self):
- print("set phone wcdma on")
- def measure(self):
- print("measure")
- def print_message(self, param):
- self.qlMessage.setText(unicode(param))
- def print_title(self):
- print("print title")
- #print title
- if self.comboBoxTech.currentText() == "LTE":
- self.tableWidget.setHorizontalHeaderLabels(["channel", "Tx Power", "PDM", "Max curr", "min curr", "Current", "UTRA-1", "UTRA+1", "EUTRA-1", "EURTA+1"])
- #self.textBrowser.append("{0:7}, {1:8}, {2:4}, {3:7}, {4:7}, {5:7}, {6:7}, {7:7}, {8:7}".format("channel", "Tx Power", "PDM", "UTRA-1", "UTRA+1", "EUTRA-1", "EURTA+1", "PArange", "SMPS"))
- elif self.comboBoxTech.currentText() == "WCDMA":
- self.tableWidget.setHorizontalHeaderLabels(["channel", "Tx Power", "PDM", "Max curr", "min curr", "Current","-5MHz", "+5MHz", "", ""])
- #self.textBrowser.append("{0:8}, {1:8}, {2:4}, {3:6}, {4:6}, {5:7}, {6:7}".format("channel", "Tx Power", "PDM", "-5MHz", "+5MHz", "PArange", "SMPS"))
- def print_result(self):
- if self.comboBoxTech.currentText() == "LTE":
- print("current row: {0}".format(self.tableWidget.currentRow()))
- print("row count: {0}".format(self.tableWidget.rowCount()))
- if (self.tableWidget.currentRow() == self.tableWidget.rowCount()-1):
- self.tableWidget.setRowCount(self.tableWidget.rowCount()+1)
- # for test only
- self.UL_ch = 24300
- self.txp = 23.4
- self.PDM = 90
- self.aclr = ["-41", "-40", "-43", "-42"]
- itemULCh = QTableWidgetItem(unicode(self.UL_ch))
- itemTxp = QTableWidgetItem(unicode(self.txp))
- itemPDM = QTableWidgetItem(unicode(self.PDM))
- itemAclrUTRAM = QTableWidgetItem(unicode(self.aclr[2]))
- itemAclrUTRAP = QTableWidgetItem(unicode(self.aclr[3]))
- itemAclrEUTRAM = QTableWidgetItem(unicode(self.aclr[0]))
- itemAclrEUTRAP = QTableWidgetItem(unicode(self.aclr[1]))
- self.tableWidget.setItem((self.tableWidget.currentRow()+1), 0, itemULCh)
- self.tableWidget.setItem((self.tableWidget.currentRow()+1), 1, itemTxp)
- self.tableWidget.setItem((self.tableWidget.currentRow()+1), 2, itemPDM)
- self.tableWidget.setItem((self.tableWidget.currentRow()+1), 6, itemAclrUTRAM)
- self.tableWidget.setItem((self.tableWidget.currentRow()+1), 7, itemAclrUTRAP)
- self.tableWidget.setItem((self.tableWidget.currentRow()+1), 8, itemAclrEUTRAM)
- self.tableWidget.setItem((self.tableWidget.currentRow()+1), 9, itemAclrEUTRAP)
- self.tableWidget.setCurrentCell(self.tableWidget.currentRow()+1, 0)
- elif self.comboBoxTech.currentText() == "WCDMA":
- pass
- """
- if self.comboBoxTech.currentText() == "LTE":
- self.textBrowser.append("{0:^7d}, {1:^8,.2f}, {2:4}, {3:7,.2f}, {4:7,.2f}, {5:7,.2f}, {6:7,.2f}, PAr:{7:3}, {8:3}:{9:3d}".format(self.UL_ch, self.txp, self.PDM, self.aclr[2], self.aclr[3], self.aclr[0], self.aclr[1], self.PArange, ON_dict[bool(self.SMPS_ON)], self.SMPS_value))
- elif self.comboBoxTech.currentText() == "WCDMA":
- self.textBrowser.append("{0:^8d}, {1:^8,.2f}, {2:4}, {3:6,.2f}, {4:6,.2f}, PAr:{5:3}, {6:3}:{7:3d}".format(self.UL_ch, self.txp, self.PDM, self.aclr[0], self.aclr[1], self.PArange, ON_dict[bool(self.SMPS_ON)], self.SMPS_value))
- """
- def copySelectCells(self):
- print(self.tableWidget.selectedRanges())
- def tableWidgetMenu(self, pos):
- print("custom context menu requested: {0}".format(pos))
- menu = QMenu(self)
- menu.addAction(self.actionCopy)
- menu.exec_(self.tableWidget.mapToGlobal(pos))
- def closeEvent(self, event):
- print("closing")
- event.accept()
- def keyPressEvent(self, event):
- # Re-direct ESC key to closeEvent
- print(event)
- if event.key() == Qt.Key_Escape:
- self.close()
- elif event.key() == Qt.Key_Control: #QKeySequence.Copy:
- print("here")
- self.actionCopy.trigger()
- def main():
- app = QApplication(sys.argv)
- form = MainDialog()
- form.show()
- app.exec_()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement