2015-02-06 2 views
3

http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl 파일을 사용하여 PTZ 카메라를 제어하려고합니다.onvif ptz wsdl 사용 방법

GotoPreset 함수는 문제없이 사용할 수 있지만 ContinuousMove 함수는 ProtocolException을 발생시킵니다.

Page 77 of this 가이드에는 ConinuousMove 기능을 사용해야하는 예제가 나와 있습니다. 이 가이드에 따라

다음 코드로 날을 제공 :

 OnvifMediaClient.Profile[] profs = this.mediaClient.GetProfiles(); 
     OnvifMediaClient.Profile profile = mediaClient.GetProfile(profs[0].token); 

     OnvifPTZ.PTZConfigurationOptions options = PtzClient.GetConfigurationOptions(profile.token); 

     OnvifPTZ.PTZSpeed velocity = new OnvifPTZ.PTZSpeed(); 

     velocity.PanTilt = new OnvifPTZ.Vector2D(); 
     velocity.Zoom = new OnvifPTZ.Vector1D(); 

     velocity.PanTilt.x = options.Spaces.ContinuousPanTiltVelocitySpace[0].XRange.Max; 
     velocity.PanTilt.y = options.Spaces.ContinuousPanTiltVelocitySpace[0].YRange.Max; 
     velocity.PanTilt.space = options.Spaces.ContinuousPanTiltVelocitySpace[0].URI; 
     velocity.Zoom.x = options.Spaces.ContinuousZoomVelocitySpace[0].XRange.Max; 
     velocity.Zoom.space = options.Spaces.ContinuousZoomVelocitySpace[0].URI; 

     PtzClient.ContinuousMove(profile.token, velocity, "1000"); 

     Thread.Sleep(2000); 

     PtzClient.Stop(profile.token, true, true); 

그러나 가이드의 코드와 약간의 차이는 실제 ContinuousMove 기능에서와 같이 3 개 내 코드에서 매개 변수 대신 2를 필요로 예를 들어,가 가이드. 여분의 매개 변수는 시간 초과이므로 많은 차이를 만들지는 않을 것이라고 생각하지만 다른 것들은 다른 코드로 인해 실패 할 수 있습니다.

나는 this 질문을 받았다. 그 사람이 PTZ 카메라가 ver20을 지원하지 않는다고 말했다. 그러나 ver20이 ver10으로 변경된 wsdl에 서비스 참조를 추가 할 때 해결할 수없는 링크가 포함되어 있기 때문에 wsdl을 추가하지 못했습니다라는 메시지가 나타납니다. 또한 내 webbrowser에 ver10 URL (http://www.onvif.org/onvif/ver10/ptz/wsdl/ptz.wsdl)을 붙여 넣으면 wsdl 대신 xml이 표시됩니다.

이미 제대로 사용하고 있지 않거나 현재 설정에서 문제를 해결할 수있는 경우 올바른 wsdl 파일을 어떻게 사용할 수 있습니까?

답변

2

해결책을 찾았습니다.

PtzClient.ContunuousMove의 timeout 매개 변수를 잘못 이해합니다. 이전 wsdl 버전 (ver10)에서는 현재 PTZ 작업을 중지 할 때마다 중지 기능을 호출해야했습니다. wsdl의 ver20에서 PTZ 기능 (Stop 기능이 호출되지 않는 한)은 timeout 매개 변수에 지정된만큼 지속됩니다. 응답 시간 초과 또는 무언가라고 생각했지만 그렇지 않았습니다.

는 ContinuousMove를 호출하면 이제 다음과 같습니다

문자열의 수는 PTZ 동작이 지속 (초)의 양을 의미
PtzClient.ContinuousMove(profile.token, velocity, "PT1S"); 

.

누군가 도움이되기를 바랍니다.

관련 문제