def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() print("Wavelength") self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Voltage (V)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Current (mA)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.VMIN, self.VMAX) self.pwin.setYRange(self.IMIN, self.IMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) #self.zener = QCheckBox(self.tr('Zener Diode')) #right.addWidget(self.zener) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("FIT with I=Io* exp(qV/nkT)")) right.addWidget(b) b.clicked.connect(self.fit_curve) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Voltage (V)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Current (mA)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.VMIN, self.VMAX) self.pwin.setYRange(self.IMIN, self.IMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) self.zener = QCheckBox(self.tr('Zener Diode')) right.addWidget(self.zener) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("FIT with I=Io* exp(qV/nkT)")) right.addWidget(b) b.clicked.connect(self.fit_curve) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1',4.0) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid self.plot = self.pwin.plot([0,0],[0,0], pen = self.traceCols[-1]) ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (S)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage')) self.pwin.disableAutoRange() self.pwin.setYRange(-1, 5) self.pwin.setXRange(0, 1e-6*10000*self.TG) #self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) self.ratioLabel = QLabel(self.tr("Ratio =")) right.addWidget(self.ratioLabel) self.occupancyNowLabel = QLabel(self.tr("Occupancy =")) right.addWidget(self.occupancyNowLabel) self.occupancyLabel = QLabel(self.tr("Average Occupancy =")) right.addWidget(self.occupancyLabel) self.occupancyLabelC = QLabel(self.tr("Concentration =")) right.addWidget(self.occupancyLabelC) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.p.capture_traces(1,10000,self.TG,'A1') self.timer.singleShot(1e-3*10000*self.TG+200,self.update) #uS to mS
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() try: self.p.configure_trigger(0, 'A1', 0) self.p.select_range('A1',4.0) self.p.set_sine(0) except: pass self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage')) self.pwin.disableAutoRange() self.pwin.setXRange(0, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0,0],[0,0], pen = self.traceCols[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('WG')) l.setMaximumWidth(25) H.addWidget(l) self.AWGslider = utils.slider(self.AWGmin, self.AWGmax, self.AWGval,100,self.awg_slider) H.addWidget(self.AWGslider) self.AWGtext = utils.lineEdit(100, self.AWGval, 6, self.awg_text) H.addWidget(self.AWGtext) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('SQ1')) l.setMaximumWidth(25) H.addWidget(l) self.SQ1slider = utils.slider(self.SQ1min, self.SQ1max, self.SQ1val,100,self.sq1_slider) H.addWidget(self.SQ1slider) self.SQ1text = utils.lineEdit(100, self.SQ1val, 6, self.sq1_text) H.addWidget(self.SQ1text) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) l = QLabel(text=self.tr('Change of Freqency effected\nonly after Enable/Disable controls.\n\ shows the actual frequency set.\n')) right.addWidget(l) self.AWG = QCheckBox(self.tr('Enable WG')) right.addWidget(self.AWG) self.AWG.stateChanged.connect(self.control) self.SQ1 = QCheckBox(self.tr('Enable SQ1')) right.addWidget(self.SQ1) self.SQ1.stateChanged.connect(self.control) self.enable = QCheckBox(self.tr('Enable Measurements')) right.addWidget(self.enable) self.enable.stateChanged.connect(self.control) H = QHBoxLayout() l = QLabel(text=self.tr('Timebase')) l.setMaximumWidth(60) H.addWidget(l) self.TBslider = utils.slider(0, len(self.tbvals)-1, self.TBval, 150, self.set_timebase) H.addWidget(self.TBslider) l = QLabel(text=self.tr('mS/div')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) self.FFT = QPushButton(self.tr("Frequency Spectrum")) right.addWidget(self.FFT) self.FFT.clicked.connect(self.show_fft) H = QHBoxLayout() self.Res = QLabel(text='') H.addWidget(self.Res) right.addLayout(H) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.resultCols = utils.makeResultColors() self.traceCols = utils.makeTraceColors() self.htmlColors = utils.makeHtmlColors() self.p = device # connection to the device hardware self.chanStatus = [1,0,0,0] # PyQt problem. chanStatus somehow getting preserved ??? left = QVBoxLayout() # right side vertical layout for ch in range(self.MAXCHAN): self.offSliders[ch] = utils.sliderVert(-4, 4, 0, 40, None) left.addWidget(self.offSliders[ch]) self.offSliders[ch].valueChanged.connect(partial (self.set_offset,ch)) self.offSliders[ch].setStyleSheet("border: 1px solid %s;"%self.htmlColors[ch]) win = pg.GraphicsWindow() self.pwin = win.addPlot() self.pwin.proxy = pg.SignalProxy(self.pwin.scene().sigMouseMoved, rateLimit=60, slot=self.updateTV) self.pwin.showGrid(x=True, y=True) # with grid for k in range(self.MAXCHAN): # pg textItem to show the voltage scales self.scaleLabs[k] = pg.TextItem(text='') for k in range(self.MAXRES): # pg textItem to show the Results self.resLabs[k] = pg.TextItem() self.pwin.addItem(self.resLabs[k]) vLine = pg.InfiniteLine(angle=90, movable=False, pen = 'w') self.pwin.addItem(vLine, ignoreBounds=True) self.pwin.vLine=vLine self.pwin.vLine.setPos(-1) hLine = pg.InfiniteLine(angle=0, movable=False, pen = 'w') self.pwin.addItem(hLine, ignoreBounds=True) self.pwin.hLine=hLine self.pwin.hLine.setPos(-17) ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setStyle(showValues=False) ax.setLabel(self.tr('Voltage')) self.set_timebase(self.TBval) self.pwin.disableAutoRange() self.pwin.setXRange(0, self.tbvals[self.TBval]*10) self.pwin.setYRange(-16, 16) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0,0],[0,0], pen = self.traceCols[ch]) self.diffTraceW = self.pwin.plot([0,0],[0,0], pen = self.traceCols[-1]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPVspacing) l = QLabel(text= '<font color="red">' +self.tr('DC Voltages at A1, A2 and A3')) l.setMinimumWidth(self.RPWIDTH) right.addWidget(l) H = QHBoxLayout() for k in range(3): H.setAlignment(Qt.AlignLeft) self.voltMeterCB[k] = QCheckBox(self.tr(self.sources[k])) H.addWidget(self.voltMeterCB[k]) self.voltMeters[k] = QLabel() self.voltMeters[k].setMinimumWidth(50) H.addWidget(self.voltMeters[k]) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Resistance on SEN = ')) H.addWidget(l) self.RES = QLabel() H.addWidget(self.RES) right.addLayout(H) H = QHBoxLayout() b = QPushButton(self.tr("Click for Capacitance on IN1")) b.setMinimumWidth(200) H.addWidget(b) b.clicked.connect(self.measure_cap) self.CAP = QLabel('') H.addWidget(self.CAP) right.addLayout(H) H = QHBoxLayout() b = QPushButton(self.tr("Click for Frequency on IN2")) b.setMinimumWidth(200) H.addWidget(b) b.clicked.connect(self.measure_freq) self.IN2 = QLabel('') H.addWidget(self.IN2) right.addLayout(H) H = QHBoxLayout() self.OD1 = QCheckBox(self.tr("Enable OD1")) H.addWidget(self.OD1) self.OD1.stateChanged.connect(self.control_od1) self.CCS = QCheckBox(self.tr("Enable CCS")) H.addWidget(self.CCS) self.CCS.stateChanged.connect(self.control_ccs) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('WG Shape')) H.addWidget(l) self.Wshape = QPushButton('sine') menu = QMenu() for k in range(len(self.Waves)): menu.addAction(self.Waves[k], lambda index=k: self.select_wave(index)) self.Wshape.setMenu(menu) H.addWidget(self.Wshape) l = QLabel(text=self.tr('Amplitude')) H.addWidget(l) self.Wgain = QPushButton(self.Wgains[self.wgainindex]) menu = QMenu() for k in range(len(self.Wgains)): menu.addAction(self.Wgains[k], lambda index=k: self.select_wgain(index)) self.Wgain.setMenu(menu) H.addWidget(self.Wgain) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('WG')) l.setMaximumWidth(30) H.addWidget(l) self.AWGslider = utils.slider(self.AWGmin, self.AWGmax, self.AWGval,100,self.awg_slider) H.addWidget(self.AWGslider) self.AWGtext = utils.lineEdit(100, self.AWGval, 6, self.awg_text) H.addWidget(self.AWGtext) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(40) l.setMinimumWidth(40) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('SQ1')) l.setMaximumWidth(30) l.setMinimumWidth(30) H.addWidget(l) self.SQ1slider = utils.slider(self.SQ1min, self.SQ1max, self.SQ1val,100,self.sq1_slider) H.addWidget(self.SQ1slider) self.SQ1text = utils.lineEdit(60, self.SQ1val, 6, self.sq1_text) H.addWidget(self.SQ1text) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(15) H.addWidget(l) self.SQ1DCtext = utils.lineEdit(30, 50, 6, self.sq1_dc) H.addWidget(self.SQ1DCtext) l = QLabel(text=self.tr('%')) l.setMaximumWidth(15) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('PV1')) l.setMaximumWidth(25) H.addWidget(l) self.PV1slider = utils.slider(self.PV1min*1000, self.PV1max*1000, self.PV1val*1000,100,self.pv1_slider) H.addWidget(self.PV1slider) self.PV1text = utils.lineEdit(100, self.PV1val, 6, self.pv1_text) H.addWidget(self.PV1text) l = QLabel(text=self.tr('Volt')) l.setMaximumWidth(40) l.setMinimumWidth(40) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('PV2')) l.setMaximumWidth(25) H.addWidget(l) self.PV2slider = utils.slider(self.PV2min*1000, self.PV2max*1000, self.PV2val*1000,100,self.pv2_slider) H.addWidget(self.PV2slider) self.PV2text = utils.lineEdit(100, self.PV2val, 6, self.pv2_text) H.addWidget(self.PV2text) l = QLabel(text=self.tr('Volt')) l.setMaximumWidth(40) l.setMinimumWidth(40) H.addWidget(l) right.addLayout(H) #--------------------------Scope Controls--------------------- l = QLabel('<font color="red">' +self.tr('Oscilloscope Channels, Range and Analysis ')) right.addWidget(l) for ch in range(4): H = QHBoxLayout() H.setAlignment(Qt.AlignLeft) self.chanSelCB[ch] = QCheckBox() self.chanSelCB[ch].stateChanged.connect(partial (self.select_channel,ch)) H.addWidget(self.chanSelCB[ch]) l = QLabel(text='<font color="%s">%s'%(self.htmlColors[ch],self.sources[ch])) l.setMaximumWidth(30) l.setMinimumWidth(30) H.addWidget(l) self.rangeSelPB[ch] = QPushButton('4 V') self.rangeSelPB[ch].setMaximumWidth(60) menu = QMenu() if ch <= 1: for k in range(len(self.Ranges12)): menu.addAction(self.Ranges12[k], lambda index=(ch,k): self.select_range(index)) else: for k in range(len(self.Ranges34)): menu.addAction(self.Ranges34[k], lambda index=(ch,k): self.select_range(index)) self.rangeSelPB[ch].setMenu(menu) H.addWidget(self.rangeSelPB[ch]) self.fitSelCB[ch] = QCheckBox('') self.fitSelCB[ch].setMaximumWidth(30) H.addWidget(self.fitSelCB[ch]) self.fitResLab[ch] = QLabel('') H.addWidget(self.fitResLab[ch]) right.addLayout(H) self.chanSelCB[0].setChecked(True) H = QHBoxLayout() l = QLabel(text=self.tr('Timebase')) l.setMaximumWidth(60) H.addWidget(l) self.TBslider = utils.slider(0, 8, self.TBval, 180, self.set_timebase) H.addWidget(self.TBslider) l = QLabel(text=self.tr('mS/div')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Trigger')) l.setMaximumWidth(60) H.addWidget(l) self.Trigslider = utils.slider(-3300, 3300, self.Triglevel, 150, self.set_trigger) H.addWidget(self.Trigslider) l = QLabel(text=self.tr('On')) l.setMaximumWidth(30) H.addWidget(l) self.Trigbutton = QPushButton(self.tr('A1')) self.Trigbutton.setMaximumWidth(50) menu = QMenu() for k in range(len(self.sources)): menu.addAction(self.sources[k], lambda index=k :self.select_trig_source(index)) self.Trigbutton.setMenu(menu) H.addWidget(self.Trigbutton) right.addLayout(H) H = QHBoxLayout() self.SaveButton = QPushButton(self.tr("Save Traces")) #self.SaveButton.setMaximumWidth(80) self.SaveButton.clicked.connect(self.save_data) H.addWidget(self.SaveButton) #self.Filename = utils.lineEdit(100, self.tr('scope.txt'), 20, None) #H.addWidget(self.Filename) self.FFT = QPushButton(self.tr("Fourier Transform")) #self.FFT.setMaximumWidth(50) H.addWidget(self.FFT) self.FFT.clicked.connect(self.show_fft) right.addLayout(H) H = QHBoxLayout() self.Cross = QCheckBox(self.tr("Cross hair")) self.Cross.stateChanged.connect(self.cross_hair) H.addWidget(self.Cross) self.Freeze = QCheckBox(self.tr("Freeze")) H.addWidget(self.Freeze) self.Diff = QCheckBox(self.tr('A1-A2')) H.addWidget(self.Diff) self.Diff.stateChanged.connect(self.show_diff) right.addLayout(H) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addLayout(left) top.addWidget(win)# self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER) self.recover()
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1',4) self.p.select_range('A2',4) self.p.set_sine(self.AWGval) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Voltage A2')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage (A1)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0,0],[0,0], pen = self.traceCols[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.setMaximumWidth(90) self.SaveButton.clicked.connect(self.save_data) H.addWidget(self.SaveButton) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('WG')) l.setMaximumWidth(25) H.addWidget(l) self.AWGslider = utils.slider(self.AWGmin, self.AWGmax, self.AWGval,100,self.awg_slider) H.addWidget(self.AWGslider) self.AWGtext = utils.lineEdit(100, self.AWGval, 6, self.awg_text) H.addWidget(self.AWGtext) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Voltage range')) l.setMaximumWidth(100) H.addWidget(l) self.Xslider = utils.slider(0, len(self.xvals)-1, self.Xval, 100, self.set_range) H.addWidget(self.Xslider) l = QLabel(text=self.tr('Volts')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) self.Diffmode = QCheckBox(self.tr('show (A1-A2) Vs A2')) right.addWidget(self.Diffmode) self.Diffmode.stateChanged.connect(self.diff_mode) H = QHBoxLayout() self.Xmax = QLabel(text='') H.addWidget(self.Xmax) right.addLayout(H) H = QHBoxLayout() self.Ymax = QLabel(text='') H.addWidget(self.Ymax) right.addLayout(H) H = QHBoxLayout() self.Yinter = QLabel(text='') H.addWidget(self.Yinter) right.addLayout(H) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Trials')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Time Period (mSec)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.NMIN, self.NMAX) self.pwin.setYRange(self.TMIN, self.TMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) ''' b = QPushButton(self.tr("Analyze last Trace")) right.addWidget(b) b.clicked.connect(self.fit_curve) ''' H = QHBoxLayout() l = QLabel(text=self.tr('Pendulum length')) l.setMaximumWidth(110) H.addWidget(l) self.PLENtext = utils.lineEdit(40, self.NMAX, 6, None) H.addWidget(self.PLENtext) l = QLabel(text=self.tr('cm')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Clear Data and Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) H = QHBoxLayout() l = QLabel(text=self.tr('Number of trials')) l.setMaximumWidth(110) H.addWidget(l) self.NMAXtext = utils.lineEdit(40, self.NMAX, 6, None) H.addWidget(self.NMAXtext) right.addLayout(H) H = QHBoxLayout() self.Results = QTextEdit() self.Results.setMaximumWidth(self.RPWIDTH/2-5) H.addWidget(self.Results) self.gResults = QTextEdit() self.gResults.setMaximumWidth(self.RPWIDTH/2-5) H.addWidget(self.gResults) right.addLayout(H) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device print(self.p) # connection to the device hardware try: self.p.select_range('A1', 8.0) self.p.select_range('A2', 8.0) self.p.configure_trigger(1, 'A2', 0) self.p.set_sine(self.AWGval) except: pass self.traceCols = utils.makeTraceColors() self.traceColsFit = utils.makeFitTraceColors() self.resCols = utils.makeResultColors() print(self.resCols) self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid for k in range(self.MAXCHAN): # pg textItem to show the voltage scales self.scaleLabs.append(pg.TextItem(text='OK')) ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Freq (Hz)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Current')) self.set_timebase(self.TBval) self.pwin.disableAutoRange() self.pwin.setXRange(0, self.tbvals[self.TBval] * 10) self.pwin.setYRange(self.MINV, self.MAXV) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0, 0], [0, 0], pen=self.traceCols[ch]) #x=pg.mkPen(self.chanpens[ch], width=.5, style=Qt.DashLine) self.traceWidgetF[ch] = self.pwin.plot([0, 0], [0, 0], pen=self.traceColsFit[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPVspacing) #Results for k in range(self.MAXRES): # pg textItem to show the Results self.resLabs[k] = pg.TextItem() self.pwin.addItem(self.resLabs[k]) H = QHBoxLayout() l = QLabel(text=self.tr('Timebase')) l.setMaximumWidth(60) H.addWidget(l) self.TBslider = utils.slider(0, 8, self.TBval, 200, self.set_timebase) H.addWidget(self.TBslider) right.addLayout(H) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) l = QLabel(text='<font color="blue">' + self.tr('Impedance Calculator')) right.addWidget(l) H = QHBoxLayout() l = QLabel(text=self.tr('F start(in Hz)')) l.setMaximumWidth(100) H.addWidget(l) self.sFreq = utils.lineEdit(50, "", 6, None) H.addWidget(self.sFreq) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('F End(in Hz)')) l.setMaximumWidth(100) H.addWidget(l) self.eFreq = utils.lineEdit(50, "", 6, None) H.addWidget(self.eFreq) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('# Intervals')) l.setMaximumWidth(100) H.addWidget(l) self.intervals = utils.lineEdit(50, "", 6, None) H.addWidget(self.intervals) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('C (in uF)')) l.setMaximumWidth(50) H.addWidget(l) self.uCap = utils.lineEdit(50, 1, 6, None) H.addWidget(self.uCap) l = QLabel(text=self.tr('R (in Ohms)')) l.setMaximumWidth(75) H.addWidget(l) self.uRes = utils.lineEdit(50, 1000, 6, None) H.addWidget(self.uRes) right.addLayout(H) H = QHBoxLayout() self.steps = QLabel() self.steps.setMaximumWidth(300) self.steps.setText("In Steps of:") H.addWidget(self.steps) self.intervals.textChanged.connect(self.updateStep) self.eFreq.textChanged.connect(self.updateStep) self.sFreq.textChanged.connect(self.updateStep) self.uCap.textChanged.connect(self.updateStep) self.uRes.textChanged.connect(self.updateStep) right.addLayout(H) b = QPushButton(self.tr('Start')) b.clicked.connect(self.calc) right.addWidget(b) self.uResult = QLabel(text='') right.addWidget(self.uResult) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.set_state(CCS=1) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Temparature (C)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.TPMIN, self.TPMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() b = QPushButton(self.tr("Measure A3")) b.setMaximumWidth(120) H.addWidget(b) b.clicked.connect(self.measureA3) self.A3val = QLabel(text='') H.addWidget(self.A3val) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('A3 Gain')) l.setMaximumWidth(100) H.addWidget(l) self.GAINtext = utils.lineEdit(40, self.Gain, 6, None) H.addWidget(self.GAINtext) l = QLabel(text=self.tr('1+10k/Rg')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('A3 Offset')) l.setMaximumWidth(100) H.addWidget(l) self.OFFSETtext = utils.lineEdit(40, self.Offset, 6, None) H.addWidget(self.OFFSETtext) l = QLabel(text=self.tr('mV ')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('CCS Value')) l.setMaximumWidth(100) H.addWidget(l) self.CCtext = utils.lineEdit(40, self.CCval, 6, None) H.addWidget(self.CCtext) l = QLabel(text=self.tr('mA')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Lowest Temp')) l.setMaximumWidth(100) H.addWidget(l) self.TPMINtext = utils.lineEdit(40, self.TPMIN, 6, None) H.addWidget(self.TPMINtext) l = QLabel(text=self.tr('deg C')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Highest Temp')) l.setMaximumWidth(100) H.addWidget(l) self.TPMAXtext = utils.lineEdit(40, self.TPMAX, 6, None) H.addWidget(self.TPMAXtext) l = QLabel(text=self.tr('deg C')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Total Duration')) l.setMaximumWidth(100) H.addWidget(l) self.TMAXtext = utils.lineEdit(40, self.TMAX, 6, None) H.addWidget(self.TMAXtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Measure every')) l.setMaximumWidth(100) H.addWidget(l) self.TGAPtext = utils.lineEdit(40, self.TGAP, 6, None) H.addWidget(self.TGAPtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1',4.0) self.p.configure_trigger(0, 'A1', 0) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage (V)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Duration')) l.setMaximumWidth(80) H.addWidget(l) self.TMAXtext = utils.lineEdit(40, self.TMAX, 6, None) H.addWidget(self.TMAXtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Analyze last Trace")) right.addWidget(b) b.clicked.connect(self.fit_curve) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) l = QLabel(text=self.tr('\nSet SQ1 Frequency\nFor Driven Pendulum Expt.')) right.addWidget(l) self.SQ1slider = utils.slider(10, 1000, 100, 1000,self.sq1_slider) right.addWidget(self.SQ1slider) self.Freq = QLabel('') right.addWidget(self.Freq) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.resultCols = utils.makeResultColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Voltage (V)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Current (mA)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.VMIN, self.VMAX) self.pwin.setYRange(self.IMIN, self.IMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Vbase (via 100kOhm)')) l.setMaximumWidth(140) H.addWidget(l) self.VBtext = utils.lineEdit(40, 1.0, 6, None) H.addWidget(self.VBtext) l = QLabel(text=self.tr('V')) l.setMaximumWidth(10) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.resultCols = utils.makeResultColors() self.tabs = QTabWidget() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Voltage (V)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Current(uA)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.inputVMIN, self.inputVMAX) self.pwin.setYRange(self.inputIMIN, self.inputIMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg self.tab1 = QWidget() self.tab1.setAutoFillBackground(True) self.tab2 = QWidget() self.tab2.setAutoFillBackground(True) self.tabs.resize(300, 200) # Add tabs self.tabs.addTab(self.tab1, "INPUT") self.tabs.addTab(self.tab2, "OUTPUT") rW = QWidget() right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) right.addWidget(self.tabs) rW.setLayout(right) rW.setFixedWidth(260) #------------------------------------------ # INPUT TAB START #------------------------------------------ T1 = QVBoxLayout() T1.setAlignment(Qt.AlignTop) T1.setSpacing(self.RPGAP) #T1.setAlignment(right) H = QHBoxLayout() self.defaultInputChkBox = QCheckBox("Use Defaults") self.defaultInputChkBox.setChecked(True) self.defaultInputChkBox.stateChanged.connect( self.defaultInputChkBoxChanged) H.addWidget(self.defaultInputChkBox) T1.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Enter V_CE Value')) l.setMaximumWidth(140) H.addWidget(l) self.V_C_USER = utils.lineEdit(40, 1.0, 6, None) H.addWidget(self.V_C_USER) l = QLabel(text=self.tr('V')) l.setMaximumWidth(10) H.addWidget(l) T1.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Steps')) l.setMaximumWidth(140) H.addWidget(l) self.UserStep = QLineEdit() self.UserStep = utils.lineEdit(40, 0.005, 6, None) self.UserStep.setText("0.05") #self.UserStep.setDisabled(True) H.addWidget(self.UserStep) l = QLabel(text=self.tr('V')) l.setMaximumWidth(10) H.addWidget(l) T1.addLayout(H) H = QHBoxLayout() right.addLayout(H) self.startInputButton = QPushButton(self.tr("Start")) T1.addWidget(self.startInputButton) self.startInputButton.clicked.connect(self.startInput) b = QPushButton(self.tr("Stop")) T1.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) T1.addWidget(b) b.clicked.connect(self.clear) if (self.trial >= 0): b = QPushButton(self.tr("Show Results")) T1.addWidget(b) b.clicked.connect(self.showdialogInput) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) T1.addWidget(self.SaveButton) H = QHBoxLayout() self.ResultsInput = QTextEdit() self.ResultsInput.setMaximumWidth(self.RPWIDTH / 2 - 5) H.addWidget(self.ResultsInput) T1.addLayout(H) self.tab1.layout = T1 self.V_C_USER.setDisabled(True) self.UserStep.setDisabled(True) self.V_C_USER.setText("2") self.UserStep.setText("0.05") self.tab1.setLayout(self.tab1.layout) #----------------INPUT TAB ENDS--------------------------------- #------------------------------------------ # OUTPUT TAB START #------------------------------------------ T2 = QVBoxLayout() T2.setAlignment(Qt.AlignTop) T2.setSpacing(self.RPGAP) #T2.setAlignment(right) H = QHBoxLayout() H = QHBoxLayout() l = QLabel(text=self.tr('Vbase (via 100kOhm)')) l.setMaximumWidth(140) H.addWidget(l) self.VBtext = utils.lineEdit(40, 1.0, 6, None) H.addWidget(self.VBtext) l = QLabel(text=self.tr('V')) l.setMaximumWidth(10) H.addWidget(l) T2.addLayout(H) H = QHBoxLayout() self.startOutputButton = QPushButton(self.tr("Start")) T2.addWidget(self.startOutputButton) self.startOutputButton.clicked.connect(self.startOutput) b = QPushButton(self.tr("Stop")) T2.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) T2.addWidget(b) b.clicked.connect(self.clear) if (self.trial >= 0): b = QPushButton(self.tr("Show Results")) T2.addWidget(b) b.clicked.connect(self.showdialogOutput) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) T2.addWidget(self.SaveButton) H = QHBoxLayout() self.Results = QTextEdit() self.Results.setMaximumWidth(self.RPWIDTH / 2 - 5) H.addWidget(self.Results) T2.addLayout(H) self.tab2.layout = T2 self.tab2.setLayout(self.tab2.layout) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addWidget(rW) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER) self.tabs.currentChanged.connect(self.onChange)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1', 4.0) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage (V)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg self.baseTrace = self.pwin.plot([0, 0], [0, 0], pen=self.traceCols[-1]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() H.setAlignment(Qt.AlignLeft) l = QLabel(text=self.tr('Select Range of A1')) l.setMaximumWidth(150) H.addWidget(l) self.rangeSelPB = QPushButton(self.tr('4 V')) self.rangeSelPB.setMaximumWidth(60) menu = QMenu() for k in range(len(self.Ranges12)): menu.addAction(self.Ranges12[k], lambda index=k: self.select_range(index)) self.rangeSelPB.setMenu(menu) H.addWidget(self.rangeSelPB) right.addLayout(H) b = QPushButton(self.tr("Start Scanning")) right.addWidget(b) b.clicked.connect(self.start_scan) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1',8.0) self.p.select_range('A2',8.0) self.p.configure_trigger(1, 'A2', 0) self.p.set_sine(self.AWGval) except: pass self.traceCols = utils.makeTraceColors() self.traceColsFit = utils.makeFitTraceColors() self.resCols = utils.makeResultColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid for k in range(self.MAXCHAN): # pg textItem to show the voltage scales self.scaleLabs.append(pg.TextItem(text='')) ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage')) self.set_timebase(self.TBval) self.pwin.disableAutoRange() self.pwin.setXRange(0, self.tbvals[self.TBval]*10) self.pwin.setYRange(self.MINV, self.MAXV) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0,0],[0,0], pen = self.traceCols[ch]) #x=pg.mkPen(self.chanpens[ch], width=.5, style=Qt.DashLine) self.traceWidgetF[ch] = self.pwin.plot([0,0],[0,0], pen = self.traceColsFit[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPVspacing) # Phasor plot window self.ppwin = pg.PlotWidget() # pyqtgraph window self.ppwin.setMaximumWidth(250) self.ppwin.setMaximumHeight(250) self.ppwin.setMinimumHeight(250) self.ppwin.disableAutoRange() self.ppwin.setXRange(-0.03,3) self.ppwin.setYRange(-3,3) self.ppwin.hideButtons() # Do not show the 'A' button of pg right.addWidget(self.ppwin) for ch in range(5): #x=pg.mkPen(self.chanpens[ch], width=2) self.phasorTraces[ch] = self.ppwin.plot([0,0],[0,0], width=3, pen = self.traceCols[ch]) #Results for k in range(self.MAXRES): # pg textItem to show the Results self.resLabs[k] = pg.TextItem() self.pwin.addItem(self.resLabs[k]) H = QHBoxLayout() l = QLabel(text=self.tr('Timebase')) l.setMaximumWidth(60) H.addWidget(l) self.TBslider = utils.slider(0, 8, self.TBval, 200, self.set_timebase) H.addWidget(self.TBslider) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('WG')) l.setMaximumWidth(25) H.addWidget(l) self.AWGslider = utils.slider(self.AWGmin, self.AWGmax, self.AWGval,100,self.awg_slider) H.addWidget(self.AWGslider) self.AWGtext = utils.lineEdit(70, self.AWGval, 6, self.awg_text) H.addWidget(self.AWGtext) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() self.VLC = QCheckBox('Show Vl and Vc') H.addWidget(self.VLC) self.VLC.stateChanged.connect(self.action_vlc) self.Pause = QCheckBox('Freeze') self.Pause.setMaximumWidth(120) H.addWidget(self.Pause) right.addLayout(H) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) l = QLabel(text='<font color="blue">'+self.tr('Impedance Calculator')) right.addWidget(l) H = QHBoxLayout() l = QLabel(text=self.tr('F (in Hz)')) l.setMaximumWidth(50) H.addWidget(l) self.uFreq = utils.lineEdit(50, 150, 6, None) H.addWidget(self.uFreq) l = QLabel(text=self.tr('R (in Ohms)')) l.setMaximumWidth(75) H.addWidget(l) self.uRes = utils.lineEdit(50, 1000, 6, None) H.addWidget(self.uRes) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('C (in uF)')) l.setMaximumWidth(50) H.addWidget(l) self.uCap = utils.lineEdit(50, 1, 6, None) H.addWidget(self.uCap) l = QLabel(text=self.tr('L (in mH)')) l.setMaximumWidth(75) H.addWidget(l) self.uInd = utils.lineEdit(50, 0, 6, None) H.addWidget(self.uInd) right.addLayout(H) b=QPushButton(self.tr('Calculate XL, XC and Fo')) b.clicked.connect(self.calc) right.addWidget(b) self.uResult =QLabel(text='') right.addWidget(self.uResult) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Current through R (mA)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage across R(Volts)')) self.pwin.disableAutoRange() self.IMIN = self.VMIN / self.Res self.IMAX = self.VMAX / self.Res self.pwin.setXRange(self.IMIN, self.IMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(self.tr("R from A1 to Ground")) l.setMaximumWidth(160) H.addWidget(l) self.Rval = utils.lineEdit(50, self.Res, 10, None) H.addWidget(self.Rval) l = QLabel(self.tr("Ohm")) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(self.tr("Sweep PV1 from")) l.setMaximumWidth(120) H.addWidget(l) self.PVmin = utils.lineEdit(40, self.VMIN, 10, None) H.addWidget(self.PVmin) l = QLabel(self.tr("to")) l.setMaximumWidth(20) H.addWidget(l) self.PVmax = utils.lineEdit(40, self.VMAX, 10, None) H.addWidget(self.PVmax) l = QLabel(self.tr("V")) l.setMaximumWidth(15) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Analyze last Trace")) right.addWidget(b) b.clicked.connect(self.fit_curve) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) self.Manual = QLabel(self.tr("Change Voltage")) right.addWidget(self.Manual) self.PV1slider = utils.slider(0, 30, 0, 250, self.pv1_slider) right.addWidget(self.PV1slider) H = QHBoxLayout() self.Voltage = QLabel(unicode(self.tr('Voltage = %5.3f')) %self.PV1min) H.addWidget(self.Voltage) right.addLayout(H) H = QHBoxLayout() self.Current = QLabel(self.tr("Current = 0 mA")) H.addWidget(self.Current) right.addLayout(H) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1',4.0) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage (V)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg self.baseTrace = self.pwin.plot([0,0],[0,0], pen = self.traceCols[-1]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() H.setAlignment(Qt.AlignLeft) l = QLabel(text=self.tr('Select Range of A1')) l.setMaximumWidth(150) H.addWidget(l) self.rangeSelPB = QPushButton(self.tr('4 V')) self.rangeSelPB.setMaximumWidth(60) menu = QMenu() for k in range(len(self.Ranges12)): menu.addAction(self.Ranges12[k], lambda index=k: self.select_range(index)) self.rangeSelPB.setMenu(menu) H.addWidget(self.rangeSelPB) right.addLayout(H) b = QPushButton(self.tr("Start Scanning")) right.addWidget(b) b.clicked.connect(self.start_scan) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1',4) self.p.select_range('A2',4) self.p.set_sine(self.AWGval) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Voltage A2')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage (A2)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0,0],[0,0], pen = self.traceCols[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() self.SaveButton = QPushButton(self.tr("Save Data to")) self.SaveButton.setMaximumWidth(90) self.SaveButton.clicked.connect(self.save_data) H.addWidget(self.SaveButton) self.Filename = utils.lineEdit(150, self.tr('XYplot.txt'), 20, None ) H.addWidget(self.Filename) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('WG')) l.setMaximumWidth(25) H.addWidget(l) self.AWGslider = utils.slider(self.AWGmin, self.AWGmax, self.AWGval,100,self.awg_slider) H.addWidget(self.AWGslider) self.AWGtext = utils.lineEdit(100, self.AWGval, 6, self.awg_text) H.addWidget(self.AWGtext) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Voltage range')) l.setMaximumWidth(100) H.addWidget(l) self.Xslider = utils.slider(0, len(self.xvals)-1, self.Xval, 100, self.set_range) H.addWidget(self.Xslider) l = QLabel(text=self.tr('Volts')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) self.Diffmode = QCheckBox(self.tr('show (A1-A2) Vs A2')) right.addWidget(self.Diffmode) self.Diffmode.stateChanged.connect(self.diff_mode) H = QHBoxLayout() self.Xmax = QLabel(text='') H.addWidget(self.Xmax) right.addLayout(H) H = QHBoxLayout() self.Ymax = QLabel(text='') H.addWidget(self.Ymax) right.addLayout(H) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1',8.0) except: pass self.traceCols = utils.makeTraceColors() self.history = [] self.traces = [] self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage')) self.pwin.disableAutoRange() self.pwin.setYRange(self.VMIN, self.VMAX) #self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Timebase')) l.setMaximumWidth(60) H.addWidget(l) self.TBslider = utils.slider(0, len(self.tbvals)-1, self.TBval, 150, self.set_timebase) H.addWidget(self.TBslider) l = QLabel(text=self.tr('mS/div')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("0 -> 5V step on OD1")) b.clicked.connect(self.charge) right.addWidget(b) b = QPushButton(self.tr("5 -> 0V step on OD1")) b.clicked.connect(self.discharge) right.addWidget(b) H = QHBoxLayout() l = QLabel(text=self.tr('Rext =')) l.setMaximumWidth(40) H.addWidget(l) self.Rextext = utils.lineEdit(100, 1000, 6, None) H.addWidget(self.Rextext) l = QLabel(text=self.tr('Ohm')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Analyse latest Data")) b.clicked.connect(self.fit_curve) right.addWidget(b) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) b = QPushButton(self.tr("Clear Data")) b.clicked.connect(self.clear) right.addWidget(b) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER) self.set_timebase(self.TBval)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.p.set_pv1(0) self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() #pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Voltage (V) -> Current -> Magnetic Field(B)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Magnetic Field (H)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.VMIN, self.VMAX) self.pwin.setYRange(self.ZMIN, self.ZMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Set Zero")) right.addWidget(b) b.clicked.connect(self.zero) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER) self.t = MPU925x.connect(self.p.I2C) self.t.initMagnetometer() self.zero = 0 if MPU925x.MPU925x.ADDRESS not in self.p.I2C.scan(): self.msg(self.tr('MPU925x Sensor Not Found'))
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.set_sine(1000) self.p.set_sine_amp(self.wgainindex) print(index) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Frequency (Hz)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Amplitude')) self.pwin.disableAutoRange() self.pwin.setXRange(self.FMIN, self.FMAX) self.pwin.setYRange(0, self.RangeVals12[self.Range]) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('WG range ')) l.setMaximumWidth(100) H.addWidget(l) self.Xslider = utils.slider(0, len(self.Wgains) - 1, self.wgainindex, 100, self.select_amplitude) H.addWidget(self.Xslider) self.amplitudeLabel = QLabel( text=self.tr(self.Wgains[self.wgainindex])) self.amplitudeLabel.setMaximumWidth(60) self.amplitudeLabel.setMinimumWidth(40) H.addWidget(self.amplitudeLabel) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('A2 range')) l.setMaximumWidth(100) H.addWidget(l) self.Xslider = utils.slider(0, len(self.RangeVals12) - 1, self.Range, 100, self.select_range) H.addWidget(self.Xslider) self.rangeLabel = QLabel(text=self.tr(self.Ranges12[self.Range])) self.rangeLabel.setMaximumWidth(60) self.rangeLabel.setMinimumWidth(40) H.addWidget(self.rangeLabel) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Starting')) l.setMaximumWidth(70) H.addWidget(l) self.AWGstart = utils.lineEdit(60, self.FMIN, 6, None) H.addWidget(self.AWGstart) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Ending')) l.setMaximumWidth(70) H.addWidget(l) self.AWGstop = utils.lineEdit(60, self.FMAX, 6, None) H.addWidget(self.AWGstop) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Steps')) l.setMaximumWidth(70) H.addWidget(l) self.NSTEPtext = utils.lineEdit(60, self.NSTEP, 6, None) H.addWidget(self.NSTEPtext) l = QLabel(text=self.tr('')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) self.FreqLabel = QLabel(self.tr("")) right.addWidget(self.FreqLabel) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.resultCols = utils.makeResultColors() self.traceCols = utils.makeTraceColors() self.htmlColors = utils.makeHtmlColors() self.p = device # connection to the device hardware self.chanStatus = [ 1, 0, 0, 0 ] # PyQt problem. chanStatus somehow getting preserved ??? left = QVBoxLayout() # right side vertical layout for ch in range(self.MAXCHAN): self.offSliders[ch] = utils.sliderVert(-4, 4, 0, 40, None) left.addWidget(self.offSliders[ch]) self.offSliders[ch].valueChanged.connect( partial(self.set_offset, ch)) self.offSliders[ch].setStyleSheet("border: 1px solid %s;" % self.htmlColors[ch]) win = pg.GraphicsWindow() self.pwin = win.addPlot() self.pwin.proxy = pg.SignalProxy(self.pwin.scene().sigMouseMoved, rateLimit=60, slot=self.updateTV) self.pwin.showGrid(x=True, y=True) # with grid for k in range(self.MAXCHAN): # pg textItem to show the voltage scales self.scaleLabs[k] = pg.TextItem(text='') for k in range(self.MAXRES): # pg textItem to show the Results self.resLabs[k] = pg.TextItem() self.pwin.addItem(self.resLabs[k]) vLine = pg.InfiniteLine(angle=90, movable=False, pen='w') self.pwin.addItem(vLine, ignoreBounds=True) self.pwin.vLine = vLine self.pwin.vLine.setPos(-1) hLine = pg.InfiniteLine(angle=0, movable=False, pen='w') self.pwin.addItem(hLine, ignoreBounds=True) self.pwin.hLine = hLine self.pwin.hLine.setPos(-17) ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setStyle(showValues=False) ax.setLabel(self.tr('Voltage')) self.set_timebase(self.TBval) self.pwin.disableAutoRange() self.pwin.setXRange(0, self.tbvals[self.TBval] * 10) self.pwin.setYRange(-16, 16) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0, 0], [0, 0], pen=self.traceCols[ch]) self.diffTraceW = self.pwin.plot([0, 0], [0, 0], pen=self.traceCols[-1]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPVspacing) l = QLabel(text='<font color="red">' + self.tr('DC Voltages at A1, A2 and A3')) l.setMinimumWidth(self.RPWIDTH) right.addWidget(l) H = QHBoxLayout() for k in range(3): H.setAlignment(Qt.AlignLeft) self.voltMeterCB[k] = QCheckBox(self.tr(self.sources[k])) H.addWidget(self.voltMeterCB[k]) self.voltMeters[k] = QLabel() self.voltMeters[k].setMinimumWidth(50) H.addWidget(self.voltMeters[k]) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Resistance on SEN = ')) H.addWidget(l) self.RES = QLabel() H.addWidget(self.RES) right.addLayout(H) H = QHBoxLayout() b = QPushButton(self.tr("Click for Capacitance on IN1")) b.setMinimumWidth(200) H.addWidget(b) b.clicked.connect(self.measure_cap) self.CAP = QLabel('') H.addWidget(self.CAP) right.addLayout(H) H = QHBoxLayout() b = QPushButton(self.tr("Click for Frequency on IN2")) b.setMinimumWidth(200) H.addWidget(b) b.clicked.connect(self.measure_freq) self.IN2 = QLabel('') H.addWidget(self.IN2) right.addLayout(H) H = QHBoxLayout() self.OD1 = QCheckBox(self.tr("Enable OD1")) H.addWidget(self.OD1) self.OD1.stateChanged.connect(self.control_od1) self.CCS = QCheckBox(self.tr("Enable CCS")) H.addWidget(self.CCS) self.CCS.stateChanged.connect(self.control_ccs) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('WG Shape')) H.addWidget(l) self.Wshape = QPushButton('sine') menu = QMenu() for k in range(len(self.Waves)): menu.addAction(self.Waves[k], lambda index=k: self.select_wave(index)) self.Wshape.setMenu(menu) H.addWidget(self.Wshape) l = QLabel(text=self.tr('Amplitude')) H.addWidget(l) self.Wgain = QPushButton(self.Wgains[self.wgainindex]) menu = QMenu() for k in range(len(self.Wgains)): menu.addAction(self.Wgains[k], lambda index=k: self.select_wgain(index)) self.Wgain.setMenu(menu) H.addWidget(self.Wgain) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('WG')) l.setMaximumWidth(30) H.addWidget(l) self.AWGslider = utils.slider(self.AWGmin, self.AWGmax, self.AWGval, 100, self.awg_slider) H.addWidget(self.AWGslider) self.AWGtext = utils.lineEdit(100, self.AWGval, 6, self.awg_text) H.addWidget(self.AWGtext) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(40) l.setMinimumWidth(40) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('SQ1')) l.setMaximumWidth(30) l.setMinimumWidth(30) H.addWidget(l) self.SQ1slider = utils.slider(self.SQ1min, self.SQ1max, self.SQ1val, 100, self.sq1_slider) H.addWidget(self.SQ1slider) self.SQ1text = utils.lineEdit(60, self.SQ1val, 6, self.sq1_text) H.addWidget(self.SQ1text) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(15) H.addWidget(l) self.SQ1DCtext = utils.lineEdit(30, 50, 6, self.sq1_dc) H.addWidget(self.SQ1DCtext) l = QLabel(text=self.tr('%')) l.setMaximumWidth(15) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('PV1')) l.setMaximumWidth(25) H.addWidget(l) self.PV1slider = utils.slider(self.PV1min * 1000, self.PV1max * 1000, self.PV1val * 1000, 100, self.pv1_slider) H.addWidget(self.PV1slider) self.PV1text = utils.lineEdit(100, self.PV1val, 6, self.pv1_text) H.addWidget(self.PV1text) l = QLabel(text=self.tr('Volt')) l.setMaximumWidth(40) l.setMinimumWidth(40) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('PV2')) l.setMaximumWidth(25) H.addWidget(l) self.PV2slider = utils.slider(self.PV2min * 1000, self.PV2max * 1000, self.PV2val * 1000, 100, self.pv2_slider) H.addWidget(self.PV2slider) self.PV2text = utils.lineEdit(100, self.PV2val, 6, self.pv2_text) H.addWidget(self.PV2text) l = QLabel(text=self.tr('Volt')) l.setMaximumWidth(40) l.setMinimumWidth(40) H.addWidget(l) right.addLayout(H) #--------------------------Scope Controls--------------------- l = QLabel('<font color="red">' + self.tr('Oscilloscope Channels, Range and Analysis ')) right.addWidget(l) for ch in range(4): H = QHBoxLayout() H.setAlignment(Qt.AlignLeft) self.chanSelCB[ch] = QCheckBox() self.chanSelCB[ch].stateChanged.connect( partial(self.select_channel, ch)) H.addWidget(self.chanSelCB[ch]) l = QLabel(text='<font color="%s">%s' % (self.htmlColors[ch], self.sources[ch])) l.setMaximumWidth(30) l.setMinimumWidth(30) H.addWidget(l) self.rangeSelPB[ch] = QPushButton('4 V') self.rangeSelPB[ch].setMaximumWidth(60) menu = QMenu() if ch <= 1: for k in range(len(self.Ranges12)): menu.addAction( self.Ranges12[k], lambda index=(ch, k): self.select_range(index)) else: for k in range(len(self.Ranges34)): menu.addAction( self.Ranges34[k], lambda index=(ch, k): self.select_range(index)) self.rangeSelPB[ch].setMenu(menu) H.addWidget(self.rangeSelPB[ch]) self.fitSelCB[ch] = QCheckBox('') self.fitSelCB[ch].setMaximumWidth(30) H.addWidget(self.fitSelCB[ch]) self.fitResLab[ch] = QLabel('') H.addWidget(self.fitResLab[ch]) right.addLayout(H) self.chanSelCB[0].setChecked(True) H = QHBoxLayout() l = QLabel(text=self.tr('Timebase')) l.setMaximumWidth(60) H.addWidget(l) self.TBslider = utils.slider(0, 8, self.TBval, 180, self.set_timebase) H.addWidget(self.TBslider) l = QLabel(text=self.tr('mS/div')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Trigger')) l.setMaximumWidth(60) H.addWidget(l) self.Trigslider = utils.slider(-3300, 3300, self.Triglevel, 150, self.set_trigger) H.addWidget(self.Trigslider) l = QLabel(text=self.tr('On')) l.setMaximumWidth(30) H.addWidget(l) self.Trigbutton = QPushButton(self.tr('A1')) self.Trigbutton.setMaximumWidth(50) menu = QMenu() for k in range(len(self.sources)): menu.addAction(self.sources[k], lambda index=k: self.select_trig_source(index)) self.Trigbutton.setMenu(menu) H.addWidget(self.Trigbutton) right.addLayout(H) H = QHBoxLayout() self.SaveButton = QPushButton(self.tr("Save Traces")) #self.SaveButton.setMaximumWidth(80) self.SaveButton.clicked.connect(self.save_data) H.addWidget(self.SaveButton) #self.Filename = utils.lineEdit(100, self.tr('scope.txt'), 20, None) #H.addWidget(self.Filename) self.FFT = QPushButton(self.tr("Fourier Transform")) #self.FFT.setMaximumWidth(50) H.addWidget(self.FFT) self.FFT.clicked.connect(self.show_fft) right.addLayout(H) H = QHBoxLayout() self.Cross = QCheckBox(self.tr("Cross hair")) self.Cross.stateChanged.connect(self.cross_hair) H.addWidget(self.Cross) self.Freeze = QCheckBox(self.tr("Freeze")) H.addWidget(self.Freeze) self.Diff = QCheckBox(self.tr('A1-A2')) H.addWidget(self.Diff) self.Diff.stateChanged.connect(self.show_diff) right.addLayout(H) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addLayout(left) top.addWidget(win) # self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER) self.recover()
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1', 8.0) except: pass self.traceCols = utils.makeTraceColors() self.history = [] self.traces = [] self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage')) self.pwin.disableAutoRange() self.pwin.setYRange(self.VMIN, self.VMAX) #self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Timebase')) l.setMaximumWidth(60) H.addWidget(l) self.TBslider = utils.slider(0, len(self.tbvals) - 1, self.TBval, 150, self.set_timebase) H.addWidget(self.TBslider) l = QLabel(text=self.tr('mS/div')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(self.tr("Voltage =")) l.setMaximumWidth(100) H.addWidget(l) self.Vval = utils.lineEdit(50, 5, 10, None) H.addWidget(self.Vval) l = QLabel(self.tr("V")) l.setMaximumWidth(10) H.addWidget(l) b = QPushButton(self.tr("Register Voltage")) #b.clicked.connect(self.charge) H.addWidget(b) right.addLayout(H) b = QPushButton(self.tr("0 -> 5V step on OD1")) b.clicked.connect(self.charge) right.addWidget(b) b = QPushButton(self.tr("5 -> 0V step on OD1")) b.clicked.connect(self.discharge) right.addWidget(b) b = QPushButton(self.tr("Calculate RC")) b.clicked.connect(self.fit_curve) right.addWidget(b) b = QPushButton(self.tr("Clear Data & Traces")) b.clicked.connect(self.clear) right.addWidget(b) H = QHBoxLayout() l = QLabel(self.tr("Resistance =")) l.setMaximumWidth(100) H.addWidget(l) self.Rval = utils.lineEdit(50, self.Res, 10, None) H.addWidget(self.Rval) l = QLabel(self.tr("Ohm")) l.setMaximumWidth(30) H.addWidget(l) right.addLayout(H) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) self.SaveImageButton = QPushButton(self.tr("Save Image")) self.SaveImageButton.clicked.connect(self.save_image) right.addWidget(self.SaveImageButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER) self.set_timebase(self.TBval)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1', 4) self.p.select_range('A2', 4) self.p.set_sine(self.AWGval) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Voltage A2')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage (A2)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.VMIN, self.VMAX) self.pwin.setYRange(self.VMIN, self.VMAX) for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0, 0], [0, 0], pen=self.traceCols[ch]) self.pwin2 = pg.PlotWidget() # pyqtgraph window self.pwin2.showGrid(x=True, y=True) # with grid ax = self.pwin2.getAxis('bottom') ax.setLabel(self.tr('Voltage A1')) ax = self.pwin2.getAxis('left') ax.setLabel(self.tr('Voltage (A2)')) self.pwin2.disableAutoRange() self.pwin2.setXRange(self.VMIN, self.VMAX) self.pwin2.setYRange(self.VMIN, self.VMAX) self.curve2 = self.pwin2.plot([0, 0], [0, 0], pen=self.traceCols[ch]) self.pwin3 = pg.PlotWidget() # pyqtgraph window self.pwin3.showGrid(x=True, y=True) # with grid ax = self.pwin3.getAxis('bottom') ax.setLabel(self.tr('Time')) ax = self.pwin3.getAxis('left') ax.setLabel(self.tr('Voltage')) self.pwin3.disableAutoRange() self.pwin3.setXRange(0, int(self.NP * self.TG)) self.pwin3.setYRange(self.VMIN, self.VMAX) self.datacurves = {} for a in ['A1', 'A2', 'A3', 'MIC']: self.datacurves[a] = self.pwin3.plot([0, 0], [0, 0], pen=self.traceCols[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() self.SaveButton = QPushButton(self.tr("Save Data to")) self.SaveButton.setMaximumWidth(90) self.SaveButton.clicked.connect(self.save_data) H.addWidget(self.SaveButton) self.Filename = utils.lineEdit(150, self.tr('XYplot.txt'), 20, None) H.addWidget(self.Filename) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('WG')) l.setMaximumWidth(25) H.addWidget(l) self.AWGslider = utils.slider(self.AWGmin, self.AWGmax, self.AWGval, 100, self.awg_slider) H.addWidget(self.AWGslider) self.AWGtext = utils.lineEdit(100, self.AWGval, 6, self.awg_text) H.addWidget(self.AWGtext) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Voltage range')) l.setMaximumWidth(100) H.addWidget(l) self.Xslider = utils.slider(0, len(self.xvals) - 1, self.Xval, 100, self.set_range) H.addWidget(self.Xslider) l = QLabel(text=self.tr('Volts')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) self.Diffmode = QCheckBox(self.tr('show (A1-A2) Vs A2')) right.addWidget(self.Diffmode) self.Diffmode.stateChanged.connect(self.diff_mode) H = QHBoxLayout() self.Xmax = QLabel(text='') H.addWidget(self.Xmax) right.addLayout(H) H = QHBoxLayout() self.Ymax = QLabel(text='') H.addWidget(self.Ymax) right.addLayout(H) #------------------------end of right panel ---------------- from PyQt4.QtGui import QGridLayout top = QGridLayout() top.addWidget(self.pwin, 0, 0) #A1 and A2 top.addWidget(self.pwin2, 1, 0) #A3 and MIC top.addWidget(self.pwin3, 0, 1, 2, 1) #All signals top.addLayout(right, 0, 2) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): super(Expt, self).__init__() self.setupUi(self) try: self.setStyleSheet(open(os.path.join(os.path.dirname(__file__),"layouts/style.qss"), "r").read()) except Exception as e: print('stylesheet missing. ',e) self.resultCols = utils.makeResultColors() self.traceCols = utils.makeTraceColors() self.htmlColors = utils.makeHtmlColors() self.pwin = pg.PlotWidget(self.pwinview) self.plotLayout.addWidget(self.pwin) self.p = device # connection to the device hardware self.chanStatus = [1,0,0,0] # PyQt problem. chanStatus somehow getting preserved ??? self.offSliders = [self.slider1,self.slider2,self.slider3,self.slider4] for ch in range(self.MAXCHAN): self.offSliders[ch].valueChanged.connect(partial (self.set_offset,ch)) self.offSliders[ch].setStyleSheet('''QSlider::handle:vertical{background: %s;};'''%(self.htmlColors[ch])) self.pwin.proxy = pg.SignalProxy(self.pwin.scene().sigMouseMoved, rateLimit=60, slot=self.updateTV) self.pwin.showGrid(x=True, y=True) # with grid for k in range(self.MAXCHAN): # pg textItem to show the voltage scales self.scaleLabs[k] = pg.TextItem(text='') for k in range(self.MAXRES): # pg textItem to show the Results self.resLabs[k] = pg.TextItem() self.pwin.addItem(self.resLabs[k]) vLine = pg.InfiniteLine(angle=90, movable=False, pen = 'r') self.pwin.addItem(vLine, ignoreBounds=True) self.pwin.vLine=vLine self.pwin.vLine.setPos(-1) ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setStyle(showValues=False) ax.setLabel(self.tr('Voltage')) self.set_timebase(self.TBval) self.pwin.disableAutoRange() self.pwin.setXRange(0, self.tbvals[self.TBval]*10) self.pwin.setYRange(-16, 16) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0,0],[0,0], pen = self.traceCols[ch]) self.diffTraceW = self.pwin.plot([0,0],[0,0], pen = self.traceCols[-1]) self.CAP.clicked.connect(self.measure_cap) self.FREQ.clicked.connect(self.measure_freq) self.OD1.stateChanged.connect(self.control_od1) self.CCS.stateChanged.connect(self.control_ccs) self.chanSelCB = [self.A1Box,self.A2Box,self.A3Box,self.MICBox] self.rangeSelPB = [self.A1Range,self.A2Range,self.A3Range,self.MICRange] self.fitSelCB = [self.A1Fit,self.A2Fit,self.A3Fit,self.MICFit] self.voltMeterCB = [self.voltMeterCB1,self.voltMeterCB2,self.voltMeterCB3] for ch in range(4): self.chanSelCB[ch].stateChanged.connect(partial (self.select_channel,ch)) self.chanSelCB[ch].setStyleSheet('''border: 1px solid %s;'''%(self.htmlColors[ch])) #<font color="%s"> self.rangeSelPB[ch].currentIndexChanged['int'].connect(partial(self.select_range,ch)) self.chanSelCB[0].setChecked(True) self.trigBox.addItems(self.sources) self.A1Map.addItems(self.sources) self.recover() self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.set_state(CCS=1) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Temperature (C)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.TPMIN, self.TPMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() b = QPushButton(self.tr("Measure A3")) b.setMaximumWidth(120) H.addWidget(b) b.clicked.connect(self.measureA3) self.A3val = QLabel(text='') H.addWidget(self.A3val) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('A3 Gain')) l.setMaximumWidth(100) H.addWidget(l) self.GAINtext = utils.lineEdit(40, self.Gain, 6, None) H.addWidget(self.GAINtext) l = QLabel(text=self.tr('1+10k/Rg')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('A3 Offset')) l.setMaximumWidth(100) H.addWidget(l) self.OFFSETtext = utils.lineEdit(40, self.Offset, 6, None) H.addWidget(self.OFFSETtext) l = QLabel(text=self.tr('mV ')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('CCS Value')) l.setMaximumWidth(100) H.addWidget(l) self.CCtext = utils.lineEdit(40, self.CCval, 6, None) H.addWidget(self.CCtext) l = QLabel(text=self.tr('mA')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Lowest Temp')) l.setMaximumWidth(100) H.addWidget(l) self.TPMINtext = utils.lineEdit(40, self.TPMIN, 6, None) H.addWidget(self.TPMINtext) l = QLabel(text=self.tr('deg C')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Highest Temp')) l.setMaximumWidth(100) H.addWidget(l) self.TPMAXtext = utils.lineEdit(40, self.TPMAX, 6, None) H.addWidget(self.TPMAXtext) l = QLabel(text=self.tr('deg C')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Total Duration')) l.setMaximumWidth(100) H.addWidget(l) self.TMAXtext = utils.lineEdit(40, self.TMAX, 6, None) H.addWidget(self.TMAXtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Measure every')) l.setMaximumWidth(100) H.addWidget(l) self.TGAPtext = utils.lineEdit(40, self.TGAP, 6, None) H.addWidget(self.TGAPtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (Sec)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Distance(cm)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.DMIN, self.DMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Y-axis from 0 to')) l.setMaximumWidth(100) H.addWidget(l) self.DMAXtext = utils.lineEdit(40, self.DMAX, 6, None) H.addWidget(self.DMAXtext) l = QLabel(text=self.tr('cm')) l.setMaximumWidth(50) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Measure during')) l.setMaximumWidth(100) H.addWidget(l) self.TMAXtext = utils.lineEdit(40, self.TMAX, 6, None) H.addWidget(self.TMAXtext) l = QLabel(text=self.tr('Secs')) l.setMaximumWidth(50) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Fit Curve using Sine")) b.clicked.connect(self.fit_curve) right.addWidget(b) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.FFT = QPushButton(self.tr("Fourier Transform")) #self.FFT.setMaximumWidth(50) H.addWidget(self.FFT) self.FFT.clicked.connect(self.show_fft) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.resultCols = utils.makeResultColors() self.traceCols = utils.makeTraceColors() self.htmlColors = utils.makeHtmlColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage(V)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): self.traces[ch] = self.pwin.plot([0,0],[0,0], pen = self.traceCols[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Total Duration')) l.setMaximumWidth(100) H.addWidget(l) self.TMAXtext = utils.lineEdit(40, self.TMAX, 6, None) H.addWidget(self.TMAXtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Measure every')) l.setMaximumWidth(100) H.addWidget(l) self.TGAPtext = utils.lineEdit(40, self.TGAP, 6, None) H.addWidget(self.TGAPtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) for ch in range(self.MAXCHAN): H = QHBoxLayout() H.setAlignment(Qt.AlignLeft) self.chanSelCB[ch] = QCheckBox() #self.chanSelCB[ch].stateChanged.connect(partial (self.select_channel,ch)) H.addWidget(self.chanSelCB[ch]) l = QLabel(text='<font color="%s">%s' %(self.htmlColors[ch],self.sources[ch])) l.setMaximumWidth(30) l.setMinimumWidth(30) H.addWidget(l) right.addLayout(H) self.chanSelCB[0].setChecked(True) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (Sec)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Distance(cm)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.DMIN, self.DMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Y-axis from 0 to')) l.setMaximumWidth(100) H.addWidget(l) self.DMAXtext = utils.lineEdit(40, self.DMAX, 6, None) H.addWidget(self.DMAXtext) l = QLabel(text=self.tr('cm')) l.setMaximumWidth(50) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Measure during')) l.setMaximumWidth(100) H.addWidget(l) self.TMAXtext = utils.lineEdit(40, self.TMAX, 6, None) H.addWidget(self.TMAXtext) l = QLabel(text=self.tr('Secs')) l.setMaximumWidth(50) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Fit Curve using Sine")) b.clicked.connect(self.fit_curve) right.addWidget(b) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1',4.0) self.p.select_range('A2',4.0) self.p.configure_trigger(0, 'A1', 0) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Frequency (Hz)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Current (mA)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.FMIN, self.FMAX) self.pwin.setYRange(self.GMIN, self.GMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) ''' H = QHBoxLayout() l = QLabel(text=self.tr('Rload =')) l.setMaximumWidth(50) H.addWidget(l) self.LoadRes = utils.lineEdit(60, self.Rload, 6, None) H.addWidget(self.LoadRes) l = QLabel(text=self.tr('Ohm')) l.setMaximumWidth(40) H.addWidget(l) right.addLayout(H) ''' H = QHBoxLayout() l = QLabel(text=self.tr('From')) l.setMaximumWidth(35) H.addWidget(l) self.AWGstart = utils.lineEdit(60, self.FMIN, 6, None) H.addWidget(self.AWGstart) l = QLabel(text=self.tr('to')) l.setMaximumWidth(20) H.addWidget(l) self.AWGstop = utils.lineEdit(60, self.FMAX, 6, None) H.addWidget(self.AWGstop) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('R (in Ohms)')) l.setMaximumWidth(75) H.addWidget(l) self.uRes = utils.lineEdit(50, 50, 6, None) H.addWidget(self.uRes) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Number of Steps =')) l.setMaximumWidth(120) H.addWidget(l) self.NSTEPtext = utils.lineEdit(60, self.NSTEP, 6, None) H.addWidget(self.NSTEPtext) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) self.FreqLabel = QLabel(self.tr("")) right.addWidget(self.FreqLabel) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.configure_trigger(0, 'A1', 0) self.p.select_range('A1',4.0) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Frequency (Hz)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Amplitude (V)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.FMIN, self.FMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('From')) l.setMaximumWidth(35) H.addWidget(l) self.AWGstart = utils.lineEdit(60, self.FMIN, 6, None) H.addWidget(self.AWGstart) l = QLabel(text=self.tr('to')) l.setMaximumWidth(20) H.addWidget(l) self.AWGstop = utils.lineEdit(60, self.FMAX, 6, None) H.addWidget(self.AWGstop) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('in')) l.setMaximumWidth(20) H.addWidget(l) self.totalTimeW = utils.lineEdit(60, 20, 6, None) H.addWidget(self.totalTimeW) l = QLabel(text=self.tr('seconds')) l.setMaximumWidth(20) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) H = QHBoxLayout() self.updateLabel = QLabel(text='') self.updateLabel.setMaximumWidth(200) H.addWidget(self.updateLabel) right.addLayout(H) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.traceColsFit = utils.makeFitTraceColors() self.resCols = utils.makeResultColors() self.p.set_trig_source(2) # A1 self.p.set_trigger(2048) self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid for k in range(self.MAXCHAN): # pg textItem to show the voltage scales self.scaleLabs.append(pg.TextItem(text='')) ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage')) self.set_timebase(self.TBval) self.pwin.disableAutoRange() self.pwin.setXRange(0, self.tbvals[self.TBval] * 10) self.pwin.setYRange(self.MINV, self.MAXV) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): # initialize the pg trace widgets self.traceWidget[ch] = self.pwin.plot([0, 0], [0, 0], pen=self.traceCols[ch]) #x=pg.mkPen(self.chanpens[ch], width=.5, style=Qt.DashLine) self.traceWidgetF[ch] = self.pwin.plot([0, 0], [0, 0], pen=self.traceColsFit[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPVspacing) # Phasor plot window self.ppwin = pg.PlotWidget() # pyqtgraph window self.ppwin.setMaximumWidth(250) self.ppwin.setMaximumHeight(250) self.ppwin.setMinimumHeight(250) self.ppwin.disableAutoRange() self.ppwin.setXRange(-0.03, 3) self.ppwin.setYRange(-3, 3) self.ppwin.hideButtons() # Do not show the 'A' button of pg right.addWidget(self.ppwin) for ch in range(5): #x=pg.mkPen(self.chanpens[ch], width=2) self.phasorTraces[ch] = self.ppwin.plot([0, 0], [0, 0], width=3, pen=self.traceCols[ch]) #Results for k in range(self.MAXRES): # pg textItem to show the Results self.resLabs[k] = pg.TextItem() self.pwin.addItem(self.resLabs[k]) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) l = QLabel(text='<font color="blue">' + self.tr('Impedance Calculator')) right.addWidget(l) H = QHBoxLayout() l = QLabel(text=self.tr('F (in Hz)')) l.setMaximumWidth(50) H.addWidget(l) self.uFreq = utils.lineEdit(50, 150, 6, None) H.addWidget(self.uFreq) l = QLabel(text=self.tr('R (in Ohms)')) l.setMaximumWidth(75) H.addWidget(l) self.uRes = utils.lineEdit(50, 1000, 6, None) H.addWidget(self.uRes) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('C (in uF)')) l.setMaximumWidth(50) H.addWidget(l) self.uCap = utils.lineEdit(50, 1, 6, None) H.addWidget(self.uCap) l = QLabel(text=self.tr('L (in mH)')) l.setMaximumWidth(75) H.addWidget(l) self.uInd = utils.lineEdit(50, 0, 6, None) H.addWidget(self.uInd) right.addLayout(H) b = QPushButton(self.tr('Calculate XL, XC and Fo')) b.clicked.connect(self.calc) right.addWidget(b) self.uResult = QLabel(text='') right.addWidget(self.uResult) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('messages')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Current through R (mA)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage across R(Volts)')) self.pwin.disableAutoRange() self.IMIN = self.VMIN / self.Res self.IMAX = self.VMAX / self.Res self.pwin.setXRange(self.IMIN, self.IMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(self.tr("R to Ground")) l.setMaximumWidth(120) H.addWidget(l) self.Rval = utils.lineEdit(50, self.Res, 10, None) H.addWidget(self.Rval) l = QLabel(self.tr("Ohm")) l.setMaximumWidth(30) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(self.tr("Starting PV1")) l.setMaximumWidth(120) H.addWidget(l) self.PVmin = utils.lineEdit(40, self.VMIN, 10, None) H.addWidget(self.PVmin) l = QLabel(self.tr("V")) l.setMaximumWidth(30) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(self.tr("Ending PV1")) l.setMaximumWidth(120) H.addWidget(l) self.PVmax = utils.lineEdit(40, self.VMAX, 10, None) H.addWidget(self.PVmax) l = QLabel(self.tr("V")) l.setMaximumWidth(30) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Analyze last Trace")) right.addWidget(b) b.clicked.connect(self.fit_curve) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) self.Manual = QLabel(self.tr("Change Voltage")) right.addWidget(self.Manual) self.PV1slider = utils.slider(0, 30, 0, 250, self.pv1_slider) right.addWidget(self.PV1slider) H = QHBoxLayout() self.Voltage = QLabel(unicode(self.tr('Voltage = %5.3f')) %self.PV1min) H.addWidget(self.Voltage) right.addLayout(H) H = QHBoxLayout() self.Current = QLabel(self.tr("Current = 0 mA")) H.addWidget(self.Current) right.addLayout(H) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.resultCols = utils.makeResultColors() self.traceCols = utils.makeTraceColors() self.htmlColors = utils.makeHtmlColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage(V)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg for ch in range(self.MAXCHAN): self.traces[ch] = self.pwin.plot([0, 0], [0, 0], pen=self.traceCols[ch]) right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Total Duration')) l.setMaximumWidth(100) H.addWidget(l) self.TMAXtext = utils.lineEdit(40, self.TMAX, 6, None) H.addWidget(self.TMAXtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Measure every')) l.setMaximumWidth(100) H.addWidget(l) self.TGAPtext = utils.lineEdit(40, self.TGAP, 6, None) H.addWidget(self.TGAPtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) for ch in range(self.MAXCHAN): H = QHBoxLayout() H.setAlignment(Qt.AlignLeft) self.chanSelCB[ch] = QCheckBox() #self.chanSelCB[ch].stateChanged.connect(partial (self.select_channel,ch)) H.addWidget(self.chanSelCB[ch]) l = QLabel(text='<font color="%s">%s' % (self.htmlColors[ch], self.sources[ch])) l.setMaximumWidth(30) l.setMinimumWidth(30) H.addWidget(l) right.addLayout(H) self.chanSelCB[0].setChecked(True) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text=self.tr('')) full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware try: self.p.select_range('A1', 4.0) self.p.configure_trigger(0, 'A1', 0) except: pass self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Time (mS)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Voltage (V)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.TMIN, self.TMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Duration')) l.setMaximumWidth(80) H.addWidget(l) self.TMAXtext = utils.lineEdit(40, self.TMAX, 6, None) H.addWidget(self.TMAXtext) l = QLabel(text=self.tr('Seconds')) l.setMaximumWidth(60) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Analyze last Trace")) right.addWidget(b) b.clicked.connect(self.fit_curve) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)
def __init__(self, device=None): QWidget.__init__(self) self.p = device # connection to the device hardware self.traceCols = utils.makeTraceColors() self.pwin = pg.PlotWidget() # pyqtgraph window self.pwin.showGrid(x=True, y=True) # with grid ax = self.pwin.getAxis('bottom') ax.setLabel(self.tr('Frequency (Hz)')) ax = self.pwin.getAxis('left') ax.setLabel(self.tr('Amplitude (V)')) self.pwin.disableAutoRange() self.pwin.setXRange(self.FMIN, self.FMAX) self.pwin.setYRange(self.VMIN, self.VMAX) self.pwin.hideButtons() # Do not show the 'A' button of pg right = QVBoxLayout() # right side vertical layout right.setAlignment(Qt.AlignTop) right.setSpacing(self.RPGAP) H = QHBoxLayout() l = QLabel(text=self.tr('Starting')) l.setMaximumWidth(80) H.addWidget(l) self.AWGstart = utils.lineEdit(60, self.FMIN, 6, None) H.addWidget(self.AWGstart) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(30) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Ending')) l.setMaximumWidth(80) H.addWidget(l) self.AWGstop = utils.lineEdit(60, self.FMAX, 6, None) H.addWidget(self.AWGstop) l = QLabel(text=self.tr('Hz')) l.setMaximumWidth(30) H.addWidget(l) right.addLayout(H) H = QHBoxLayout() l = QLabel(text=self.tr('Total time')) l.setMaximumWidth(80) H.addWidget(l) self.totalTimeW = utils.lineEdit(60, 20, 6, None) H.addWidget(self.totalTimeW) l = QLabel(text=self.tr('Sec')) l.setMaximumWidth(30) H.addWidget(l) right.addLayout(H) b = QPushButton(self.tr("Start")) right.addWidget(b) b.clicked.connect(self.start) H = QHBoxLayout() self.updateLabel = QLabel(text='') self.updateLabel.setMaximumWidth(200) H.addWidget(self.updateLabel) right.addLayout(H) b = QPushButton(self.tr("Stop")) right.addWidget(b) b.clicked.connect(self.stop) b = QPushButton(self.tr("Clear Traces")) right.addWidget(b) b.clicked.connect(self.clear) self.SaveButton = QPushButton(self.tr("Save Data")) self.SaveButton.clicked.connect(self.save_data) right.addWidget(self.SaveButton) #------------------------end of right panel ---------------- top = QHBoxLayout() top.addWidget(self.pwin) top.addLayout(right) full = QVBoxLayout() full.addLayout(top) self.msgwin = QLabel(text='') full.addWidget(self.msgwin) self.setLayout(full) self.timer = QTimer() self.timer.timeout.connect(self.update) self.timer.start(self.TIMER)