コード例 #1
0
ファイル: TiandySdkClient.cs プロジェクト: wgyswqs/esdk_Cgw
        /// <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);
            }
        }
コード例 #2
0
ファイル: TiandyVideoMonitor.cs プロジェクト: eSDK/esdk_Cgw
        /// <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;
        }
コード例 #3
0
        /// <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);
        }
コード例 #4
0
ファイル: TiandySdkClient.cs プロジェクト: wgyswqs/esdk_Cgw
 private static extern bool client_sdk_ptz_control_ex(int playfd, ref Client_PTZ_Command cmd, int _iRightLevel);
コード例 #5
0
ファイル: TiandySdkClient.cs プロジェクト: wgyswqs/esdk_Cgw
 private static extern bool client_sdk_ptz_control(int playfd, ref Client_PTZ_Command cmd);
コード例 #6
0
ファイル: TiandySdkClient.cs プロジェクト: eSDK/esdk_Cgw
 private static extern bool client_sdk_ptz_control_ex(int playfd, ref Client_PTZ_Command cmd, int _iRightLevel);
コード例 #7
0
ファイル: TiandySdkClient.cs プロジェクト: eSDK/esdk_Cgw
 private static extern bool client_sdk_ptz_control(int playfd, ref Client_PTZ_Command cmd);
コード例 #8
0
ファイル: TiandySdkClient.cs プロジェクト: eSDK/esdk_Cgw
        /// <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;
            }
        }