Exemple #1
0
 public void OpenCamera(int cameraId, CMS_GUID guid, VoidDelegate callback)
 {
     Logger.Instance.WriteLog("请求打开摄像头");
     if (OpenCameraList.ContainsKey(cameraId))
     {
         OpenCameraList[cameraId]++;
         callback(true);
         Logger.Instance.WriteLog("相同摄像机已经打开,不用重新打开摄像机。CameraId:" + cameraId);
     }
     else
     {
         if (OpenCameraRequesters.ContainsKey(cameraId))
         {
             OpenCameraRequesters[cameraId].Add(callback);
         }
         else
         {
             List <VoidDelegate> value = new List <VoidDelegate>();
             value.Add(callback);
             OpenCameraRequesters.Add(cameraId, value);
         }
         bool ret = client.OpenCamera(cameraId, guid, OpenCameraCallback);
         if (ret)
         {
             Logger.Instance.WriteLog("请求打开摄像头成功");
         }
         else
         {
             Logger.Instance.WriteLog("请求打开摄像头失败, CameraId:" + cameraId);
         }
     }
 }
Exemple #2
0
 public void OpenWindow(int _index, CAMARE_INFO info)
 {
     index             = _index;
     cmsManageInstance = CMSManage.Instance;
     currentCameraGUID = info.camareGuid;
     cmsManageInstance.OpenCamera(index, currentCameraGUID, StartReadMem);
 }
Exemple #3
0
 public void SetValue(DeviceInfo dInfo)
 {
     cameraId = int.Parse(dInfo.Id);
     guid     = CMSManage.StringToGUID(dInfo.Guid);
     CMSManageInstance.OpenCamera(cameraId, guid, StartReadMem);
     Title.text = dInfo.Description;
     LoadPresetPosition();
 }
Exemple #4
0
    /// <summary>
    /// 播放视频
    /// </summary>
    /// <param name="dInfo">摄像机的详细信息</param>
    /// <param name="playTime">最小播放时间</param>
    /// <param name="isLast">是否是最后一个</param>
    public void Play(DeviceInfo dInfo, string playTime, bool isLast)
    {
        Logger.Instance.WriteLog("播放视频巡航视频");
        gameObject.GetComponent <UIPanel> ().alpha = 1;
        if (preCamera != "")
        {
            isFirstTime = false;

            string endTime = System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            if (CameraOpenFail)
            {
                Logger.Instance.WriteLog("视频巡航视频打开失败");
                WriteLog(preCamera, startTime, endTime, "打开失败");
            }
            else
            {
                Logger.Instance.WriteLog("视频巡航视频正常打开");
                WriteLog(preCamera, startTime, endTime, "正常");
            }
            if (tmpText == null)
            {
                tmpText = DefaultTex;
            }
            SavePicture(preCamera + "_" + "End_" + System.DateTime.Parse(endTime).ToString("yyyy-MM-dd_HH-mm-ss"), tmpText.EncodeToJPG(), rotateFlip);
            startTime = endTime;
        }
        else
        {
            isFirstTime = true;
        }
        startTime = System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
        preCamera = dInfo.Description;
        status    = "退出";
        BtnFinsed.SetActive(false);
        BtnExit.SetActive(true);

        this.playTime = playTime;
        this.title    = dInfo.Description;
        Title.text    = title;
        this.isLast   = isLast;
        BtnNext.SetActive(false);
        cameraId = int.Parse(dInfo.Id);
        guid     = CMSManage.StringToGUID(dInfo.Guid);
        if (dInfo.UseRTSP)
        {
            rotateFlip = false;
            OpenVideoFromRTSP(dInfo.RTSPUrl);
        }
        else
        {
            rotateFlip = true;
            CMSManage.Instance.OpenCamera(cameraId, guid, StartReadMem);
        }
        GotoMonitorPos(dInfo);

        StopCoroutine("StartTiming");
        StartCoroutine("StartTiming", int.Parse(playTime));
    }
Exemple #5
0
 void PTZCtlCallback(int cameraId, CMS_GUID guid, bool success)
 {
     if (success)
     {
         Logger.Instance.WriteLog("PTZCtl成功");
     }
     else
     {
         Logger.Instance.WriteLog("PTZCtl失败。CameraId:" + cameraId);
     }
 }
Exemple #6
0
 void GotoPresetPosCallback(int cameraId, CMS_GUID guid, bool success)
 {
     if (success)
     {
         Logger.Instance.WriteLog("移动到预设位成功");
     }
     else
     {
         Logger.Instance.WriteLog("移动到预设位失败。CameraId:" + cameraId);
     }
 }
Exemple #7
0
 void CloseCameraCallback(int cameraId, CMS_GUID guid, bool success)
 {
     if (success)
     {
         OpenCameraList.Remove(cameraId);
         Logger.Instance.WriteLog("关闭摄像头成功");
     }
     else
     {
         Logger.Instance.WriteLog("关闭摄像头失败。CameraId:" + cameraId);
     }
 }
Exemple #8
0
 void LoginCallback(int camaerId, CMS_GUID guid, bool success)
 {
     if (success)
     {
         Logger.Instance.WriteLog("登陆监控服务器成功");
         Logger.Instance.WriteLog("获取物理摄像机列表");
         client.GetCameraList();
     }
     else
     {
         Logger.Instance.WriteLog("登陆监控服务器失败");
     }
 }
Exemple #9
0
    public void GotoPresetPosition(int cameraId, CMS_GUID guid, ushort presetPosindex)
    {
        Logger.Instance.WriteLog("请求移动到预设位");
        bool ret = client.GotoPresetPosition(cameraId, guid, presetPosindex, GotoPresetPosCallback);

        if (ret)
        {
            Logger.Instance.WriteLog("请求移动到预设位成功");
        }
        else
        {
            Logger.Instance.WriteLog("请求移动到预设位失败。CameraId:" + cameraId);
        }
    }
Exemple #10
0
    public bool CloseCamera(int cameraId, CMS_GUID guid, ReturnCallback CallbackFunction)
    {
        NetworkMsgAnalysis.GetInstance().CloseCameraCallback = CallbackFunction;
        ALLST_GENERIC stHeader = new ALLST_GENERIC((UInt16)CmdNum.CTOS_CLOSECAMERA_MSG, Marshal.SizeOf(typeof(int)) + Marshal.SizeOf(typeof(CMS_GUID)));

        byte[] msg      = new byte[m_iHeaderLen + stHeader.iMessageLen];
        byte[] b_header = StructToBytes(stHeader);
        byte[] b_id     = StructToBytes(cameraId);
        byte[] b_guid   = StructToBytes(guid);
        Buffer.BlockCopy(b_header, 0, msg, 0, m_iHeaderLen);
        Buffer.BlockCopy(b_guid, 0, msg, m_iHeaderLen, b_guid.Length);
        Buffer.BlockCopy(b_id, 0, msg, m_iHeaderLen + b_guid.Length, b_id.Length);
        return(Send(msg));
    }
Exemple #11
0
    public void PTZCtl(int cameraId, CMS_GUID guid, PTZOperation opt)
    {
        Logger.Instance.WriteLog("请求PTZCtl");
        bool ret = client.SetPTZControl(cameraId, guid, opt, 1, 1, 1, 0, PTZCtlCallback);

        if (ret)
        {
            Logger.Instance.WriteLog("请求PTZCtl成功");
        }
        else
        {
            Logger.Instance.WriteLog("请求PTZCtl失败。CameraId:" + cameraId);
        }
    }
Exemple #12
0
    public bool GotoPresetPosition(int cameraId, CMS_GUID guid, UInt16 index, ReturnCallback CallbackFunction)
    {
        NetworkMsgAnalysis.GetInstance().GotoPresetPosCallback = CallbackFunction;
        ALLST_GENERIC            stHeader = new ALLST_GENERIC((UInt16)CmdNum.CTOS_GOTOPREPOSITION_MSG, Marshal.SizeOf(typeof(CTOS_GTOPREPOSITION_INFO)));
        CTOS_GTOPREPOSITION_INFO info     = new CTOS_GTOPREPOSITION_INFO();

        info.cameraId   = cameraId;
        info.camareGuid = guid;
        info.index      = index;
        byte[] msg      = new byte[m_iHeaderLen + stHeader.iMessageLen];
        byte[] b_header = StructToBytes(stHeader);
        byte[] b_info   = StructToBytes(info);
        Buffer.BlockCopy(b_header, 0, msg, 0, m_iHeaderLen);
        Buffer.BlockCopy(b_info, 0, msg, m_iHeaderLen, b_info.Length);
        return(Send(msg));
    }
Exemple #13
0
 /// <summary>
 /// 关闭当前窗口
 /// </summary>
 public void Close()
 {
     Logger.Instance.WriteLog("关闭当前窗口");
     StopCoroutine("readMemUpdate");
     if (cameraId > 0)
     {
         CMSManageInstance.CloseCamera(cameraId, guid);
     }
     cameraId = 0;
     guid     = new CMS_GUID();
     if (tmpText)
     {
         Destroy(tmpText);
     }
     gameObject.SetActive(false);
 }
Exemple #14
0
 void OnDisable()
 {
     StopCoroutine("readMemUpdate");
     if (cameraId > 0)
     {
         CMSManageInstance.CloseCamera(cameraId, guid);
     }
     cameraId = 0;
     guid     = new CMS_GUID();
     if (tmpText)
     {
         Destroy(tmpText);
     }
     if (gameObject)
     {
         Destroy(gameObject);
     }
 }
Exemple #15
0
    /// <summary>
    /// 停止播放视频
    /// </summary>
    /// <param name="requester">Requester.</param>
    public void StopVideo(GameObject requester)
    {
        Logger.Instance.WriteLog("停止播放视频");
        int      cmaeraId = int.Parse(requester.GetComponent <MonitorInfoData> ().Data.Id);
        CMS_GUID guid     = CMSManage.StringToGUID(requester.GetComponent <MonitorInfoData> ().Data.Guid);

        CMSManage.Instance.CloseCamera(cmaeraId, guid);

        int count = MonitorRefs.Count;

        for (int i = 0; i < count; i++)
        {
            if (requester.GetInstanceID() == MonitorRefs[i].GetInstanceID())
            {
                StopVideo(i);
                break;
            }
        }
    }
Exemple #16
0
 /// <summary>
 /// 绑定相关按钮事件
 /// </summary>
 void StartPlay()
 {
     UIEventListener.Get(UpArea).onPress              = MoveToUp;
     UIEventListener.Get(DownArea).onPress            = MoveToDown;
     UIEventListener.Get(LeftArea).onPress            = MoveToLeft;
     UIEventListener.Get(RightArea).onPress           = MoveToRight;
     UIEventListener.Get(MainWindow).onHover          = Scale;
     UIEventListener.Get(TitleBar.gameObject).onPress = Flicker;
     cameraId = int.Parse(CamaraRef.GetComponent <MonitorInfoData> ().Data.Id);
     guid     = CMSManage.StringToGUID(CamaraRef.GetComponent <MonitorInfoData> ().Data.Guid);
     if (CamaraRef.GetComponent <MonitorInfoData> ().Data.UseRTSP)
     {
         OpenVideoFromRTSP(CamaraRef.GetComponent <MonitorInfoData> ().Data.RTSPUrl);
     }
     else
     {
         CMSManageInstance.OpenCamera(cameraId, guid, StartReadMem);
     }
 }
Exemple #17
0
    void OpenCameraCallback(int camaerId, CMS_GUID guid, bool success)
    {
        foreach (VoidDelegate function in OpenCameraRequesters[camaerId])
        {
            function(success);
        }

        OpenCameraRequesters.Remove(camaerId);

        if (success)
        {
            OpenCameraList.Add(camaerId, 1);
            Logger.Instance.WriteLog("打开摄像头成功");
        }
        else
        {
            Logger.Instance.WriteLog("打开摄像头失败, CameraId:" + camaerId);
        }
    }
Exemple #18
0
    public static CMS_GUID StringToGUID(string guid)
    {
        string[] strs    = guid.Split('-');
        CMS_GUID cmsGuid = new CMS_GUID();

        cmsGuid.Data1    = UInt32.Parse(strs[0]);
        cmsGuid.Data2    = ushort.Parse(strs[1]);
        cmsGuid.Data3    = ushort.Parse(strs[2]);
        cmsGuid.Data4    = new byte[8];
        cmsGuid.Data4[0] = byte.Parse(strs[3]);
        cmsGuid.Data4[1] = byte.Parse(strs[4]);
        cmsGuid.Data4[2] = byte.Parse(strs[5]);
        cmsGuid.Data4[3] = byte.Parse(strs[6]);
        cmsGuid.Data4[4] = byte.Parse(strs[7]);
        cmsGuid.Data4[5] = byte.Parse(strs[8]);
        cmsGuid.Data4[6] = byte.Parse(strs[9]);
        cmsGuid.Data4[7] = byte.Parse(strs[10]);
        return(cmsGuid);
    }
Exemple #19
0
 public void CloseCamera(int cameraId, CMS_GUID guid)
 {
     Logger.Instance.WriteLog("请求关闭摄像头");
     if (OpenCameraList.ContainsKey(cameraId) && OpenCameraList[cameraId] > 1)
     {
         OpenCameraList[cameraId]--;
     }
     else
     {
         bool ret = client.CloseCamera(cameraId, guid, CloseCameraCallback);
         if (ret)
         {
             Logger.Instance.WriteLog("请求关闭摄像头成功");
         }
         else
         {
             Logger.Instance.WriteLog("请求关闭摄像头失败。CameraId:" + cameraId);
         }
     }
 }
Exemple #20
0
    public bool SetPTZControl(int cameraId, CMS_GUID guid, PTZOperation nCtrlType, UInt16 nSpeedX, UInt16 nSpeedY, UInt16 nSpeedZ, int nPreset, ReturnCallback CallbackFunction)
    {
        NetworkMsgAnalysis.GetInstance().SetPTZCtrlCallback = CallbackFunction;
        CTOS_PTZ_INFO PTZinfo = new CTOS_PTZ_INFO();

        PTZinfo.cameraId   = cameraId;
        PTZinfo.camareGuid = guid;
        PTZinfo.type       = (UInt16)nCtrlType;
        PTZinfo.speedX     = nSpeedX;
        PTZinfo.speedY     = nSpeedY;
        PTZinfo.speedZ     = nSpeedZ;
        PTZinfo.nPreset    = nPreset;
        ALLST_GENERIC stHeader = new ALLST_GENERIC((UInt16)CmdNum.CTOS_SETPTZCTRL_MSG, Marshal.SizeOf(typeof(CTOS_PTZ_INFO)));

        byte[] msg       = new byte[m_iHeaderLen + stHeader.iMessageLen];
        byte[] b_header  = StructToBytes(stHeader);
        byte[] b_PTZinfo = StructToBytes(PTZinfo);
        Buffer.BlockCopy(b_header, 0, msg, 0, m_iHeaderLen);
        Buffer.BlockCopy(b_PTZinfo, 0, msg, m_iHeaderLen, b_PTZinfo.Length);
        return(Send(msg));
    }
Exemple #21
0
    /// <summary>
    /// 创建读取内存数据的对象
    /// 并执行读取操作
    /// </summary>
    void StartReadMem(bool startReadMem)
    {
        if (startReadMem)
        {
            Logger.Instance.WriteLog("创建读取内存图像数据的对象");
            CameraOpenFail = false;
            bool ReadSuccess = false;
            buff    = new byte[sys_info.MAX_SHARE_MEMORY_SIZE];
            readMem = new shareMemOnlyRead("yfcamera_" + cameraId, (uint)buff.Length, ref ReadSuccess);
            if (ReadSuccess)
            {
                Hit.SetActive(false);
                if (preCameraId > 0)
                {
                    CMSManage.Instance.CloseCamera(preCameraId, preGuid);
                }
                preCameraId = cameraId;
                preGuid     = guid;
                Title.text  = title;
                StopCoroutine("readMemUpdate");
                if (tmpText != null && tmpText != DefaultTex)
                {
                    Destroy(tmpText);
                    tmpText = null;
                }
                StartCoroutine("readMemUpdate");
            }
        }
        else
        {
            Logger.Instance.WriteLog("摄像机请求打开失败");
            CameraOpenFail      = true;
            ShowTex.mainTexture = DefaultTex;
            tmpText             = DefaultTex;

            SavePicture(preCamera + "_" + "Start_" + System.DateTime.Parse(startTime).ToString("yyyy-MM-dd_HH-mm-ss"), tmpText.EncodeToJPG(), rotateFlip);
            Hit.SetActive(true);
        }
    }
Exemple #22
0
    void PlayEvacuationVideo()
    {
        Logger.Instance.WriteLog("播放监控视频");
        if (isPlay)
        {
            Logger.Instance.WriteLog("监控视频已经播放");
            return;
        }

        isPlay = true;
        PlayVideoPlane.SetActive(true);
        LingXing.SetActive(true);
        Logger.Instance.WriteLog("加载相关设备信息");
        DeviceDao dDao = new DeviceDao();

        dDao.Select002(gameObject.name);
        if (dDao.Result.Count == 1)
        {
            DeviceInfo info = dDao.Result[0];
            cameraId = info.Id;
            guid     = CMSManage.StringToGUID(info.Guid);
            CMSManage.Instance.OpenCamera(int.Parse(cameraId), guid, StartReadMem);
        }
    }
Exemple #23
0
 public static string GUIDToString(CMS_GUID guid)
 {
     return(guid.Data1 + "-" + guid.Data2 + "-" + guid.Data3 + "-" + guid.Data4[0] +
            "-" + guid.Data4[1] + "-" + guid.Data4[2] + "-" + guid.Data4[3] +
            "-" + guid.Data4[4] + "-" + guid.Data4[5] + "-" + guid.Data4[6] + "-" + guid.Data4[7]);
 }
Exemple #24
0
    /// <summary>
    /// 点击退出或完成按钮时调用,关闭相关的摄像头,使主菜单可用,关闭当前播放窗口
    /// </summary>
    public void Exit()
    {
        constomNext = false;
        MainMenuController.canNotOpen = false;
        if (!moveFinished)
        {
            //这里需要处理巡航过程中用户点击退出问题
            Camera.main.GetComponent <CameraController> ().TeleportPosition();
            CameraMoveFinished();
        }

        Logger.Instance.WriteLog("退出视频巡航窗口,并关闭相关的摄像头");

        if (preCamera == "")
        {
            return;
        }
        string endTime = System.DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");

        if (tmpText == null)
        {
            tmpText = DefaultTex;
            SavePicture(preCamera + "_" + "End_" + System.DateTime.Parse(endTime).ToString("yyyy-MM-dd_HH-mm-ss"), tmpText.EncodeToJPG(), rotateFlip);
        }

        if (status == "完成")
        {
            if (CameraOpenFail)
            {
                WriteLog(preCamera, startTime, endTime, "打开失败");
            }
            else
            {
                WriteLog(preCamera, startTime, endTime, "正常");
            }
        }
        else
        {
            if (CameraOpenFail)
            {
                WriteLog(preCamera, startTime, endTime, "打开失败");
            }
            else
            {
                WriteLog(preCamera, startTime, endTime, "正常");
            }
        }
        preCamera = "";
        StopVideo();

        //如果前一个播放的摄像头Id 大于0 且跟当前的摄像头ID不相等则将其关闭
        if (preCameraId > 0 && cameraId != preCameraId)
        {
            CMSManage.Instance.CloseCamera(preCameraId, preGuid);
        }
        preCameraId = 0;
        preGuid     = new CMS_GUID();
        //关闭当前的摄像头
        CMSManage.Instance.CloseCamera(cameraId, guid);
        cameraId = 0;
        guid     = new CMS_GUID();

        if (ffmpeg != null)
        {
            ffmpeg.CloseStream();
        }

        ShowTex.mainTexture = DefaultTex;
        Hit.SetActive(true);
//		gameObject.SetActive (false);
        gameObject.GetComponent <UIPanel> ().alpha = 0;
    }