Пример #1
0
    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)
Пример #2
0
	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)
Пример #3
0
	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
Пример #4
0
	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)
Пример #5
0
	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()
Пример #6
0
	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)
Пример #7
0
	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)
Пример #8
0
	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)
Пример #9
0
    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)
Пример #10
0
	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)
Пример #11
0
	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)
Пример #12
0
	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)
Пример #13
0
    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)
Пример #14
0
    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)
Пример #15
0
	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)
Пример #16
0
	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)
Пример #17
0
	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)
Пример #18
0
	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)
Пример #19
0
	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)
Пример #20
0
    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'))
Пример #21
0
    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)
Пример #22
0
    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()
Пример #23
0
    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)
Пример #24
0
    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)
Пример #25
0
	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)
Пример #26
0
    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)
Пример #27
0
	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)
Пример #28
0
	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)
Пример #29
0
	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)
Пример #30
0
	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)
Пример #31
0
	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)
Пример #32
0
    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)
Пример #33
0
	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)
Пример #34
0
	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)
Пример #35
0
    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)
Пример #37
0
    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)