private static extern ASI_ERROR_CODE ASIGetCameraProperty64(out ASI_CAMERA_INFO pASICameraInfo, int iCameraIndex);
 public static ASI_ERROR_CODE ASIGetCameraProperty(out ASI_CAMERA_INFO pASICameraInfo, int iCameraIndex)
 {
     return(IntPtr.Size == 8 /* 64bit */ ? ASIGetCameraProperty64(out pASICameraInfo, iCameraIndex) : ASIGetCameraProperty32(out pASICameraInfo, iCameraIndex));
 }
Beispiel #3
0
        public static Result ScanASICameras(List <ICamera> cameraList)
        {
            int            camera_count   = 0;
            ASI_ERROR_CODE asi_error_code = ASI_ERROR_CODE.ASI_SUCCESS;

            try
            {
                camera_count = ASIGetNumOfConnectedCameras();
            }
            catch (Exception e)
            {
                var message = "Failed to ASIGetNumOfConnectedCameras.";
                Log.Error(message, e);
                return(new Result(ErrorCode.OperationFailed, message, e));
            }

            if (camera_count == 0)
            {
                return(new Result("No ASI Camera Found"));
            }

            for (int i = 0; i < camera_count; i++)
            {
                var       cameraID       = i;
                var       pASICameraInfo = new ASI_CAMERA_INFO();
                Exception exception      = null;

                try
                {
                    asi_error_code = ASIGetCameraProperty(out pASICameraInfo, i);
                }
                catch (Exception e)
                {
                    exception = e;
                }
                if (exception != null || asi_error_code != ASI_ERROR_CODE.ASI_SUCCESS)
                {
                    string message = string.Format("Failed to ASIGetCameraProperty for CameraID {0}, ASI_ERROR_CODE {1}", i, asi_error_code.ToString());
                    Log.Error(message, exception);
                    break;
                }

                var cameraInfo = new CameraInfo
                {
                    DisplayName          = pASICameraInfo.Name,
                    SDKType              = CameraSDKType.ASI,
                    IsColorCamera        = pASICameraInfo.IsColorCam == ASI_BOOL.ASI_TRUE,
                    BayerPattern         = GetASIBayerPattern(pASICameraInfo.BayerPattern),
                    SupportBins          = pASICameraInfo.SupportedBins,
                    CanCool              = pASICameraInfo.IsCoolerCam == ASI_BOOL.ASI_TRUE,
                    HasMechanicalShutter = pASICameraInfo.MechanicalShutter == ASI_BOOL.ASI_TRUE,
                    HasST4Port           = pASICameraInfo.ST4Port == ASI_BOOL.ASI_TRUE,
                    IsUSB3Host           = pASICameraInfo.IsUSB3Host == ASI_BOOL.ASI_TRUE,
                    IsUSB3Camera         = pASICameraInfo.IsUSB3Camera == ASI_BOOL.ASI_TRUE,
                    PixelSize            = Convert.ToInt32(pASICameraInfo.PixelSize * 1000),
                    ElecPerADU           = Convert.ToInt32(pASICameraInfo.ElecPerADU * 1000000),
                    MaxHeight            = pASICameraInfo.MaxHeight,
                    MaxWeight            = pASICameraInfo.MaxWidth
                };

                var camera = new ASICamera(cameraID, cameraInfo);
                cameraList.Add(camera);

                Log.InfoFormat("Found ASI Camera {0}, CameraID {1}", cameraInfo.DisplayName, cameraID);
            }

            return(new Result(String.Format("ASI Camera Found, Total Count: {0}", camera_count)));
        }