Macro QImagingOptiMOSFast() Test() End Function Test() String sidx_image_name = "SIDXImage" 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(sidx_image_name) 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 Variable sidx_exposure = 0.001 SIDXCameraExposeSet sidx_camera_local, sidx_exposure, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraExposeSet") return sidx_status endif Variable sidx_roi_x0 = 0 Variable sidx_roi_y0 = 0 Variable sidx_roi_x1 = 511 Variable sidx_roi_y1 = 511 SIDXCameraROISet sidx_camera_local, sidx_roi_x0, sidx_roi_y0, sidx_roi_x1, sidx_roi_y1, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraROISet") return sidx_status endif Variable sidx_trigger_mode = 0 // Free run // Variable sidx_trigger_mode = 1 // Trigger in, start exposure // Variable sidx_trigger_mode = 3 // Trigger in, start sequence SIDXCameraTriggerModeSet sidx_camera_local, sidx_trigger_mode, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraTriggerModeSet") return sidx_status endif String sidx_setting_name = "ExposeOut" Variable sidx_setting_handle SIDXDeviceExtraGetByName sidx_camera_local, sidx_setting_name, sidx_setting_handle, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXDeviceExtraGetByName") return sidx_status endif Variable sidx_expose_out = 0 // First row // Variable sidx_expose_out = 1 // All rows // Variable sidx_expose_out = 2 // Any row SIDXDeviceExtraListSet sidx_camera_local, sidx_setting_handle, sidx_expose_out, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXDeviceExtraListSet") return sidx_status endif SIDXCameraAcquireImageSetLimit sidx_camera_local, 0, sidx_status if (sidx_status != 0) ErrorSIDXCamera(sidx_camera_local, "SIDXCameraAcquireImageSetLimit") return sidx_status endif 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 return sidx_status End Static Function CameraAcquire(sidx_image_name) String sidx_image_name NVAR sidx_acquire_local = root:sidx_acquire Variable sidx_start_time = ticks Variable sidx_status SIDXAcquireStart sidx_acquire_local, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireStart") return sidx_status endif Variable sidx_previous_image_count = 0 Variable sidx_image_count = 0; 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_previous_image_count if (sidx_new_image_count > 0) // Read the last image for display SIDXAcquireReadSetPosition sidx_acquire_local, sidx_image_count - 1, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireReadSetPosition") break endif SIDXAcquireRead sidx_acquire_local, 1, $sidx_image_name, sidx_status if (sidx_status != 0) ErrorSIDXAcquire(sidx_acquire_local, "SIDXAcquireRead") break endif CheckDisplayed/A $sidx_image_name if (V_flag != 0) DoUpdate else Display; AppendImage $sidx_image_name endif sidx_previous_image_count = sidx_image_count endif while (sidx_acquiring) Variable sidx_end_time = ticks 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