예제 #1
0
        private void SetCameraToManual()
        {
            Logger.WriteTraceMessage("Set camera to manual exposure");
            if (Capabilities.ContainsKey(eNkMAIDCapability.kNkMAIDCapability_ExposureMode) && Capabilities[eNkMAIDCapability.kNkMAIDCapability_ExposureMode].CanSet())
            {
                var exposureMode = _camera.GetEnum(eNkMAIDCapability.kNkMAIDCapability_ExposureMode);
                var foundManual  = false;
                for (int i = 0; i < exposureMode.Length; i++)
                {
                    if ((uint)exposureMode[i] == (uint)eNkMAIDExposureMode.kNkMAIDExposureMode_Manual)
                    {
                        exposureMode.Index = i;
                        foundManual        = true;
                        _camera.SetEnum(eNkMAIDCapability.kNkMAIDCapability_ExposureMode, exposureMode);
                        break;
                    }
                }

                if (!foundManual)
                {
                    throw new NikonException("Failed to find the 'Manual' exposure mode");
                }
            }
            else
            {
                Logger.WriteTraceMessage("Cannot set to manual mode. Skipping...");
            }
        }
예제 #2
0
        /// <summary>
        /// Gets the value of a specific retrieved capability.
        /// </summary>
        /// <param name="capabilityName">Name of the capability</param>
        /// <returns>Value of the capability</returns>
        public String Get(String capabilityName)
        {
            if (String.IsNullOrEmpty(capabilityName))
            {
                return(String.Empty);
            }

            var result = Capabilities.ContainsKey(capabilityName) ? Capabilities[capabilityName] : String.Empty;

            return(result);
        }
        public override string this[string name]
        {
            get
            {
                if (_properties != null && _properties.ContainsKey(name))
                {
                    return(_properties[name]);
                }

                return((Capabilities != null && Capabilities.ContainsKey(name)) ? Capabilities[name] : string.Empty);
            }
        }
        public override string this[string name]
        {
            get
            {
                if (Capabilities.ContainsKey(name))
                {
                    return(Capabilities[name]);
                }

                return(string.Empty);
            }
        }
예제 #5
0
        public void Init(NikonDevice cam)
        {
            Logger.WriteTraceMessage("Initializing Nikon camera '" + cam.Name + "'");
            _camera                  = cam;
            _camera.ImageReady      += Camera_ImageReady;
            _camera.CaptureComplete += _camera_CaptureComplete;


            //Set to shoot in RAW
            Logger.WriteTraceMessage("Setting compression to RAW");
            var compression = _camera.GetEnum(eNkMAIDCapability.kNkMAIDCapability_CompressionLevel);

            for (int i = 0; i < compression.Length; i++)
            {
                var val = compression.GetEnumValueByIndex(i);
                if (val.ToString() == "RAW")
                {
                    compression.Index = i;
                    _camera.SetEnum(eNkMAIDCapability.kNkMAIDCapability_CompressionLevel, compression);
                    break;
                }
            }

            //Ensure camera is in Manual mode

            /*var exposureMode = _camera.GetEnum(eNkMAIDCapability.kNkMAIDCapability_ExposureMode);
             * if (exposureMode.Index != (int)eNkMAIDExposureMode.kNkMAIDExposureMode_Manual)
             * {
             *  Logger.WriteTraceMessage("Camera not set to Manual mode. Switching now.");
             *  exposureMode.Index = (int)eNkMAIDExposureMode.kNkMAIDExposureMode_Manual;
             *  _camera.SetEnum(eNkMAIDCapability.kNkMAIDCapability_ExposureMode, exposureMode);
             * }*/
            //Changed to function
            SetCameraToManual();

            GetIsoList();
            GetShutterSpeeds();
            GetCapabilities();


            /* Setting SaveMedia when supported, to save images via SDRAM and not to the internal memory card */
            if (Capabilities.ContainsKey(eNkMAIDCapability.kNkMAIDCapability_SaveMedia) && Capabilities[eNkMAIDCapability.kNkMAIDCapability_SaveMedia].CanSet())
            {
                _camera.SetUnsigned(eNkMAIDCapability.kNkMAIDCapability_SaveMedia, (uint)eNkMAIDSaveMedia.kNkMAIDSaveMedia_SDRAM);
            }
            else
            {
                Logger.WriteTraceMessage("Setting SaveMedia Capability not available. This has to be set manually or is not supported by this model.");
            }
        }
예제 #6
0
 private void SetCameraISO(int index)
 {
     if (Capabilities.ContainsKey(eNkMAIDCapability.kNkMAIDCapability_Sensitivity) && Capabilities[eNkMAIDCapability.kNkMAIDCapability_Sensitivity].CanSet())
     {
         Logger.WriteTraceMessage("Setting ISO to index: " + index);
         var ISOCOntrolList = _camera.GetEnum(eNkMAIDCapability.kNkMAIDCapability_Sensitivity);
         ISOCOntrolList.Index = index;
         _camera.SetEnum(eNkMAIDCapability.kNkMAIDCapability_Sensitivity, ISOCOntrolList);
     }
     else
     {
         Logger.WriteTraceMessage("Cannot set camera ISO. Skipping...");
     }
 }
예제 #7
0
        public void Init(NikonDevice cam)
        {
            Logger.Debug("Initializing Nikon camera");
            _camera                  = cam;
            _camera.ImageReady      += Camera_ImageReady;
            _camera.CaptureComplete += _camera_CaptureComplete;

            GetCapabilities();

            if (Capabilities.TryGetValue(eNkMAIDCapability.kNkMAIDCapability_CompressionLevel, out var compressionCapability))
            {
                if (compressionCapability.CanGet() && compressionCapability.CanSet())
                {
                    //Set to shoot in RAW
                    Logger.Debug("Setting compression to RAW");
                    var compression = _camera.GetEnum(eNkMAIDCapability.kNkMAIDCapability_CompressionLevel);
                    for (int i = 0; i < compression.Length; i++)
                    {
                        var val = compression.GetEnumValueByIndex(i);
                        if (val.ToString() == "RAW")
                        {
                            compression.Index = i;
                            _camera.SetEnum(eNkMAIDCapability.kNkMAIDCapability_CompressionLevel, compression);
                            break;
                        }
                    }
                }
                else
                {
                    Logger.Trace($"Cannot set compression level: CanGet {compressionCapability.CanGet()} - CanSet {compressionCapability.CanSet()}");
                }
            }
            else
            {
                Logger.Trace("Compression Level capability not available");
            }

            GetShutterSpeeds();

            /* Setting SaveMedia when supported, to save images via SDRAM and not to the internal memory card */
            if (Capabilities.ContainsKey(eNkMAIDCapability.kNkMAIDCapability_SaveMedia) && Capabilities[eNkMAIDCapability.kNkMAIDCapability_SaveMedia].CanSet())
            {
                _camera.SetUnsigned(eNkMAIDCapability.kNkMAIDCapability_SaveMedia, (uint)eNkMAIDSaveMedia.kNkMAIDSaveMedia_SDRAM);
            }
            else
            {
                Logger.Trace("Setting SaveMedia Capability not available. This has to be set manually or is not supported by this model.");
            }
        }
예제 #8
0
 private void SetCameraShutterSpeed(int index)
 {
     if (Capabilities.ContainsKey(eNkMAIDCapability.kNkMAIDCapability_ShutterSpeed) && Capabilities[eNkMAIDCapability.kNkMAIDCapability_ShutterSpeed].CanSet())
     {
         Logger.WriteTraceMessage("Setting shutter speed to index: " + index);
         var shutterspeed = _camera.GetEnum(eNkMAIDCapability.kNkMAIDCapability_ShutterSpeed);
         _prevShutterSpeed  = shutterspeed.Index;
         shutterspeed.Index = index;
         _camera.SetEnum(eNkMAIDCapability.kNkMAIDCapability_ShutterSpeed, shutterspeed);
     }
     else
     {
         Logger.WriteTraceMessage("Cannot set camera shutter speed. Skipping...");
     }
 }
예제 #9
0
 public bool HasPinCapability(PinModes mode)
 {
     return(Capabilities.ContainsKey(mode));
 }