Specific Process Knowledge/Etch/DRIE-Pegasus/Claritas: Difference between revisions

From LabAdviser
Jmli (talk | contribs)
Created page with "<syntaxhighlight lang="python" line> # Let's modify the code to include error handling, loop safeguards, and logging to ensure that the code is more robust and less likely to crash. import logging # Setting up logging to track the execution and identify issues #logging.basicConfig(filename='/FocusWobble.log', level=logging.DEBUG, # format='%(asctime)s - %(levelname)s - %(message)s') from win32com.client import gencache import SEM_API_fix as SEM_AP..."
 
Jmli (talk | contribs)
Blanked the page
Tag: Blanking
Line 1: Line 1:
<syntaxhighlight lang="python" line>


# Let's modify the code to include error handling, loop safeguards, and logging to ensure that the code is more robust and less likely to crash.
import logging
# Setting up logging to track the execution and identify issues
#logging.basicConfig(filename='/FocusWobble.log', level=logging.DEBUG,
#                    format='%(asctime)s - %(levelname)s - %(message)s')
from win32com.client import gencache
import SEM_API_fix as SEM_API
import matplotlib.pyplot as plt
import numpy as np
import time
import math
from imageio import imread
# Imitate focus wobble
def FocusWobble():
    try:
        # Get values
        with SEM_API.SEM_API("remote") as sem:
            wd_get = sem.GetValue("AP_WD")
       
        # Set wobble parameters
        number_of_images = 15
        number_of_overlaps = 1
        wd_percentage_range = 0.002
        # Set image parameters
        #store_resolution = 512 # set *3/4, DP_IMAGE_STORE
        #file_name = "fliptest"
       
        # Set imaging conditions
        with SEM_API.SEM_API("remote") as sem:
            sem.Execute("CMD_UNFREEZE_ALL")
            sem.Execute("CMD_SCANRATE7")
       
        # Loop to capture and save images
        for i in range(number_of_images):
            wd = wd_get * (1 + wd_percentage_range * math.sin(2 * math.pi * i / (number_of_images - number_of_overlaps)))
            logging.info(f"Image {i}: WD={wd}")
            try:
                with SEM_API.SEM_API("remote") as sem:
                    s = sem.SetValue("AP_WD", wd)
                    sem.Execute("CMD_UNFREEZE_ALL")
                    time.sleep(0.5)
                    sem.Execute("CMD_FREEZE_ALL")
                    retries = 0
                    max_retries = 10
                    while sem.GetState("DP_BEAM_BLANKED") == "No":
                        if retries >= max_retries:
                            logging.warning(f"Max retries reached for image {i}, exiting loop.")
                            break
                            #print(retries)
                        time.sleep(1)
                        retries += 1
                    sem.Execute("CMD_TAKE_PHOTO")
            except Exception as e:
                logging.error(f"Error during image capture {i}: {e}")
       
    except Exception as e:
        logging.critical(f"Critical error in FocusWobble: {e}")
# Call the function
#FocusWobble()
number_of_images = 25
wd_get = 4.5
wd_percentage_range= 0.002
number_of_overlaps = 4
for i in range(number_of_images):
    wd = wd_get * (1 + wd_percentage_range * math.sin(2 * math.pi * i / (number_of_images - number_of_overlaps)))
    print(i,wd)
</syntaxhighlight>

Revision as of 12:27, 15 August 2024