Select Git revision
building.cpp
interface.py 8.62 KiB
import ipywidgets as widgets
from ipywidgets import GridspecLayout,Layout, AppLayout,TwoByTwoLayout
import sys
from IPython.display import clear_output
def probendaten():
width = 'auto'
probendaten = GridspecLayout(6,2)
probendaten[0,0] = widgets.Label('Wafer',layout=Layout(height='auto', width = width))
probendaten[0,1] = widgets.Label('Bemerkung',layout=Layout(height='auto', width = width))
probendaten[1,0] = widgets.Text(layout=Layout(height='auto', width = width)) # wafer value
probendaten[1,1] = widgets.Text(layout=Layout(height='auto', width = width)) # Bemerkung value
probendaten[2,0] = widgets.Label('Probe',layout=Layout(height='auto', width = width))
probendaten[3,0] = widgets.Text(layout=Layout(height='auto', width = width)) #probe value
probendaten[4,0] = widgets.Label('Feld',layout=Layout(height='auto', width = width))
probendaten[4,1] = widgets.Label('Temeperatur (K)',layout=Layout(height='auto', width = width))
probendaten[5,0] = widgets.Text(layout=Layout(height='auto', width = width)) # Feld value
probendaten[5,1] = widgets.BoundedFloatText(value = 295,min = 0 ,max = sys.float_info.max,step = 1,layout=Layout(height='auto', width = width)) #Temperatur value
dict = {
'wafer': probendaten[1,0],
'bemerkung':probendaten[1,1],
'probe':probendaten[3,0],
'feld':probendaten[5,0],
'temperatur':probendaten[5,1]
}
tab = widgets.Tab()
tab.children = [probendaten]
tab.set_title(0,'Probendaten')
return tab,dict
def messparameter():
width = 'auto'
messparameter = GridspecLayout(15,1)
messparameter[0,0] = widgets.Label('U_start (V)',layout=Layout(height='auto', width = width))
messparameter[1,0] = widgets.BoundedFloatText(value = 1,min =-40 ,max = 40,step = 1,layout=Layout(height='auto', width = width)) # Start value
messparameter[2,0] = widgets.Label('U_stop (V)',layout=Layout(height='auto', width = width))
messparameter[3,0] = widgets.BoundedFloatText(value = -3,min =-40 ,max = 40,step = 1,layout=Layout(height='auto', width = width)) #stop value
messparameter[4,0] = widgets.Label('Spannungsschritt (V)',layout=Layout(height='auto', width = width))
messparameter[5,0] = widgets.BoundedFloatText(value = 0.05,min =0.01 ,max = 80,step = 0.01,layout=Layout(height='auto', width = width)) #step value
messparameter[6,0] = widgets.Label('Warten im Spannungsschritt (s)',layout=Layout(height='auto', width = width))
messparameter[7,0] = widgets.BoundedFloatText(value = 0,min = 0 ,max = sys.float_info.max,step = 1,layout=Layout(height='auto', width = width)) #sleep value
messparameter[8,0] = widgets.Label('Radius der Teststruktur (um)',layout=Layout(height='auto', width = width))
messparameter[9,0] = widgets.BoundedIntText(value = 50,min = 1 ,max = sys.float_info.max,step = 1,layout=Layout(height='auto', width = width)) #radius value
messparameter[10,0] = widgets.Label('Beobachteter Frequenzpunkt',layout=Layout(height='auto', width = width))
messparameter[11,0] = widgets.BoundedIntText(value = 2,min = 1 ,max = sys.maxsize,step = 1,layout=Layout(height='auto', width = width)) #Frequenzpunkt value
messparameter[12,0] = widgets.Label('Beobachteter Spannungspunkt',layout=Layout(height='auto', width = width))
messparameter[13,0] = widgets.BoundedIntText(value = 20,min = 1 ,max = sys.maxsize,step = 1,layout=Layout(height='auto', width = width)) #Spannungspunkt value
messparameter[14,0] = widgets.Checkbox(description = 'Hysterese messen',value = True, indent = True, style = {'description_width': 'initial'},layout=Layout(height='auto', width = width)) #hysterisis value
dict={
'start':messparameter[1,0],
'stop':messparameter[3,0],
'step':messparameter[5,0],
'sleep':messparameter[7,0],
'radius':messparameter[9,0],
'frequenzpunkt':messparameter[11,0],
'spannungspunkt':messparameter[13,0],
'hysterese':messparameter[14,0]
}
tab = widgets.Tab()
tab.children = [messparameter]
tab.set_title(0,'Messparameter')
return tab,dict
def sweep_parameter():
width = 'auto'
sweep_parameter= GridspecLayout(12,2)
#title
#first column
sweep_parameter[0,0] = widgets.Label('Anzahl Frequenzpunkte',layout=Layout(height='auto', width = width))
sweep_parameter[1,0] = widgets.BoundedFloatText(value = 4,min =1 ,max = 401,step = 1,layout=Layout(height='auto', width = width)) # Anzahl Frequenzpunkte
sweep_parameter[2,0] = widgets.Label('f_start (Hz)',layout=Layout(height='auto', width = width))
sweep_parameter[3,0] = widgets.BoundedFloatText(value=100000,min = 100, max = 40e6,step = 100,layout=Layout(height='auto', width = width)) #start frequency
sweep_parameter[4,0] = widgets.Label('f_stop (Hz)',layout=Layout(height='auto', width = width))
sweep_parameter[5,0] = widgets.BoundedFloatText(value=1000000,min = 100, max = 40e6,step = 100,layout=Layout(height='auto', width = width)) #stop frequency
sweep_parameter[6,0] = widgets.Label('OSC Level (V)',layout=Layout(height='auto', width = width))
sweep_parameter[7,0] = widgets.BoundedFloatText(value=0.05,min = 10e-3, max = 1,step = 1e-3,layout=Layout(height='auto', width = width)) # Osc level
sweep_parameter[8,0] = widgets.Label('Sweep Type',layout=Layout(height='auto', width = width))
sweep_parameter[9,0] = widgets.RadioButtons(options = ['Logarithmic','Linear'],value = 'Linear',layout = Layout(height='auto', width = width)) #sweep type
sweep_parameter[10,0] = widgets.Label('Integration Time',layout=Layout(height='auto', width = width))
sweep_parameter[11,0] = widgets.Dropdown(options = ['Short','Medium','Long'],value = 'Medium',layout = Layout(height='auto', width = width)) # Integration time
#second column
sweep_parameter[0,1] = widgets.Label('Delay Time (ms)',layout=Layout(height='auto', width = width))
sweep_parameter[1,1] = widgets.BoundedFloatText(value = 0,min =0 ,max = 3.6e6,step = 1,layout=Layout(height='auto', width = width)) # delay time
sweep_parameter[2,1] = widgets.Label('Delay Aperture (%)',layout=Layout(height='auto', width = width))
sweep_parameter[3,1] = widgets.BoundedFloatText(value=0.5,min = 0.5, max = 100,step = 0.1,layout=Layout(height='auto', width = width)) #delay aperture
# Now continue next to sweep type
sweep_parameter[8,1] = widgets.Label('Sweep Direction',layout=Layout(height='auto', width = width))
sweep_parameter[9,1] = widgets.RadioButtons(options = ['Up','Down'],value = 'Up',layout = Layout(height='auto', width = width)) #sweep direction
sweep_parameter[10,1] = widgets.Label('Averaging Number',layout=Layout(height='auto', width = width))
sweep_parameter[11,1] = widgets.FloatLogSlider(value=4,base=2,min=0,max=8, step=1,layout = Layout(height='auto', width = width))# Averaging
dict = {
'nop': sweep_parameter[1,0],
'start': sweep_parameter[3,0],
'stop': sweep_parameter[5,0],
'osc': sweep_parameter[7,0],
'type': sweep_parameter[9,0],
'integration': sweep_parameter[11,0],
'd_time': sweep_parameter[1,1],
'd_apperture': sweep_parameter[3,1],
'direction': sweep_parameter[9,1],
'averaging': sweep_parameter[11,1]
}
tab = widgets.Tab()
tab.children = [sweep_parameter]
tab.set_title(0,'Sweep Parameter')
return tab,dict
def control_panel():
width = 'auto'
control_panel = GridspecLayout(6,2)
control_panel[0,0] = widgets.Button(description = "Start Measurement",layout=Layout(height='auto', width = width))
control_panel[0,1] = widgets.Button(description = "Start Calibration",layout=Layout(height='auto', width = width))
control_panel[1,0] = widgets.Label("U-Punkt",layout=Layout(height='auto', width = width))
control_panel[1,1] = widgets.Label("f-Punkt",layout=Layout(height='auto', width = width))
for j in range(2):
control_panel[2,j]= widgets.Text(disabled = True,layout=Layout(height='auto', width = width))
control_panel[3,0] = widgets.Label("Aktuelle Spannung",layout=Layout(height='auto', width = width))
control_panel[4,0] = widgets.Text(disabled = True,layout=Layout(height='auto', width = width))
control_panel[4,1] = widgets.Checkbox(description = 'Clear Graphs',value = True,indent = False,layout=Layout(height='auto', width = width))
measure = control_panel[0,0]
calibrate = control_panel[0,1]
clear_graphs = control_panel[4,1]
view = {
'u-point': control_panel[2,0],
'f-point': control_panel[2,1],
'u-value':control_panel[4,0]
}
return control_panel,measure,calibrate,clear_graphs,view