/** 返回资源信息给回调方法 */ private void SendToCallback(string url, CALLBACK_TYPE type, object data) { foreach (string key in dictCallback.Keys) { if (key == url) { List <CallbackDelegate> list = dictCallback[url]; foreach (CallbackDelegate d in list) { d(url, type, data); } break; } } }
/// <summary> /// 获取报警信息处理 /// </summary> /// <param name="lCommand">命令</param> /// <param name="lLoginID">登录ID</param> /// <param name="pBuf">缓存</param> /// <param name="dwBufLen">缓存数据大小</param> /// <param name="pchDVRIP">DVR设备IP地址</param> /// <param name="nDVRPort">DVR设备端口</param> /// <param name="dwUser">用户数据</param> /// <returns></returns> private bool GetAlarmMessage(int lCommand, int lLoginID, IntPtr pBuf, UInt32 dwBufLen, IntPtr pchDVRIP, int nDVRPort, UInt32 dwUser) { bool returnValue = false; //MessageBox.Show("HI1"); switch (lCommand) { case (int)CALLBACK_TYPE.DH_COMM_ALARM://常规报警信息 cbkType = CALLBACK_TYPE.DH_COMM_ALARM; clientState = (NET_CLIENT_STATE)Marshal.PtrToStructure(pBuf, typeof(NET_CLIENT_STATE)); #region << 测试代码 >> #endregion break; case (int)CALLBACK_TYPE.DH_SHELTER_ALARM://视频遮档报警 cbkType = CALLBACK_TYPE.DH_SHELTER_ALARM; for (int i = 0; i < dwBufLen; i++) { AlarmShelter[i] = (byte)Marshal.PtrToStructure((IntPtr)((UInt32)pBuf + i), typeof(byte)); } break; case (int)CALLBACK_TYPE.DH_DISK_FULL_ALARM://硬盘空间不足 cbkType = CALLBACK_TYPE.DH_DISK_FULL_ALARM; AlarmDiskFull = (bool)Marshal.PtrToStructure(pBuf, typeof(bool)); break; case (int)CALLBACK_TYPE.DH_DISK_ERROR_ALARM://硬盘损坏 cbkType = CALLBACK_TYPE.DH_DISK_ERROR_ALARM; for (int i = 0; i < dwBufLen; i++) { AlarmDiskErr[i] = (byte)Marshal.PtrToStructure((IntPtr)((UInt32)pBuf + i), typeof(byte)); } break; case (int)CALLBACK_TYPE.DH_SOUND_DETECT_ALARM://音频报警 cbkType = CALLBACK_TYPE.DH_SOUND_DETECT_ALARM; for (int i = 0; i < dwBufLen; i++) { AlarmAudio[i] = (byte)Marshal.PtrToStructure((IntPtr)((UInt32)pBuf + i), typeof(byte)); } break; case (int)CALLBACK_TYPE.DH_ALARM_ALARM_EX://外部报警 cbkType = CALLBACK_TYPE.DH_ALARM_ALARM_EX; for (int i = 0; i < dwBufLen; i++) { AlarmExternal[i] = (byte)Marshal.PtrToStructure((IntPtr)((UInt32)pBuf + i), typeof(byte)); } break; } return returnValue; }