示例#1
0
 private bool CanFocusMove(FocusMoveDirection focusMoveDirection) => !IsBusy && VideoSourceToken != null;
示例#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;
            }
        }