Example #1
0
 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
Example #2
0
 def TransferIteration(self, freq, fieldtarget, sensortype="ETS"):
     global powerpm_am, powercouple
     frequency = freq * 1000000000
     sg_output_limit = -5
     kdmoniter = []
     flag = 0
     if fieldtarget == 0:
         self.BasicCursor.execute(
             "UPDATE FieldTransfer SET PowerCal=%f WHERE Frequency=%f " "AND Cal=%f" % (0, freq, fieldtarget)
         )
         self.BasicCursor.execute(
             "UPDATE FieldTransfer SET FieldVerify=%f WHERE Frequency=%f " "AND Cal=%f" % (0, freq, fieldtarget)
         )
         self.BasicCursor.commit()
         return "Field target is 0"
     # iteration first time, power is -10 dBm
     self.SGPowerSet(-10)
     self.CTRoll(90)
     self.SGCWFrec(frequency)
     self.PMSetFreq(frequency)
     self.PABand(frequency)
     self.SGPowerOut("ON")
     self.PAPowerOut("ON")
     time.sleep(2)
     powerpm = self.PMFetch()
     print(powerpm)
     if sensortype == "ETS":
         ETSProbe.__init__(self)
     fieldinit = self.ProbeField()[3]
     # Turn off the instrument
     self.RemoveProbe()
     self.SGPowerOut("OFF")
     self.PAPowerOut("OFF")
     # calculate the kd first time
     kd = powerpm - 20 * log10(fieldinit)
     print(kd, powerpm, fieldinit)
     kdmoniter.append(kd)
     # enter the iteration
     for i in range(3):
         time.sleep(5)
         powerpm_am = kd + 20 * log10(fieldtarget)
         print("当前功率计读数目标值为%f" % powerpm_am)
         sg_initial = -30
         if sensortype == "ETS":
             ETSProbe.__init__(self)
         self.SGPowerSet(sg_initial)  # set the initial power unit dBm
         self.SGPowerOut("ON")
         self.PAPowerOut("ON")
         for j in range(0, 10):  # iterate the power output
             time.sleep(2)  # delay 2 second
             if j == 0:
                 powercouple = self.PMFetch()
                 print("当前第%d循环的功率计读数为%f" % (j + 1, powercouple))
                 powerdiff = powerpm_am - powercouple
                 powersg = sg_initial + powerdiff
                 if self.SGInRange(powersg) and powersg < sg_output_limit:
                     self.SGPowerSet(powersg)
                 else:
                     if sensortype == "ETS":
                         self.RemoveProbe()
                     self.SGPowerOut("OFF")
                     self.PAPowerOut("OFF")
                     flag = 1
                     break
             elif j <= 9:
                 powercouple = self.PMFetch()
                 print("当前第%d循环的功率计读数为%f" % (j + 1, powercouple))
                 powerdiff = powerpm_am - powercouple
                 powersg += powerdiff
                 if self.SGInRange(powersg) and powersg < sg_output_limit:
                     self.SGPowerSet(powersg)
                 elif 3 > powerdiff > 1:
                     break
                 else:
                     if sensortype == "ETS":
                         self.RemoveProbe()
                     self.SGPowerOut("OFF")
                     self.PAPowerOut("OFF")
                     flag = 1
                     break
         if flag == 1:
             if sensortype == "ETS":
                 self.RemoveProbe()
             self.SGPowerOut("OFF")
             self.PAPowerOut("OFF")
         print("当前的flag值为%d" % flag)
         fieldinit = self.ProbeField()[3]
         print("当前电场探头数值为%f" % fieldinit)
         if fieldinit != 0:
             kd = powercouple - 20 * log10(fieldinit)
             kdmoniter.append(kd)
         if sensortype == "ETS":
             self.RemoveProbe()
         self.SGPowerOut("OFF")
         self.PAPowerOut("OFF")
     if flag == 1:
         self.BasicCursor.execute(
             "UPDATE FieldTransfer SET PowerCal=%f WHERE Frequency=%f " "AND Cal=%f" % (0, freq, fieldtarget)
         )
         self.BasicCursor.execute(
             "UPDATE FieldTransfer SET FieldVerify=%f WHERE Frequency=%f " "AND Cal=%f" % (0, freq, fieldtarget)
         )
         self.BasicCursor.commit()
         return "Error input signal generator power"
     elif flag == 0:
         if fieldinit == 0:
             self.BasicCursor.execute(
                 "UPDATE FieldTransfer SET PowerCal=%f WHERE Frequency=%f " "AND Cal=%f" % (0, freq, fieldtarget)
             )
             self.BasicCursor.execute(
                 "UPDATE FieldTransfer SET FieldVerify=%f WHERE Frequency=%f " "AND Cal=%f" % (0, freq, fieldtarget)
             )
             self.BasicCursor.commit()
             return "Wrong Probe reading"
         else:
             self.BasicCursor.execute(
                 "UPDATE FieldTransfer SET PowerCal=%f WHERE Frequency=%f "
                 "AND Cal=%f" % (powerpm_am, freq, fieldtarget)
             )
             self.BasicCursor.execute(
                 "UPDATE FieldTransfer SET FieldVerify=%f WHERE Frequency=%f "
                 "AND Cal=%f" % (fieldinit, freq, fieldtarget)
             )
             self.BasicCursor.commit()
             return kdmoniter
     else:
         return "WTF"
Example #3
0
    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"