void SendDistanceFocusMove(float distance)
        {
            SetFocusSettingsStatus(FocusSettingsStatus.Waiting);
            panelPositionFocusMove.IsEnabled = false;

            var relative = new RelativeFocus()
            {
                distance = distance
            };

            if (model.moveOptions.relative.speed != null)
            {
                relative.speed          = model.moveOptions.relative.speed.max;
                relative.speedSpecified = true;
            }
            var focus = new FocusMove()
            {
                relative = relative
            };

            //disposables += (IDisposable)null;

            disposables.Add(session.Move(model.sourceToken, focus).ObserveOnCurrentDispatcher().Subscribe(
                                u => { ReceiveFocusPosition(); },
                                err => {
                SetFocusSettingsStatus(FocusSettingsStatus.Error, err.Message);
                panelPositionFocusMove.IsEnabled = true;
            }
                                ));
        }
Exemplo n.º 2
0
        private async Task FocusMoveAsync(FocusMoveDirection focusMoveDirection)
        {
            IsBusy = true;

            var relativeFocus = new RelativeFocus();

            switch (focusMoveDirection)
            {
            case FocusMoveDirection.None:
                break;

            case FocusMoveDirection.FocusIn:
                relativeFocus.Distance = 0.5f;
                break;

            case FocusMoveDirection.FocusOut:
                relativeFocus.Distance = -0.5f;
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(focusMoveDirection), focusMoveDirection, null);
            }

            try
            {
                await _onvifServiceAggregator.OnvifImagingService.SetImagingSettingsAsync(new SetImagingSettings
                {
                    VideoSourceToken = VideoSourceToken,
                    ImagingSettings  = new ImagingSettings20
                    {
                        Focus = new FocusConfiguration20
                        {
                            AutoFocusMode = AutoFocusMode.MANUAL
                        }
                    }
                });

                await _onvifServiceAggregator.OnvifImagingService.MoveAsync(new Move
                {
                    VideoSourceToken = VideoSourceToken,
                    Focus            = new FocusMove
                    {
                        Relative = relativeFocus
                    }
                });
            }
            catch (OnvifServiceException e)
            {
                var toast = e.ToToastMessage(_parentViewModel);
                Messenger.Publish(toast);
            }
            catch (FaultException e)
            {
                var toast = e.ToToastMessage(_parentViewModel);
                Messenger.Publish(toast);
            }
            finally
            {
                IsBusy = false;
            }
        }