ONvif绝对运动
报错内容如下:error: 12, SOAP-ENV:Sender, A space is referenced in an argument which is not supported by the PTZ Node.
ONvif绝对运动
报错内容如下:error: 12, SOAP-ENV:Sender, A space is referenced in an argument which is not supported by the PTZ Node.
以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:
oNVIF_PTZAbsoluteMove
,用于实现ONVIF协议下的PTZ(Pan-Tilt-Zoom,即云台控制)绝对运动控制。代码中包含了对ONVIF服务的调用,以及一些SOAP(简单对象访问协议)的使用。soap_call
、tptz
、AbsoluteMove
等。问题是在尝试使用ONVIF协议进行PTZ绝对运动控制时遇到了错误,错误提示表明在参数中引用了一个不被PTZ节点支持的空间。
根据错误信息,问题可能出现在代码中对SOAP参数的设置不正确。具体来说,错误提示A space is referenced in an argument which is not supported by the PTZ Node
表明在调用soap_call__tptz__AbsoluteMove
时,传递的参数中包含了一个PTZ节点不支持的空间引用。
要解决这个问题,需要检查并修正代码中SOAP参数的设置。特别是,需要确保传递给PTZ节点的参数符合ONVIF协议的要求。
由于图片中提供的代码片段不完整,我将提供一个基于图片内容的修正建议。主要的修正点在于确保传递给AbsoluteMove
的PanTilt
空间是被支持的。
// 修正后的代码片段
struct tt__PTzVector* Position = soap_new_tt__PTzVector(soap, -1);
AbsoluteMove.Position = Position;
struct tt__Vector2D PanTilt = soap_new_tt__Vector2D(soap, -1);
AbsoluteMove.Position->PanTilt = PanTilt;
// 注意:确保空间引用是正确的,这里假设是"http://www.onvif.org/ver10/tptz/PanTiltSpaces/GenericSpeedSpace"
AbsoluteMove.Position->PanTilt.space = "http://www.onvif.org/ver10/tptz/PanTiltSpaces/GenericSpeedSpace";
AbsoluteMove.Position->PanTilt.x = 0.5;
AbsoluteMove.Position->PanTilt.y = 0.5;
struct tt__Vector1D* Zoom = soap_new_tt__Vector1D(soap, -1);
AbsoluteMove.Position->Zoom = Zoom;
AbsoluteMove.Position->Zoom->x = 0.5;
要运行修正后的代码,你需要有支持ONVIF协议的PTZ设备,以及一个支持SOAP通信的C/C++开发环境。你需要将修正后的代码集成到你的应用程序中,并确保所有依赖库都已正确安装。
如果修正正确,预期的运行结果是PTZ设备将根据提供的参数执行绝对运动操作,而不会报错。
请注意,以上链接仅为示例,可能需要根据实际情况进行调整。