private void ProcessCommAlarm_PDC(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser, string commType) { CHCNetSDK.NET_DVR_PDC_ALRAM_INFO struPDCInfo = new CHCNetSDK.NET_DVR_PDC_ALRAM_INFO(); uint dwSize = (uint)Marshal.SizeOf(struPDCInfo); struPDCInfo = (CHCNetSDK.NET_DVR_PDC_ALRAM_INFO)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_PDC_ALRAM_INFO)); string stringAlarm = "客流量统计,进入人数:" + struPDCInfo.dwEnterNum + ",离开人数:" + struPDCInfo.dwLeaveNum; uint dwUnionSize = (uint)Marshal.SizeOf(struPDCInfo.uStatModeParam); IntPtr ptrPDCUnion = Marshal.AllocHGlobal((Int32)dwUnionSize); Marshal.StructureToPtr(struPDCInfo.uStatModeParam, ptrPDCUnion, false); if (struPDCInfo.byMode == 0) //单帧统计结果,此处为UTC时间 { m_struStatFrame = (CHCNetSDK.UNION_STATFRAME)Marshal.PtrToStructure(ptrPDCUnion, typeof(CHCNetSDK.UNION_STATFRAME)); stringAlarm = stringAlarm + ",单帧统计,相对时标:" + m_struStatFrame.dwRelativeTime + ",绝对时标:" + m_struStatFrame.dwAbsTime; } if (struPDCInfo.byMode == 1) //最小时间段统计结果 { m_struStatTime = (CHCNetSDK.UNION_STATTIME)Marshal.PtrToStructure(ptrPDCUnion, typeof(CHCNetSDK.UNION_STATTIME)); //开始时间 string strStartTime = string.Format("{0:D4}", m_struStatTime.tmStart.dwYear) + string.Format("{0:D2}", m_struStatTime.tmStart.dwMonth) + string.Format("{0:D2}", m_struStatTime.tmStart.dwDay) + " " + string.Format("{0:D2}", m_struStatTime.tmStart.dwHour) + ":" + string.Format("{0:D2}", m_struStatTime.tmStart.dwMinute) + ":" + string.Format("{0:D2}", m_struStatTime.tmStart.dwSecond); //结束时间 string strEndTime = string.Format("{0:D4}", m_struStatTime.tmEnd.dwYear) + string.Format("{0:D2}", m_struStatTime.tmEnd.dwMonth) + string.Format("{0:D2}", m_struStatTime.tmEnd.dwDay) + " " + string.Format("{0:D2}", m_struStatTime.tmEnd.dwHour) + ":" + string.Format("{0:D2}", m_struStatTime.tmEnd.dwMinute) + ":" + string.Format("{0:D2}", m_struStatTime.tmEnd.dwSecond); stringAlarm = stringAlarm + ",最小时间段统计,开始时间:" + strStartTime + ",结束时间:" + strEndTime; } Marshal.FreeHGlobal(ptrPDCUnion); //报警设备IP地址 string strIP = pAlarmer.sDeviceIP; if (NoticeAlarmEvent != null) { string ccommType = ObjectCopier.Clone <string>(commType); string cstrIP = ObjectCopier.Clone <string>(strIP); string cstringAlarm = ObjectCopier.Clone <string>(stringAlarm); NoticeAlarmEvent(ccommType, DateTime.Now.ToString(), cstrIP, cstringAlarm); } }
private void ProcessCommAlarm_PDC(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser) { CHCNetSDK.NET_DVR_PDC_ALRAM_INFO struPDCInfo = new CHCNetSDK.NET_DVR_PDC_ALRAM_INFO(); uint dwSize = (uint)Marshal.SizeOf(struPDCInfo); struPDCInfo = (CHCNetSDK.NET_DVR_PDC_ALRAM_INFO)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_PDC_ALRAM_INFO)); string stringAlarm = "客流量统计,进入人数:" + struPDCInfo.dwEnterNum + ",离开人数:" + struPDCInfo.dwLeaveNum; uint dwUnionSize = (uint)Marshal.SizeOf(struPDCInfo.uStatModeParam); IntPtr ptrPDCUnion = Marshal.AllocHGlobal((Int32)dwUnionSize); Marshal.StructureToPtr(struPDCInfo.uStatModeParam, ptrPDCUnion, false); if (struPDCInfo.byMode == 0) //单帧统计结果,此处为UTC时间 { m_struStatFrame = (CHCNetSDK.UNION_STATFRAME)Marshal.PtrToStructure(ptrPDCUnion, typeof(CHCNetSDK.UNION_STATFRAME)); stringAlarm = stringAlarm + ",单帧统计,相对时标:" + m_struStatFrame.dwRelativeTime + ",绝对时标:" + m_struStatFrame.dwAbsTime; } if (struPDCInfo.byMode == 1) //最小时间段统计结果 { m_struStatTime = (CHCNetSDK.UNION_STATTIME)Marshal.PtrToStructure(ptrPDCUnion, typeof(CHCNetSDK.UNION_STATTIME)); //开始时间 string strStartTime = string.Format("{0:D4}", m_struStatTime.tmStart.dwYear) + string.Format("{0:D2}", m_struStatTime.tmStart.dwMonth) + string.Format("{0:D2}", m_struStatTime.tmStart.dwDay) + " " + string.Format("{0:D2}", m_struStatTime.tmStart.dwHour) + ":" + string.Format("{0:D2}", m_struStatTime.tmStart.dwMinute) + ":" + string.Format("{0:D2}", m_struStatTime.tmStart.dwSecond); //结束时间 string strEndTime = string.Format("{0:D4}", m_struStatTime.tmEnd.dwYear) + string.Format("{0:D2}", m_struStatTime.tmEnd.dwMonth) + string.Format("{0:D2}", m_struStatTime.tmEnd.dwDay) + " " + string.Format("{0:D2}", m_struStatTime.tmEnd.dwHour) + ":" + string.Format("{0:D2}", m_struStatTime.tmEnd.dwMinute) + ":" + string.Format("{0:D2}", m_struStatTime.tmEnd.dwSecond); stringAlarm = stringAlarm + ",最小时间段统计,开始时间:" + strStartTime + ",结束时间:" + strEndTime; } Marshal.FreeHGlobal(ptrPDCUnion); //报警设备IP地址 string strIP = pAlarmer.sDeviceIP; if (InvokeRequired) { object[] paras = new object[3]; paras[0] = DateTime.Now.ToString(); //当前PC系统时间 paras[1] = strIP; paras[2] = stringAlarm; listViewAlarmInfo.BeginInvoke(new UpdateListBoxCallback(UpdateClientList), paras); } else { //创建该控件的主线程直接更新信息列表 UpdateClientList(DateTime.Now.ToString(), strIP, stringAlarm); } }