From c9384d5e7d7bdf09ae7366175f61359292a446d3 Mon Sep 17 00:00:00 2001
From: unknown <asoalexandros@gmail.com>
Date: Fri, 14 Mar 2025 13:55:04 +0100
Subject: [PATCH] Interface for Custom Smu Programming

---
 hp4155/Custom_SMU/interface.py         | 103 +++++++++++++++++++++++--
 hp4155/Custom_SMU/main.py              |   7 +-
 hp4155/Custom_SMU/test_interface.ipynb |   8 +-
 3 files changed, 105 insertions(+), 13 deletions(-)

diff --git a/hp4155/Custom_SMU/interface.py b/hp4155/Custom_SMU/interface.py
index 4cf5c43..f4ca99c 100644
--- a/hp4155/Custom_SMU/interface.py
+++ b/hp4155/Custom_SMU/interface.py
@@ -67,7 +67,81 @@ def page_2():
 
 #parameters setting
 def page_3():
-    pass 
+    third_page = GridspecLayout(24,5)
+
+    # First Line
+    third_page[0,0]=widgets.Dropdown(options = ['SWEEP','SAMPLING',"STRESS"], value = 'SWEEP',description ="MEASUREMENT MODE",layout=Layout(height='auto', width='auto'),style = {'description_width': 'initial'}) 
+    third_page[0,1] = widgets.Dropdown(options = ['SHORt','MEDium','LONG'], value = 'MEDium',description ="INTEGRATION TIME",layout=Layout(height='auto', width='auto'),style = {'description_width': 'initial'})
+    third_page[0,2] = widgets.FloatText(0, description = "STRESS DURATION",layout=Layout(height='auto', width='auto'),style = {'description_width': 'initial'})
+
+    # Second Line
+    third_page[2,:] = widgets.Label("SWEEP SETUP",layout=Layout(height='auto', width='auto'))
+
+    # Third Line
+    third_page[3,0] = widgets.Label("VAR1",layout=Layout(height='auto', width='auto'))
+    third_page[3,1] = widgets.Label("VAR2",layout=Layout(height='auto', width='auto'))
+    third_page[3,2] = widgets.Label("VAR1'",layout=Layout(height='auto', width='auto'))
+    third_page[3,3] = widgets.Label("SMU PULSE",layout=Layout(height='auto', width='auto'))
+
+    # Fourth Line
+    third_page[4,0] = widgets.FloatText(0, description = 'START',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[4,1] = widgets.FloatText(0, description = 'START',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[4,2] = widgets.FloatText(description = 'OFFSET',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[4,3] = widgets.FloatText(description = 'PERIOD',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+
+    # Fifth line
+    third_page[5,0] = widgets.FloatText(5,description = 'STOP',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[5,1] = widgets.FloatText(500e-6, description = 'STOP',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[5,2] = widgets.FloatText(description = 'RATIO',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[5,3] = widgets.FloatText(description = 'WIDTH',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+
+    # Sixth Line
+    third_page[6,0] = widgets.FloatText(0.1,description = 'STEP',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[6,1] = widgets.FloatText(6,description = 'NO OF STEPS',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    #skip 5,2
+    third_page[6,3] = widgets.FloatText(5,description = 'BASE',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+
+    #Seventh Line
+    third_page[7,0] = widgets.FloatText(100e-3,description = 'COMPLIANCE',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[7,1] = widgets.FloatText(5,description = 'COMPLIANCE',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[7,2] = widgets.FloatText(description = 'COMPLIANCE',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    #no more pulse
+
+    # Eighth Line
+    third_page[8,0] = widgets.FloatText(0,description = 'POWER COMP',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[8,1] = widgets.FloatText(0,description = 'POWER COMP',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[8,2] = widgets.FloatText(description = 'POWER COMP',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+
+    third_page[9,0] = widgets.Checkbox(False,description = 'HYSTERISIS',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+
+    ## Sampling Parameters
+    third_page[11,:] = widgets.Label("SAMPLING PARAMETERS")    
+    third_page[12,0] = widgets.Dropdown(options=["LINEAR","LOG10","LOG25","LOG50","THINNED-OUT"], value = 'LINEAR',description = 'MODE',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[13,0] = widgets.FloatText(1e-3,description = "INITIAL INTERVAL", style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[14,0] = widgets.IntText(1001,description = "NO. OF SAMPLES", style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[15,0] = widgets.FloatText(0,description = "TOTAL SAMP. TIME", style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[16,0] = widgets.FloatText(0,description = "HOLD TIME", style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    third_page[17,0] = widgets.Checkbox(True,description = "FILTER", style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+
+
+    # Set constant SMU for all measurement in case they are not disabled
+
+    third_page[19,:] = widgets.Label("CONSTANT",layout=Layout(height='auto', width='auto'))
+    third_page[20,0] = widgets.Label("UNIT",layout=Layout(height='auto', width='auto'))
+    third_page[20,1] = widgets.Label("SMU1",layout=Layout(height='auto', width='auto'))
+    third_page[20,2] = widgets.Label("SMU2",layout=Layout(height='auto', width='auto'))
+    third_page[20,3] = widgets.Label("SMU3",layout=Layout(height='auto', width='auto'))
+    third_page[20,4] = widgets.Label("SMU4",layout=Layout(height='auto', width='auto'))
+
+    third_page[21,0] = widgets.Label("SOURCE",layout=Layout(height='auto', width='auto'))
+    third_page[22,0] = widgets.Label("COMPLIANCE",layout=Layout(height='auto', width='auto'))
+
+    for i in range(21,23):
+        for j in range(1,5):
+            third_page[i,j] = widgets.FloatText(layout=Layout(height='auto', width='auto'))    
+
+    return third_page
+    
 
 #display variables
 def page_4():
@@ -92,17 +166,36 @@ def page_4():
     #Iterate through the third line (scale) 
     options_scale = ['LIN','LOG']
     for j in range(1,4):
-        fourth_page[2,j] = widgets.Dropdown(value = 'LIN',options = options_scale, layout=Layout(height='auto', width='auto'))
+        fourth_page[2,j] = widgets.Dropdown(value = 'LIN',options = options_scale, layout=Layout(height='auto', width='auto'),)
 
     #iterate throuh the last 2 lines(min-max)
     for j in range(1,4):
         fourth_page[3,j] = widgets.FloatText(value = 0) #min
 
-    fourth_page[3,1]=widgets.FloatText(value = 1) #max X-axis
-    fourth_page[3,2]=widgets.FloatText(value = 0.1) #max Y1-axis
-    fourth_page[3,3]=widgets.FloatText(value = 0) #max Y2-axis
+    fourth_page[4,1]=widgets.FloatText(value = 1) #max X-axis
+    fourth_page[4,2]=widgets.FloatText(value = 0.1) #max Y1-axis
+    fourth_page[4,3]=widgets.FloatText(value = 0) #max Y2-axis
 
     return fourth_page
+
+
+def page_5():
+    fifth_page = GridspecLayout(14,2)
+
+    fifth_page[0,0] = widgets.Text(description = 'MEASUREMENT NAME',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    fifth_page[1,0] = widgets.Text(description ='PROCESSING NR.',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto')) 
+    fifth_page[2,0] = widgets.Text(description ='SAMPLE SERIES',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+    fifth_page[3,0] = widgets.Text(description ='DUT',style = {'description_width': 'initial'},layout=Layout(height='auto', width='auto'))
+
+    fifth_page[5,0] = widgets.Label("VARIABLES TO SAVE",layout=Layout(height='auto', width='auto'))
+    fifth_page[5,1] = widgets.Label("UNIT",layout=Layout(height='auto', width='auto'))
+    for i in range(8):
+        for j in range(2):
+            fifth_page[6+i,j] = widgets.Text(layout=Layout(height='auto', width='auto'))
+        
+    return fifth_page
+
+
     
     
 
diff --git a/hp4155/Custom_SMU/main.py b/hp4155/Custom_SMU/main.py
index bc6f07c..cddb600 100644
--- a/hp4155/Custom_SMU/main.py
+++ b/hp4155/Custom_SMU/main.py
@@ -3,13 +3,14 @@ from interface import *
 
 first_page = page_1()
 second_page = page_2()
+third_page = page_3()
 fourth_page = page_4()
+fifth_page = page_5()
 
 titles = ["SMUs","User Functions","Parameters","Plotting","Save to file"]
-children = [first_page,second_page,widgets.Label("In Development"),fourth_page,widgets.Label("In Development")]
+children = [first_page,second_page,third_page,fourth_page,fifth_page]
 tab = widgets.Tab()
 tab.children = children
 tab.titles = titles
 
-display(tab)
-
+display(tab)
\ No newline at end of file
diff --git a/hp4155/Custom_SMU/test_interface.ipynb b/hp4155/Custom_SMU/test_interface.ipynb
index 16cc4c4..af848ef 100644
--- a/hp4155/Custom_SMU/test_interface.ipynb
+++ b/hp4155/Custom_SMU/test_interface.ipynb
@@ -3,15 +3,13 @@
   {
    "cell_type": "code",
    "execution_count": 1,
-   "id": "e12d044e-b529-42d5-b240-7c145fa6d715",
-   "metadata": {
-    "jp-MarkdownHeadingCollapsed": true
-   },
+   "id": "a40693da-961a-434d-89f5-6443c0acb517",
+   "metadata": {},
    "outputs": [
     {
      "data": {
       "application/vnd.jupyter.widget-view+json": {
-       "model_id": "f3b2861e3f0d49978e6b74b27d3e72c3",
+       "model_id": "37c4759189624fdca2f917ff3e104299",
        "version_major": 2,
        "version_minor": 0
       },
-- 
GitLab