Macro ImageColorCoding() Test() End Function Test() Variable sidx_status sidx_status = CameraOpen() if (sidx_status != 0) return 0 endif sidx_status = CameraSetUp() if (sidx_status != 0) CameraClose() return 0 endif printf "Starting acquisition. Press the Esc key to terminate the acquisition\r" sidx_status = CameraAcquire() if (sidx_status != 0) CameraClose() return 0 endif CameraClose() End Static Function CameraClose() Variable sidx_status NVAR /Z sidx_acquire_local = root:sidx_acquire if (NVAR_Exists(sidx_acquire_local)) if (sidx_acquire_local != 0) SIDXAcquireClose sidx_acquire_local, sidx_status sidx_acquire_local = 0 endif endif NVAR /Z sidx_camera_local = root:sidx_camera if (NVAR_Exists(sidx_camera_local)) if (sidx_camera_local != 0) SIDXCameraClose sidx_camera_local, sidx_status sidx_camera_local = 0 endif endif NVAR /Z sidx_root_local = root:sidx_root if (NVAR_Exists(sidx_root_local)) if (sidx_root_local != 0) SIDXRootClose sidx_root_local, sidx_status sidx_root_local = 0 endif endif End Static Function CameraOpen() Variable sidx_status Variable sidx_root_local String sidx_license = "" SIDXRootOpen sidx_root_local, sidx_license, sidx_status if (sidx_status != 0) printf "SIDXRootOpen failed\r" return sidx_status endif SIDXRootCameraScan sidx_root_local, sidx_status if (sidx_status != 0) ErrorSIDXRoot(sidx_root_local, "SIDXRootCameraScan") SIDXRootClose sidx_root_local, sidx_status return sidx_status endif Variable sidx_camera_index = 0 String sidx_camera_name = "" SIDXRootCameraScanGetName sidx_root_local, sidx_camera_index, sidx_camera_name, sidx_status if (sidx_status != 0) ErrorSIDXRoot(sidx_root_local, "SIDXRootCameraScanGetName") SIDXRootClose sidx_root_local, sidx_status return sidx_status endif Variable sidx_camera_local SIDXRootCameraOpenName sidx_root_local, sidx_camera_name, sidx_camera_local, sidx_status if (sidx_status != 0) ErrorSIDXRoot(sidx_root_local, "SIDXRootCameraOpenName") SIDXRootClose sidx_root_local, sidx_status return sidx_status endif Variable/G sidx_root = sidx_root_local Variable/G sidx_camera = sidx_camera_local return sidx_status End Static Function CameraSetUp() Variable sidx_status NVAR sidx_camera_local = root:sidx_camera // Set the buffered image count for acquisition. SIDXCameraBufferCountSet sidx_camera_local, 50, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraBufferCountSet") return sidx_status endif SIDXCameraExposeSet sidx_camera_local, 0.001, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraExposeSet") endif SIDXCameraAcquireImageSetLimit sidx_camera_local, 0, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraAcquireImageSetLimit") return sidx_status endif Variable sidx_pixel_rate Variable sidx_pixel_depth SIDXCameraReadoutGetValue sidx_camera_local, sidx_pixel_rate, sidx_pixel_depth, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraReadoutGetValue") return sidx_status endif Variable sidx_image_scale_factor_local sidx_image_scale_factor_local = 65535 / (2^sidx_pixel_depth - 1) Variable sidx_acquire_local SIDXCameraAcquireOpen sidx_camera_local, sidx_acquire_local, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraAcquireOpen") return sidx_status endif Variable/G sidx_acquire = sidx_acquire_local Variable/G sidx_image_scale_factor = sidx_image_scale_factor_local return sidx_status End Static Function CameraAcquire() NVAR sidx_acquire_local = root:sidx_acquire NVAR sidx_image_scale_factor_local = root:sidx_image_scale_factor Variable sidx_status String sidx_image_name = "SIDXImage" SIDXAcquireStart sidx_acquire_local, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireStart") return sidx_status endif Variable sidx_read_position = 0 Variable sidx_image_count = 0; // The variable specifies the number of images the script to read in one batch from // SIDX. The script is arranged to read out the latest unread set of images into IGOR // 3D wave. Variable sidx_image_group = 3 Variable sidx_acquiring = 1 do Sleep /T 1 Variable keys = GetKeyState(0) if ((keys & 32) != 0) // The escape key is pressed. Terminate the acquisition break; endif SIDXAcquireGetStatus sidx_acquire_local, sidx_acquiring, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireGetStatus") break endif SIDXAcquireImageGetCount sidx_acquire_local, sidx_image_count, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireImageGetCount") break endif Variable sidx_new_image_count = sidx_image_count - sidx_read_position Variable sidx_new_group_count = trunc(sidx_new_image_count / sidx_image_group) if (sidx_new_group_count > 0) // Skip any extra groups that have been acquired, processing only the // most recent group. Remove these lines to process each group. sidx_read_position += (sidx_new_group_count - 1) * sidx_image_group SIDXAcquireReadSetPosition sidx_acquire_local, sidx_read_position, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireReadSetPosition") break endif // SIDXAcquireRead creates a new wave with the given name specified in sidx_image_name if // the wave does not exist or has difference dimension SIDXAcquireRead sidx_acquire_local, sidx_image_group, $sidx_image_name, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireRead") break endif // Scale the pixel values to full intensity WAVE sidx_wave = $sidx_image_name sidx_wave *= sidx_image_scale_factor_local CheckDisplayed/A sidx_wave if (V_flag != 0) DoUpdate else Display; AppendImage sidx_wave endif sidx_read_position += sidx_image_group endif while (sidx_acquiring) SIDXAcquireAbort sidx_acquire_local, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireAbort") return sidx_status endif return sidx_status End Static Function ErrorSIDXRoot(sidx_root_local, function_name) Variable sidx_root_local String function_name String message_root = "" Variable status SIDXRootGetLastError sidx_root_local, message_root printf "%s: %s\r", function_name, message_root SIDXRootClose sidx_root_local, status End Static Function ErrorSIDXCamera(sidx_camera_local, function_name) Variable sidx_camera_local String function_name String message_camera = "" Variable status SIDXCameraGetLastError sidx_camera_local, message_camera printf "%s: %s\r", function_name, message_camera End Static Function ErrorSIDXAcquire(sidx_acquire_local, function_name) Variable sidx_acquire_local String function_name String message_acquire = "" Variable status SIDXAcquireGetLastError sidx_acquire_local, message_acquire printf "%s: %s\r", function_name, message_acquire End