private void OpenSession() { if (CameraListBox.SelectedIndex >= 0) { MainCamera = CamList[CameraListBox.SelectedIndex]; MainCamera.OpenSession(); MainCamera.LiveViewUpdated += MainCamera_LiveViewUpdated; MainCamera.ProgressChanged += MainCamera_ProgressChanged; MainCamera.StateChanged += MainCamera_StateChanged; MainCamera.DownloadReady += MainCamera_DownloadReady; SessionButton.Content = "Close Session"; SessionLabel.Content = MainCamera.DeviceName; AvList = MainCamera.GetSettingsList(PropertyID.Av); TvList = MainCamera.GetSettingsList(PropertyID.Tv); ISOList = MainCamera.GetSettingsList(PropertyID.ISO); foreach (var Av in AvList) { AvCoBox.Items.Add(Av.StringValue); } foreach (var Tv in TvList) { TvCoBox.Items.Add(Tv.StringValue); } foreach (var ISO in ISOList) { ISOCoBox.Items.Add(ISO.StringValue); } AvCoBox.SelectedIndex = AvCoBox.Items.IndexOf(AvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Av)).StringValue); TvCoBox.SelectedIndex = TvCoBox.Items.IndexOf(TvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Tv)).StringValue); ISOCoBox.SelectedIndex = ISOCoBox.Items.IndexOf(ISOValues.GetValue(MainCamera.GetInt32Setting(PropertyID.ISO)).StringValue); SettingsGroupBox.IsEnabled = true; LiveViewGroupBox.IsEnabled = true; } }
private async void Start_Click(object sender, RoutedEventArgs e) { int totalimg = q.Count; OverallProg.Maximum = totalimg; OverallProg.Minimum = 0; while (q.Count > 0) { try { goset = (setting)q.Dequeue(); //do not update goset with new value if an exposure was not taken due to failure MainCamera.SetSetting(PropertyID.Tv, TvValues.GetValue(goset.getEXP()).IntValue); // set exposure MainCamera.SetSetting(PropertyID.Av, AvValues.GetValue(goset.getAP()).IntValue); // set aperture MainCamera.SetSetting(PropertyID.ISO, ISOValues.GetValue(goset.getISO()).IntValue); // set ISO sensitivity MainCamera.TakePhotoAsync(); // capture image statustext.Text = "Capturing image " + (totalimg - q.Count) + " of " + totalimg; } catch (Exception ex) { ReportError(ex.Message, false); break; // stop while loop if error arises } finally { OverallProg.Value = totalimg - q.Count; await WaitAsynchronously(); } } statustext.Text = "Complete"; }
private void ISOCoBox_SelectedIndexChanged(object sender, EventArgs e) { try { if (IsUIInit) { MainCamera.ISO = ISOValues.GetValue((string)ISOCoBox.SelectedItem); } } catch (Exception ex) { ShowError(ex); } }
public bool TakePhoto(string[] camSettings) //where cS[0] is ISO(sensitivity), cS[1] is Tv(exposition), cS[2] is Tv in bulb mode and cS[3] is Av(apperture) { try { APIHandler = new CanonAPI(); if (OpenSession()) { if (!Error) { ImageSaveDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures), "RemotePhoto"); MainCamera.SetSetting(PropertyID.SaveTo, (int)SaveTo.Host); MainCamera.SetSetting(PropertyID.ISO, ISOValues.GetValue(camSettings[0]).IntValue); MainCamera.SetSetting(PropertyID.Av, AvValues.GetValue(camSettings[3]).IntValue); MainCamera.SetCapacity(4096, int.MaxValue); Console.WriteLine($"Set image output path to: {ImageSaveDirectory}"); Console.WriteLine("Taking photo with special settings..."); CameraValue tv = TvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Tv)); if (tv == TvValues.Bulb) { MainCamera.TakePhotoBulb(int.Parse(camSettings[2])); } else { MainCamera.SetSetting(PropertyID.Tv, TvValues.GetValue(camSettings[1]).IntValue); MainCamera.TakePhoto(); } WaitEvent.WaitOne(); if (!Error) { Console.WriteLine("Photo taken and saved"); return(true); } else { return(false); } } else { return(false); } } else { return(false); } } catch (Exception ex) { Console.WriteLine("Error: " + ex.Message); return(false); } finally { MainCamera?.Dispose(); APIHandler.Dispose(); } }
private void ISOCoBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (ISOCoBox.SelectedIndex < 0) { return; } MainCamera.SetSetting(PropertyID.ISO, ISOValues.GetValue((string)ISOCoBox.SelectedItem).IntValue); } catch (Exception ex) { ReportError(ex.Message, false); } }
public void SetInitGUI() { if (IsGUIInit || !GUI.IsInitialized) { return; } if (CamList?.Count >= 1) { try { GUI.Dispatcher.Invoke((Action) delegate { AvComboBox = GUI.GetComboBox(PropertyID.Av); TvComboBox = GUI.GetComboBox(PropertyID.Tv); ISOComboBox = GUI.GetComboBox(PropertyID.ISO); GUI.GetSavePathTextBox().Text = defSaveDir; foreach (var Av in AvList) { AvComboBox.Items.Add(AvComboBox.Items.Add(Av.StringValue)); } foreach (var Tv in TvList) { TvComboBox.Items.Add(TvComboBox.Items.Add(Tv.StringValue)); } foreach (var ISO in ISOList) { ISOComboBox.Items.Add(ISOComboBox.Items.Add(ISO.StringValue)); } AvComboBox.SelectedIndex = AvComboBox.Items.IndexOf(AvValues.GetValue(Camera.GetInt32Setting(PropertyID.Av)).StringValue); TvComboBox.SelectedIndex = TvComboBox.Items.IndexOf(TvValues.GetValue(Camera.GetInt32Setting(PropertyID.Tv)).StringValue); ISOComboBox.SelectedIndex = ISOComboBox.Items.IndexOf(ISOValues.GetValue(Camera.GetInt32Setting(PropertyID.ISO)).StringValue); GUI.Camera_StatusUpdate("Connected with:" + Camera.DeviceName); GUI.Camera_OpenedSession(Camera); GUI.LiveViewButton_Click(null, null); IsConnected = true; IsGUIInit = true; }); } catch (Exception e) { Console.WriteLine(e); ReportError(e.Message, false); } } else { GUI.Dispatcher.Invoke((Action) delegate { GUI.Camera_StatusUpdate("No camera connected"); }); } }
private void OpenSession() { if (CameraListBox.SelectedIndex >= 0) { MainCamera = CamList[CameraListBox.SelectedIndex]; MainCamera.OpenSession(); MainCamera.LiveViewUpdated += MainCamera_LiveViewUpdated; MainCamera.ProgressChanged += MainCamera_ProgressChanged; MainCamera.StateChanged += MainCamera_StateChanged; MainCamera.DownloadReady += MainCamera_DownloadReady; if (IsInit) { try { MainCamera.SetSetting(PropertyID.SaveTo, (int)SaveTo.Host); //new MainCamera.SetCapacity(); //new BrowseButton.IsEnabled = true; button.IsEnabled = true; //new } catch (Exception ex) { ReportError(ex.Message, false); } } SessionButton.Content = "Close Session"; SessionLabel.Content = MainCamera.DeviceName; AvList = MainCamera.GetSettingsList(PropertyID.Av); TvList = MainCamera.GetSettingsList(PropertyID.Tv); ISOList = MainCamera.GetSettingsList(PropertyID.ISO); foreach (var Av in AvList) { AvCoBox.Items.Add(Av.StringValue); } foreach (var Tv in TvList) { TvCoBox.Items.Add(Tv.StringValue); } foreach (var ISO in ISOList) { ISOCoBox.Items.Add(ISO.StringValue); } AvCoBox.SelectedIndex = AvCoBox.Items.IndexOf(AvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Av)).StringValue); TvCoBox.SelectedIndex = TvCoBox.Items.IndexOf(TvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Tv)).StringValue); ISOCoBox.SelectedIndex = ISOCoBox.Items.IndexOf(ISOValues.GetValue(MainCamera.GetInt32Setting(PropertyID.ISO)).StringValue); SettingsGroupBox.IsEnabled = true; LiveViewGroupBox.IsEnabled = true; //SaveFolderBrowser.SelectedPath = SavePathTextBox.Text; //new } }
private CameraValue GetSelectedIsoValue() { var selectedIsoValue = ISOList.SingleOrDefault(v => v.DoubleValue == Iso && v.DoubleValue > 0); if (selectedIsoValue == null) { var nearest = ISOValues.Values.Where(v => v.DoubleValue < short.MaxValue && v.DoubleValue > 0) .Select(v => new { value = v, difference = Math.Abs(v.DoubleValue - Iso) }).OrderBy(d => d.difference).First().value; selectedIsoValue = nearest; } var isoValue = ISOValues.GetValue((double)Iso); return(selectedIsoValue); }
private void OpenSession() { if (CameraListBox.SelectedIndex >= 0) { MainCamera = CamList[CameraListBox.SelectedIndex]; MainCamera.OpenSession(); MainCamera.LiveViewUpdated += MainCamera_LiveViewUpdated; MainCamera.ProgressChanged += MainCamera_ProgressChanged; MainCamera.StateChanged += MainCamera_StateChanged; MainCamera.DownloadReady += MainCamera_DownloadReady; SessionButton.Content = "Close Session"; SessionLabel.Content = MainCamera.DeviceName; AvList = MainCamera.GetSettingsList(PropertyID.Av); TvList = MainCamera.GetSettingsList(PropertyID.Tv); ISOList = MainCamera.GetSettingsList(PropertyID.ISO); foreach (var Av in AvList) { AvCoBox.Items.Add(Av.StringValue); } foreach (var Tv in TvList) { TvCoBox.Items.Add(Tv.StringValue); } foreach (var ISO in ISOList) { ISOCoBox.Items.Add(ISO.StringValue); } AvCoBox.SelectedIndex = AvCoBox.Items.IndexOf(AvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Av)).StringValue); TvCoBox.SelectedIndex = TvCoBox.Items.IndexOf(TvValues.GetValue(MainCamera.GetInt32Setting(PropertyID.Tv)).StringValue); ISOCoBox.SelectedIndex = ISOCoBox.Items.IndexOf(ISOValues.GetValue(MainCamera.GetInt32Setting(PropertyID.ISO)).StringValue); SettingsGroupBox.IsEnabled = true; LiveViewGroupBox.IsEnabled = true; if ((bool)STComputerRdButton.IsChecked) { MainCamera.SetSetting(PropertyID.SaveTo, (int)SaveTo.Host); } else if ((bool)STBothRdButton.IsChecked) { MainCamera.SetSetting(PropertyID.SaveTo, (int)SaveTo.Both); } MainCamera.SetCapacity(4096, int.MaxValue); // MessageBox.Show("dupa", "Error", MessageBoxButton.OK, MessageBoxImage.None); } }
private void SetupSavedCameraSettings() { var settings = _settingsProvider.GetCameraSettings(); if (settings == null) { SelectedAeMode = AEModeValues.First().Key; SelectedAvValue = AvValues.First().Key; SelectedCompensation = ExposureValues.First().Key; SelectedIsoSensitivity = ISOValues.First().Key; SelectedShutterSpeed = ShutterSpeedValues.First().Key; SelectedWhiteBalance = WhiteBalanceValues.First().Key; SelectedPhotoAeMode = AEModeValues.First().Key; SelectedPhotoAvValue = AvValues.First().Key; SelectedPhotoCompensation = ExposureValues.First().Key; SelectedPhotoIsoSensitivity = ISOValues.First().Key; SelectedPhotoShutterSpeed = ShutterSpeedValues.First().Key; SelectedPhotoWhiteBalance = WhiteBalanceValues.First().Key; return; } SelectedAeMode = settings.SelectedAeMode; SelectedAvValue = settings.SelectedAvValue; SelectedCompensation = settings.SelectedCompensation; SelectedIsoSensitivity = settings.SelectedIsoSensitivity; SelectedShutterSpeed = settings.SelectedShutterSpeed; SelectedWhiteBalance = settings.SelectedWhiteBalance; SelectedPhotoAeMode = settings.SelectedPhotoAeMode; SelectedPhotoAvValue = settings.SelectedPhotoAvValue; SelectedPhotoCompensation = settings.SelectedPhotoCompensation; SelectedPhotoIsoSensitivity = settings.SelectedPhotoIsoSensitivity; SelectedPhotoShutterSpeed = settings.SelectedPhotoShutterSpeed; SelectedPhotoWhiteBalance = settings.SelectedPhotoWhiteBalance; #region Костыль, если не поменять свойство выдержки на рядом стоящие значения, то смена остальных свойств не будет сразу применяться в LiveView SelectedShutterSpeed = settings.SelectedShutterSpeed.GetNextEnumValue(); SelectedShutterSpeed = settings.SelectedShutterSpeed.GetNextEnumValue(); SelectedShutterSpeed = settings.SelectedShutterSpeed; #endregion }