private Result GetOperationResult(string operationName, ASI_ERROR_CODE asi_error_code, Exception exception, bool logSuccess = true) { if (exception == null && asi_error_code == ASI_ERROR_CODE.ASI_SUCCESS && logSuccess) { Log.InfoFormat("{0} Success, CameraID {1}, CameraName {2}", operationName, CameraID, CameraInfo.DisplayName); return(new Result(String.Format("{0} Success, CameraID {1}, CameraName {2}", operationName, CameraID, CameraInfo.DisplayName))); } string message = String.Format("{0} Failed, CameraID {1}, CameraName {2}, ASI_ERROR_CODE {3}", operationName, CameraID, CameraInfo.DisplayName, asi_error_code.ToString()); Log.Error(message, exception); Status = CameraStatus.Error; return(new Result(ErrorCode.OperationFailed, message, exception)); }
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))); }