Esempio n. 1
0
        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 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;
            }
        }
Esempio n. 3
0
 private void ISOCoBox_SelectedIndexChanged(object sender, EventArgs e)
 {
     try { if (IsUIInit)
           {
               MainCamera.ISO = ISOValues.GetValue((string)ISOCoBox.SelectedItem);
           }
     }
     catch (Exception ex) { ShowError(ex); }
 }
Esempio n. 4
0
        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); }
 }
Esempio n. 6
0
        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"); });
            }
        }
Esempio n. 7
0
        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
            }
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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);
            }
        }