/// <summary> /// PTZ(Pan/Tilt/Zoom)控制,该接口需要在预览模式下使用 /// </summary> /// <param name="playfd">预览句柄</param> /// <param name="cmd">控制命令</param> /// <returns>成功返回0,失败返回错误码</returns> public bool ControlPtz(int playfd, Client_PTZ_Command ptzCommand) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Trace("Enter: TiandySdkClient.StopReceiveVideo({0}).", playfd); try { if (client_sdk_ptz_control_ex(playfd, ref ptzCommand, this.ptzControlLevel)) { logEx.Info("Call Tiandy sdk function client_sdk_ptz_control success. playfd:{0},Command:{1} {2} {3}.", playfd, ptzCommand.cmd, ptzCommand.param, ptzCommand.start); return(true); } else { logEx.Error("Call Tiandy sdk function client_sdk_ptz_control failed.playfd:{0},Command:{1} {2} {3}.", playfd, ptzCommand.cmd, ptzCommand.param, ptzCommand.start); return(false); } } catch (Exception e) { logEx.Error("Call Tiandy sdk function client_sdk_ptz_control failed.Exception message:{0}", e.Message); return(false); } }
/// <summary> /// 停止云台控制,摄像头控制 /// </summary> /// <param name="cameraNo">摄像头编号</param> /// <param name="ptzCommand">命令类型</param> /// <returns></returns> public SmcErr StopControlPtz(string cameraNo, PtzCommandType ptzCommand) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Trace("Enter: TiandyVideoMonitor.StopControlPtz({0}).", cameraNo); SmcErr err = new CgwError(); int handel = CgwConst.START_RECEIVE_VIDEO_DATA_FAILED; if (this.handelOperateLock.TryEnterReadLock(CgwConst.ENTER_LOCK_WAIT_TIME)) { try { if (this.cameraVideoHandeDic.ContainsKey(cameraNo)) { handel = this.cameraVideoHandeDic[cameraNo]; } else { logEx.Warn("The camera was not Preview.Don't need to end the control.Camera No:{0}.", cameraNo); } } finally { this.handelOperateLock.ExitReadLock(); } } if (handel != CgwConst.START_RECEIVE_VIDEO_DATA_FAILED) { Client_PTZ_Command client_ptz_command = new Client_PTZ_Command(); client_ptz_command.start = false; //将ptz命令转换成天地伟业的命令 string name = Enum.GetName(typeof(PtzCommandType), ptzCommand); if (Enum.IsDefined(typeof(TiandyPtzCommandType), name)) { TiandyPtzCommandType tiandyPtzCommandType = (TiandyPtzCommandType)Enum.Parse(typeof(TiandyPtzCommandType), name); client_ptz_command.cmd = (int)tiandyPtzCommandType; } else { err.SetErrorNo(CgwError.STOP_CONTROL_PTZ_FAILED); logEx.Error("The tiandy monitor is not support the command.ptzCommand:{0}.", ptzCommand); return err; } bool result = this.sdkClient.ControlPtz(handel, client_ptz_command); if (result) { logEx.Info("Stop control camera ptz success.Camera No:{0}.", cameraNo); } else { err.SetErrorNo(CgwError.STOP_CONTROL_PTZ_FAILED); logEx.Error("Stop control camera ptz failed.Camera No:{0}.", cameraNo); } } else { err.SetErrorNo(CgwError.STOP_CONTROL_PTZ_FAILED); logEx.Error("Handel is not found. Stop control camera ptz failed. Camera No:{0}.", cameraNo); return err; } return err; }
/// <summary> /// 停止云台控制,摄像头控制 /// </summary> /// <param name="cameraNo">摄像头编号</param> /// <param name="ptzCommand">命令类型</param> /// <returns></returns> public SmcErr StopControlPtz(string cameraNo, PtzCommandType ptzCommand) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Trace("Enter: TiandyVideoMonitor.StopControlPtz({0}).", cameraNo); SmcErr err = new CgwError(); int handel = CgwConst.START_RECEIVE_VIDEO_DATA_FAILED; if (this.handelOperateLock.TryEnterReadLock(CgwConst.ENTER_LOCK_WAIT_TIME)) { try { if (this.cameraVideoHandeDic.ContainsKey(cameraNo)) { handel = this.cameraVideoHandeDic[cameraNo]; } else { logEx.Warn("The camera was not Preview.Don't need to end the control.Camera No:{0}.", cameraNo); } } finally { this.handelOperateLock.ExitReadLock(); } } if (handel != CgwConst.START_RECEIVE_VIDEO_DATA_FAILED) { Client_PTZ_Command client_ptz_command = new Client_PTZ_Command(); client_ptz_command.start = false; //将ptz命令转换成天地伟业的命令 string name = Enum.GetName(typeof(PtzCommandType), ptzCommand); if (Enum.IsDefined(typeof(TiandyPtzCommandType), name)) { TiandyPtzCommandType tiandyPtzCommandType = (TiandyPtzCommandType)Enum.Parse(typeof(TiandyPtzCommandType), name); client_ptz_command.cmd = (int)tiandyPtzCommandType; } else { err.SetErrorNo(CgwError.STOP_CONTROL_PTZ_FAILED); logEx.Error("The tiandy monitor is not support the command.ptzCommand:{0}.", ptzCommand); return(err); } bool result = this.sdkClient.ControlPtz(handel, client_ptz_command); if (result) { logEx.Info("Stop control camera ptz success.Camera No:{0}.", cameraNo); } else { err.SetErrorNo(CgwError.STOP_CONTROL_PTZ_FAILED); logEx.Error("Stop control camera ptz failed.Camera No:{0}.", cameraNo); } } else { err.SetErrorNo(CgwError.STOP_CONTROL_PTZ_FAILED); logEx.Error("Handel is not found. Stop control camera ptz failed. Camera No:{0}.", cameraNo); return(err); } return(err); }
private static extern bool client_sdk_ptz_control_ex(int playfd, ref Client_PTZ_Command cmd, int _iRightLevel);
private static extern bool client_sdk_ptz_control(int playfd, ref Client_PTZ_Command cmd);
/// <summary> /// PTZ(Pan/Tilt/Zoom)控制,该接口需要在预览模式下使用 /// </summary> /// <param name="playfd">预览句柄</param> /// <param name="cmd">控制命令</param> /// <returns>成功返回0,失败返回错误码</returns> public bool ControlPtz(int playfd, Client_PTZ_Command ptzCommand) { NLogEx.LoggerEx logEx = new NLogEx.LoggerEx(log); logEx.Trace("Enter: TiandySdkClient.StopReceiveVideo({0}).", playfd); try { if (client_sdk_ptz_control_ex(playfd, ref ptzCommand, this.ptzControlLevel)) { logEx.Info("Call Tiandy sdk function client_sdk_ptz_control success. playfd:{0},Command:{1} {2} {3}.", playfd, ptzCommand.cmd, ptzCommand.param, ptzCommand.start); return true; } else { logEx.Error("Call Tiandy sdk function client_sdk_ptz_control failed.playfd:{0},Command:{1} {2} {3}.", playfd, ptzCommand.cmd, ptzCommand.param, ptzCommand.start); return false; } } catch (Exception e) { logEx.Error("Call Tiandy sdk function client_sdk_ptz_control failed.Exception message:{0}", e.Message); return false; } }