def fieldomni(self, freq, fieldintensity, degreestep=5, poweram1=None, transfer=False): sg_output_limit = -5 # unit is dBm set the signal generator output limit omnifield = [] iteration = 5 degree = 0 tkinter.messagebox.showinfo(title="提示", message="将要进行频率%f场强%f的测试\n" % (freq, fieldintensity)) ETSProbe.__init__(self) Zeta.__init__(self) times = 360 / degreestep iteration += times if transfer is False: field = cal_field(freq, fieldintensity) powertarget = field[0] else: if poweram1 is not None: powertarget = poweram1 else: return "wrong input power target" frequency = freq * 1000000000 powersignal = -30 self.SGPowerSet(powersignal) self.SGCWFrec(frequency) self.PMSetFreq(frequency) self.PABand(frequency) self.SGPowerOut("ON") self.PAPowerOut("ON") time.sleep(2) for i in range(5): time.sleep(2) pmpower = self.PMFetch() print("当前第%d循环的功率计读数为%f" % (i + 1, pmpower)) powerdiff = powertarget - pmpower powersignal += powerdiff if self.SGInRange(powersignal) and powersignal < sg_output_limit: self.SGPowerSet(powersignal) else: self.SGPowerOut("OFF") self.PAPowerOut("OFF") return "Error input signal generator power" for i in range(times): time.sleep(2) pmpower = self.PMFetch() print("当前第%d循环的功率计读数为%f" % (i + 1, pmpower)) powerdiff = powertarget - pmpower powersignal += powerdiff self.SGPowerSet(powersignal) if self.ProbeStatus() == 0 and degree == 0: omnifield.append([]) omnifield[i].append(degree) omnifield[i].append(self.ProbeField()[3]) degree += 5 else: omnifield.append([]) omnifield[i].append(degree) self.ZetaRoll(degreestep) omnifield[i].append(self.ProbeField()[3]) i += 1 degree += 5 return omnifield
def FieldProb(self, freq, fieldintensity, transfer=False): """Produce the fieldintensity of specified frequency :param transfer: :param fieldintensity: :param freq: """ global powersg sg_output_limit = -5 # unit is dBm set the signal generator output limit tkinter.messagebox.showinfo(title='提示', message='请连接好电场探头\n') field = cal_field(freq, fieldintensity) print(field) if transfer: self.db.BasicCursor.execute("SELECT PowerCal FROM FieldTransfer WHERE Frequency=%f AND Field=%f" % (freq, fieldintensity)) powertarget = self.db.BasicCursor.fetchall()[0][0] if powertarget == 0: tkinter.messagebox.showinfo(title='提示', message='输入场强无法传递\n') return else: powertarget = field[0] # change cable module to be updated # # angel = self.ct.CTReadAngel() # antennachange = ['ETS3160-0316001', 'ETS3160-0316002', 'ETS3160-0316003'] # if antenna not in antennachange and angel != 90: # self.ct.CTRoll(180) tkinter.messagebox.showinfo(title='提示', message="请确定天线更换完毕并且射频线连接正确") if transfer: self.ct.CTRoll(90) else: antenna = field[2] tkinter.messagebox.showinfo(title='提示', message="请连接%s天线进行测试" % antenna) self.ct.CTAntennaRoll(antenna) sg_initial = -30 self.sg.SGPowerSet(sg_initial) # set the initial power unit dBm # frequency set frequency = freq * 1e9 self.sg.SGCWFrec(frequency) self.pm.PMSetFreq(frequency) self.pa.PAPowerOut('OFF') time.sleep(5) self.pa.PABand(frequency) self.sg.SGPowerOut('On') self.pa.PAPowerOut('ON') time.sleep(5) for i in range(0, 4): # iterate the power output time.sleep(2) # delay 1 second if i == 0: powercoup = self.pm.PMFetch() print('当前第%d循环的功率计读数为%f' % (i + 1, powercoup)) powerdiff = powertarget - powercoup powersg = sg_initial + powerdiff if self.sg.SGInRange(powersg) and powersg < sg_output_limit: self.sg.SGPowerSet(powersg) else: tkinter.messagebox.showinfo(title='Alert', message="Error input signal generator power") return "Error input signal generator power" else: powercoup = self.pm.PMFetch() print('当前第%d循环的功率计读数为%f' % (i + 1, powercoup)) powerdiff = powertarget - powercoup powersg += powerdiff if self.sg.SGInRange(powersg) and powersg < sg_output_limit: self.sg.SGPowerSet(powersg) else: tkinter.messagebox.showinfo(title='Alert', message="Error input signal generator power") return "Error input signal generator power" if self.fieldread == 'ETS': try: self.ETS = ETSProbe() except: tkinter.messagebox.showinfo(title='提示', message="无ETS探头连接") # fieldreading = self.ETS.ProbeField()[3] fieldreading = self.ETS.ProbeField()[0] self.ETS.RemoveProbe() else: try: fieldreading = float(input('请输入电场探头示值:')) except: print('输入数据有误') try: fieldreading = float(input('请重新输入电场探头示值:')) except: print('输入数据有误') fieldreading = float(input('请重新输入电场探头示值:')) try: self.db.Cursor.execute("INSERT INTO FieldTest (Frequency, Field, FieldResult, TestSeries) " "VALUES (%f, %f, %f, %f)" % (freq, fieldintensity, fieldreading, self.db.TestSeriesNo)) self.db.Cursor.commit() except: print('结果写入数据库失败') # set return value if fieldreading: return fieldreading else: return 'wrong output'
def fieldomni(self, freq, fieldintensity, degreestep=5, transfer=False): if not self.db.Cursor.tables(table='FieldOmni_%sGHz_%sV' % (freq, fieldintensity)).fetchone(): try: self.db.Cursor.execute("Create TABLE FieldOmni_%sGHz_%sV" % (freq, fieldintensity)) self.db.Cursor.commit() except: pass try: self.db.Cursor.execute("alter table FieldOmni_%sGHz_%sV add Degree DOUBLE " % (freq, fieldintensity)) self.db.Cursor.commit() except: pass try: self.db.Cursor.execute("alter table FieldOmni_%sGHz_%sV add Field DOUBLE " % (freq, fieldintensity)) self.db.Cursor.commit() except: pass try: self.db.Cursor.execute("alter table FieldOmni_%sGHz_%sV add TestSeriesNo DOUBLE " % (freq, fieldintensity)) self.db.Cursor.commit() except: pass sg_output_limit = -5 # unit is dBm set the signal generator output limit degree = 0 tkinter.messagebox.showinfo(title='提示', message='将要进行频率%f场强%f的各向同性测试, 请连接好探头和电机\n' % (freq, fieldintensity)) times = int(360 / degreestep) if transfer is False: field = cal_field(freq, fieldintensity) print(field) antenna = field[2] powertarget = field[0] self.ct.CTAntennaRoll(antenna) else: self.db.BasicCursor.execute("SELECT PowerCal FROM FieldTransfer WHERE Frequency=%f AND Field=%f" % (freq, fieldintensity)) powertarget = self.db.BasicCursor.fetchall()[0][0] if powertarget == 0: tkinter.messagebox.showinfo(title='提示', message='输入场强无法传递\n') return self.ct.CTRoll(89) frequency = freq * 1e9 powersignal = -30 self.sg.SGPowerSet(powersignal) self.sg.SGCWFrec(frequency) self.pm.PMSetFreq(frequency) self.pa.PABand(frequency) self.sg.SGPowerOut('ON') self.pa.PAPowerOut('ON') time.sleep(5) for i in range(5): time.sleep(2) pmpower = self.pm.PMFetch() print('当前第%d循环的功率计读数为%f' % (i + 1, pmpower)) powerdiff = powertarget - pmpower powersignal += powerdiff if self.sg.SGInRange(powersignal) and powersignal < sg_output_limit: self.sg.SGPowerSet(powersignal) else: self.sg.SGPowerOut('OFF') self.pa.PAPowerOut('OFF') return "Error input signal generator power" for i in range(times): pmpower = self.pm.PMFetch() print('当前第%d循环的功率计读数为%f' % (i + 1, pmpower)) powerdiff = powertarget - pmpower powersignal += powerdiff self.sg.SGPowerSet(powersignal) time.sleep(3) if self.fieldread == 'ETS': try: self.ETS = ETSProbe() except: tkinter.messagebox.showinfo(title='提示', message="无ETS探头连接") fieldreading = self.ETS.ProbeField()[3] self.ETS.RemoveProbe() else: try: fieldreading = float(input('请输入电场探头示值:')) except: print('输入数据有误') try: fieldreading = float(input('请重新输入电场探头示值:')) except: print('输入数据有误') fieldreading = float(input('请重新输入电场探头示值:')) if degree == 0: try: self.db.Cursor.execute("INSERT INTO FieldOmni_%sGHz_%sV (Degree, Field, TestSeriesNo) VALUES" " (%f, %f, %d)" % (freq, fieldintensity, degree, fieldreading, self.db.TestSeriesNo)) self.db.Cursor.commit() except: print('结果写入数据库失败') degree += 5 else: try: self.db.Cursor.execute("INSERT INTO FieldOmni_%sGHz_%sV (Degree, Field, TestSeriesNo) VALUES" " (%f, %f, %d)" % (freq, fieldintensity, degree, fieldreading, self.db.TestSeriesNo)) self.db.Cursor.commit() self.zeta.ZetaRoll(degreestep) except: print('结果写入数据库失败') degree += 5
def FieldProb(self, freq, fieldintensity, fieldread=None, cal=None, powerspec=-100): """Produce the fieldintensity of specified frequency :param powerspec: :param cal: :param fieldread: :param fieldintensity: :param freq: """ global powersg sg_output_limit = -5 # unit is dBm set the signal generator output limit app = QApplication(sys.argv) fieldreading = [] if fieldread == "ETS": ms = QMessageBox(QMessageBox.Warning, "提示", "请连接好ETS探头") ms.show() app.exec_() ETSProbe.__init__(self) elif fieldread == "Narda" or None == fieldread: ms = QMessageBox(QMessageBox.Warning, "提示", "请连接好Narda探头") ms.show() app.exec_() else: ms = QMessageBox(QMessageBox.Warning, "Alert", "Wrong fieldread 参数") ms.show() app.exec_() return "Wrong fieldread 参数" field = cal_field(freq, fieldintensity) print(field) # p_meter_disp_dbm, coupler, antenna, e_cal_1w if cal is not None: print(powerspec) powertarget = powerspec else: powertarget = field[0] antenna = field[2] ms = QMessageBox(QMessageBox.Warning, "提示", "请连接%s天线进行测试" % antenna) ms.show() app.exec_() # self.CTAntennaChange(antenna) ms = QMessageBox(QMessageBox.Warning, "提示", "请确定天线更换完毕并且射频线连接正确") ms.show() app.exec_() self.CTAntennaRoll(antenna) sg_initial = -30 self.SGPowerSet(sg_initial) # set the initial power unit dBm # frequency set frequency = freq * 1000000000 self.SGCWFrec(frequency) self.PMSetFreq(frequency) self.PABand(frequency) self.SGPowerOut("On") self.PAPowerOut("ON") for i in range(0, 6): # iterate the power output time.sleep(2) # delay 1 second if i == 0: powercoup = self.PMFetch() print("当前第%d循环的功率计读数为%f" % (i + 1, powercoup)) powerdiff = powertarget - powercoup powersg = sg_initial + powerdiff if self.SGInRange(powersg) and powersg < sg_output_limit: self.SGPowerSet(powersg) else: ms = QMessageBox(QMessageBox.Warning, "Alert", "Error input signal generator power") ms.show() app.exec_() if fieldread == "ETS": self.RemoveProbe() return "Error input signal generator power" elif i <= 9: powercoup = self.PMFetch() print("当前第%d循环的功率计读数为%f" % (i + 1, powercoup)) powerdiff = powertarget - powercoup powersg += powerdiff if self.SGInRange(powersg) and powersg < sg_output_limit: self.SGPowerSet(powersg) elif 3 > powerdiff > 1: ms = QMessageBox(QMessageBox.Warning, "提示", "功放到达1dB压缩点") ms.show() app.exec_() break else: ms = QMessageBox(QMessageBox.Warning, "Alert", "Error input signal generator power") ms.show() app.exec_() if fieldread == "ETS": self.RemoveProbe() return "Error input signal generator power" if fieldread is None or fieldread == "Narda": fieldreading = float(input("请输入电厂探头示值:")) elif fieldread == "ETS": fieldreading.append(freq) fieldreading.append(self.ProbeField()[3]) fieldreading.append(powertarget) fieldreading.append(field[4]) ms = QMessageBox(QMessageBox.Warning, "提示", "请确定测试完毕") ms.show() app.exec_() self.RemoveProbe() else: self.PAPowerOut("OFF") self.SGPowerOut("OFF") self.PAPowerOut("OFF") self.SGPowerOut("OFF") try: self.Cursor.execute( "INSERT INTO FieldTest (Frequency, Field, FieldResult, TestSeries) " "VALUES (%f, %f, %f, %f)" % (freq, fieldintensity, fieldreading, self.TestSeriesNo) ) self.Cursor.commit() except: print("结果写入数据库失败") # set return value if fieldreading: return fieldreading else: return "wrong output"
def fieldtransfer(self, cal=0, startfreq=1, stopfreq=18, specfreq=None): print(cal, startfreq, specfreq) frequency = self.FieldTransferDB(deltable=0) field = [10, 20, 30, 40, 50] iterationfreq = len(frequency) if cal == 0 and specfreq is None and startfreq == 1 and stopfreq == 18: """Calibration process, standard probe test""" for i in range(iterationfreq): for j in range(5): self.TransferInit(frequency[i], field[j]) elif cal == 0 and specfreq is None and (startfreq != 1 or stopfreq != 18): for i in range(iterationfreq): for j in range(5): if startfreq <= frequency[i] <= stopfreq: self.TransferInit(frequency[i], field[j]) else: pass elif cal == 0 and specfreq is not None: specfreq = list(specfreq) iterationfreq = len(specfreq) for i in range(iterationfreq): for j in range(5): self.TransferInit(specfreq[i], field[j]) elif cal == 1 and specfreq is None and startfreq == 1 and stopfreq == 18: for i in range(iterationfreq): for j in range(5): self.BasicCursor.execute( "SELECT * FROM FieldTransfer WHERE Frequency=%f " "AND Field=%f" % (frequency[i], field[j]) ) table = self.BasicCursor.fetchall() tkinter.messagebox.showinfo(title="提示", message="将要进行频率%f场强%f的测试\n" % (frequency[i], field[j])) if field[j] == 0: self.BasicCursor.execute( "UPDATE FieldTransfer SET PowerCal=%f WHERE Frequency=%f " "AND Cal=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.execute( "UPDATE FieldTransfer SET FieldVerify=%f WHERE Frequency=%f " "AND Cal=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() else: print(self.TransferIteration(table[0][0], table[0][2])) elif cal == 1 and specfreq is None and (startfreq != 1 or stopfreq != 18): for i in range(iterationfreq): for j in range(5): if startfreq <= frequency[i] <= stopfreq: self.BasicCursor.execute( "SELECT * FROM FieldTransfer WHERE Frequency=%f " "AND Field=%f" % (frequency[i], field[j]) ) table = self.BasicCursor.fetchall() tkinter.messagebox.showinfo(title="提示", message="将要进行频率%f场强%f的测试\n" % (frequency[i], field[j])) print(self.TransferIteration(table[0][0], table[0][2])) else: pass elif cal == 2 and specfreq is None and startfreq == 1 and stopfreq == 18: for i in range(iterationfreq): for j in range(5): self.BasicCursor.execute( "SELECT * FROM FieldTransfer WHERE Frequency=%f " "AND Field=%f" % (frequency[i], field[j]) ) table = self.BasicCursor.fetchall() tkinter.messagebox.showinfo(title="提示", message="将要进行频率%f场强%f的测试\n" % (frequency[i], field[j])) if table[0][3] != 0: result = self.TransferVerify(table[0][0], table[0][3]) if result == "Error input signal generator power": self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaVerify=%f WHERE Frequency=%f " "AND Field=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() else: self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaVerify=%f WHERE Frequency=%f " "AND Field=%f" % (result, frequency[i], field[j]) ) self.BasicCursor.commit() print("频率%f场强%f的测试结果为%f" % (frequency[i], field[j], result)) else: self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaVerify=%f WHERE Frequency=%f " "AND Field=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() elif cal == 2 and specfreq is None and (startfreq != 1 or stopfreq != 18): for i in range(iterationfreq): for j in range(5): if startfreq <= frequency[i] <= stopfreq: self.BasicCursor.execute( "SELECT * FROM FieldTransfer WHERE Frequency=%f " "AND Field=%f" % (frequency[i], field[j]) ) table = self.BasicCursor.fetchall() tkinter.messagebox.showinfo(title="提示", message="将要进行频率%f场强%f的测试\n" % (frequency[i], field[j])) if table[0][3] != 0: result = self.TransferVerify(table[0][0], table[0][3]) if result == "Error input signal generator power": self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaVerify=%f WHERE Frequency=%f " "AND Field=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() else: self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaVerify=%f WHERE Frequency=%f " "AND Field=%f" % (result, frequency[i], field[j]) ) self.BasicCursor.commit() print("频率%f场强%f的测试结果为%f" % (frequency[i], field[j], result)) else: self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaVerify=%f WHERE Frequency=%f " "AND Field=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() else: pass elif cal == 3 and specfreq is None and startfreq == 1 and stopfreq == 18: for i in range(iterationfreq): for j in range(5): table1 = cal_field(frequency[i], field[j]) antenna = table1[2] self.CTAntennaRoll(antenna) self.BasicCursor.execute( "SELECT * FROM FieldTransfer WHERE Frequency=%f " "AND Field=%f" % (frequency[i], field[j]) ) table = self.BasicCursor.fetchall() tkinter.messagebox.showinfo(title="提示", message="将要进行频率%f场强%f的测试\n" % (frequency[i], field[j])) if frequency[i] == 4.3: tkinter.messagebox.showinfo(title="提示", message="请注意更换耦合器\n") if table[0][3] != 0: result = self.TransferVerify(table[0][0], table1[0]) if result == "Error input signal generator power": self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaSTD=%f WHERE Frequency=%f " "AND Field=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() else: self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaSTD=%f WHERE Frequency=%f " "AND Field=%f" % (result, frequency[i], field[j]) ) self.BasicCursor.commit() print("频率%f场强%f的测试结果为%f" % (frequency[i], field[j], result)) else: self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaSTD=%f WHERE Frequency=%f " "AND Field=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() elif cal == 3 and specfreq is None and (startfreq != 1 or stopfreq != 18): for i in range(iterationfreq): for j in range(5): if startfreq <= frequency[i] <= stopfreq: table1 = cal_field(frequency[i], field[j]) antenna = table1[2] self.CTAntennaRoll(antenna) self.BasicCursor.execute( "SELECT * FROM FieldTransfer WHERE Frequency=%f " "AND Field=%f" % (frequency[i], field[j]) ) table = self.BasicCursor.fetchall() tkinter.messagebox.showinfo(title="提示", message="将要进行频率%f场强%f的测试\n" % (frequency[i], field[j])) if frequency[i] == 4.3: tkinter.messagebox.showinfo(title="提示", message="请注意更换耦合器\n") if table[0][3] != 0: result = self.TransferVerify(table[0][0], table1[0]) if result == "Error input signal generator power": self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaSTD=%f WHERE Frequency=%f " "AND Field=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() else: self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaSTD=%f WHERE Frequency=%f " "AND Field=%f" % (result, frequency[i], field[j]) ) self.BasicCursor.commit() print("频率%f场强%f的测试结果为%f" % (frequency[i], field[j], result)) else: self.BasicCursor.execute( "UPDATE FieldTransfer SET NardaSTD=%f WHERE Frequency=%f " "AND Field=%f" % (0, frequency[i], field[j]) ) self.BasicCursor.commit() else: pass else: print("WTF")
def FieldProd(self, freq, fieldintensity): """Produce the fieldintensity of specified frequency""" sg_output_limit = -5 # unit is dBm set the signal generator output limit field = cal_field(freq, fieldintensity) # p_meter_disp_dbm, coupler, antenna, e_cal_1w powertarget = field[0] coupler = field[1] antenna = field[2] app = QApplication(sys.argv) ms = QMessageBox(QMessageBox.Warning, "提示", "请更换%s耦合器进行测试" % coupler) ms.show() app.exec_() ms = QMessageBox(QMessageBox.Warning, "提示", "请连接%s天线进行测试" % antenna) ms.show() app.exec_() self.CTAntennaChange(antenna) ms = QMessageBox(QMessageBox.Warning, "提示", "请确定天线更换完毕并且射频线连接正确") ms.show() app.exec_() self.CTAntennaRoll(antenna) sg_initial = -30 self.SGPowerSet(sg_initial) # set the initial power unit dBm # frequency set frequency = freq * 1000000000 print(self.SGCWFrec(frequency)) print(self.PMSetFreq(frequency)) print(self.PABand(frequency)) self.SGPowerOut('On') self.PAPowerOut('ON') for i in range(0, 6): # iterate the power output if i == 0: powercouple = self.PMFetch() print(powercouple) powerdiff = powertarget - powercouple powersg = sg_initial + powerdiff if self.SGInRange(powersg) and powersg < sg_output_limit: self.SGPowerSet(powersg) else: ms = QMessageBox(QMessageBox.Warning, 'Alert', "Error input signal generator power") ms.show() app.exec_() break else: powercouple = self.PMFetch() powerdiff = powertarget - powercouple powersg += powerdiff if self.SGInRange(powersg) and powersg < sg_output_limit: self.SGPowerSet(powersg) elif 3 > powerdiff > 1: ms = QMessageBox(QMessageBox.Warning, "提示", "功放到达1dB压缩点") ms.show() app.exec_() break else: ms = QMessageBox(QMessageBox.Warning, 'Alert', "Error input signal generator power") ms.show() app.exec_() self.PAPowerOut('OFF') self.SGPowerOut('OFF') print(powercouple) return field