Exemplo n.º 1
0
 private bool CanContinuousMove(ContinuousMoveDirection continuousMoveDirection) => !IsBusy && ProfileToken != null;
Exemplo n.º 2
0
        private async Task ContinuousMoveAsync(ContinuousMoveDirection continuousMoveDirection)
        {
            IsBusy = true;

            var velocity = new PTZSpeed();

            switch (continuousMoveDirection)
            {
            case ContinuousMoveDirection.None:
                break;

            case ContinuousMoveDirection.Upward:
                velocity.PanTilt.y = 0.5f;
                break;

            case ContinuousMoveDirection.Forward:
                velocity.PanTilt.x = 0.5f;
                break;

            case ContinuousMoveDirection.Downward:
                velocity.PanTilt.y = -0.5f;
                break;

            case ContinuousMoveDirection.Backward:
                velocity.PanTilt.x = -0.5f;
                break;

            case ContinuousMoveDirection.ZoomIn:
                velocity.Zoom.x = 0.5f;
                break;

            case ContinuousMoveDirection.ZoomOut:
                velocity.Zoom.x = -0.5f;
                break;

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

            try
            {
                await _onvifServiceAggregator.OnvifPTZService.ContinuousMoveAsync(new ContinuousMove
                {
                    ProfileToken = ProfileToken,
                    Velocity     = velocity
                });
            }
            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;
            }
        }