def initializeGUI(self): layout = QtGui.QGridLayout() self.shutter_widget = QCustomSwitchChannel('399/Oven/ProtectionBeam', ('Open/Oven On', 'Closed/Oven Off')) self.shutter_widget.TTLswitch.toggled.connect(self.toggle) self.timer_widget = QCustomTimer('Loading Time', show_control=False) self.current_widget = QCustomSpinBox("Current ('A')", (0.0, 3.0)) self.current_widget.setStepSize(0.01) self.current_widget.spinLevel.setDecimals(2) self.current_widget.spinLevel.valueChanged.connect(self.current_changed) if 'oven' in self.settings: value = yield self.reg.get('oven') self.current_widget.spinLevel.setValue(value) if '399 trapshutter' in self.settings: value = yield self.reg.get('399 trapshutter') value = bool(value) self.shutter_widget.TTLswitch.setChecked(value) else: self.shutter_widget.TTLswitch.setChecked(False) layout.addWidget(self.current_widget, 1, 1) layout.addWidget(self.shutter_widget, 0, 0) layout.addWidget(self.timer_widget, 0, 1) self.setLayout(layout)
def setup_widget(self): self.spinBox = QCustomSpinBox(self.name, (self.minval, self.maxval)) self.init_voltage = 0.0 self.spinBox.spinLevel.setValue(0.0) self.spinBox.setStepSize(0.0001) self.spinBox.spinLevel.setDecimals(4)
def initializeGUI(self): layout = QtGui.QGridLayout() control = QCustomSpinBox("DC value ('V')", (-5.0, 5.0)) control.setStepSize(0.0001) control.spinLevel.setDecimals(4) control.spinLevel.valueChanged.connect(self.set_dac) layout.addWidget(control) self.setLayout(layout)
def initializeGUI(self): layout = QtGui.QGridLayout() control = QCustomSpinBox("DC value ('V')", (-5.0, 5.0)) control.setStepSize(0.0001) control.spinLevel.setDecimals(4) control.spinLevel.valueChanged.connect(self.set_dac) layout.addWidget(control) self.setLayout(layout)
class StepperControl(QtGui.QWidget): def __init__(self, reactor): super(StepperControl, self).__init__() self.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) self.degree_per_step = 1.8 self.angle = 0.0 self.connect() @inlineCallbacks def connect(self): """Creates an Asynchronous connection to stepper server and connects incoming signals to relavent functions """ from labrad.wrappers import connectAsync self.cxn = yield connectAsync() self.server = self.cxn.stepper_motor_server self.initializeGUI() def initializeGUI(self): layout = QtGui.QGridLayout() zerowidget = QtGui.QPushButton('Zero') self.degreewidget = QCustomSpinBox('Angle', (-10000, 10000.0)) self.angle_label = QtGui.QLabel('0.0') self.degreewidget.setStepSize(1.8) self.degreewidget.spinLevel.setDecimals(3) self.degreewidget.spinLevel.setValue(self.angle) self.degreewidget.spinLevel.valueChanged.connect(self.change_angle) zerowidget.clicked.connect(self.zero_scale) layout.addWidget(zerowidget, 0, 0) layout.addWidget(self.degreewidget, 0, 1) layout.addWidget(self.angle_label, 0, 2) self.setLayout(layout) def zero_scale(self, state): self.angle = 0.0 self.degreewidget.spinLevel.setValue(0.0) @inlineCallbacks def change_angle(self, angle): difference = angle - self.angle steps = difference / self.degree_per_step steps = int(steps) self.angle = self.angle + self.degree_per_step * steps self.angle_label.setText(str(self.angle)) self.degreewidget.spinLevel.setValue(angle) yield self.server.move_steps(steps) def closeEvent(self, x): self.reactor.stop()
def initializeGUI(self): layout = QtGui.QGridLayout() lockwidget = QCustomSwitchChannel('Lock Cal', ('Locked', 'Unlocked')) lockwidget.TTLswitch.toggled.connect(self.toggle) offsetwidget = QCustomSpinBox('DC offset', (-1.0, 1.0)) setpointwidget = QCustomSpinBox('Set Point', (811.0, 812.0)) gainwidget = QCustomSpinBox('Gain', (0.1, 10000.0)) offsetwidget.setStepSize(0.001) setpointwidget.setStepSize(0.000001) gainwidget.setStepSize(0.1) offsetwidget.spinLevel.setDecimals(3) setpointwidget.spinLevel.setDecimals(6) gainwidget.spinLevel.setDecimals(1) setpointwidget.spinLevel.setValue(self.set) gainwidget.spinLevel.setValue(self.gain) offsetwidget.spinLevel.valueChanged.connect(self.offset) setpointwidget.spinLevel.valueChanged.connect(self.set_point) gainwidget.spinLevel.valueChanged.connect(self.set_gain) layout.addWidget(lockwidget, 0, 0) layout.addWidget(offsetwidget, 0, 1) layout.addWidget(setpointwidget, 0, 2) layout.addWidget(gainwidget, 0, 3) self.setLayout(layout)
def initializeGUI(self): layout = QtGui.QGridLayout() qBox = QtGui.QGroupBox("DAC Channels") subLayout = QtGui.QGridLayout() qBox.setLayout(subLayout) layout.addWidget(qBox, 0, 0) for v, dac in enumerate(self.dacinfo): name = self.dacinfo[dac][0] dacchan = self.dacinfo[dac][1] widget = QCustomSpinBox(name, (0, 255)) widget.title.setFixedWidth(120) label = QtGui.QLabel("0 V") if name + " dac" in self.settings: value = yield self.reg.get(name + " dac") widget.spinLevel.setValue(value) self.setvalue(value, [name, dacchan]) else: widget.spinLevel.setValue(0.0) widget.setStepSize(1) widget.spinLevel.setDecimals(0) widget.spinLevel.valueChanged.connect( lambda value=widget.spinLevel.value(), ident=[name, dacchan]: self.setvalue(value, ident) ) self.d[dacchan] = widget self.e[dacchan] = label subLayout.addWidget(self.d[dacchan], v, 1) subLayout.addWidget(self.e[dacchan], v, 2) self.ezupwidget = QPushButton("Ez increase") self.ezdownwidget = QPushButton("Ez decrease") self.exupwidget = QPushButton("Ex increase") self.exdownwidget = QPushButton("Ex decrease") self.eyupwidget = QPushButton("Ey increase") self.eydownwidget = QPushButton("Ey decrease") self.ezupwidget.clicked.connect(self.ezup) self.ezdownwidget.clicked.connect(self.ezdown) self.exupwidget.clicked.connect(self.exup) self.exdownwidget.clicked.connect(self.exdown) self.eyupwidget.clicked.connect(self.eyup) self.eydownwidget.clicked.connect(self.eydown) subLayout.addWidget(self.ezupwidget, 0, 5) subLayout.addWidget(self.ezdownwidget, 1, 5) subLayout.addWidget(self.exupwidget, 3, 6) subLayout.addWidget(self.exdownwidget, 3, 3) subLayout.addWidget(self.eyupwidget, 2, 5) subLayout.addWidget(self.eydownwidget, 4, 5) self.setLayout(layout)
def initializeGUI(self): layout = QtGui.QGridLayout() qBox = QtGui.QGroupBox('DAC Channels') subLayout = QtGui.QGridLayout() qBox.setLayout(subLayout) layout.addWidget(qBox, 0, 0) for v, dac in enumerate(self.dacinfo): name = self.dacinfo[dac][0] dacchan = self.dacinfo[dac][1] widget = QCustomSpinBox(name, (0, 255)) widget.title.setFixedWidth(120) label = QtGui.QLabel('0 V') if name + ' dac' in self.settings: value = yield self.reg.get(name + ' dac') widget.spinLevel.setValue(value) self.setvalue(value, [name, dacchan]) else: widget.spinLevel.setValue(0.0) widget.setStepSize(1) widget.spinLevel.setDecimals(0) widget.spinLevel.valueChanged.connect( lambda value=widget.spinLevel.value( ), ident=[name, dacchan]: self.setvalue(value, ident)) self.d[dacchan] = widget self.e[dacchan] = label subLayout.addWidget(self.d[dacchan], v, 1) subLayout.addWidget(self.e[dacchan], v, 2) self.ezupwidget = QPushButton('Ez increase') self.ezdownwidget = QPushButton('Ez decrease') self.exupwidget = QPushButton('Ex increase') self.exdownwidget = QPushButton('Ex decrease') self.eyupwidget = QPushButton('Ey increase') self.eydownwidget = QPushButton('Ey decrease') self.ezupwidget.clicked.connect(self.ezup) self.ezdownwidget.clicked.connect(self.ezdown) self.exupwidget.clicked.connect(self.exup) self.exdownwidget.clicked.connect(self.exdown) self.eyupwidget.clicked.connect(self.eyup) self.eydownwidget.clicked.connect(self.eydown) subLayout.addWidget(self.ezupwidget, 0, 5) subLayout.addWidget(self.ezdownwidget, 1, 5) subLayout.addWidget(self.exupwidget, 3, 6) subLayout.addWidget(self.exdownwidget, 3, 3) subLayout.addWidget(self.eyupwidget, 2, 5) subLayout.addWidget(self.eydownwidget, 4, 5) self.setLayout(layout)
def initializeGUI(self): layout = QtGui.QGridLayout() self.shutter_widget = QCustomSwitchChannel('399 Trap', ('Open', 'Closed')) self.shutter_widget.TTLswitch.toggled.connect(self.toggle) self.timer_widget = QCustomTimer('Loading Time', show_control=False) self.disc_widget = QCustomSpinBox('kcts/s', (0.0, 999.0)) qBox = QtGui.QGroupBox('Discriminator') subLayout = QtGui.QGridLayout() qBox.setLayout(subLayout) subLayout.addWidget(self.disc_widget) self.disc_widget.setStepSize(0.1) self.disc_widget.spinLevel.setDecimals(1) self.disc_widget.spinLevel.valueChanged.connect(self.disc_changed) if 'discriminator' in self.settings: value = yield self.reg.get('discriminator') self.disc_widget.spinLevel.setValue(value) if '399 trapshutter' in self.settings: value = yield self.reg.get('399 trapshutter') value = bool(value) self.shutter_widget.TTLswitch.setChecked(value) else: self.shutter_widget.TTLswitch.setChecked(False) layout.addWidget(self.shutter_widget, 0, 0) layout.addWidget(qBox, 0, 1) layout.addWidget(self.timer_widget, 0, 2) self.setLayout(layout)
def setup_widget(self): self.spinBox = QCustomSpinBox(self.name, (self.minval, self.maxval)) self.init_voltage = 0.0 self.spinBox.spinLevel.setValue(0.0) self.spinBox.setStepSize(0.0001) self.spinBox.spinLevel.setDecimals(4)
class Electrode(): def __init__(self, dac, octant, minval, maxval): self.dac = dac self.octant = octant self.minval = minval self.maxval = maxval self.name = str('DAC: ' + str(dac)) self.setup_widget() def setup_widget(self): self.spinBox = QCustomSpinBox(self.name, (self.minval, self.maxval)) self.init_voltage = 0.0 self.spinBox.spinLevel.setValue(0.0) self.spinBox.setStepSize(0.0001) self.spinBox.spinLevel.setDecimals(4)
class Electrode(): def __init__(self, dac, octant, minval, maxval): self.dac = dac self.octant = octant self.minval = minval self.maxval = maxval self.name = str('DAC: ' + str(dac)) self.setup_widget() def setup_widget(self): self.spinBox = QCustomSpinBox(self.name, (self.minval, self.maxval)) self.init_voltage = 0.0 self.spinBox.spinLevel.setValue(0.0) self.spinBox.setStepSize(0.0001) self.spinBox.spinLevel.setDecimals(4)
def initializeGUI(self): layout = QtGui.QGridLayout() zerowidget = QtGui.QPushButton('Zero') self.degreewidget = QCustomSpinBox('Angle', (-10000, 10000.0)) self.angle_label = QtGui.QLabel('0.0') self.degreewidget.setStepSize(1.8) self.degreewidget.spinLevel.setDecimals(3) self.degreewidget.spinLevel.setValue(self.angle) self.degreewidget.spinLevel.valueChanged.connect(self.change_angle) zerowidget.clicked.connect(self.zero_scale) layout.addWidget(zerowidget, 0, 0) layout.addWidget(self.degreewidget, 0, 1) layout.addWidget(self.angle_label, 0, 2) self.setLayout(layout)
def initialize_GUI(self): layout = QtGui.QGridLayout() self.electrodes = {} qBox = QtGui.QGroupBox('DAC Channels') subLayout = QtGui.QGridLayout() qBox.setLayout(subLayout) layout.addWidget(qBox, 0, 0) self.electrodeind = ElectrodeIndicator([-12, 12]) multipole_names = ['Ey', 'Ez', 'Ex', 'M1', 'M2', 'M3', 'M4', 'M5'] self.multipoles = [] j = 0 for i, multipole in enumerate(multipole_names): k = i if i >= 4: j = 1 i = i - 4 spinbox = QCustomSpinBox(multipole, (-100, 100)) spinbox.setStepSize(0.001) spinbox.spinLevel.setDecimals(3) spinbox.spinLevel.setValue(self.init_multipoles[k]) spinbox.spinLevel.valueChanged.connect(self.change_multipole) layout.addWidget(spinbox, 3 + j, i + 1, 1, 1) self.multipoles.append(spinbox) layout.addWidget(self.electrodeind, 0, 1, 1, 3) for key, channel in self.elec_dict.iteritems(): electrode = Electrode(channel.dacChannelNumber, channel.octantNumber, channel.allowedVoltageRange[0], channel.allowedVoltageRange[1]) self.electrodes[electrode.octant] = electrode subLayout.addWidget(electrode.spinBox) electrode.spinBox.spinLevel.valueChanged.connect( lambda value=electrode.spinBox.spinLevel.value( ), electrode=electrode: self.update_dac(value, electrode)) self.change_multipole('dummy value') self.setLayout(layout)
def initialize_GUI(self): layout = QtGui.QGridLayout() self.electrodes = {} qBox = QtGui.QGroupBox('DAC Channels') subLayout = QtGui.QGridLayout() qBox.setLayout(subLayout) layout.addWidget(qBox, 0, 0) self.electrodeind = ElectrodeIndicator([-12, 12]) multipole_names = ['Ey', 'Ez', 'Ex', 'M1', 'M2', 'M3', 'M4', 'M5'] self.multipoles = [] j = 0 for i, multipole in enumerate(multipole_names): k = i if i >= 4: j = 1 i = i - 4 spinbox = QCustomSpinBox(multipole, (-100, 100)) spinbox.setStepSize(0.001) spinbox.spinLevel.setDecimals(3) spinbox.spinLevel.setValue(self.init_multipoles[k]) spinbox.spinLevel.valueChanged.connect(self.change_multipole) layout.addWidget(spinbox, 3 + j, i + 1, 1, 1) self.multipoles.append(spinbox) layout.addWidget(self.electrodeind, 0, 1, 1, 3) for key, channel in self.elec_dict.iteritems(): electrode = Electrode(channel.dacChannelNumber, channel.octantNumber, channel.allowedVoltageRange[0], channel.allowedVoltageRange[1]) self.electrodes[electrode.octant] = electrode subLayout.addWidget(electrode.spinBox) electrode.spinBox.spinLevel.valueChanged.connect(lambda value=electrode.spinBox.spinLevel.value(), electrode=electrode: self.update_dac(value, electrode)) self.change_multipole('dummy value') self.setLayout(layout)
def initializeGUI(self): layout = QtGui.QGridLayout() self.setWindowTitle('kiethley Control') qBox = QtGui.QGroupBox('Kiethley 2230G') subLayout = QtGui.QGridLayout() qBox.setLayout(subLayout) layout.addWidget(qBox, 0, 0) self.volt1widget = QCustomSpinBox('Amplitude (Vpp)', (0, 30)) self.volt2widget = QCustomSpinBox('Amplitude (Vpp)', (0, 30)) 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)) subLayout.addWidget(self.volt1widget, 1, 1) subLayout.addWidget(self.volt2widget, 1, 3) self.setLayout(layout)
class rigolclient(QtGui.QWidget): def __init__(self, reactor, parent=None): """initializels the GUI creates the reactor """ super(rigolclient, self).__init__() self.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) self.reactor = reactor self.connect() @inlineCallbacks def connect(self): """Creates an Asynchronous connection """ from labrad.wrappers import connectAsync from labrad.units import WithUnit as U self.U = U self.cxn = yield connectAsync(name="rigol client") self.server = self.cxn.rigol_dg1022a_server self.devicelist = yield self.server.list_devices() if self.devicelist: yield self.server.select_device(0) self.initializeGUI() 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) @inlineCallbacks def voltchanged(self, chan, value): value = self.U(value, 'V') yield self.server.amplitude(chan, value) @inlineCallbacks def freqchanged(self, chan, value): value = self.U(value, 'Hz') yield self.server.frequency(chan, value) @inlineCallbacks def offsetchanged(self, chan, value): value = self.U(value, 'V') yield self.server.offset(chan, value) @inlineCallbacks def setoutput(self, chan, state): yield self.server.output(chan, state) @inlineCallbacks def waveselect(self, chan, wave): if wave == 'DC': if chan == 1: self.freq1widget.setEnabled(False) else: self.freq2widget.setEnabled(False) else: self.freq1widget.setEnabled(True) self.freq2widget.setEnabled(True) yield self.server.wave_function(chan, str(wave)) @inlineCallbacks def changedevice(self, deviceid): if deviceid == 'Refresh List': yield self.server.refresh() self.updatedevices() else: self.server.release_device() self.server.select_device(int(deviceid[1])) @inlineCallbacks def updatedevices(self): self.deviceselect.clear() self.devicelist = yield self.server.list_devices() for device in self.devicelist: self.deviceselect.addItem(str(device)) self.deviceselect.addItem('Refresh List') def closeEvent(self, x): self.reactor.stop()
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)
class LoadControl(QtGui.QWidget): def __init__(self, reactor, cxn=None): super(LoadControl, self).__init__() self.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) mixer.init() self.its_trap = mixer.Sound('/home/qsimexpcontrol/Music/trap.wav') self.vader = mixer.Sound('/home/qsimexpcontrol/Music/swvader01.wav') self.reactor = reactor self.kt = None self.bi_directional_state = False self.cxn = cxn self.connect() @inlineCallbacks def connect(self): """Creates an Asynchronous connection to arduinottl and connects incoming signals to relavent functions """ from labrad.units import WithUnit as U self.U = U if self.cxn is None: self.cxn = yield connection(name="Load Control") yield self.cxn.connect() self.PMT = yield self.cxn.get_server('normalpmtflow') self.pv = yield self.cxn.get_server('parametervault') self.TTL = yield self.cxn.get_server('arduinottl') self.oven = yield self.cxn.get_server('ovenserver') self.reg = yield self.cxn.get_server('registry') try: yield self.reg.cd(['', 'settings']) self.settings = yield self.reg.dir() self.settings = self.settings[1] except: self.settings = [] yield self.setup_listeners() yield self.initializeGUI() @inlineCallbacks def setup_listeners(self): yield self.PMT.signal__new_count(SIGNALID) yield self.PMT.addListener(listener=self.on_new_counts, source=None, ID=SIGNALID) @inlineCallbacks def initializeGUI(self): layout = QtGui.QGridLayout() self.shutter_widget = QCustomSwitchChannel('399/Oven/ProtectionBeam', ('Open/Oven On', 'Closed/Oven Off')) self.shutter_widget.TTLswitch.toggled.connect(self.toggle) self.timer_widget = QCustomTimer('Loading Time', show_control=False) self.current_widget = QCustomSpinBox("Current ('A')", (0.0, 3.0)) self.current_widget.setStepSize(0.01) self.current_widget.spinLevel.setDecimals(2) self.current_widget.spinLevel.valueChanged.connect(self.current_changed) if 'oven' in self.settings: value = yield self.reg.get('oven') self.current_widget.spinLevel.setValue(value) if '399 trapshutter' in self.settings: value = yield self.reg.get('399 trapshutter') value = bool(value) self.shutter_widget.TTLswitch.setChecked(value) else: self.shutter_widget.TTLswitch.setChecked(False) layout.addWidget(self.current_widget, 1, 1) layout.addWidget(self.shutter_widget, 0, 0) layout.addWidget(self.timer_widget, 0, 1) self.setLayout(layout) @inlineCallbacks def on_new_counts(self, signal, pmt_value): disc_value = yield self.pv.get_parameter('Loading', 'ion_threshold') #this throws error on closeout since listner is yielding to server switch_on = self.shutter_widget.TTLswitch.isChecked() if (pmt_value >= disc_value) and switch_on: self.shutter_widget.TTLswitch.setChecked(False) self.its_trap.play() elif (self.timer_widget.time >= 600.0) and switch_on: self.vader.play() self.shutter_widget.TTLswitch.setChecked(False) @inlineCallbacks def toggle(self, value): yield self.changeState(value) if value: self.timer_widget.reset() self.timer_widget.start() yield self.oven.oven_output(True) else: yield self.oven.oven_output(False) self.timer_widget.reset() @inlineCallbacks def current_changed(self, value): yield self.oven.oven_current(self.U(value, 'A')) if 'oven' in self.settings: yield self.reg.set('oven', value) @inlineCallbacks def changeState(self, state): if '399 trapshutter' in self.settings: yield self.reg.set('399 trapshutter', state) yield self.TTL.ttl_output(10, state) def closeEvent(self, x): self.reactor.stop()
def initializeGUI(self): layout = QtGui.QGridLayout() lockwidget = QCustomSwitchChannel('Lock Cal', ('Locked', 'Unlocked')) lockwidget.TTLswitch.toggled.connect(self.toggle) offsetwidget = QCustomSpinBox('DC offset', (-1.0, 1.0)) setpointwidget = QCustomSpinBox('Set Point', (811.0, 812.0)) gainwidget = QCustomSpinBox('Gain', (0.1, 10000.0)) offsetwidget.setStepSize(0.001) setpointwidget.setStepSize(0.000001) gainwidget.setStepSize(0.1) offsetwidget.spinLevel.setDecimals(3) setpointwidget.spinLevel.setDecimals(6) gainwidget.spinLevel.setDecimals(1) setpointwidget.spinLevel.setValue(self.set) gainwidget.spinLevel.setValue(self.gain) offsetwidget.spinLevel.valueChanged.connect(self.offset) setpointwidget.spinLevel.valueChanged.connect(self.set_point) gainwidget.spinLevel.valueChanged.connect(self.set_gain) layout.addWidget(lockwidget, 0, 0) layout.addWidget(offsetwidget, 0, 1) layout.addWidget(setpointwidget, 0, 2) layout.addWidget(gainwidget, 0, 3) self.setLayout(layout)
class LoadControl(QtGui.QWidget): def __init__(self, reactor, cxn=None): super(LoadControl, self).__init__() self.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) self.reactor = reactor self.cxn = cxn self.connect() @inlineCallbacks def connect(self): """Creates an Asynchronous connection to arduinottl and connects incoming signals to relavent functions """ if self.cxn is None: self.cxn = connection(name="Load Control") yield self.cxn.connect() self.PMT = yield self.cxn.get_server('normalpmtflow') self.TTL = yield self.cxn.get_server('arduinottl') self.reg = yield self.cxn.get_server('registry') try: yield self.reg.cd(['', 'settings']) self.settings = yield self.reg.dir() self.settings = self.settings[1] except: self.settings = [] yield self.setup_listeners() yield self.initializeGUI() @inlineCallbacks def setup_listeners(self): ctx = yield self.PMT.context() yield self.PMT.signal__new_count(SIGNALID, context=ctx) yield self.PMT.addListener(listener=self.on_new_counts, source=None, ID=SIGNALID, context=ctx) @inlineCallbacks def initializeGUI(self): layout = QtGui.QGridLayout() self.shutter_widget = QCustomSwitchChannel('399 Trap', ('Open', 'Closed')) self.shutter_widget.TTLswitch.toggled.connect(self.toggle) self.timer_widget = QCustomTimer('Loading Time', show_control=False) self.disc_widget = QCustomSpinBox('kcts/s', (0.0, 999.0)) qBox = QtGui.QGroupBox('Discriminator') subLayout = QtGui.QGridLayout() qBox.setLayout(subLayout) subLayout.addWidget(self.disc_widget) self.disc_widget.setStepSize(0.1) self.disc_widget.spinLevel.setDecimals(1) self.disc_widget.spinLevel.valueChanged.connect(self.disc_changed) if 'discriminator' in self.settings: value = yield self.reg.get('discriminator') self.disc_widget.spinLevel.setValue(value) if '399 trapshutter' in self.settings: value = yield self.reg.get('399 trapshutter') value = bool(value) self.shutter_widget.TTLswitch.setChecked(value) else: self.shutter_widget.TTLswitch.setChecked(False) layout.addWidget(self.shutter_widget, 0, 0) layout.addWidget(qBox, 0, 1) layout.addWidget(self.timer_widget, 0, 2) self.setLayout(layout) def on_new_counts(self, signal, pmt_value): switch_on = self.shutter_widget.TTLswitch.isChecked() disc_value = self.disc_widget.spinLevel.value() if (pmt_value >= disc_value) and switch_on: self.shutter_widget.TTLswitch.setChecked(False) @inlineCallbacks def toggle(self, value): yield self.changeState(value) if value: self.timer_widget.reset() self.timer_widget.start() else: self.timer_widget.stop() @inlineCallbacks def disc_changed(self, value): if 'discriminator' in self.settings: yield self.reg.set('discriminator', value) @inlineCallbacks def changeState(self, state): if '399 trapshutter' in self.settings: yield self.reg.set('399 trapshutter', state) yield self.TTL.ttl_output(10, state) def closeEvent(self, x): self.reactor.stop()
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)
class rigolclient(QtGui.QWidget): def __init__(self, reactor, parent = None): """initializels the GUI creates the reactor """ super(rigolclient, self).__init__() self.setSizePolicy(QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Fixed) self.reactor = reactor self.connect() @inlineCallbacks def connect(self): """Creates an Asynchronous connection """ from labrad.wrappers import connectAsync from labrad.units import WithUnit as U self.U = U self.cxn = yield connectAsync(name = "rigol client") self.server = self.cxn.rigol_dg1022_server self.devicelist = yield self.server.list_devices() if self.devicelist: yield self.server.select_device(0) self.initializeGUI() 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) @inlineCallbacks def voltchanged(self, chan, value): value = self.U(value, 'V') yield self.server.amplitude(chan, value) @inlineCallbacks def freqchanged(self, chan, value): value = self.U(value, 'Hz') yield self.server.frequency(chan, value) @inlineCallbacks def offsetchanged(self, chan, value): value = self.U(value, 'V') yield self.server.offset(chan, value) @inlineCallbacks def setoutput(self, chan, state): yield self.server.output(chan, state) @inlineCallbacks def waveselect(self, chan, wave): if wave == 'DC': if chan == 1: self.freq1widget.setEnabled(False) else: self.freq2widget.setEnabled(False) else: self.freq1widget.setEnabled(True) self.freq2widget.setEnabled(True) yield self.server.wave_function(chan, str(wave)) @inlineCallbacks def changedevice(self, deviceid): if deviceid == 'Refresh List': yield self.server.refresh() self.updatedevices() else: self.server.release_device() self.server.select_device(int(deviceid[1])) @inlineCallbacks def updatedevices(self): self.deviceselect.clear() self.devicelist = yield self.server.list_devices() for device in self.devicelist: self.deviceselect.addItem(str(device)) self.deviceselect.addItem('Refresh List') def closeEvent(self, x): self.reactor.stop()