Exemplo n.º 1
0
        private void AlarmMessageHandle(int lCommand, ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            if (lCommand == CHCNetSDK.COMM_ALARM_V30)
            {
                CHCNetSDK.NET_DVR_ALARMINFO_V30 struAlarmInfo = new CHCNetSDK.NET_DVR_ALARMINFO_V30();
                struAlarmInfo = (CHCNetSDK.NET_DVR_ALARMINFO_V30)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ALARMINFO_V30));
                if (struAlarmInfo.dwAlarmType == 3)
                {
                    // Motion Detect
                    // pAlarmer.sDeviceIP

                    string detectTime = DateTime.Now.ToString();
                    if (detectResetTimer.IsEnabled)
                    {
                        detectResetTimer.Stop();
                    }
                    detectResetTimer.Start();
                    detectCount++;
                    Console.WriteLine("[CCTV] - Detect Count : {0}", detectCount);

                    if (detectCount >= GUEST_DETECT_COUNT)
                    {
                        if (ModeListener != null)
                        {
                            ModeListener(MODE_GUEST_DETECT);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        private void ProcessCommAlarm_V30(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            CHCNetSDK.NET_DVR_ALARMINFO_V30 struAlarmInfoV30 = new CHCNetSDK.NET_DVR_ALARMINFO_V30();

            struAlarmInfoV30 = (CHCNetSDK.NET_DVR_ALARMINFO_V30)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ALARMINFO_V30));

            string strIP       = pAlarmer.sDeviceIP;
            string stringAlarm = "";
            int    i;

            switch (struAlarmInfoV30.dwAlarmType)
            {
            case 0:
                stringAlarm = "信号量报警,报警报警输入口:" + struAlarmInfoV30.dwAlarmInputNumber + ",触发录像通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byAlarmRelateChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + "\\";
                    }
                }
                break;

            case 1:
                stringAlarm = "硬盘满,报警硬盘号:";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1) + " ";
                    }
                }
                break;

            case 2:
                stringAlarm = "信号丢失,报警通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 3:
                stringAlarm = "移动侦测,报警通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 4:
                stringAlarm = "硬盘未格式化,报警硬盘号:";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 5:
                stringAlarm = "读写硬盘出错,报警硬盘号:";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 6:
                stringAlarm = "遮挡报警,报警通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 7:
                stringAlarm = "制式不匹配,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 8:
                stringAlarm = "非法访问";
                break;

            case 9:
                stringAlarm = "视频信号异常,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 10:
                stringAlarm = "录像/抓图异常,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 11:
                stringAlarm = "智能场景变化,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 12:
                stringAlarm = "阵列异常";
                break;

            case 13:
                stringAlarm = "前端/录像分辨率不匹配,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 15:
                stringAlarm = "智能侦测,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            default:
                stringAlarm = "其他未知报警信息";
                break;
            }

            if (InvokeRequired)
            {
                object[] paras = new object[3];
                paras[0] = DateTime.Now.ToString();
                paras[1] = strIP;
                paras[2] = stringAlarm;
                listViewAlarmInfo.BeginInvoke(new UpdateListBoxCallback(UpdateClientList), paras);
            }
            else
            {
                //创建该控件的主线程直接更新信息列表
                UpdateClientList(DateTime.Now.ToString(), strIP, stringAlarm);
            }
        }
Exemplo n.º 3
0
        private void ProcessCommAlarm_V30(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            CHCNetSDK.NET_DVR_ALARMINFO_V30 struAlarmInfoV30 = new CHCNetSDK.NET_DVR_ALARMINFO_V30();

            struAlarmInfoV30 = (CHCNetSDK.NET_DVR_ALARMINFO_V30)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ALARMINFO_V30));

            string strIP       = pAlarmer.sDeviceIP;
            string stringAlarm = "";
            int    i;

            switch (struAlarmInfoV30.dwAlarmType)
            {
            case 0:
                stringAlarm = "信号量报警,报警报警输入口:" + struAlarmInfoV30.dwAlarmInputNumber + ",触发录像通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byAlarmRelateChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + "\\";
                    }
                }
                break;

            case 1:
                stringAlarm = "硬盘满,报警硬盘号:";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1) + " ";
                    }
                }
                break;

            case 2:
                stringAlarm = "信号丢失,报警通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 3:
                stringAlarm = "移动侦测,报警通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 4:
                stringAlarm = "硬盘未格式化,报警硬盘号:";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 5:
                stringAlarm = "读写硬盘出错,报警硬盘号:";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 6:
                stringAlarm = "遮挡报警,报警通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 7:
                stringAlarm = "制式不匹配,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 8:
                stringAlarm = "非法访问";
                break;

            case 9:
                stringAlarm = "视频信号异常,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 10:
                stringAlarm = "录像/抓图异常,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 11:
                stringAlarm = "智能场景变化,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 12:
                stringAlarm = "阵列异常";
                break;

            case 13:
                stringAlarm = "前端/录像分辨率不匹配,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            case 15:
                stringAlarm = "智能侦测,报警通道";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1) + " \\ ";
                    }
                }
                break;

            default:
                stringAlarm = "其他未知报警信息";
                break;
            }

            MessageBox.Show("ProcessCommAlarm_V30:" + stringAlarm);
        }
        private void ProcessCommAlarm_V30(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            CHCNetSDK.NET_DVR_ALARMINFO_V30 struAlarmInfoV30 = new CHCNetSDK.NET_DVR_ALARMINFO_V30();

            struAlarmInfoV30 = (CHCNetSDK.NET_DVR_ALARMINFO_V30)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ALARMINFO_V30));

            string strIP       = pAlarmer.sDeviceIP;
            string stringAlarm = "";
            int    i;

            switch (struAlarmInfoV30.dwAlarmType)
            {
            case 0:
                stringAlarm = "信号量报警,报警报警输入口:" + struAlarmInfoV30.dwAlarmInputNumber + ",触发录像通道:";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byAlarmRelateChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 1:
                stringAlarm = "硬盘满,";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 2:
                stringAlarm = "信号丢失,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 3:
                stringAlarm = "移动侦测,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)       //MAX_CHANNUM_V30
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 4:
                stringAlarm = "硬盘未格式化,";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 5:
                stringAlarm = "读写硬盘出错,";
                for (i = 0; i < CHCNetSDK.MAX_DISKNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byDiskNumber[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 6:
                stringAlarm = "遮挡报警,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 7:
                stringAlarm = "制式不匹配,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 8:
                stringAlarm = "非法访问,";
                break;

            case 9:
                stringAlarm = "视频信号异常,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 10:
                stringAlarm = "录像/抓图异常,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 11:
                stringAlarm = "智能场景变化,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 12:
                stringAlarm = "阵列异常,";
                break;

            case 13:
                stringAlarm = "前端/录像分辨率不匹配,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            case 15:
                stringAlarm = "智能侦测,";
                for (i = 0; i < CHCNetSDK.MAX_CHANNUM_V30; i++)
                {
                    if (struAlarmInfoV30.byChannel[i] == 1)
                    {
                        stringAlarm += (i + 1 - 32) + ",";
                    }
                }
                break;

            default:
                stringAlarm = "其他未知报警信息,";
                break;
            }
            //在这里为报警信息
            if (true)
            {
                string[] paras = new string[3];
                paras[0] = DateTime.Now.ToString();      //当前PC系统时间
                paras[1] = strIP;                        //nvrip地址
                paras[2] = stringAlarm;
                string[] alarmMsg = paras[2].Split(','); //报警类型和通道号
                //            Console.WriteLine(paras[0] + "," + paras[1] + "," + paras[2] + "\n");
                //根据数据库找到theone、摄像头名称等内容
                string theone   = "0";
                string name     = "";
                string position = "";
                try
                {
                    //根据数据库找到theone、摄像头名称等内容
                    //找到了目前这个函数通道所在的NVR,
                    //然后根据通道号跟NVRip地址,找到摄像头
                    string    srtSql = "NVRIP地址= '" + paras[1] + "'" + " and  通道号 ='" + alarmMsg[1] + "'";
                    DataRow[] dr     = StaticData.g_dtCamera.Select(srtSql);
                    if (dr.Length > 0)
                    {
                        theone   = dr[0]["theone"].ToString();
                        name     = dr[0]["摄像头名称"].ToString();
                        position = dr[0]["坐标"].ToString();
                    }
                    else
                    {
                        // 处理获取非指定camaras错误回调后所产生的数据为空的异常情况
                        // 异常eg:  发现了非列表中的未知nvrip = “10.1.12.51”的设备
                        return;
                    }
                }
                catch (Exception)
                {
                    StaticUtils.ShowEventMsg("HikvisionAlarmCallBackFun.class-ProcessCommAlarm_V30 : 报警回调函数出现异常!\n");
                    //throw;
                }

                //读取事件数据库,判断数据库是否存在该事件,且时间是否2分钟以上差别,存在且是的话插入新事件
                //不是的话更新endtime字段为当前时间
                //不存在的话直接插入数据,还需要插入个摄像头的位置,名称

                CheckEvent(name, theone, alarmMsg[0], DateTime.Now.ToString().Replace('/', '-'), position, name, paras, alarmMsg[1]);
            }
            else
            {
                //创建该控件的主线程直接更新信息列表
                //  UpdateClientList(DateTime.Now.ToString(), strIP, stringAlarm);
            }
        }
Exemplo n.º 5
0
        private void ProcessCommAlarm_V30(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            MyDebugInfo AlarmInfo = new MyDebugInfo(DebugInfo);

            CHCNetSDK.NET_DVR_ALARMINFO_V30 struAlarmInfoV30 = new CHCNetSDK.NET_DVR_ALARMINFO_V30();

            struAlarmInfoV30 = (CHCNetSDK.NET_DVR_ALARMINFO_V30)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ALARMINFO_V30));

            string str;

            switch (struAlarmInfoV30.dwAlarmType)
            {
            case 0:
                this.BeginInvoke(AlarmInfo, "sensor alarm");
                break;

            case 1:
                this.BeginInvoke(AlarmInfo, "hard disk full");
                break;

            case 2:
                this.BeginInvoke(AlarmInfo, "video lost");
                break;

            case 3:
                str  = "";
                str += pAlarmer.sDeviceIP;
                str += " motion detection";
                this.BeginInvoke(AlarmInfo, str);
                break;

            case 4:
                this.BeginInvoke(AlarmInfo, "hard disk unformatted");
                break;

            case 5:
                this.BeginInvoke(AlarmInfo, "hard disk error");
                break;

            case 6:
                this.BeginInvoke(AlarmInfo, "tampering detection");
                break;

            case 7:
                this.BeginInvoke(AlarmInfo, "unmatched video output standard");
                break;

            case 8:
                this.BeginInvoke(AlarmInfo, "illegal operation");
                break;

            case 9:
                this.BeginInvoke(AlarmInfo, "videl Signal abnormal");
                break;

            case 10:
                this.BeginInvoke(AlarmInfo, "record abnormal");
                break;

            default:
                this.BeginInvoke(AlarmInfo, "Unknow alarm");
                break;
            }
        }