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."); } }
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(); }
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."); } }
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); }
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); } }
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(); }