public async Task <Tuple <string, GetDeviceInformationResponse> > GetDeviceInfoAsync(string deviceAddress, string userName, string password)
        {
            var messageElement = new TextMessageEncodingBindingElement
            {
                MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None)
            };
            HttpTransportBindingElement httpBinding = new HttpTransportBindingElement
            {
                //AuthenticationScheme = AuthenticationSchemes.Digest
            };
            CustomBinding bind = new CustomBinding(messageElement, httpBinding);

            //绑定服务地址
            EndpointAddress serviceAddress = new EndpointAddress(deviceAddress);
            DeviceClient    deviceClient   = new DeviceClient(bind, serviceAddress);

            //给每个请求都添加认证信息
            deviceClient.Endpoint.EndpointBehaviors.Add(new CustomEndpointBehavior(userName, password));

            //查看系统时间
            var date = await deviceClient.GetSystemDateAndTimeAsync();

            Console.WriteLine(date.UTCDateTime.Date.Month.ToString());

            var deviceInfo = await deviceClient.GetDeviceInformationAsync(new GetDeviceInformationRequest()
            {
            });

            //查看设备能力
            GetCapabilitiesResponse cap = await deviceClient.GetCapabilitiesAsync(new CapabilityCategory[] { CapabilityCategory.All });

            return(Tuple.Create <string, GetDeviceInformationResponse>(cap.Capabilities.Media.XAddr.ToString(), deviceInfo));
        }
Exemple #2
0
        public async Task <OnvifDevice.Capabilities> GetDeviceCapabilitiesAsync()
        {
            if (m_device == null)
            {
                await InitalizeDeviceAsync();

                if (m_device == null)
                {
                    return(null);
                }
            }

            if (m_capabilitiesResponse == null)
            {
                OnVifServices.OnvifDevice.CapabilityCategory[] capability = new OnVifServices.OnvifDevice.CapabilityCategory[1];
                capability[0]          = CapabilityCategory.All;
                m_capabilitiesResponse = await m_device.GetCapabilitiesAsync(capability);
            }


            if (m_capabilitiesResponse == null)
            {
                return(null);
            }

            return(m_capabilitiesResponse.Capabilities);
        }
        public async Task GetDeviceInfoAsync(string deviceAddress)
        {
            var messageElement = new TextMessageEncodingBindingElement
            {
                MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None)
            };
            HttpTransportBindingElement httpBinding = new HttpTransportBindingElement
            {
                AuthenticationScheme = AuthenticationSchemes.Digest
            };
            CustomBinding bind = new CustomBinding(messageElement, httpBinding);

            //绑定服务地址
            EndpointAddress serviceAddress = new EndpointAddress(deviceAddress);
            DeviceClient    deviceClient   = new DeviceClient(bind, serviceAddress);

            //查看系统时间
            var date = await deviceClient.GetSystemDateAndTimeAsync();

            Console.WriteLine(date.UTCDateTime.Date.Month.ToString());
            //查看设备能力
            GetCapabilitiesResponse cap = await deviceClient.GetCapabilitiesAsync(new CapabilityCategory[] { CapabilityCategory.All });

            Console.WriteLine(cap.Capabilities.Media.XAddr.ToString());
        }
Exemple #4
0
        public async Task <OnvifDevice> Setup()
        {
            device = await OnvifClientFactory.CreateDeviceClientAsync(Host + ":" + Port, UserName, Password);

            var devicecapabilities = await device.GetCapabilitiesAsync(new CapabilityCategory[] { CapabilityCategory.All });

            var info = await device.GetDeviceInformationAsync(new GetDeviceInformationRequest()
            {
            });

            media = await OnvifClientFactory.CreateMediaClientAsync(Host + ":" + Port, UserName, Password);

            var profiles = await media.GetProfilesAsync();

            ptz = await Onvif.Core.Client.OnvifClientFactory.CreatePTZClientAsync(Host + ":" + Port, UserName, Password);

            var capabilities = await ptz.GetServiceCapabilitiesAsync();

            var config = await ptz.GetConfigurationsAsync();

            var space = config.PTZConfiguration[0].DefaultAbsolutePantTiltPositionSpace;

            token = profiles.Profiles[0].token;

            xrange = config.PTZConfiguration[0].PanTiltLimits.Range.XRange;
            yrange = config.PTZConfiguration[0].PanTiltLimits.Range.YRange;
            zrange = config.PTZConfiguration[0].ZoomLimits.Range.XRange;


            var status = await ptz.GetStatusAsync(token);

            //var presets = await ptz.GetPresetsAsync(token);

            //Console.WriteLine("preset ");
            //  await ptz.GotoPresetAsync(token, presets.Preset[0].token, null);

            //Thread.Sleep(4000);

            var nodes = await ptz.GetNodesAsync();

            //Console.WriteLine("home ");
            //await ptz.GotoHomePositionAsync(token, null);

            //Thread.Sleep(2000);
            //Console.WriteLine("ContinuousMoveAsync ");

            /*
             * await ptz.ContinuousMoveAsync(token, new PTZSpeed() {PanTilt = new Vector2D() {x = -1f, y = -1}, Zoom = new Vector1D() { x=0f}}, "2");
             * Thread.Sleep(2000);
             * await ptz.StopAsync(token, true, true);
             */
            return(this);
        }