Skip to content
Snippets Groups Projects
Commit f92bc1c4 authored by Alexandros Asonitis's avatar Alexandros Asonitis
Browse files

first version of ADU

parent 56e91355
No related branches found
No related tags found
No related merge requests found
%% Cell type:code id:6defdb49-06c2-469d-beb5-bc2e147e3f79 tags:
``` python
%run ADU.py
```
%% Output
%% Cell type:code id:3da7c505-85a3-45e9-853e-86a9c9e30569 tags:
``` python
print(device.error())
```
%% Output
+0,"No error"
%% Cell type:code id:ed84d07f-5703-455f-b2ff-32bf82dd910c tags:
%% Cell type:code id:4cc299fe-beda-4863-9e0f-5a6d975c932d tags:
``` python
```
......
from interface import *
from help import *
from measurements_new import *
import configparser
# Create the grids
......@@ -38,7 +39,10 @@ print()
button = widgets.Button(description ='Start Measurement')
output = widgets.Output()
all_widgets =[button,transfer_check,integration_transfer,output_check,integration_output,gatediode_check,integration_gatediode,test_contacts]
export_ini_button = widgets.Button(description = 'Export as ini')
import_ini_button = widgets.Button(description='Import from ini')
all_widgets =[button,transfer_check,integration_transfer,output_check,integration_output,gatediode_check,integration_gatediode,test_contacts,export_ini_button,import_ini_button]
add_widgets_to_list(sample,all_widgets)
add_widgets_to_list(Vds_transfer,all_widgets)
......@@ -47,8 +51,8 @@ add_widgets_to_list(Vds_output,all_widgets)
add_widgets_to_list(Vgs_output,all_widgets)
add_widgets_to_list(Vgs_gatediode,all_widgets)
display(button,output)
line = widgets.HBox([button,import_ini_button,export_ini_button])
display(line,output)
device = hp4155a.HP4155a('GPIB0::17::INSTR')
def on_start_clicked(b):
......@@ -226,8 +230,96 @@ def on_start_clicked(b):
information_box("Measurement finished!")
enable_widgets(all_widgets)
def on_export_ini_clicked(b):
with output:
disable_widgets(all_widgets)
config = configparser.ConfigParser()
default_filename = 'ADU.ini'
file = save_as_ini(default_filename)
with open(file,'w') as configfile:
config.add_section('ALL VALUES ARE IN SI-UNITS!')
config.add_section('IT IS RECOMMENDED TO CHANGE THE INI FILE FROM THE INTERFACE AND DO NOT CHANGE ANY VALUES MANUALLY')
config.add_section('Transfer')
config.set('Transfer','Integration',integration_transfer.value)
config.add_section("Vgs_transfer")
for parameter,widget in Vgs_transfer.items():
config.set('Vgs_transfer',parameter,str(widget.value))
config.add_section('Vds_transfer')
for parameter,widget in Vds_transfer.items():
config.set('Vds_transfer',parameter,str(widget.value))
config.add_section('Output')
config.set('Output','Integration',integration_output.value)
config.add_section("Vgs_output")
for parameter,widget in Vgs_output.items():
config.set('Vgs_output',parameter,str(widget.value))
config.add_section('Vds_output')
for parameter,widget in Vds_output.items():
config.set('Vds_output',parameter,str(widget.value))
config.add_section('Gatediode')
config.set('Gatediode','Integration',integration_gatediode.value)
config.add_section("Vgs_gatediode")
for parameter,widget in Vgs_gatediode.items():
config.set('Vgs_gatediode',parameter,str(widget.value))
config.write(configfile)
enable_widgets(all_widgets)
def on_import_ini_clicked(b):
with output:
disable_widgets(all_widgets)
#load values to the interface
config = configparser.ConfigParser()
file = load_ini()
#print(file)
#read the values from each section
try:
config.read(file)
#transfer curve
integration_transfer.value = config.get('Transfer', "integration")
for parameter,widget in Vgs_transfer.items():
widget.value = config.get('Vgs_transfer',parameter)
for parameter,widget in Vds_transfer.items():
widget.value = config.get('Vds_transfer',parameter)
#output curve
integration_output.value = config.get('Output','integration')
for parameter,widget in Vgs_output.items():
widget.value = config.get('Vgs_output',parameter)
for parameter,widget in Vds_output.items():
widget.value = config.get('Vds_output',parameter)
# gatediode
integration_gatediode.value = config.get('Gatediode','integration')
for parameter,widget in Vgs_gatediode.items():
widget.value = config.get('Vgs_gatediode',parameter)
information_box("all parameters loaded succesfully")
except Exception as error:
if type(error).__name__ =='NoSectionError':
information_box(f"{error}.Explanation: Section(header) [section] does not exist. Create a new ini file or compare it with functional ini files!")
elif type(error).__name__=='NoOptionError':
information_box(f'{error}.Explanation: The variable name before the equal sign is not recognized. Create a new ini file or compare it with functional ini files!')
elif type(error).__name__ == 'TraitError':
information_box(f'{error}.Explanation: Invalid Parameter Setting. Check if you set an invalid value!')
elif type(error).__name__ =="DuplicateOptionError":
information_box(f"{error}. Explaination: The section contains the setted parameter more than once!")
else:
information_box(f"A {type(error).__name__} has occurred. Create A new ini file")
enable_widgets(all_widgets)
button.on_click(on_start_clicked)
#link the new widgets
import_ini_button.on_click(on_import_ini_clicked)
export_ini_button.on_click(on_export_ini_clicked)
......
%% Cell type:code id:910776b3-e909-40e6-88b4-586ff7e48285 tags:
``` python
from interface import *
from help import *
import configparser
# Create the grids
#create the information grid
style = {'description_width': 'initial'}
sample = information_grid()
###end of sampling information#######################################
test_contacts=widgets.Checkbox(description = "Test of the Contacts",value = True,indent = False)
display(test_contacts)
print()
#transfer
transfer_check,integration_transfer = header('Transfer Curve')
Vds_transfer = secondary('Vds',0.1,0.45,1,0.1)
Vgs_transfer = primary('Vgs',2,-0.05,-8,0.01)
print()
print()
#output
output_check,integration_output = header('Output Curve')
Vds_output = primary('Vds',0,0.1,15,0.1)
Vgs_output = secondary('Vgs',2,-1,-8,0.01)
print()
print()
#GateDiodde
gatediode_check,integration_gatediode=header('Gatediode')
Vgs_gatediode=primary('Vgs',-8,0.05,2,0.02)
print()
print()
# the button
button = widgets.Button(description ='Start Measurement')
output = widgets.Output()
all_widgets =[button,transfer_check,integration_transfer,output_check,integration_output,gatediode_check,integration_gatediode,test_contacts]
add_widgets_to_list(sample,all_widgets)
add_widgets_to_list(Vds_transfer,all_widgets)
add_widgets_to_list(Vgs_transfer,all_widgets)
add_widgets_to_list(Vds_output,all_widgets)
add_widgets_to_list(Vgs_output,all_widgets)
add_widgets_to_list(Vgs_gatediode,all_widgets)
export_ini_button = widgets.Button(description = 'Export as ini')
load_ini_button = widgets.Button(description='Load from ini')
import_ini_button = widgets.Button(description='Import from ini')
line = widgets.HBox([button,load_ini_button,export_ini_button])
line = widgets.HBox([button,import_ini_button,export_ini_button])
display(line,output)
```
%% Output
%% Cell type:code id:c3ff3040-e3fa-4ec6-a02b-81c3f4ec7f35 tags:
``` python
config = configparser.ConfigParser()
default_filename = 'ADU.ini'
file = save_as_ini(default_filename)
with open(file,'w') as configfile:
config.add_section('ALL VALUES ARE IN SI-UNITS!')
config.add_section('IT IS RECOMMENDED TO CHANGE THE INI FILE FROM THE INTERFACE AND DO NOT CHANGE ANY VALUES MANUALLY')
config.add_section('Transfer')
config.set('Transfer','Integration',integration_transfer.value)
config.add_section("Vgs_transfer")
for parameter,widget in Vgs_transfer.items():
config.set('Vgs_transfer',parameter,str(widget.value))
config.add_section('Vds_transfer')
for parameter,widget in Vds_transfer.items():
config.set('Vds_transfer',parameter,str(widget.value))
config.add_section('Output')
config.set('Output','Integration',integration_output.value)
config.add_section("Vgs_output")
for parameter,widget in Vgs_output.items():
config.set('Vgs_output',parameter,str(widget.value))
config.add_section('Vds_output')
for parameter,widget in Vds_output.items():
config.set('Vds_output',parameter,str(widget.value))
config.add_section('Gatediode')
config.set('Gatediode','Integration',integration_gatediode.value)
config.add_section("Vgs_gatediode")
for parameter,widget in Vgs_gatediode.items():
config.set('Vgs_gatediode',parameter,str(widget.value))
config.write(configfile)
```
%% Cell type:code id:a13c06d4-3cbf-460a-8583-908442e6446b tags:
``` python
#load values to the interface
config = configparser.ConfigParser()
file = load_ini()
print(file)
#read the values from each section
try:
config.read(file)
#transfer curve
integration_transfer.value = config.get('Transfer', "integration")
for parameter,widget in Vgs_transfer.items():
widget.value = config.get('Vgs_transfer',parameter)
for parameter,widget in Vds_transfer.items():
widget.value = config.get('Vds_transfer',parameter)
#output curve
integration_output.value = config.get('Output','integration')
for parameter,widget in Vgs_output.items():
widget.value = config.get('Vgs_output',parameter)
for parameter,widget in Vds_output.items():
widget.value = config.get('Vds_output',parameter)
# gatediode
integration_gatediode.value = config.get('Gatediode','integration')
for parameter,widget in Vgs_gatediode.items():
widget.value = config.get('Vgs_gatediode',parameter)
information_box("all parameters loaded succesfully")
except Exception as error:
if type(error).__name__ =='NoSectionError':
information_box(f"{error}.Explanation: Section(header) [section] does not exist. Create a new ini file or compare it with functional ini files!")
elif type(error).__name__=='NoOptionError':
information_box(f'{error}.Explanation: The variable name before the equal sign is not recognized. Create a new ini file or compare it with functional ini files!')
elif type(error).__name__ == 'TraitError':
information_box(f'{error}.Explanation: Invalid Parameter Setting. Check if you set an invalid value!')
elif type(error).__name__ =="DuplicateOptionError":
information_box(f"{error}. Explaination: The section contains the setted parameter more than once!")
else:
information_box(f"A {type(error).__name__} has occurred. Create A new ini file")
```
%% Output
//fileserver.cst.rwth-aachen.de/public/Datentransfer/Asonitis, Alexandros/ADU Measurement/ADU_default_ini.ini
//FILESERVER/public/Datentransfer/Asonitis, Alexandros/ADU Measurement/ADU_default_ini.ini
%% Cell type:code id:abbb2987-2104-47e1-ab13-671163fe0d03 tags:
``` python
def on_save_as_ini_clicked(b):
def on_export_ini_clicked(b):
with output:
config = configparser.ConfigParser()
default_filename = 'ADU.ini'
file = save_as_ini(default_filename)
with open(file,'w') as configfile:
config.add_section('ALL VALUES ARE IN SI-UNITS!')
config.add_section('IT IS RECOMMENDED TO CHANGE THE INI FILE FROM THE INTERFACE AND DO NOT CHANGE ANY VALUES MANUALLY')
config.add_section('Transfer')
config.set('Transfer','Integration',integration_transfer.value)
config.add_section("Vgs_transfer")
for parameter,widget in Vgs_transfer.items():
config.set('Vgs_transfer',parameter,str(widget.value))
config.add_section('Vds_transfer')
for parameter,widget in Vds_transfer.items():
config.set('Vds_transfer',parameter,str(widget.value))
config.add_section('Output')
config.set('Output','Integration',integration_output.value)
config.add_section("Vgs_output")
for parameter,widget in Vgs_output.items():
config.set('Vgs_output',parameter,str(widget.value))
config.add_section('Vds_output')
for parameter,widget in Vds_output.items():
config.set('Vds_output',parameter,str(widget.value))
config.add_section('Gatediode')
config.set('Gatediode','Integration',integration_gatediode.value)
config.add_section("Vgs_gatediode")
for parameter,widget in Vgs_gatediode.items():
config.set('Vgs_gatediode',parameter,str(widget.value))
config.write(configfile)
```
%% Cell type:code id:604304e4-0428-4147-82f7-81d7585f4826 tags:
``` python
def on_load_ini_clicked(b):
def on_import_ini_clicked(b):
with output:
#load values to the interface
config = configparser.ConfigParser()
file = load_ini()
print(file)
#read the values from each section
try:
config.read(file)
#transfer curve
integration_transfer.value = config.get('Transfer', "integration")
for parameter,widget in Vgs_transfer.items():
widget.value = config.get('Vgs_transfer',parameter)
for parameter,widget in Vds_transfer.items():
widget.value = config.get('Vds_transfer',parameter)
#output curve
integration_output.value = config.get('Output','integration')
for parameter,widget in Vgs_output.items():
widget.value = config.get('Vgs_output',parameter)
for parameter,widget in Vds_output.items():
widget.value = config.get('Vds_output',parameter)
# gatediode
integration_gatediode.value = config.get('Gatediode','integration')
for parameter,widget in Vgs_gatediode.items():
widget.value = config.get('Vgs_gatediode',parameter)
information_box("all parameters loaded succesfully")
except Exception as error:
if type(error).__name__ =='NoSectionError':
information_box(f"{error}.Explanation: Section(header) [section] does not exist. Create a new ini file or compare it with functional ini files!")
elif type(error).__name__=='NoOptionError':
information_box(f'{error}.Explanation: The variable name before the equal sign is not recognized. Create a new ini file or compare it with functional ini files!')
elif type(error).__name__ == 'TraitError':
information_box(f'{error}.Explanation: Invalid Parameter Setting. Check if you set an invalid value!')
elif type(error).__name__ =="DuplicateOptionError":
information_box(f"{error}. Explaination: The section contains the setted parameter more than once!")
else:
information_box(f"A {type(error).__name__} has occurred. Create A new ini file")
```
%% Cell type:code id:68e5b5b2-05ae-4663-b852-71461c4f3a14 tags:
``` python
#link the new widgets
load_ini_button.on_click(on_load_ini_clicked)
export_ini_button.on_click(on_save_as_ini_clicked)
import_ini_button.on_click(on_import_ini_clicked)
export_ini_button.on_click(on_export_ini_clicked)
```
%% Cell type:code id:ead27287-c6b0-46f4-b974-3f28c957966f tags:
``` python
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment