Advertisement
Guest User

Main Program

a guest
Aug 19th, 2013
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.76 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # To facilitate WCDMA/LTETx tuning with GUI
  3. # William Chang
  4.  
  5. import sys
  6. import time
  7. from PySide.QtCore import *
  8. from PySide.QtGui import *
  9. from WCDMA_attributes import *
  10. from QCOM import *
  11. from Agilent8960 import *
  12. from Anritsu8820C import *
  13.  
  14. import mainGui
  15.  
  16. __appname__ = "RF Tuning Tool"
  17.  
  18. class MainDialog(QDialog, mainGui.Ui_mainDialog):
  19.    
  20.     # variables
  21.     test_band = ""
  22.     UL_ch = 0
  23.     PDM = PDM_init
  24.     SMPS_ON = SMPS_ON_init  #SMPS ON/OFF
  25.     SMPS_value = SMPS_init      #SMPS value
  26.     txp = None
  27.     aclr = None
  28.     tx_on_flag = 0          #ON(1)/OFF(0)
  29.     PArange = iPArange_high #set to high gain mode as default
  30.    
  31.     gpib_addr = ""
  32.     callbox = None
  33.     phone = None
  34.     eModeId = None
  35.     eNewMode = None
  36.    
  37.     def __init__(self, parent = None):
  38.         super(MainDialog, self).__init__(parent)
  39.         self.setupUi(self)
  40.        
  41.         # Setup instrument and phone
  42.         #self.setupInstrument()
  43.         #self.setupPhone()
  44.        
  45.         self.comboBoxTech.addItems(("LTE","WCDMA"))
  46.         self.comboBoxTech.activated[unicode].connect(self.comboBoxTechSelected)
  47.         self.comboBoxBand.activated[unicode].connect(self.comboBoxBandSelected)
  48.        
  49.         self.qlMessage.clear()
  50.         self.print_message("<font color=red> Select LTE/WCDMA first, then select Band. </color>")
  51.        
  52.         self.spinBoxPDMStart.setRange(PDM_min, PDM_max)
  53.         self.spinBoxPDMStart.setValue(PDM_start)
  54.         self.spinBoxPDMEnd.setRange(PDM_min, PDM_max)
  55.         self.spinBoxPDMEnd.setValue(PDM_end)
  56.         self.btnStartSweep.clicked.connect(self.startSweep)
  57.        
  58.         self.btnHPM.clicked.connect(self.setHPM)
  59.         self.btnLPM.clicked.connect(self.setLPM)
  60.         self.btnTxOn.clicked.connect(self.setTxOn)
  61.         self.btnTxOff.clicked.connect(self.setTxOff)
  62.         self.btnPDMPlus.clicked.connect(self.increasePDM)
  63.         self.btnPDMMinus.clicked.connect(self.decreasePDM)
  64.         self.btnChPlus.clicked.connect(self.increaseChannel)
  65.         self.btnChMinus.clicked.connect(self.decreaseChannel)
  66.        
  67.         self.tableWidget.customContextMenuRequested.connect(self.tableWidgetMenu)
  68.         self.actionCopy.triggered.connect(self.copySelectCells)
  69.        
  70.     def setupInstrument(self):
  71.         self.print_message("Setup Instrument")
  72.         # initial instrument and distinguish Agilent and Anritsu
  73.         self.gpib_addr = "GPIB::{0}".format(Instrument_GPIB)
  74.         self.callbox = instrument(self.gpib_addr)
  75.         s = self.callbox.ask("*IDN?")
  76.         self.print_message(s)
  77.         self.callbox.close()
  78.         self.callbox = None
  79.         if "ANRITSU" in s:
  80.             self.callbox = Anritsu8820C(self.gpib_addr)
  81.         else:
  82.             self.callbox = Agilent8960(self.gpib_addr)
  83.        
  84.         self.callbox.timeout = 10
  85.    
  86.     def setupPhone(self):
  87.         self.print_message("Setup Phone")
  88.         # initial phone
  89.         self.phone = QCOM_phone()
  90.         self.phone.initial_QMSL(bUseQPST)
  91.         Phone_Com_Port_c = c_int(Phone_Com_Port)
  92.         self.phone.connect_phone(Phone_Com_Port_c)
  93.         self.phone.set_online_mode()
  94.         self.phone.set_FTM_mode()
  95.    
  96.     def comboBoxTechSelected(self, tech):
  97.         if tech == "LTE":
  98.             self.comboBoxBand.clear()
  99.             self.comboBoxBand.addItems(sorted(LTE_Band_QMSL_map.keys(), key=lambda x: int(x[1:])))
  100.             self.qlBW.setText("5MHz")
  101.         elif tech == "WCDMA":
  102.             self.comboBoxBand.clear()
  103.             self.comboBoxBand.addItems(sorted(Band_QMSL_map.keys(), key=lambda x: int(x[1:])))
  104.             self.qlBW.setText("--")
  105.         else:
  106.             QMessageBox.warning(self, "Error", "comboBoxTech Error")
  107.         self.print_title()
  108.    
  109.     def comboBoxBandSelected(self, band):
  110.         #print("Band selected, need to setup display and start first measurement")
  111.         if self.comboBoxTech.currentText() == "LTE":
  112.             # Set Variable values
  113.             self.test_band = band
  114.             self.UL_ch = LTE_Band_UL_ch_map_5M[self.test_band][1]
  115.            
  116.             # Set PA range
  117.             if (self.test_band in PA_range_map):
  118.                 self.PArange = PA_range_map[self.test_band][0]
  119.             else:
  120.                 self.PArange = iPArange_high
  121.            
  122.            
  123.         elif self.comboBoxTech.currentText() == "WCDMA":
  124.             # Set Variable values
  125.             self.test_band = band
  126.             self.UL_ch = Band_UL_ch_map[self.test_band][1]
  127.             # Set PA range
  128.             if (self.test_band in PA_range_map):
  129.                 self.PArange = PA_range_map[self.test_band][0]
  130.             else:
  131.                 self.PArange = iPArange_high
  132.            
  133.        
  134.         # measure one time
  135.         self.measure()
  136.        
  137.         # print result
  138.         #self.print_title()
  139.         self.print_result()
  140.    
  141.    
  142.     def startSweep(self):
  143.         print("Start Sweep")
  144.         ch_list = []
  145.         if self.comboBoxTech.currentText() == "LTE":
  146.             ch_list = LTE_Band_UL_ch_map_5M[self.test_band]
  147.         elif self.comboBoxTech.currentText() == "WCDMA":
  148.             ch_list = Band_UL_ch_map[self.test_band]
  149.        
  150.         PDM_start = 0
  151.         PDM_end = 0
  152.         if self.spinBoxPDMStart.value() > self.spinBoxPDMEnd.value():
  153.             PDM_start = self.spinBoxPDMEnd.value()
  154.             PDM_end = self.spinBoxPDMStart.value()
  155.         else:
  156.             PDM_start = self.spinBoxPDMStart.value()
  157.             PDM_end = self.spinBoxPDMEnd.value()
  158.        
  159.         for ch in ch_list:
  160.             self.phone.set_Tx_off() # Set Tx OFF
  161.             self.tx_on_flag = 0
  162.             self.btnTxOff.setChecked(True)
  163.             self.callbox.set_FDD_UL_channel(self.UL_ch)     # Set instrument to new channel
  164.             if self.comboBoxTech.currentText() == "LTE":
  165.                 self.set_phone_LTE_on()
  166.             elif self.comboBoxTech.currentText() == "WCDMA":
  167.                 self.set_phone_WCDMA_on()
  168.             # Set SMPS
  169.             self.set_SMPS()
  170.             for PDM_sweep in range(PDM_end, PDM_start-1, -1):
  171.                 if self.comboBoxTech.currentText() == "LTE":
  172.                     self.phone.set_LTE_PDM(self.PDM)
  173.                 elif self.comboBoxTech.currentText() == "WCDMA":
  174.                     self.phone.set_PDM(sel.fPDM)
  175.                 self.measure()
  176.                 self.print_result()
  177.        
  178.     def setHPM(self):
  179.         print("set HPM")
  180.        
  181.        
  182.     def setLPM(self):
  183.         print("set LPM")
  184.        
  185.        
  186.     def setTxOn(self):
  187.         self.print_message("set Tx ON")
  188.        
  189.        
  190.     def setTxOff(self):
  191.         self.print_message("set Tx OFF")
  192.        
  193.        
  194.     def increasePDM(self):
  195.         print("increase PDM")
  196.        
  197.        
  198.     def decreasePDM(self):
  199.         print("decrease PDM")
  200.        
  201.        
  202.     def increaseChannel(self):
  203.         print("increase channel")
  204.         self.print_result()
  205.        
  206.        
  207.     def decreaseChannel(self):
  208.         print("decrease channel")
  209.        
  210.        
  211.     def set_SMPS(self):
  212.         pass
  213.        
  214.        
  215.     def set_phone_LTE_on(self):
  216.         print("seet_phone_lte_on")
  217.        
  218.        
  219.     def set_phone_WCDMA_on(self):
  220.         print("set phone wcdma on")
  221.        
  222.    
  223.     def measure(self):
  224.         print("measure")
  225.        
  226.        
  227.     def print_message(self, param):
  228.         self.qlMessage.setText(unicode(param))
  229.    
  230.     def print_title(self):
  231.         print("print title")
  232.         #print title
  233.         if self.comboBoxTech.currentText() == "LTE":
  234.             self.tableWidget.setHorizontalHeaderLabels(["channel", "Tx Power", "PDM", "Max curr", "min curr", "Current", "UTRA-1", "UTRA+1", "EUTRA-1", "EURTA+1"])
  235.             #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"))
  236.         elif self.comboBoxTech.currentText() == "WCDMA":
  237.             self.tableWidget.setHorizontalHeaderLabels(["channel", "Tx Power", "PDM", "Max curr", "min curr", "Current","-5MHz", "+5MHz", "", ""])
  238.             #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"))
  239.            
  240.     def print_result(self):
  241.         if self.comboBoxTech.currentText() == "LTE":
  242.             print("current row: {0}".format(self.tableWidget.currentRow()))
  243.             print("row count: {0}".format(self.tableWidget.rowCount()))
  244.             if (self.tableWidget.currentRow() == self.tableWidget.rowCount()-1):
  245.                 self.tableWidget.setRowCount(self.tableWidget.rowCount()+1)
  246.            
  247.             # for test only
  248.             self.UL_ch = 24300
  249.             self.txp = 23.4
  250.             self.PDM = 90
  251.             self.aclr = ["-41", "-40", "-43", "-42"]
  252.            
  253.            
  254.            
  255.             itemULCh = QTableWidgetItem(unicode(self.UL_ch))
  256.             itemTxp = QTableWidgetItem(unicode(self.txp))
  257.             itemPDM = QTableWidgetItem(unicode(self.PDM))
  258.             itemAclrUTRAM = QTableWidgetItem(unicode(self.aclr[2]))
  259.             itemAclrUTRAP = QTableWidgetItem(unicode(self.aclr[3]))
  260.             itemAclrEUTRAM = QTableWidgetItem(unicode(self.aclr[0]))
  261.             itemAclrEUTRAP = QTableWidgetItem(unicode(self.aclr[1]))
  262.            
  263.             self.tableWidget.setItem((self.tableWidget.currentRow()+1), 0, itemULCh)
  264.             self.tableWidget.setItem((self.tableWidget.currentRow()+1), 1, itemTxp)
  265.             self.tableWidget.setItem((self.tableWidget.currentRow()+1), 2, itemPDM)
  266.             self.tableWidget.setItem((self.tableWidget.currentRow()+1), 6, itemAclrUTRAM)
  267.             self.tableWidget.setItem((self.tableWidget.currentRow()+1), 7, itemAclrUTRAP)
  268.             self.tableWidget.setItem((self.tableWidget.currentRow()+1), 8, itemAclrEUTRAM)
  269.             self.tableWidget.setItem((self.tableWidget.currentRow()+1), 9, itemAclrEUTRAP)
  270.            
  271.             self.tableWidget.setCurrentCell(self.tableWidget.currentRow()+1, 0)
  272.            
  273.         elif self.comboBoxTech.currentText() == "WCDMA":
  274.             pass
  275.         """
  276.         if self.comboBoxTech.currentText() == "LTE":
  277.             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))
  278.         elif self.comboBoxTech.currentText() == "WCDMA":
  279.             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))
  280.         """
  281.        
  282.     def copySelectCells(self):
  283.         print(self.tableWidget.selectedRanges())
  284.    
  285.     def tableWidgetMenu(self, pos):
  286.         print("custom context menu requested: {0}".format(pos))
  287.         menu = QMenu(self)
  288.         menu.addAction(self.actionCopy)
  289.         menu.exec_(self.tableWidget.mapToGlobal(pos))
  290.    
  291.     def closeEvent(self, event):
  292.         print("closing")
  293.         event.accept()
  294.    
  295.     def keyPressEvent(self, event):
  296.         # Re-direct ESC key to closeEvent
  297.         print(event)
  298.         if event.key() == Qt.Key_Escape:
  299.             self.close()
  300.         elif event.key() == Qt.Key_Control: #QKeySequence.Copy:
  301.             print("here")
  302.             self.actionCopy.trigger()
  303. def main():
  304.     app = QApplication(sys.argv)
  305.     form = MainDialog()
  306.     form.show()
  307.     app.exec_()
  308.  
  309. if __name__ == '__main__':
  310.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement