示例#1
0
        /// <summary>
        /// 报警回调函数,接收设备报警消息等。
        /// </summary>
        /// <param name="lCommand"></param>
        /// <param name="pAlarmer"></param>
        /// <param name="pAlarmInfo"></param>
        /// <param name="dwBufLen"></param>
        /// <param name="pUser"></param>
        /// <returns></returns>
        private static bool MSesGCallback(int lCommand, ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            //回调函数中不可有耗时较长的操作,不能调用该 SDK(HCNetSDK.dll)本身的接口。
            //以下代码仅供参考,实际应用中不建议在回调函数中直接处理数据保存文件,
            //例如可以使用消息的方式(PostMessage)在消息响应函数里进行处理。
            switch (lCommand)
            {
            case CHCNetSDK.COMM_ALARM_ACS:    //门禁主机报警信息
            {
                CHCNetSDK.NET_DVR_ACS_ALARM_INFO struAcsAlarmInfo = new CHCNetSDK.NET_DVR_ACS_ALARM_INFO();
                //Marshal.PtrToStructure(pAlarmInfo, struAcsAlarmInfo);
                var result = Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ACS_ALARM_INFO));
                struAcsAlarmInfo = (CHCNetSDK.NET_DVR_ACS_ALARM_INFO)result;

                Console.WriteLine(StrAlarmInfo(struAcsAlarmInfo));
                //switch (struAcsAlarmInfo.dwMajor)
                //{
                //    case CHCNetSDK.MAJOR_ALARM:
                //        Console.WriteLine(StrAlarmInfo(struAcsAlarmInfo));
                //        break;
                //    case CHCNetSDK.MAJOR_EXCEPTION:
                //        Console.WriteLine("异常");
                //        break;
                //    case CHCNetSDK.MAJOR_OPERATION:
                //        Console.WriteLine("操作");
                //        break;
                //    case CHCNetSDK.MAJOR_EVENT:
                //        Console.WriteLine("事件");
                //        break;
                //    default:
                //        break;
                //}

                //按需处理报警信息结构体中的信息......
                break;
            }

            case CHCNetSDK.COMM_ID_INFO_ALARM:    //门禁身份证刷卡信息
            {
                CHCNetSDK.NET_DVR_ID_CARD_INFO_ALARM struID_CardInfo = new CHCNetSDK.NET_DVR_ID_CARD_INFO_ALARM();
                Marshal.PtrToStructure(pAlarmInfo, struID_CardInfo);
                //按需处理报警信息结构体中的信息......
                break;
            }

            case CHCNetSDK.COMM_PASSNUM_INFO_ALARM:    //门禁通行人数信息
            {
                CHCNetSDK.NET_DVR_PASSNUM_INFO_ALARM struPassnumInfo = new CHCNetSDK.NET_DVR_PASSNUM_INFO_ALARM();
                Marshal.PtrToStructure(pAlarmInfo, struPassnumInfo);
                //按需处理报警信息结构体中的信息......
                break;
            }

            default:
                break;
            }
            return(true);
        }
示例#2
0
        /// <summary>
        /// 门禁主机报警信息
        /// </summary>
        /// <param name="sAlarm"></param>
        /// <returns></returns>
        public static string StrAlarmInfo(CHCNetSDK.NET_DVR_ACS_ALARM_INFO sAlarm)
        {
            DateTime dtime   = new DateTime((int)sAlarm.struTime.dwYear, (int)sAlarm.struTime.dwMonth, (int)sAlarm.struTime.dwDay, (int)sAlarm.struTime.dwHour, (int)sAlarm.struTime.dwMinute, (int)sAlarm.struTime.dwSecond);
            string   time    = dtime.ToString("yyyy-MM-dd HH:mm:ss");
            string   netUser = Encoding.UTF8.GetString(sAlarm.sNetUser);
            string   details = Encoding.UTF8.GetString(StructToBytes(sAlarm.struAcsEventInfo));
            string   result  = (GetMajorType(sAlarm.dwMajor, sAlarm.dwMinor) + ",报警时间:" + time + ",网络操作的用户名:" + netUser + ",远程主机地址" + sAlarm.struRemoteHostAddr.sIpV4 + "\r\n" + ",报警信息详细参数:" + details + ",");

            return(result);
        }
示例#3
0
        /// <summary>
        /// 门禁主机报警信息
        /// </summary>
        /// <param name="sAlarm"></param>
        /// <returns></returns>
        public static string StrAlarmInfo(CHCNetSDK.NET_DVR_ACS_ALARM_INFO sAlarm)
        {
            DateTime dtime   = new DateTime((int)sAlarm.struTime.dwYear, (int)sAlarm.struTime.dwMonth, (int)sAlarm.struTime.dwDay, (int)sAlarm.struTime.dwHour, (int)sAlarm.struTime.dwMinute, (int)sAlarm.struTime.dwSecond);
            string   time    = dtime.ToString("yyyy-MM-dd HH:mm:ss");
            string   netUser = Encoding.UTF8.GetString(sAlarm.sNetUser).TrimEnd('\0');

            byte[] ipv6      = sAlarm.struRemoteHostAddr.sIpV6;
            string ipAddress = "ipV4=" + sAlarm.struRemoteHostAddr.sIpV4.TrimEnd('\0') + ",ipV6=" +
                               Encoding.UTF8.GetString(ipv6).TrimEnd('\0');

            //string details = Encoding.UTF8.GetString(StructToBytes(sAlarm.struAcsEventInfo));
            string details = sAlarm.struAcsEventInfo.ToString();

            string result = (GetMajorType(sAlarm.dwMajor, sAlarm.dwMinor) + ",报警时间=" + time + ",网络操作的用户名=" + netUser + ",远程主机地址," + ipAddress + ",报警信息详细参数," + details);

            return(result);
        }
示例#4
0
        private void ProcessCommAlarmACS(ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
        {
            CHCNetSDK.NET_DVR_ACS_ALARM_INFO struAcsAlarmInfo = new CHCNetSDK.NET_DVR_ACS_ALARM_INFO();
            struAcsAlarmInfo = (CHCNetSDK.NET_DVR_ACS_ALARM_INFO)Marshal.PtrToStructure(pAlarmInfo, typeof(CHCNetSDK.NET_DVR_ACS_ALARM_INFO));
            CHCNetSDK.NET_DVR_LOG_V30 struFileInfo = new CHCNetSDK.NET_DVR_LOG_V30();
            struFileInfo.dwMajorType = struAcsAlarmInfo.dwMajor;
            struFileInfo.dwMinorType = struAcsAlarmInfo.dwMinor;
            char[] csTmp = new char[256];

            if (CHCNetSDK.MAJOR_ALARM == struFileInfo.dwMajorType)
            {
                TypeMap.AlarmMinorTypeMap(struFileInfo, csTmp);
            }
            else if (CHCNetSDK.MAJOR_OPERATION == struFileInfo.dwMajorType)
            {
                TypeMap.OperationMinorTypeMap(struFileInfo, csTmp);
            }
            else if (CHCNetSDK.MAJOR_EXCEPTION == struFileInfo.dwMajorType)
            {
                TypeMap.ExceptionMinorTypeMap(struFileInfo, csTmp);
            }
            else if (CHCNetSDK.MAJOR_EVENT == struFileInfo.dwMajorType)
            {
                TypeMap.EventMinorTypeMap(struFileInfo, csTmp);
            }

            String szInfo    = new String(csTmp).TrimEnd('\0');
            String szInfoBuf = null;

            szInfoBuf = szInfo;
            /**************************************************/
            String name = System.Text.Encoding.UTF8.GetString(struAcsAlarmInfo.sNetUser).TrimEnd('\0');

            for (int i = 0; i < struAcsAlarmInfo.sNetUser.Length; i++)
            {
                if (struAcsAlarmInfo.sNetUser[i] == 0)
                {
                    name = name.Substring(0, i);
                    break;
                }
            }
            /**************************************************/

            szInfoBuf = string.Format("{0} time:{1,4}-{2:D2}-{3} {4:D2}:{5:D2}:{6:D2}, [{7}]({8})", szInfo, struAcsAlarmInfo.struTime.dwYear, struAcsAlarmInfo.struTime.dwMonth,
                                      struAcsAlarmInfo.struTime.dwDay, struAcsAlarmInfo.struTime.dwHour, struAcsAlarmInfo.struTime.dwMinute, struAcsAlarmInfo.struTime.dwSecond,
                                      struAcsAlarmInfo.struRemoteHostAddr.sIpV4, name);

            if (struAcsAlarmInfo.struAcsEventInfo.byCardNo[0] != 0)
            {
                szInfoBuf = szInfoBuf + "+Card Number:" + System.Text.Encoding.UTF8.GetString(struAcsAlarmInfo.struAcsEventInfo.byCardNo).TrimEnd('\0');
            }
            String[] szCardType = { "normal card", "disabled card", "blacklist card", "night watch card", "stress card", "super card", "guest card" };
            byte     byCardType = struAcsAlarmInfo.struAcsEventInfo.byCardType;

            if (byCardType != 0 && byCardType <= szCardType.Length)
            {
                szInfoBuf = szInfoBuf + "+Card Type:" + szCardType[byCardType - 1];
            }

            if (struAcsAlarmInfo.struAcsEventInfo.dwCardReaderNo != 0)
            {
                szInfoBuf = szInfoBuf + "+Card Reader Number:" + struAcsAlarmInfo.struAcsEventInfo.dwCardReaderNo;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.dwDoorNo != 0)
            {
                szInfoBuf = szInfoBuf + "+Door Number:" + struAcsAlarmInfo.struAcsEventInfo.dwDoorNo;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.dwVerifyNo != 0)
            {
                szInfoBuf = szInfoBuf + "+Multiple Card Authentication Serial Number:" + struAcsAlarmInfo.struAcsEventInfo.dwVerifyNo;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.dwAlarmInNo != 0)
            {
                szInfoBuf = szInfoBuf + "+Alarm Input Number:" + struAcsAlarmInfo.struAcsEventInfo.dwAlarmInNo;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.dwAlarmOutNo != 0)
            {
                szInfoBuf = szInfoBuf + "+Alarm Output Number:" + struAcsAlarmInfo.struAcsEventInfo.dwAlarmOutNo;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.dwCaseSensorNo != 0)
            {
                szInfoBuf = szInfoBuf + "+Event Trigger Number:" + struAcsAlarmInfo.struAcsEventInfo.dwCaseSensorNo;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.dwRs485No != 0)
            {
                szInfoBuf = szInfoBuf + "+RS485 Channel Number:" + struAcsAlarmInfo.struAcsEventInfo.dwRs485No;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.dwMultiCardGroupNo != 0)
            {
                szInfoBuf = szInfoBuf + "+Multi Recombinant Authentication ID:" + struAcsAlarmInfo.struAcsEventInfo.dwMultiCardGroupNo;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.byCardReaderKind != 0)
            {
                szInfoBuf = szInfoBuf + "+CardReaderKind:" + struAcsAlarmInfo.struAcsEventInfo.byCardReaderKind.ToString();
            }
            if (struAcsAlarmInfo.struAcsEventInfo.wAccessChannel >= 0)
            {
                szInfoBuf = szInfoBuf + "+wAccessChannel:" + struAcsAlarmInfo.struAcsEventInfo.wAccessChannel;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.dwEmployeeNo != 0)
            {
                szInfoBuf = szInfoBuf + "+EmployeeNo:" + struAcsAlarmInfo.struAcsEventInfo.dwEmployeeNo;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.byDeviceNo != 0)
            {
                szInfoBuf = szInfoBuf + "+byDeviceNo:" + struAcsAlarmInfo.struAcsEventInfo.byDeviceNo.ToString();
            }
            if (struAcsAlarmInfo.struAcsEventInfo.wLocalControllerID >= 0)
            {
                szInfoBuf = szInfoBuf + "+wLocalControllerID:" + struAcsAlarmInfo.struAcsEventInfo.wLocalControllerID;
            }
            if (struAcsAlarmInfo.struAcsEventInfo.byInternetAccess >= 0)
            {
                szInfoBuf = szInfoBuf + "+byInternetAccess:" + struAcsAlarmInfo.struAcsEventInfo.byInternetAccess.ToString();
            }
            if (struAcsAlarmInfo.struAcsEventInfo.byType >= 0)
            {
                szInfoBuf = szInfoBuf + "+byType:" + struAcsAlarmInfo.struAcsEventInfo.byType.ToString();
            }
            if (struAcsAlarmInfo.struAcsEventInfo.bySwipeCardType != 0)
            {
                szInfoBuf = szInfoBuf + "+bySwipeCardType:" + struAcsAlarmInfo.struAcsEventInfo.bySwipeCardType.ToString();
            }
            //其它消息先不罗列了......

            if (struAcsAlarmInfo.dwPicDataLen > 0)
            {
                path = null;
                Random rand = new Random(unchecked ((int)DateTime.Now.Ticks));
                path = string.Format(@"C:/Picture/ACS_LocalTime{0}_{1}.bmp", szInfo, rand.Next());
                using (FileStream fs = new FileStream(path, FileMode.Create))
                {
                    int    iLen = (int)struAcsAlarmInfo.dwPicDataLen;
                    byte[] by   = new byte[iLen];
                    Marshal.Copy(struAcsAlarmInfo.pPicData, by, 0, iLen);
                    fs.Write(by, 0, iLen);
                    fs.Close();
                }
                szInfoBuf = szInfoBuf + "SavePath:" + path;
            }

            this.listViewAlarmInfo.BeginInvoke(new Action(() =>
            {
                ListViewItem Item = new ListViewItem();
                Item.Text         = (++m_lLogNum).ToString();
                Item.SubItems.Add(DateTime.Now.ToString());
                Item.SubItems.Add(szInfoBuf);
                this.listViewAlarmInfo.Items.Add(Item);
            }));
        }