コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }