private void MiAddTag_Click(object sender, RoutedEventArgs e) { string devId = "test"; HolographicInfo holographicInfo = HolographicInfoCache.Instance.GetHolographicInfoByDeviceId(devId); if (string.IsNullOrEmpty(holographicInfo.Id)) { LogHelper.Default.DebugFormatted("获取设备id:{0} 的全息信息失败,无法计算标签位置", devId); return; } PTZ ptz = _spaceTransformer.ScreenLocationToAngleLocation(_mouseRightClickPosition, holographicInfo.CameraParameter); TagConfigWindow tagConfigWindow = new TagConfigWindow(); tagConfigWindow.Owner = Window.GetWindow(this); tagConfigWindow.Show(); }
private void Connect() { if (Initialized) { return; } try { DateTime deviceTime = GetDeviceTime(); if (!_connectionParameters.Credentials.IsEmpty()) { byte[] nonceBytes = new byte[20]; var random = new Random(); random.NextBytes(nonceBytes); var token = new SecurityToken(deviceTime, nonceBytes); _onvifClientFactory.SetSecurityToken(token); } _deviceCapabilities = GetDeviceCapabilities(); if (_deviceCapabilities?.Media?.XAddr == null) { throw new ApplicationException("No media endpoints found"); } var mediaUri = new Uri(_deviceCapabilities.Media.XAddr); var ep = new EndpointAddress(GetServiceUri(mediaUri.PathAndQuery)); var mediaClient = _onvifClientFactory.CreateClient <Media>(ep, _connectionParameters, MessageVersion.Soap12, _timeout); var profiles = mediaClient.GetProfiles(new GetProfilesRequest()).Profiles.ToList(); var streamSetup = new StreamSetup { Stream = StreamType.RTPUnicast, Transport = new Transport { Protocol = TransportProtocol.RTSP } }; List <MediaEndpoint> uris = new List <MediaEndpoint>(); for (var i = 0; i < profiles.Count(); i++) { var p = profiles[i]; MediaUri l; try { l = mediaClient.GetStreamUri(streamSetup, p.token); } catch (Exception ex) { profiles.Remove(p); i--; Logger.LogException(ex); continue; } //make sure using correct ip address (for external access) var u = new UriBuilder(l.Uri) { Host = ServiceUri.Host }; if (_rtspPort > 0) { u.Port = _rtspPort; } l.Uri = u.ToString(); if (!string.IsNullOrEmpty(_credential.UserName)) { l.Uri = l.Uri.ReplaceFirst("://", "://" + Uri.EscapeDataString(_credential.UserName) + ":" + Uri.EscapeDataString(_credential.Password) + "@"); } var s = p.VideoEncoderConfiguration; if (s != null) { uris.Add(new MediaEndpoint(l, s)); } else { var e = p.VideoSourceConfiguration; if (e != null) { uris.Add(new MediaEndpoint(l, e)); } } } _mediaEndpoints = uris.ToArray(); _profiles = profiles.ToArray(); try { if (_deviceCapabilities.PTZ != null) { var ptzUri = new Uri(_deviceCapabilities.PTZ.XAddr); ep = new EndpointAddress(GetServiceUri(ptzUri.PathAndQuery)); PTZ = _onvifClientFactory.CreateClient <PTZ>(ep, _connectionParameters, MessageVersion.Soap12, _timeout); //try //{ // var cfgptz = PTZ.GetCompatibleConfigurations(new GetCompatibleConfigurationsRequest()); // if (cfgptz.PTZConfiguration.Length > 0) // { // var ptzc = cfgptz.PTZConfiguration[0]; // DefaultPTSpeed = ptzc.DefaultPTZSpeed.PanTilt; // DefaultZSpeed = ptzc.DefaultPTZSpeed.Zoom; // } //} //catch (Exception ex) //{ // Logger.LogException(ex); //} } } catch (Exception ex) { Logger.LogException(ex, "Onvif PTZ"); } Initialized = true; } catch (Exception ex) { _profiles = new Profile[] { }; _mediaEndpoints = new MediaEndpoint[] { }; Logger.LogException(ex, "ONVIF Device"); } }