Exemplo n.º 1
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.");
            }
        }
Exemplo n.º 2
0
        private void DeviceAdded(NikonManager sender, NikonDevice device)
        {
            dev = device;
            if (SaveToPc)
            {
                dev.SetUnsigned(eNkMAIDCapability.kNkMAIDCapability_SaveMedia, (uint)eNkMAIDSaveMedia.kNkMAIDSaveMedia_Card_SDRAM);
            }
            else
            {
                dev.SetUnsigned(eNkMAIDCapability.kNkMAIDCapability_SaveMedia, (uint)eNkMAIDSaveMedia.kNkMAIDSaveMedia_Card);
            }
            dev.ImageReady      += DeviceImageReady;
            dev.CaptureComplete += OnCaptureComplete;
            Console.WriteLine("Fotocamera collegata!");
            dev.SetBoolean(eNkMAIDCapability.kNkMAIDCapability_LockCamera, false);
            dev.SetUnsigned(eNkMAIDCapability.kNkMAIDCapability_ApertureLockSetting, 0);

            IsConnected = true;
            IsReady     = true;
            IsSaved     = true;

            OnConnected();
        }
Exemplo n.º 3
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.");
            }
        }
Exemplo n.º 4
0
        void DriveManualFocus(eNkMAIDMFDrive direction)
        {
            // Start driving the manual focus motor
            _device.SetUnsigned(eNkMAIDCapability.kNkMAIDCapability_MFDrive, (uint)direction);

            // Keep looping here until drive is complete
            bool isDriving;

            do
            {
                // Get the most recent live view image
                NikonLiveViewImage image = _device.GetLiveViewImage();

                // NOTE: For Type0003.md3, the drive state flag is located at index 30 - this might
                //       not be the case for other MD3 files. Please double check your SDK documentation.
                const int driveStateIndex = 30;

                isDriving = (image.HeaderBuffer[driveStateIndex] > 0);
            }while (isDriving);
        }
Exemplo n.º 5
0
        public void Run()
        {
            try
            {
                // Create manager object - make sure you have the correct MD3 file for your Nikon DSLR (see https://sdk.nikonimaging.com/apply/)
                NikonManager manager = new NikonManager("Type0003.md3");

                // Listen for the 'DeviceAdded' event
                manager.DeviceAdded += manager_DeviceAdded;

                // Wait for a device to arrive
                _waitForDevice.WaitOne();

                // Set shooting mode to 'continuous, highspeed'
                NikonEnum shootingMode = _device.GetEnum(eNkMAIDCapability.kNkMAIDCapability_ShootingMode);
                shootingMode.Index = (int)eNkMAIDShootingMode.kNkMAIDShootingMode_CH;
                _device.SetEnum(eNkMAIDCapability.kNkMAIDCapability_ShootingMode, shootingMode);

                // Set number of continuous captures - in this case we want 5
                _device.SetUnsigned(eNkMAIDCapability.kNkMAIDCapability_ContinuousShootingNum, 5);

                // Hook up capture events
                _device.ImageReady      += _device_ImageReady;
                _device.CaptureComplete += _device_CaptureComplete;

                // Capture
                _device.Capture();

                // Wait for the capture to complete
                _waitForCaptureComplete.WaitOne();

                // Shutdown
                manager.Shutdown();
            }
            catch (NikonException ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Exemplo n.º 6
0
        void manager_DeviceAdded(NikonManager sender, NikonDevice device)
        {
            this.device = device;
            label1.Text = device.Name;

            ToggleButtons(true);

            //Hook up device capture events
            device.ImageReady             += new ImageReadyDelegate(device_ImageReady);
            device.CaptureComplete        += new CaptureCompleteDelegate(device_CaptureComplete);
            device.CapabilityValueChanged += new CapabilityChangedDelegate(device_CapValueChange);

            //this will write to sd card, computer or both
            device.SetUnsigned(eNkMAIDCapability.kNkMAIDCapability_SaveMedia,
                               (uint)eNkMAIDSaveMedia.kNkMAIDSaveMedia_SDRAM); //currently savin to computer

            updateCameraData();

            //FIXME
            //NikonRange r = device.GetRange(eNkMAIDCapability.kNkMAIDCapability_Aperture);
            //get mode
            //textBoxCameraMode.Text = r.Value.ToString();
            //textBoxCameraMode.Text = r.Max.ToString();
        }