Beispiel #1
0
    def initializeGUI(self):
        """
        TODO:
            modify QCustomWavemeterChannel to get rid of PID button
        """

        layout = QtGui.QGridLayout()

        self.setWindowTitle('Multiplexed Wavemeter')

        # this "group" contains all 8 channel outputs and settings
        qBox = QtGui.QGroupBox('Wave Length and Lock settings')
        subLayout = QtGui.QGridLayout()
        qBox.setLayout(subLayout)
        layout.addWidget(qBox, 0, 0)

        # button to start wavemeter measurement (turn wavemeter on)
        self.startSwitch = TextChangingButton('Wavemeter')
        self.startSwitch.setMaximumHeight(50)
        initstartvalue = yield self.server.get_wlm_output()
        self.startSwitch.setChecked(initstartvalue)
        self.startSwitch.toggled.connect(self.setOutput)
        subLayout.addWidget(self.startSwitch, 0, 0)

        # create display box for each channel
        # need to modify QCustomWavemeterChannel to get rid of PID button
        for chan in self.chaninfo:
            wmChannel = self.chaninfo[chan][0]
            hint = self.chaninfo[chan][1]
            position = self.chaninfo[chan][2]
            stretched = self.chaninfo[chan][3]
            displayPID = self.chaninfo[chan][4]
            dacPort = self.chaninfo[chan][5]
            widget = QCustomWavemeterChannel(chan, wmChannel, dacPort, hint,
                                             stretched, displayPID)

            from common.lib.clients.qtui import RGBconverter as RGB
            RGB = RGB.RGBconverter()
            color = int(2.998e8 / (float(hint) * 1e3))
            color = RGB.wav2RGB(color)
            color = tuple(color)

            widget.currentfrequency.setStyleSheet('color: rgb' + str(color))
            widget.spinExp.valueChanged.connect(
                lambda exp=widget.spinExp.value(
                ), wmChannel=wmChannel: self.expChanged(exp, wmChannel))
            initvalue = yield self.server.get_exposure(wmChannel)
            widget.spinExp.setValue(initvalue)
            initmeas = yield self.server.get_switcher_signal_state(wmChannel)
            initmeas = initmeas
            widget.measSwitch.setChecked(bool(initmeas))
            widget.measSwitch.toggled.connect(
                lambda state=widget.measSwitch.isDown(
                ), wmChannel=wmChannel: self.changeState(state, wmChannel))

            self.d[wmChannel] = widget
            subLayout.addWidget(self.d[wmChannel], position[1], position[0], 1,
                                3)

        self.setLayout(layout)
Beispiel #2
0
 def makeLayout(self, title, switchable):
     layout = QtGui.QGridLayout()
     #labels
     title = QtGui.QLabel(title)
     title.setFont(QtGui.QFont('MS Shell Dlg 2', pointSize=16))
     title.setAlignment(QtCore.Qt.AlignCenter)
     freqlabel = QtGui.QLabel('Frequency (MHz)')
     powerlabel = QtGui.QLabel('Power (dBM)')
     if switchable:
         layout.addWidget(title, 0, 0, 1, 3)
     else:
         layout.addWidget(title, 0, 0, 1, 2)
     layout.addWidget(freqlabel, 1, 0, 1, 1)
     layout.addWidget(powerlabel, 1, 1, 1, 1)
     #editable fields
     self.spinFreq = QtGui.QDoubleSpinBox()
     self.spinFreq.setFont(QtGui.QFont('MS Shell Dlg 2', pointSize=16))
     self.spinFreq.setDecimals(3)
     self.spinFreq.setSingleStep(0.1)
     self.spinFreq.setRange(10.0, 250.0)
     self.spinFreq.setKeyboardTracking(False)
     self.spinPower = QtGui.QDoubleSpinBox()
     self.spinPower.setFont(QtGui.QFont('MS Shell Dlg 2', pointSize=16))
     self.spinPower.setDecimals(3)
     self.spinPower.setSingleStep(0.1)
     self.spinPower.setRange(-145.0, 30.0)
     self.spinPower.setKeyboardTracking(False)
     layout.addWidget(self.spinFreq, 2, 0)
     layout.addWidget(self.spinPower, 2, 1)
     if switchable:
         self.buttonSwitch = TextChangingButton(("I", "O"))
         layout.addWidget(self.buttonSwitch, 2, 2)
     self.setLayout(layout)
Beispiel #3
0
    def makeLayout(self, title, labels):
        layout = QtGui.QGridLayout()
        title = QtGui.QLabel(title)
        title.setFont(QtGui.QFont('MS Shell Dlg 2', pointSize=16))
        layout.addWidget(title, 0, 0, 1, 3)

        #editable fields

        self.TTLswitch = TextChangingButton(labels)
        self.TTLswitch.setAutoDefault(True)
        layout.addWidget(self.TTLswitch, 1, 0, 2, 1)
        self.setLayout(layout)
Beispiel #4
0
    def initializeGUI(self):

        layout = QtGui.QGridLayout()

        self.setWindowTitle('Rigol DG1022 Control')

        qBox = QtGui.QGroupBox('Rigol DG1022')
        subLayout = QtGui.QGridLayout()
        qBox.setLayout(subLayout)
        layout.addWidget(qBox, 0, 0)

        self.deviceselect = QtGui.QComboBox(self)
        self.updatedevices()

        self.offsetwidget1 = QCustomSpinBox('Offset', (-5, 5))
        self.offsetwidget2 = QCustomSpinBox('Offset', (-5, 5))
        self.volt1widget = QCustomSpinBox('Amplitude (Vpp)', (-10, 10))
        self.freq1widget = QCustomSpinBox('Frequency (Hz)', (0, 40e6))
        self.volt2widget = QCustomSpinBox('Amplitude (Vpp)', (-10, 10))
        self.freq2widget = QCustomSpinBox('Frequency (Hz)', (0, 40e6))
        self.waveselect1 = QtGui.QComboBox(self)
        self.waveselect2 = QtGui.QComboBox(self)
        self.output1 = TextChangingButton(('On', 'Off'))
        self.output2 = TextChangingButton(('On', 'Off'))

        self.waveselect1.addItem("sine")
        self.waveselect1.addItem("square")
        self.waveselect1.addItem("ramp")
        self.waveselect1.addItem("pulse")
        self.waveselect1.addItem("noise")
        self.waveselect1.addItem("DC")
        self.waveselect1.addItem("USER")

        self.waveselect2.addItem("sine")
        self.waveselect2.addItem("square")
        self.waveselect2.addItem("ramp")
        self.waveselect2.addItem("pulse")
        self.waveselect2.addItem("noise")
        self.waveselect2.addItem("DC")
        self.waveselect2.addItem("USER")

        self.output1.toggled.connect(lambda state=self.output1.isDown(), chan=
                                     1, : self.setoutput(chan, state))
        self.output2.toggled.connect(lambda state=self.output1.isDown(), chan=
                                     2, : self.setoutput(chan, state))
        self.volt1widget.spinLevel.valueChanged.connect(
            lambda value=self.volt1widget.spinLevel.value(
            ), chan=1: self.voltchanged(chan, value))
        self.volt2widget.spinLevel.valueChanged.connect(
            lambda value=self.volt2widget.spinLevel.value(
            ), chan=2: self.voltchanged(chan, value))
        self.freq1widget.spinLevel.valueChanged.connect(
            lambda value=self.freq1widget.spinLevel.value(
            ), chan=1: self.freqchanged(chan, value))
        self.freq2widget.spinLevel.valueChanged.connect(
            lambda value=self.freq2widget.spinLevel.value(
            ), chan=2: self.freqchanged(chan, value))
        self.offsetwidget1.spinLevel.valueChanged.connect(
            lambda value=self.offsetwidget1.spinLevel.value(
            ), chan=1: self.offsetchanged(chan, value))
        self.offsetwidget2.spinLevel.valueChanged.connect(
            lambda value=self.offsetwidget2.spinLevel.value(
            ), chan=2: self.offsetchanged(chan, value))
        self.waveselect1.activated[str].connect(
            lambda wave=self.waveselect1.currentText(
            ), chan=1: self.waveselect(chan, wave))
        self.waveselect2.activated[str].connect(
            lambda wave=self.waveselect2.currentText(
            ), chan=2: self.waveselect(chan, wave))
        self.deviceselect.activated[str].connect(self.changedevice)
        subLayout.addWidget(self.freq1widget, 1, 0)
        subLayout.addWidget(self.volt1widget, 1, 1)
        subLayout.addWidget(self.freq2widget, 1, 2)
        subLayout.addWidget(self.volt2widget, 1, 3)
        subLayout.addWidget(self.waveselect1, 2, 0, 1, 2)
        subLayout.addWidget(self.waveselect2, 2, 2, 1, 2)
        subLayout.addWidget(self.offsetwidget1, 3, 0)
        subLayout.addWidget(self.offsetwidget2, 3, 2)
        subLayout.addWidget(self.output1, 3, 1)
        subLayout.addWidget(self.output2, 3, 3)
        subLayout.addWidget(self.deviceselect, 0, 3)

        self.setLayout(layout)
Beispiel #5
0
    def initializeGUI(self):

        self.layout = QtGui.QGridLayout()
        self.qBox = QtGui.QGroupBox('Trap Settings')
        self.subLayout = QtGui.QGridLayout()
        self.qBox.setLayout(self.subLayout)
        self.layout.addWidget(self.qBox, 0, 0)
        # Define dic for storting into
        self.dc = {}
        self.endCap = {}

        # Get config information
        self.init_params = TrapControl_config.params

        # Load RF Map
        self.rf_map = np.loadtxt('C:/Users/barium133/Code/barium/lib/clients/TrapControl_client/rf_map.txt')

        # Get channel numbers for each electrode
        self.rods = TrapControl_config.rods
        self.endCaps = TrapControl_config.endCaps
        self.eLens = TrapControl_config.eLens
        self.setWindowTitle('Trap Control')

        # Create widgets and lay them out.
        # Create general lock button to disable all buttons
        self.lockSwitch = TextChangingButton(('Locked','Unlocked'))
        # Start Unlocked
        self.lockSwitch.toggled.connect(self.set_lock)
        self.subLayout.addWidget(self.lockSwitch, 0, 4, 1, 2)
        #self.lockSwitch.setChecked(False)

        # Create a button to initialize trap params
        self.init_trap = QtGui.QPushButton('Set Default Values')
        self.init_trap.setMaximumHeight(30)
        self.init_trap.setFont(QtGui.QFont('MS Shell Dlg 2', pointSize=12))
        self.init_trap.clicked.connect(lambda : self.init_state())
        self.subLayout.addWidget(self.init_trap, 0, 0, 1, 2)

        # initialize main Gui
        self.trap = QCustomTrapGui()

        init_freq1 = yield self.server.get_frequency(self.rods['1'])
        self.trap.spinFreq1.setValue(init_freq1)
        self.trap.spinFreq1.valueChanged.connect(lambda freq = self.trap.spinFreq1.value(), channel = self.rods['1'] : self.freqChanged(freq, channel))
        init_freq2 = yield self.server.get_frequency(self.rods['2'])
        self.trap.spinFreq2.setValue(init_freq2)
        self.trap.spinFreq2.valueChanged.connect(lambda freq = self.trap.spinFreq2.value(), channel = self.rods['2'] : self.freqChanged(freq, channel))
        init_freq3 = yield self.server.get_frequency(self.rods['3'])
        self.trap.spinFreq3.setValue(init_freq3)
        self.trap.spinFreq3.valueChanged.connect(lambda freq = self.trap.spinFreq3.value(), channel = self.rods['3'] : self.freqChanged(freq, channel))
        init_freq4 = yield self.server.get_frequency(self.rods['4'])
        self.trap.spinFreq4.setValue(init_freq4)
        self.trap.spinFreq4.valueChanged.connect(lambda freq = self.trap.spinFreq4.value(), channel = self.rods['4'] : self.freqChanged(freq, channel))

        init_phase1 = yield self.server.get_phase(self.rods['1'])
        self.trap.spinPhase1.setValue(init_phase1)
        self.trap.spinPhase1.valueChanged.connect(lambda phase = self.trap.spinPhase1.value(), channel = self.rods['1'] : self.phaseChanged(phase, channel))
        init_phase2 = yield self.server.get_phase(self.rods['2'])
        self.trap.spinPhase2.setValue(init_phase2)
        self.trap.spinPhase2.valueChanged.connect(lambda phase = self.trap.spinPhase2.value(), channel = self.rods['2'] : self.phaseChanged(phase, channel))
        init_phase3 = yield self.server.get_phase(self.rods['3'])
        self.trap.spinPhase3.setValue(init_phase3)
        self.trap.spinPhase3.valueChanged.connect(lambda phase = self.trap.spinPhase3.value(), channel = self.rods['3'] : self.phaseChanged(phase, channel))
        init_phase4 = yield self.server.get_phase(self.rods['4'])
        self.trap.spinPhase4.setValue(init_phase4)
        self.trap.spinPhase4.valueChanged.connect(lambda phase = self.trap.spinPhase4.value(), channel = self.rods['4'] : self.phaseChanged(phase, channel))

        init_amp1 = yield self.server.get_amplitude(self.rods['1'])
        self.trap.spinAmp1.setValue(init_amp1)
        self.trap.spinAmp1.valueChanged.connect(lambda amp = self.trap.spinAmp1.value(), channel = self.rods['1'] : self.ampChanged(amp, channel))
        init_amp2 = yield self.server.get_amplitude(self.rods['2'])
        self.trap.spinAmp2.setValue(init_amp2)
        self.trap.spinAmp2.valueChanged.connect(lambda amp = self.trap.spinAmp2.value(), channel = self.rods['2'] : self.ampChanged(amp, channel))
        init_amp3 = yield self.server.get_amplitude(self.rods['3'])
        self.trap.spinAmp3.setValue(init_amp3)
        self.trap.spinAmp3.valueChanged.connect(lambda amp = self.trap.spinAmp3.value(), channel = self.rods['3'] : self.ampChanged(amp, channel))
        init_amp4 = yield self.server.get_amplitude(self.rods['4'])
        self.trap.spinAmp4.setValue(init_amp4)
        self.trap.spinAmp4.valueChanged.connect(lambda amp = self.trap.spinAmp4.value(), channel = self.rods['4'] : self.ampChanged(amp, channel))

        init_dc1 = yield self.server.get_dc_rod(self.rods['1'])
        self.trap.spinDC1.setValue(init_dc1)
        self.trap.spinDC1.valueChanged.connect(lambda dc = self.trap.spinDC1.value(), channel = self.rods['1'] : self.dcChanged(dc, channel))
        init_dc2 = yield self.server.get_dc_rod(self.rods['2'])
        self.trap.spinDC2.setValue(init_dc2)
        self.trap.spinDC2.valueChanged.connect(lambda dc = self.trap.spinDC2.value(), channel = self.rods['2'] : self.dcChanged(dc, channel))
        init_dc3 = yield self.server.get_dc_rod(self.rods['3'])
        self.trap.spinDC3.setValue(init_dc3)
        self.trap.spinDC3.valueChanged.connect(lambda dc = self.trap.spinDC3.value(), channel = self.rods['3'] : self.dcChanged(dc, channel))
        init_dc4 = yield self.server.get_dc_rod(self.rods['4'])
        self.trap.spinDC4.setValue(init_dc4)
        self.trap.spinDC4.valueChanged.connect(lambda dc = self.trap.spinDC4.value(), channel = self.rods['4'] : self.dcChanged(dc, channel))

        init_hv1 = yield self.server.get_hv(self.rods['1'])
        self.trap.spinHV1.setValue(init_hv1)
        self.trap.spinHV1.valueChanged.connect(lambda hv = self.trap.spinHV1.value(), channel = self.rods['1'] : self.hvChanged(hv, channel))
        init_hv2 = yield self.server.get_hv(self.rods['2'])
        self.trap.spinHV2.setValue(init_hv2)
        self.trap.spinHV2.valueChanged.connect(lambda hv = self.trap.spinHV2.value(), channel = self.rods['2'] : self.hvChanged(hv, channel))
        init_hv3 = yield self.server.get_hv(self.rods['3'])
        self.trap.spinHV3.setValue(init_hv3)
        self.trap.spinHV3.valueChanged.connect(lambda hv = self.trap.spinHV3.value(), channel = self.rods['3'] : self.hvChanged(hv, channel))
        init_hv4 = yield self.server.get_hv(self.rods['4'])
        self.trap.spinHV4.setValue(init_hv4)
        self.trap.spinHV4.valueChanged.connect(lambda hv = self.trap.spinHV4.value(), channel = self.rods['4'] : self.hvChanged(hv, channel))

        init_ec1 = yield self.server.get_dc(self.endCaps['1'])
        self.trap.spinEndCap1.setValue(init_ec1)
        self.trap.spinEndCap1.valueChanged.connect(lambda voltage = self.trap.spinEndCap1.value(), channel = self.endCaps['1'] : self.endCapChanged(voltage, channel))
        init_ec2 = yield self.server.get_dc(self.endCaps['2'])
        self.trap.spinEndCap2.setValue(init_ec2)
        self.trap.spinEndCap2.valueChanged.connect(lambda voltage = self.trap.spinEndCap2.value(), channel = self.endCaps['2'] : self.endCapChanged(voltage, channel))

        init_eL1 = yield self.server.get_hv(self.eLens['1'])
        self.trap.E1Spin.setValue(init_eL1)
        self.trap.E1Spin.valueChanged.connect(lambda voltage = self.trap.E1Spin.value(), channel = self.eLens['1'] : self.hvChanged(voltage, channel))
        init_eL2 = yield self.server.get_hv(self.eLens['2'])
        self.trap.E2Spin.setValue(init_eL2)
        self.trap.E2Spin.valueChanged.connect(lambda voltage = self.trap.E2Spin.value(), channel = self.eLens['2'] : self.hvChanged(voltage, channel))


        init_rf = yield self.server.get_rf_map_state()
        self.trap.useRFMap.setCheckState(init_rf)
        self.trap.useRFMap.stateChanged.connect(lambda state = self.trap.useRFMap.isChecked() : self.rfMapChanged(state))

        init_rf_en = yield self.server.get_rf_state()
        self.trap.enableRF.setCheckState(init_rf_en)
        self.trap.enableRF.stateChanged.connect(lambda state = self.trap.enableRF.isChecked() : self.enableRFChanged(state))

        init_bat = yield self.server.get_battery_charging()
        self.trap.setCharging.setCheckState(init_bat)
        self.trap.setCharging.stateChanged.connect(lambda state = self.trap.setCharging.isChecked() : self.chargingChanged(state))


        self.trap.update_rf.clicked.connect(lambda : self.update_rf())
        self.trap.update_dc.clicked.connect(lambda : self.update_dc())
        self.trap.clearPhase.clicked.connect(lambda : self.clear_phase())

        # Get the current state of the trap and set the gui
        #self.set_current_state()
        self.subLayout.addWidget(self.trap, 1, 0, 1, 6)

        self.ablation = QCustomAblationGui()
        self.ablation.loading_time_spin.valueChanged.connect(lambda time = self.ablation.loading_time_spin.value() : self.delayChanged(time))
        self.ablation.loading_time_spin.setValue(self.init_params['Loading Time'])
        self.ablation.trigger_loading.clicked.connect(lambda : self.triggerLoading())

        self.subLayout.addWidget(self.ablation, 2, 0, 1, 2)

        # HV Gui
        self.hvGUI = QCustomHVPulseGui()
        self.hvGUI.hv_pulse.clicked.connect(lambda : self.hv_pulse())
        self.hvGUI.hv_graph.clicked.connect(lambda : self.hv_graph())

        self.subLayout.addWidget(self.hvGUI, 2, 5, 1, 1)

        # Add current controler
        self.HP = HP6033A_Client(self.reactor)
        self.HP.self_connect('bender',"HP6033A Client",0)

        self.subLayout.addWidget(self.HP, 2, 2, 1, 2)

        self.ARampGUI = QCustomARampGui()
        self.ARampGUI.ARamp.clicked.connect(lambda: self.a_ramp())

        self.subLayout.addWidget(self.ARampGUI, 2, 4, 1, 1)

        self.setLayout(self.layout)
Beispiel #6
0
    def initializeGUI(self):

        layout = QtGui.QGridLayout()

        self.setWindowTitle('Multiplexed Wavemeter')

        qBox = QtGui.QGroupBox('Wave Length and Lock settings')
        subLayout = QtGui.QGridLayout()
        qBox.setLayout(subLayout)
        layout.addWidget(qBox, 0, 0)

        self.lockSwitch = TextChangingButton('Lock Wave Meter')
        self.lockSwitch.setMaximumHeight(50)
        self.startSwitch = TextChangingButton('Wavemeter')
        self.startSwitch.setMaximumHeight(50)
        initstartvalue = yield self.server.get_wlm_output()
        initlockvalue = yield self.server.get_lock_state()
        self.lockSwitch.setChecked(initlockvalue)
        self.startSwitch.setChecked(initstartvalue)

        self.lockSwitch.toggled.connect(self.setLock)
        self.startSwitch.toggled.connect(self.setOutput)

        subLayout.addWidget(self.lockSwitch, 0, 2)
        subLayout.addWidget(self.startSwitch, 0, 0)

        for chan in self.chaninfo:
            wmChannel = self.chaninfo[chan][0]
            hint = self.chaninfo[chan][1]
            position = self.chaninfo[chan][2]
            stretched = self.chaninfo[chan][3]
            displayPID = self.chaninfo[chan][4]
            dacPort = self.chaninfo[chan][5]
            widget = QCustomWavemeterChannel(chan, wmChannel, dacPort, hint,
                                             stretched, displayPID)

            if displayPID:
                try:
                    rails = self.chaninfo[chan][6]
                    widget.PIDindicator.set_rails(rails)
                except:
                    rails = [-10.0, 10.0]
                    widget.PIDindicator.set_rails(rails)
            from common.lib.clients.qtui import RGBconverter as RGB
            RGB = RGB.RGBconverter()
            color = int(2.998e8 / (float(hint) * 1e3))
            color = RGB.wav2RGB(color)
            color = tuple(color)

            if dacPort != 0:
                self.wmChannels[dacPort] = wmChannel
                initcourse = yield self.getPIDCourse(dacPort, hint)
                widget.spinFreq.setValue(initcourse)
                widget.spinFreq.valueChanged.connect(
                    lambda freq=widget.spinFreq.value(
                    ), dacPort=dacPort: self.freqChanged(freq, dacPort))
                widget.setPID.clicked.connect(
                    lambda state=widget.setPID.isDown(), chan=chan, dacPort=
                    dacPort: self.InitializePIDGUI(dacPort, chan))
                initLock = yield self.server.get_channel_lock(
                    dacPort, wmChannel)
                widget.lockChannel.setChecked(bool(initLock))
                widget.lockChannel.toggled.connect(
                    lambda state=widget.lockChannel.isDown(
                    ), dacPort=dacPort: self.lockSingleChannel(state, dacPort))
            else:
                widget.spinFreq.setValue(float(hint))
                widget.lockChannel.toggled.connect(
                    lambda state=widget.lockChannel.isDown(
                    ), wmChannel=wmChannel: self.setButtonOff(wmChannel))

            widget.currentfrequency.setStyleSheet('color: rgb' + str(color))
            widget.spinExp.valueChanged.connect(
                lambda exp=widget.spinExp.value(
                ), wmChannel=wmChannel: self.expChanged(exp, wmChannel))
            initvalue = yield self.server.get_exposure(wmChannel)
            widget.spinExp.setValue(initvalue)
            initmeas = yield self.server.get_switcher_signal_state(wmChannel)
            initmeas = initmeas
            widget.measSwitch.setChecked(bool(initmeas))
            widget.measSwitch.toggled.connect(
                lambda state=widget.measSwitch.isDown(
                ), wmChannel=wmChannel: self.changeState(state, wmChannel))

            self.d[wmChannel] = widget
            subLayout.addWidget(self.d[wmChannel], position[1], position[0], 1,
                                3)

        self.setLayout(layout)