示例#1
0
        public OnVifPTZController(OnVifDevice OnVifDevice) : base(OnVifDevice)
        {
            //     m_onVifDevice = OnVifDevice;

            //       m_mediaClient = null;
            //m_profile = null;

            m_Timer            = null;
            m_velocity         = null;
            m_vector           = null;
            m_options          = null;
            m_relative         = false;
            m_initialised      = false;
            m_direction        = m_direction = Direction.None;
            m_Presets          = null;
            m_capabilities     = null;
            m_ptzClient        = null;
            m_ErrorMessage     = "";
            m_configs          = null;
            m_initialised      = false;
            m_panDistance      = 0;
            m_tiltDistance     = 0;
            m_bMoveActiv       = false;
            m_timeinmsec       = 200;
            m_doContineousMode = false;
            m_ProfileRefToken  = "";
        }
示例#2
0
        //     public bool IsInitialized { get { return m_initialised; } }



        public override async Task <bool> InitalizeAsync()
        {
            if (this.m_onVifDevice.ServicesResponse == null)
            {
                bool b = await this.m_onVifDevice.InitalizeDeviceAsync();

                if (this.m_onVifDevice.ServicesResponse == null)
                {
                    return(false);
                }
            }

            try
            {
                foreach (var service in this.m_onVifDevice.ServicesResponse.Service)
                {
                    if (service.Namespace == "http://www.onvif.org/ver20/ptz/wsdl")
                    {
                        string serviceAdress = service.XAddr;
                        m_ErrorMessage = "";

                        //      m_profile = this.m_media10Services.ProfilesResponse.Profiles[0];

                        HttpTransportBindingElement httpBinding = new HttpTransportBindingElement();
                        httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest;
                        var messageElement = new TextMessageEncodingBindingElement();
                        messageElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None);
                        CustomBinding binding = new CustomBinding(messageElement, httpBinding);


                        this.m_ptzClient = new PTZClient(binding, new EndpointAddress(serviceAdress));


                        /*
                         * while (m_ptzClient.Endpoint.EndpointBehaviors.Count > 0)
                         * {
                         * m_ptzClient.Endpoint.EndpointBehaviors.RemoveAt(0);
                         * }
                         */



                        m_ptzClient.Endpoint.EndpointBehaviors.Add(m_onVifDevice.GetBasicBasicAuthBehaviour);
                        m_ptzClient.Endpoint.EndpointBehaviors.Add(m_onVifDevice.GetPasswordDigestBehavior);


                        m_configs = await m_ptzClient.GetConfigurationsAsync();

                        m_options = await m_ptzClient.GetConfigurationOptionsAsync(m_configs.PTZConfiguration[0].token);



                        m_capabilities = await m_ptzClient.GetServiceCapabilitiesAsync();

                        m_velocity = new OnvifPTZService.PTZSpeed()
                        {
                            PanTilt = new OnvifPTZService.Vector2D()
                            {
                                x     = 0,
                                y     = 0,
                                space = m_options.Spaces.ContinuousPanTiltVelocitySpace[0].URI,
                            }
                            ,
                            Zoom = new OnvifPTZService.Vector1D()
                            {
                                x     = 0,
                                space = m_options.Spaces.ContinuousZoomVelocitySpace[0].URI,
                            }
                        };


                        m_vector = new PTZVector()
                        {
                            PanTilt = new OnvifPTZService.Vector2D()
                            {
                                x     = 0,
                                y     = 0,
                                space = m_options.Spaces.RelativePanTiltTranslationSpace[0].URI
                            }
                        };

                        m_initialised = true;

                        m_bMoveActiv = false;



                        if (m_relative)
                        {
                            m_velocity.PanTilt.space = m_options.Spaces.ContinuousPanTiltVelocitySpace[0].URI;
                            m_velocity.PanTilt.space = m_configs.PTZConfiguration[0].DefaultPTZSpeed.PanTilt.space;
                            m_panDistance            = (m_options.Spaces.RelativePanTiltTranslationSpace[0].XRange.Max -
                                                        m_options.Spaces.RelativePanTiltTranslationSpace[0].XRange.Min) / PanIncrements;
                            m_tiltDistance = (m_options.Spaces.RelativePanTiltTranslationSpace[0].YRange.Max -
                                              m_options.Spaces.RelativePanTiltTranslationSpace[0].YRange.Min) / TiltIncrements;
                        }

                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                m_ErrorMessage = ex.Message;
                throw new OnVifException("OnVifPTZController.InitalizeAsync", ex);
                //       return false;
            }
            return(m_initialised);
        }