Пример #1
0
 public void FromFocuserInfo(FocuserInfo info)
 {
     if (info.Connected)
     {
         if (string.IsNullOrWhiteSpace(Focuser.Name))
         {
             Focuser.Name = info.Name;
         }
         Focuser.Position    = info.Position;
         Focuser.StepSize    = info.StepSize;
         Focuser.Temperature = info.Temperature;
     }
 }
Пример #2
0
        public void FromFocuserInfoConnectedTest()
        {
            var info = new FocuserInfo()
            {
                Connected   = true,
                Name        = "TestFocuser",
                Position    = 123,
                StepSize    = 3.8,
                Temperature = 100
            };

            var sut = new ImageMetaData();

            sut.FromFocuserInfo(info);

            Assert.AreEqual("TestFocuser", sut.Focuser.Name);
            Assert.AreEqual(123, sut.Focuser.Position);
            Assert.AreEqual(3.8, sut.Focuser.StepSize);
            Assert.AreEqual(100, sut.Focuser.Temperature);
        }
Пример #3
0
        public void FromFocuserInfoNotConnectedTest()
        {
            var info = new FocuserInfo()
            {
                Connected   = false,
                Name        = "TestFocuser",
                Position    = 123,
                StepSize    = 3.8,
                Temperature = 100
            };

            var sut = new ImageMetaData();

            sut.FromFocuserInfo(info);

            Assert.AreEqual(string.Empty, sut.Focuser.Name);
            Assert.AreEqual(double.NaN, sut.Focuser.Position);
            Assert.AreEqual(double.NaN, sut.Focuser.StepSize);
            Assert.AreEqual(double.NaN, sut.Focuser.Temperature);
        }
Пример #4
0
 public void UpdateDeviceInfo(FocuserInfo deviceInfo)
 {
     this.focuserInfo = deviceInfo;
 }
Пример #5
0
        private async Task <bool> ChooseFocuser()
        {
            await ss.WaitAsync();

            try {
                await Disconnect();

                if (updateTimer != null)
                {
                    await updateTimer.Stop();
                }

                if (FocuserChooserVM.SelectedDevice.Id == "No_Device")
                {
                    profileService.ActiveProfile.FocuserSettings.Id = FocuserChooserVM.SelectedDevice.Id;
                    return(false);
                }

                progress.Report(new ApplicationStatus()
                {
                    Status = Locale.Loc.Instance["LblConnecting"]
                });

                var focuser = GetBacklashCompensationFocuser(profileService, (IFocuser)FocuserChooserVM.SelectedDevice);
                _cancelChooseFocuserSource?.Dispose();
                _cancelChooseFocuserSource = new CancellationTokenSource();
                if (focuser != null)
                {
                    try {
                        var connected = await focuser?.Connect(_cancelChooseFocuserSource.Token);

                        _cancelChooseFocuserSource.Token.ThrowIfCancellationRequested();
                        if (connected)
                        {
                            this.Focuser = focuser;

                            FocuserInfo = new FocuserInfo {
                                Connected         = true,
                                IsMoving          = Focuser.IsMoving,
                                Name              = Focuser.Name,
                                Position          = this.Position,
                                StepSize          = Focuser.StepSize,
                                TempCompAvailable = Focuser.TempCompAvailable,
                                TempComp          = Focuser.TempComp,
                                Temperature       = Focuser.Temperature
                            };

                            Notification.ShowSuccess(Locale.Loc.Instance["LblFocuserConnected"]);

                            updateTimer.Interval = profileService.ActiveProfile.ApplicationSettings.DevicePollingInterval;
                            updateTimer.Start();

                            TargetPosition = this.Position;
                            profileService.ActiveProfile.FocuserSettings.Id = Focuser.Id;

                            Logger.Info($"Successfully connected Focuser. Id: {Focuser.Id} Name: {Focuser.Name} Driver Version: {Focuser.DriverVersion}");

                            return(true);
                        }
                        else
                        {
                            FocuserInfo.Connected = false;
                            this.Focuser          = null;
                            return(false);
                        }
                    } catch (OperationCanceledException) {
                        if (FocuserInfo.Connected)
                        {
                            await Disconnect();
                        }
                        return(false);
                    }
                }
                else
                {
                    return(false);
                }
            } finally {
                ss.Release();
                progress.Report(new ApplicationStatus()
                {
                    Status = string.Empty
                });
            }
        }