public CameraControl(int cameraId, int controlIndex)
        {
            _cameraId = cameraId;

            ASICameraDll2.ASIGetControlCaps(_cameraId, controlIndex, out _props);
            //_auto = GetAutoSetting();
        }
 public void CloseCamera()
 {
     _info     = null;
     _controls = null;
     ASICameraDll2.ASICloseCamera(_cameraId);
     _status = ASI_STATUS.CLOSED;
 }
 public object Init(object id)
 {
     ASICameraDll2.ASIInitCamera(_nameIdDictionary[(string)id]);
     ASICameraDll2.ASIOpenCamera(_nameIdDictionary[(string)id]);
     ASICameraDll2.ASISetStartPos(0, 0, 0);
     throw new NotImplementedException();
 }
        public void OpenCamera()
        {
            ASICameraDll2.ASIOpenCamera(_cameraId);

            ASICameraDll2.ASI_CAMERA_INFO ci;
            ASICameraDll2.ASIGetCameraProperty(out ci, _cameraId);
            _info = ci;

            ASICameraDll2.ASIInitCamera(_cameraId);
            _status = ASI_STATUS.OPENED;
        }
        public bool GetExposureData(IntPtr buffer, int bufferSize)
        {
            var v = ASICameraDll2.ASIGetDataAfterExp(_cameraId, buffer, bufferSize);

            if (v == ASICameraDll2.ASI_ERROR_CODE.ASI_SUCCESS)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public bool GetVideoData(IntPtr buffer, int bufferSize, int waitMs)
        {
            var v = ASICameraDll2.ASIGetVideoData(_cameraId, buffer, bufferSize, waitMs);

            if (v == ASICameraDll2.ASI_ERROR_CODE.ASI_SUCCESS)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        public static Camera GetCameraByIndex(int cameraIndex)
        {
            if (cameraIndex >= Count || cameraIndex < 0)
            {
                throw new IndexOutOfRangeException();
            }

            ASICameraDll2.ASI_CAMERA_INFO infoTemp;

            ASICameraDll2.ASIGetCameraProperty(out infoTemp, cameraIndex);

            int cameraId = infoTemp.CameraID;

            return(_cameras[cameraId] ?? (_cameras[cameraId] = new Camera(cameraId)));
        }
        public List <string> SearchDevices()
        {
            _nameIdDictionary = new Dictionary <string, int>();

            int           number = ASICameraDll2.ASIGetNumOfConnectedCameras();
            List <string> ret    = new List <string>();

            for (int i = 0; i < number; i++)
            {
                ASICameraDll2.ASIGetCameraProperty(out ASICameraDll2.ASI_CAMERA_INFO cameraInfo, i);
                string name = cameraInfo.Name + " - " + cameraInfo.CameraID;
                ret.Add(name);
                _nameIdDictionary.Add(name, cameraInfo.CameraID);
            }

            return(ret);
        }
 public void StopExposure()
 {
     ASICameraDll2.ASIStopExposure(_cameraId);
 }
 public void StartExposure(ASICameraDll2.ASI_BOOL isDark)
 {
     ASICameraDll2.ASIStartExposure(_cameraId, isDark);
     _status = ASI_STATUS.EXPOSURING;
 }
 public void PulseGuideOff(ASICameraDll2.ASI_GUIDE_DIRECTION direction)
 {
     ASICameraDll2.ASIPulseGuideOff(_cameraId, direction);
 }
 public void StopVideoCapture()
 {
     ASICameraDll2.ASIStopVideoCapture(_cameraId);
     _status = ASI_STATUS.OPENED;
 }
        //public int DroppedFrames
        //{
        //    get { return ASICameraDll2.GetDroppedFrames(_cameraId); }
        //}

        //public bool EnableDarkSubtract(string darkImageFilePath)
        //{
        //    return ASICameraDll2.EnableDarkSubtract(_cameraId, darkImageFilePath);
        //}

        //public void DisableDarkSubtract()
        //{
        //    ASICameraDll.DisableDarkSubtract(_cameraId);
        //}

        public void StartVideoCapture()
        {
            ASICameraDll2.ASIStartVideoCapture(_cameraId);
            _status = ASI_STATUS.EXPOSURING;
        }
 public void Stop()
 {
     _thread.Abort();
     ASICameraDll2.ASIStopExposure(0);
     ASICameraDll2.ASICloseCamera(0);
 }