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); } } }
public void OpenWindow(int _index, CAMARE_INFO info) { index = _index; cmsManageInstance = CMSManage.Instance; currentCameraGUID = info.camareGuid; cmsManageInstance.OpenCamera(index, currentCameraGUID, StartReadMem); }
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(); }
/// <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)); }
void PTZCtlCallback(int cameraId, CMS_GUID guid, bool success) { if (success) { Logger.Instance.WriteLog("PTZCtl成功"); } else { Logger.Instance.WriteLog("PTZCtl失败。CameraId:" + cameraId); } }
void GotoPresetPosCallback(int cameraId, CMS_GUID guid, bool success) { if (success) { Logger.Instance.WriteLog("移动到预设位成功"); } else { Logger.Instance.WriteLog("移动到预设位失败。CameraId:" + cameraId); } }
void CloseCameraCallback(int cameraId, CMS_GUID guid, bool success) { if (success) { OpenCameraList.Remove(cameraId); Logger.Instance.WriteLog("关闭摄像头成功"); } else { Logger.Instance.WriteLog("关闭摄像头失败。CameraId:" + cameraId); } }
void LoginCallback(int camaerId, CMS_GUID guid, bool success) { if (success) { Logger.Instance.WriteLog("登陆监控服务器成功"); Logger.Instance.WriteLog("获取物理摄像机列表"); client.GetCameraList(); } else { Logger.Instance.WriteLog("登陆监控服务器失败"); } }
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); } }
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)); }
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); } }
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)); }
/// <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); }
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); } }
/// <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; } } }
/// <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); } }
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); } }
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); }
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); } } }
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)); }
/// <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); } }
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); } }
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]); }
/// <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; }