xiongzhu пре 5 година
родитељ
комит
2bf4afaab4

+ 2 - 0
CamTool/CamTool.csproj

@@ -103,6 +103,8 @@
     <Compile Include="PlayCtrl.cs" />
     <Compile Include="ProcessAsUser.cs" />
     <Compile Include="UsbSwitch.cs" />
+    <Compile Include="utils\AcsUtil.cs" />
+    <Compile Include="utils\VehicleUtil.cs" />
     <Compile Include="utils\PortUtil.cs" />
     <Compile Include="utils\ProcessUtil.cs" />
     <Page Include="MainWindow.xaml">

+ 144 - 109
CamTool/MainWindow.xaml.cs

@@ -33,7 +33,7 @@ namespace CamTool
         private static RestClient restClient;
         private static string serial = "";
         private static double currentWeight = 0f;
-          
+
         private SerialPort sp;
         public delegate void ComReceiveDataHandler(string data);
         public ComReceiveDataHandler OnComReceiveDataHandler = null;
@@ -115,7 +115,7 @@ namespace CamTool
                 struDeviceInfoV40.struDeviceV30.sSerialNumber = new byte[CHCNetSDK.SERIALNO_LEN];
 
                 int lUserID = CHCNetSDK.NET_DVR_Login_V40(ref struLoginInfo, ref struDeviceInfoV40);
-                if(lUserID < 0)
+                if (lUserID < 0)
                 {
                     uint nErr = CHCNetSDK.NET_DVR_GetLastError();
                     if (nErr == CHCNetSDK.NET_DVR_PASSWORD_ERROR)
@@ -139,6 +139,30 @@ namespace CamTool
                     {
                         MessageBox.Show("net error or dvr is busy!");
                     }
+                    break;
+                }
+                CHCNetSDK.NET_DVR_SETUPALARM_PARAM struSetupAlarmParam = new CHCNetSDK.NET_DVR_SETUPALARM_PARAM();
+                struSetupAlarmParam.dwSize = (uint)Marshal.SizeOf(struSetupAlarmParam);
+                struSetupAlarmParam.byLevel = 1;
+                struSetupAlarmParam.byAlarmInfoType = 1;
+                int handle = CHCNetSDK.NET_DVR_SetupAlarmChan_V41(lUserID, ref struSetupAlarmParam);
+                if (-1 == handle)
+                {
+                    MessageBox.Show("Setup alarm chan failed");
+                }
+                else
+                {
+                    MessageBox.Show("Setup alarm chan succeed");
+
+                    CHCNetSDK.MSGCallBack m_falarmData = new CHCNetSDK.MSGCallBack(MsgCallback);
+                    if (CHCNetSDK.NET_DVR_SetDVRMessageCallBack_V50(0, m_falarmData, IntPtr.Zero))
+                    {
+                        MessageBox.Show("NET_DVR_SetDVRMessageCallBack_V50 Succeed");
+                    }
+                    else
+                    {
+                        MessageBox.Show("NET_DVR_SetDVRMessageCallBack_V50 Fail");
+                    }
                 }
 
 
@@ -227,119 +251,16 @@ namespace CamTool
                     //车型
                     string strVehicleBrand = System.Text.Encoding.Default.GetString(tImageInfo.strVehicleBrand).Replace("\0", "");
                     log.Info("车型:" + strVehicleBrand);
-                    string vehicleType = "";
-                    switch (tImageInfo.ucVehicleSize)//车辆类型
-                    {
-                        case 0:
-                            {
-                                vehicleType = "未知车型";
-                                break;
-                            }
 
-                        case 1:
-                            {
-                                vehicleType = "大型车";
-                                break;
-                            }
-                        case 2:
-                            {
-                                vehicleType = "中型车";
-                                break;
-                            }
-                        case 3:
-                            {
-                                vehicleType = "小型车";
-                                break;
-                            }
-                        case 4:
-                            {
-                                vehicleType = "摩托车";
-                                break;
-                            }
-                        case 5:
-                            {
-                                vehicleType = "行人";
-                                break;
-                            }
-                        default:
-                            {
-                                vehicleType = "未知车型";
-                                break;
-                            }
-                    }
+                    string vehicleType = VehicleUtil.getVehicleType(tImageInfo.ucVehicleSize);//车辆类型
                     log.Info("车辆类型:" + vehicleType);
 
-                    string vehicleColor = "";
-                    switch (tImageInfo.ucPlateColor)//车牌颜色
-                    {
-                        case 0:
-                            vehicleColor = "蓝色";
-                            break;
-                        case 1:
-                            vehicleColor = "黄色";
-                            break;
-                        case 2:
-                            vehicleColor = "白色";
-                            break;
-                        case 3:
-                            vehicleColor = "黑色";
-                            break;
-                        case 5:
-                            vehicleColor = "绿色";
-                            break;
-                        case 6:
-                            vehicleColor = "黄绿";
-                            break;
-                        case 4:
-                        default:
-                            vehicleColor = "未识别";
-                            break;
-                    }
+                    string vehicleColor = VehicleUtil.getColor(tImageInfo.ucPlateColor);//车牌颜色
                     log.Info("颜色:" + vehicleColor);
 
-                    string strImageFile1 = null;
-                    if (tPicInfo.ptPanoramaPicBuff != IntPtr.Zero && tPicInfo.uiPanoramaPicLen != 0)
-                    {
-                        try
-                        {
-                            log.Info("图片1:" + strImageFile1);
-                            byte[] BytePanoramaPicBuff = new byte[tPicInfo.uiPanoramaPicLen];
-                            Marshal.Copy(tPicInfo.ptPanoramaPicBuff, BytePanoramaPicBuff, 0, (int)tPicInfo.uiPanoramaPicLen);
-                            strImageFile1 = String.Format("{0}\\{1}.jpg", strImageDir, strTime);
-                            FileStream fs = new FileStream(strImageFile1, FileMode.Create, FileAccess.Write | FileAccess.Read, FileShare.None);
-                            fs.Write(BytePanoramaPicBuff, 0, (int)tPicInfo.uiPanoramaPicLen);
-                            //pictureBoxPlate.Image = Image.FromStream(fs);
-                            fs.Close();
-                            fs.Dispose();
-                        }
-                        catch (Exception e)
-                        {
-                            strImageFile1 = null;
-                            log.Error("写入图片出错", e);
-                        }
-                    }
+                    string strImageFile1 = VehicleUtil.savePanoramaPic(strImageDir, ref tPicInfo, 1);
 
-                    string strImageFile2 = null;
-                    if (tPicInfo.ptVehiclePicBuff != IntPtr.Zero && tPicInfo.uiVehiclePicLen != 0)
-                    {
-                        try
-                        {
-                            log.Info("图片2:" + strImageFile2);
-                            byte[] ByteVehiclePicBuff = new byte[tPicInfo.uiVehiclePicLen];
-                            Marshal.Copy(tPicInfo.ptVehiclePicBuff, ByteVehiclePicBuff, 0, (int)tPicInfo.uiVehiclePicLen);
-                            strImageFile2 = String.Format("{0}\\{1}_plate.jpg", strImageDir, strTime);
-                            FileStream fs = new FileStream(strImageFile2, FileMode.Create, FileAccess.Write | FileAccess.Read, FileShare.None);
-                            fs.Write(ByteVehiclePicBuff, 0, (int)tPicInfo.uiVehiclePicLen);
-                            //pictureBoxPlateImage.Image = Image.FromStream(fs);
-                            fs.Close();
-                            fs.Dispose();
-                        }
-                        catch (Exception e)
-                        {
-                            strImageFile2 = null;
-                            log.Error("写入图片出错", e);
-                        }
-                    }
+                    string strImageFile2 = VehicleUtil.savePanoramaPic(strImageDir, ref tPicInfo, 2); ;
 
 
                     double weight = readWeight();
@@ -584,6 +505,120 @@ namespace CamTool
                     JsonConvert.SerializeObject(responseToLog)));
         }
 
+        public void MsgCallback(int lCommand, ref CHCNetSDK.NET_DVR_ALARMER pAlarmer, IntPtr pAlarmInfo, uint dwBufLen, IntPtr pUser)
+        {
+            switch (lCommand)
+            {
+                case CHCNetSDK.COMM_ALARM_ACS:
+                    ProcessCommAlarmACS(ref pAlarmer, pAlarmInfo, dwBufLen, pUser);
+                    break;
+                default:
+                    break;
+            }
+        }
+
+        public 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)
+            {
+                AcsUtil.AlarmMinorTypeMap(struFileInfo, csTmp);
+            }
+            else if (CHCNetSDK.MAJOR_OPERATION == struFileInfo.dwMajorType)
+            {
+                AcsUtil.OperationMinorTypeMap(struFileInfo, csTmp);
+            }
+            else if (CHCNetSDK.MAJOR_EXCEPTION == struFileInfo.dwMajorType)
+            {
+                AcsUtil.ExceptionMinorTypeMap(struFileInfo, csTmp);
+            }
+            else if (CHCNetSDK.MAJOR_EVENT == struFileInfo.dwMajorType)
+            {
+                AcsUtil.EventMinorTypeMap(struFileInfo, csTmp);
+            }
+            String szInfo = new String(csTmp).TrimEnd('\0');
+            String szInfoBuf = null;
+            char[] szNetUser = new char[struAcsAlarmInfo.sNetUser.GetLength(0) + 1];
+
+            struAcsAlarmInfo.sNetUser.CopyTo(szNetUser, 0);
+
+            szInfoBuf = string.Format("{0} {1,4}-{2,2}-{3} {4,2}:{5,2}:{6,2} [{7}]({8})", szInfo, struAcsAlarmInfo.struTime.dwYear, struAcsAlarmInfo.struTime.dwMonth,
+                struAcsAlarmInfo.struTime.dwDay, struAcsAlarmInfo.struTime.dwHour, struAcsAlarmInfo.struTime.dwMinute, struAcsAlarmInfo.struTime.dwSecond,
+                struAcsAlarmInfo.struRemoteHostAddr.sIpV4, System.Text.Encoding.UTF8.GetString(struAcsAlarmInfo.sNetUser).TrimEnd('\0'));
+            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.dwPicDataLen > 0)
+            {
+                Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
+                DateTime curTime = DateTime.Now;
+                string path = null;
+                path = string.Format(@"C:/Picture/ACS_LocalTime{0}_{1}.bmp", szInfo, rand.Next());
+                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;
+            }
+            log.Info(szInfo);
+        }
+
+
+
     }
 
 

BIN
CamTool/bin/x86/Debug/CamTool.exe


BIN
CamTool/bin/x86/Debug/CamTool.pdb


+ 1 - 1
CamTool/obj/x86/Debug/CamTool.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-01710940d1ddc7413dfdf395a3d14ce3e7a67961
+6521a5f8dc9ed9943428382bccf8495a204eacfd

BIN
CamTool/obj/x86/Debug/CamTool.csprojAssemblyReference.cache


BIN
CamTool/obj/x86/Debug/CamTool.exe


BIN
CamTool/obj/x86/Debug/CamTool.pdb


+ 1 - 1
CamTool/obj/x86/Debug/CamTool_MarkupCompile.cache

@@ -12,7 +12,7 @@ false
 C:\Users\xiong\Projects\csharp\CamTool\CamTool\App.xaml
 11151548125
 
-141673640336
+16-650453758
 191610000482
 MainWindow.xaml;
 

+ 1 - 1
CamTool/obj/x86/Debug/CamTool_MarkupCompile.i.cache

@@ -12,7 +12,7 @@ false
 C:\Users\xiong\Projects\csharp\CamTool\CamTool\App.xaml
 11151548125
 
-15-949571468
+171021301734
 191610000482
 MainWindow.xaml;
 

+ 736 - 0
CamTool/utils/AcsUtil.cs

@@ -0,0 +1,736 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CamTool.utils
+{
+    class AcsUtil
+    {
+        public static void AlarmMinorTypeMap(CHCNetSDK.NET_DVR_LOG_V30 stLogInfo, char[] csTmp)
+        {
+            String szTemp = null;
+            switch (stLogInfo.dwMinorType)
+            {
+                //alarm
+                case CHCNetSDK.MINOR_ALARMIN_SHORT_CIRCUIT:
+                    szTemp = String.Format("MINOR_ALARMIN_SHORT_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_ALARMIN_BROKEN_CIRCUIT:
+                    szTemp = String.Format("MINOR_ALARMIN_BROKEN_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_ALARMIN_EXCEPTION:
+                    szTemp = String.Format("MINOR_ALARMIN_EXCEPTION");
+                    break;
+                case CHCNetSDK.MINOR_ALARMIN_RESUME:
+                    szTemp = String.Format("MINOR_ALARMIN_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_HOST_DESMANTLE_ALARM:
+                    szTemp = String.Format("MINOR_HOST_DESMANTLE_ALARM");
+                    break;
+                case CHCNetSDK.MINOR_HOST_DESMANTLE_RESUME:
+                    szTemp = String.Format("MINOR_HOST_DESMANTLE_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_CARD_READER_DESMANTLE_ALARM:
+                    szTemp = String.Format("MINOR_CARD_READER_DESMANTLE_ALARM");
+                    break;
+                case CHCNetSDK.MINOR_CARD_READER_DESMANTLE_RESUME:
+                    szTemp = String.Format("MINOR_CARD_READER_DESMANTLE_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_CASE_SENSOR_ALARM:
+                    szTemp = String.Format("MINOR_CASE_SENSOR_ALARM");
+                    break;
+                case CHCNetSDK.MINOR_CASE_SENSOR_RESUME:
+                    szTemp = String.Format("MINOR_CASE_SENSOR_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_STRESS_ALARM:
+                    szTemp = String.Format("MINOR_STRESS_ALARM");
+                    break;
+                case CHCNetSDK.MINOR_OFFLINE_ECENT_NEARLY_FULL:
+                    szTemp = String.Format("MINOR_OFFLINE_ECENT_NEARLY_FULL");
+                    break;
+                case CHCNetSDK.MINOR_CARD_MAX_AUTHENTICATE_FAIL:
+                    szTemp = String.Format("MINOR_CARD_MAX_AUTHENTICATE_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_SD_CARD_FULL:
+                    szTemp = String.Format("MINOR_SD_CARD_FULL");
+                    break;
+                case CHCNetSDK.MINOR_LINKAGE_CAPTURE_PIC:
+                    szTemp = String.Format("MINOR_LINKAGE_CAPTURE_PIC");
+                    break;
+                case CHCNetSDK.MINOR_SECURITY_MODULE_DESMANTLE_ALARM:
+                    szTemp = String.Format("MINOR_SECURITY_MODULE_DESMANTLE_ALARM");
+                    break;
+                case CHCNetSDK.MINOR_SECURITY_MODULE_DESMANTLE_RESUME:
+                    szTemp = String.Format("MINOR_SECURITY_MODULE_DESMANTLE_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_POS_START_ALARM:
+                    szTemp = String.Format("MINOR_POS_START_ALARM");
+                    break;
+                case CHCNetSDK.MINOR_POS_END_ALARM:
+                    szTemp = String.Format("MINOR_POS_END_ALARM");
+                    break;
+                case CHCNetSDK.MINOR_FACE_IMAGE_QUALITY_LOW:
+                    szTemp = String.Format("MINOR_FACE_IMAGE_QUALITY_LOW");
+                    break;
+                case CHCNetSDK.MINOR_FINGE_RPRINT_QUALITY_LOW:
+                    szTemp = String.Format("MINOR_FINGE_RPRINT_QUALITY_LOW");
+                    break;
+                case CHCNetSDK.MINOR_FIRE_IMPORT_SHORT_CIRCUIT:
+                    szTemp = String.Format("MINOR_FIRE_IMPORT_SHORT_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_FIRE_IMPORT_BROKEN_CIRCUIT:
+                    szTemp = String.Format("MINOR_FIRE_IMPORT_BROKEN_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_FIRE_IMPORT_RESUME:
+                    szTemp = String.Format("MINOR_FIRE_IMPORT_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_FIRE_BUTTON_TRIGGER:
+                    szTemp = String.Format("MINOR_FIRE_BUTTON_TRIGGER");
+                    break;
+                case CHCNetSDK.MINOR_FIRE_BUTTON_RESUME:
+                    szTemp = String.Format("MINOR_FIRE_BUTTON_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_MAINTENANCE_BUTTON_TRIGGER:
+                    szTemp = String.Format("MINOR_MAINTENANCE_BUTTON_TRIGGER");
+                    break;
+                case CHCNetSDK.MINOR_MAINTENANCE_BUTTON_RESUME:
+                    szTemp = String.Format("MINOR_MAINTENANCE_BUTTON_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_EMERGENCY_BUTTON_TRIGGER:
+                    szTemp = String.Format("MINOR_EMERGENCY_BUTTON_TRIGGER");
+                    break;
+                case CHCNetSDK.MINOR_EMERGENCY_BUTTON_RESUME:
+                    szTemp = String.Format("MINOR_EMERGENCY_BUTTON_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_DISTRACT_CONTROLLER_ALARM:
+                    szTemp = String.Format("MINOR_DISTRACT_CONTROLLER_ALARM");
+                    break;
+                case CHCNetSDK.MINOR_DISTRACT_CONTROLLER_RESUME:
+                    szTemp = String.Format("MINOR_DISTRACT_CONTROLLER_RESUME");
+                    break;
+                default:
+                    szTemp = String.Format("0x" + stLogInfo.dwMinorType);
+                    break;
+            }
+            szTemp.CopyTo(0, csTmp, 0, szTemp.Length);
+            return;
+        }
+
+        public static void ExceptionMinorTypeMap(CHCNetSDK.NET_DVR_LOG_V30 stLogInfo, char[] csTmp)
+        {
+            String szTemp = null;
+            switch (stLogInfo.dwMinorType)
+            {
+                //exception
+                case CHCNetSDK.MINOR_NET_BROKEN:
+                    szTemp = String.Format("MINOR_NET_BROKEN");
+                    break;
+                case CHCNetSDK.MINOR_RS485_DEVICE_ABNORMAL:
+                    szTemp = String.Format("MINOR_RS485_DEVICE_ABNORMAL");
+                    break;
+                case CHCNetSDK.MINOR_RS485_DEVICE_REVERT:
+                    szTemp = String.Format("MINOR_RS485_DEVICE_REVERT");
+                    break;
+                case CHCNetSDK.MINOR_DEV_POWER_ON:
+                    szTemp = String.Format("MINOR_DEV_POWER_ON");
+                    break;
+                case CHCNetSDK.MINOR_DEV_POWER_OFF:
+                    szTemp = String.Format("MINOR_DEV_POWER_OFF");
+                    break;
+                case CHCNetSDK.MINOR_WATCH_DOG_RESET:
+                    szTemp = String.Format("MINOR_WATCH_DOG_RESET");
+                    break;
+                case CHCNetSDK.MINOR_LOW_BATTERY:
+                    szTemp = String.Format("MINOR_LOW_BATTERY");
+                    break;
+                case CHCNetSDK.MINOR_BATTERY_RESUME:
+                    szTemp = String.Format("MINOR_BATTERY_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_AC_OFF:
+                    szTemp = String.Format("MINOR_AC_OFF");
+                    break;
+                case CHCNetSDK.MINOR_AC_RESUME:
+                    szTemp = String.Format("MINOR_AC_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_NET_RESUME:
+                    szTemp = String.Format("MINOR_NET_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_FLASH_ABNORMAL:
+                    szTemp = String.Format("MINOR_FLASH_ABNORMAL");
+                    break;
+                case CHCNetSDK.MINOR_CARD_READER_OFFLINE:
+                    szTemp = String.Format("MINOR_CARD_READER_OFFLINE");
+                    break;
+                case CHCNetSDK.MINOR_CARD_READER_RESUME:
+                    szTemp = String.Format("MINOR_CAED_READER_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_INDICATOR_LIGHT_OFF:
+                    szTemp = String.Format("MINOR_INDICATOR_LIGHT_OFF");
+                    break;
+                case CHCNetSDK.MINOR_INDICATOR_LIGHT_RESUME:
+                    szTemp = String.Format("MINOR_INDICATOR_LIGHT_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_CHANNEL_CONTROLLER_OFF:
+                    szTemp = String.Format("MINOR_CHANNEL_CONTROLLER_OFF");
+                    break;
+                case CHCNetSDK.MINOR_CHANNEL_CONTROLLER_RESUME:
+                    szTemp = String.Format("MINOR_CHANNEL_CONTROLLER_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_SECURITY_MODULE_OFF:
+                    szTemp = String.Format("MINOR_SECURITY_MODULE_OFF");
+                    break;
+                case CHCNetSDK.MINOR_SECURITY_MODULE_RESUME:
+                    szTemp = String.Format("MINOR_SECURITY_MODULE_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_BATTERY_ELECTRIC_LOW:
+                    szTemp = String.Format("MINOR_BATTERY_ELECTRIC_LOW");
+                    break;
+                case CHCNetSDK.MINOR_BATTERY_ELECTRIC_RESUME:
+                    szTemp = String.Format("MINOR_BATTERY_ELECTRIC_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_CONTROL_NET_BROKEN:
+                    szTemp = String.Format("MINOR_LOCAL_CONTROL_NET_BROKEN");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_CONTROL_NET_RSUME:
+                    szTemp = String.Format("MINOR_LOCAL_CONTROL_NET_RSUME");
+                    break;
+                case CHCNetSDK.MINOR_MASTER_RS485_LOOPNODE_BROKEN:
+                    szTemp = String.Format("MINOR_MASTER_RS485_LOOPNODE_BROKEN");
+                    break;
+                case CHCNetSDK.MINOR_MASTER_RS485_LOOPNODE_RESUME:
+                    szTemp = String.Format("MINOR_MASTER_RS485_LOOPNODE_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_CONTROL_OFFLINE:
+                    szTemp = String.Format("MINOR_LOCAL_CONTROL_OFFLINE");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_CONTROL_RESUME:
+                    szTemp = String.Format("MINOR_LOCAL_CONTROL_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN:
+                    szTemp = String.Format("MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_BROKEN");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME:
+                    szTemp = String.Format("MINOR_LOCAL_DOWNSIDE_RS485_LOOPNODE_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_DISTRACT_CONTROLLER_ONLINE:
+                    szTemp = String.Format("MINOR_DISTRACT_CONTROLLER_ONLINE");
+                    break;
+                case CHCNetSDK.MINOR_DISTRACT_CONTROLLER_OFFLINE:
+                    szTemp = String.Format("MINOR_DISTRACT_CONTROLLER_OFFLINE");
+                    break;
+                case CHCNetSDK.MINOR_ID_CARD_READER_NOT_CONNECT:
+                    szTemp = String.Format("MINOR_ID_CARD_READER_NOT_CONNECT");
+                    break;
+                case CHCNetSDK.MINOR_ID_CARD_READER_RESUME:
+                    szTemp = String.Format("MINOR_ID_CARD_READER_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_FINGER_PRINT_MODULE_NOT_CONNECT:
+                    szTemp = String.Format("MINOR_FINGER_PRINT_MODULE_NOT_CONNECT");
+                    break;
+                case CHCNetSDK.MINOR_FINGER_PRINT_MODULE_RESUME:
+                    szTemp = String.Format("MINOR_FINGER_PRINT_MODULE_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_CAMERA_NOT_CONNECT:
+                    szTemp = String.Format("MINOR_CAMERA_NOT_CONNECT");
+                    break;
+                case CHCNetSDK.MINOR_CAMERA_RESUME:
+                    szTemp = String.Format("MINOR_CAMERA_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_COM_NOT_CONNECT:
+                    szTemp = String.Format("MINOR_COM_NOT_CONNECT");
+                    break;
+                case CHCNetSDK.MINOR_COM_RESUME:
+                    szTemp = String.Format("MINOR_COM_RESUME");
+                    break;
+                case CHCNetSDK.MINOR_DEVICE_NOT_AUTHORIZE:
+                    szTemp = String.Format("MINOR_DEVICE_NOT_AUTHORIZE");
+                    break;
+                case CHCNetSDK.MINOR_PEOPLE_AND_ID_CARD_DEVICE_ONLINE:
+                    szTemp = String.Format("MINOR_PEOPLE_AND_ID_CARD_DEVICE_ONLINE");
+                    break;
+                case CHCNetSDK.MINOR_PEOPLE_AND_ID_CARD_DEVICE_OFFLINE:
+                    szTemp = String.Format("MINOR_PEOPLE_AND_ID_CARD_DEVICE_OFFLINE");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_LOGIN_LOCK:
+                    szTemp = String.Format("MINOR_LOCAL_LOGIN_LOCK");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_LOGIN_UNLOCK:
+                    szTemp = String.Format("MINOR_LOCAL_LOGIN_UNLOCK");
+                    break;
+                default:
+                    szTemp = String.Format("0x" + stLogInfo.dwMinorType);
+                    break;
+            }
+            szTemp.CopyTo(0, csTmp, 0, szTemp.Length);
+            return;
+        }
+
+        public static void EventMinorTypeMap(CHCNetSDK.NET_DVR_LOG_V30 stLogInfo, char[] csTmp)
+        {
+            String szTemp = null;
+            switch (stLogInfo.dwMinorType)
+            {
+                case CHCNetSDK.MINOR_LEGAL_CARD_PASS:
+                    szTemp = String.Format("MINOR_LEGAL_CARD_PASS");
+                    break;
+                case CHCNetSDK.MINOR_CARD_AND_PSW_PASS:
+                    szTemp = String.Format("MINOR_CARD_AND_PSW_PASS");
+                    break;
+                case CHCNetSDK.MINOR_CARD_AND_PSW_FAIL:
+                    szTemp = String.Format("MINOR_CARD_AND_PSW_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_CARD_AND_PSW_TIMEOUT:
+                    szTemp = String.Format("MINOR_CARD_AND_PSW_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_CARD_AND_PSW_OVER_TIME:
+                    szTemp = String.Format("MINOR_CARD_AND_PSW_OVER_TIME");
+                    break;
+                case CHCNetSDK.MINOR_CARD_NO_RIGHT:
+                    szTemp = String.Format("MINOR_CARD_NO_RIGHT");
+                    break;
+                case CHCNetSDK.MINOR_CARD_INVALID_PERIOD:
+                    szTemp = String.Format("MINOR_CARD_INVALID_PERIOD");
+                    break;
+                case CHCNetSDK.MINOR_CARD_OUT_OF_DATE:
+                    szTemp = String.Format("MINOR_CARD_OUT_OF_DATE");
+                    break;
+                case CHCNetSDK.MINOR_INVALID_CARD:
+                    szTemp = String.Format("MINOR_INVALID_CARD");
+                    break;
+                case CHCNetSDK.MINOR_ANTI_SNEAK_FAIL:
+                    szTemp = String.Format("MINOR_ANTI_SNEAK_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_INTERLOCK_DOOR_NOT_CLOSE:
+                    szTemp = String.Format("MINOR_INTERLOCK_DOOR_NOT_CLOSE");
+                    break;
+                case CHCNetSDK.MINOR_NOT_BELONG_MULTI_GROUP:
+                    szTemp = String.Format("MINOR_NOT_BELONG_MULTI_GROUP");
+                    break;
+                case CHCNetSDK.MINOR_INVALID_MULTI_VERIFY_PERIOD:
+                    szTemp = String.Format("MINOR_INVALID_MULTI_VERIFY_PERIOD");
+                    break;
+                case CHCNetSDK.MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL:
+                    szTemp = String.Format("MINOR_MULTI_VERIFY_SUPER_RIGHT_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL:
+                    szTemp = String.Format("MINOR_MULTI_VERIFY_REMOTE_RIGHT_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_MULTI_VERIFY_SUCCESS:
+                    szTemp = String.Format("MINOR_MULTI_VERIFY_SUCCESS");
+                    break;
+                case CHCNetSDK.MINOR_LEADER_CARD_OPEN_BEGIN:
+                    szTemp = String.Format("MINOR_LEADER_CARD_OPEN_BEGIN");
+                    break;
+                case CHCNetSDK.MINOR_LEADER_CARD_OPEN_END:
+                    szTemp = String.Format("MINOR_LEADER_CARD_OPEN_END");
+                    break;
+                case CHCNetSDK.MINOR_ALWAYS_OPEN_BEGIN:
+                    szTemp = String.Format("MINOR_ALWAYS_OPEN_BEGIN");
+                    break;
+                case CHCNetSDK.MINOR_ALWAYS_OPEN_END:
+                    szTemp = String.Format("MINOR_ALWAYS_OPEN_END");
+                    break;
+                case CHCNetSDK.MINOR_LOCK_OPEN:
+                    szTemp = String.Format("MINOR_LOCK_OPEN");
+                    break;
+                case CHCNetSDK.MINOR_LOCK_CLOSE:
+                    szTemp = String.Format("MINOR_LOCK_CLOSE");
+                    break;
+                case CHCNetSDK.MINOR_DOOR_BUTTON_PRESS:
+                    szTemp = String.Format("MINOR_DOOR_BUTTON_PRESS");
+                    break;
+                case CHCNetSDK.MINOR_DOOR_BUTTON_RELEASE:
+                    szTemp = String.Format("MINOR_DOOR_BUTTON_RELEASE");
+                    break;
+                case CHCNetSDK.MINOR_DOOR_OPEN_NORMAL:
+                    szTemp = String.Format("MINOR_DOOR_OPEN_NORMAL");
+                    break;
+                case CHCNetSDK.MINOR_DOOR_CLOSE_NORMAL:
+                    szTemp = String.Format("MINOR_DOOR_CLOSE_NORMAL");
+                    break;
+                case CHCNetSDK.MINOR_DOOR_OPEN_ABNORMAL:
+                    szTemp = String.Format("MINOR_DOOR_OPEN_ABNORMAL");
+                    break;
+                case CHCNetSDK.MINOR_DOOR_OPEN_TIMEOUT:
+                    szTemp = String.Format("MINOR_DOOR_OPEN_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_ALARMOUT_ON:
+                    szTemp = String.Format("MINOR_ALARMOUT_ON");
+                    break;
+                case CHCNetSDK.MINOR_ALARMOUT_OFF:
+                    szTemp = String.Format("MINOR_ALARMOUT_OFF");
+                    break;
+                case CHCNetSDK.MINOR_ALWAYS_CLOSE_BEGIN:
+                    szTemp = String.Format("MINOR_ALWAYS_CLOSE_BEGIN");
+                    break;
+                case CHCNetSDK.MINOR_ALWAYS_CLOSE_END:
+                    szTemp = String.Format("MINOR_ALWAYS_CLOSE_END");
+                    break;
+                case CHCNetSDK.MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN:
+                    szTemp = String.Format("MINOR_MULTI_VERIFY_NEED_REMOTE_OPEN");
+                    break;
+                case CHCNetSDK.MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS:
+                    szTemp = String.Format("MINOR_MULTI_VERIFY_SUPERPASSWD_VERIFY_SUCCESS");
+                    break;
+                case CHCNetSDK.MINOR_MULTI_VERIFY_REPEAT_VERIFY:
+                    szTemp = String.Format("MINOR_MULTI_VERIFY_REPEAT_VERIFY");
+                    break;
+                case CHCNetSDK.MINOR_MULTI_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_MULTI_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_DOORBELL_RINGING:
+                    szTemp = String.Format("MINOR_DOORBELL_RINGING");
+                    break;
+                case CHCNetSDK.MINOR_FINGERPRINT_COMPARE_PASS:
+                    szTemp = String.Format("MINOR_FINGERPRINT_COMPARE_PASS");
+                    break;
+                case CHCNetSDK.MINOR_FINGERPRINT_COMPARE_FAIL:
+                    szTemp = String.Format("MINOR_FINGERPRINT_COMPARE_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_CARD_FINGERPRINT_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_CARD_FINGERPRINT_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_CARD_FINGERPRINT_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_CARD_FINGERPRINT_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_CARD_FINGERPRINT_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_CARD_FINGERPRINT_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_CARD_FINGERPRINT_PASSWD_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FINGERPRINT_PASSWD_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_FINGERPRINT_PASSWD_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_FINGERPRINT_PASSWD_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_FINGERPRINT_PASSWD_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_FINGERPRINT_PASSWD_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_FINGERPRINT_PASSWD_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FINGERPRINT_INEXISTENCE:
+                    szTemp = String.Format("MINOR_FINGERPRINT_INEXISTENCE");
+                    break;
+                case CHCNetSDK.MINOR_CARD_PLATFORM_VERIFY:
+                    szTemp = String.Format("MINOR_CARD_PLATFORM_VERIFY");
+                    break;
+                case CHCNetSDK.MINOR_CALL_CENTER:
+                    szTemp = String.Format("MINOR_CALL_CENTER");
+                    break;
+                case CHCNetSDK.MINOR_FIRE_RELAY_TURN_ON_DOOR_ALWAYS_OPEN:
+                    szTemp = String.Format("MINOR_FIRE_RELAY_TURN_ON_DOOR_ALWAYS_OPEN");
+                    break;
+                case CHCNetSDK.MINOR_FIRE_RELAY_RECOVER_DOOR_RECOVER_NORMAL:
+                    szTemp = String.Format("MINOR_FIRE_RELAY_RECOVER_DOOR_RECOVER_NORMAL");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_FP_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_FACE_AND_FP_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_FP_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_FACE_AND_FP_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_FP_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_FACE_AND_FP_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_PW_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_FACE_AND_PW_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_PW_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_FACE_AND_PW_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_PW_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_FACE_AND_PW_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_CARD_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_FACE_AND_CARD_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_CARD_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_FACE_AND_CARD_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_CARD_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_FACE_AND_CARD_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_PW_AND_FP_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_FACE_AND_PW_AND_FP_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_PW_AND_FP_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_FACE_AND_PW_AND_FP_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_FACE_AND_PW_AND_FP_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FACE_CARD_AND_FP_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_FACE_CARD_AND_FP_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_FACE_CARD_AND_FP_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_FACE_CARD_AND_FP_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_FACE_CARD_AND_FP_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_FACE_CARD_AND_FP_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FP_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FP_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FP_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FP_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FP_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FP_AND_PW_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FACE_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_FACE_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_FACE_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_FACE_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FACE_VERIFY_PASS:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FACE_VERIFY_PASS");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FACE_VERIFY_FAIL:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FACE_VERIFY_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_FACE_VERIFY_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FACE_RECOGNIZE_FAIL:
+                    szTemp = String.Format("MINOR_FACE_RECOGNIZE_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_FIRSTCARD_AUTHORIZE_BEGIN:
+                    szTemp = String.Format("MINOR_FIRSTCARD_AUTHORIZE_BEGIN");
+                    break;
+                case CHCNetSDK.MINOR_FIRSTCARD_AUTHORIZE_END:
+                    szTemp = String.Format("MINOR_FIRSTCARD_AUTHORIZE_END");
+                    break;
+                case CHCNetSDK.MINOR_DOORLOCK_INPUT_SHORT_CIRCUIT:
+                    szTemp = String.Format("MINOR_DOORLOCK_INPUT_SHORT_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_DOORLOCK_INPUT_BROKEN_CIRCUIT:
+                    szTemp = String.Format("MINOR_DOORLOCK_INPUT_BROKEN_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_DOORLOCK_INPUT_EXCEPTION:
+                    szTemp = String.Format("MINOR_DOORLOCK_INPUT_EXCEPTION");
+                    break;
+                case CHCNetSDK.MINOR_DOORCONTACT_INPUT_SHORT_CIRCUIT:
+                    szTemp = String.Format("MINOR_DOORCONTACT_INPUT_SHORT_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_DOORCONTACT_INPUT_BROKEN_CIRCUIT:
+                    szTemp = String.Format("MINOR_DOORCONTACT_INPUT_BROKEN_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_DOORCONTACT_INPUT_EXCEPTION:
+                    szTemp = String.Format("MINOR_DOORCONTACT_INPUT_EXCEPTION");
+                    break;
+                case CHCNetSDK.MINOR_OPENBUTTON_INPUT_SHORT_CIRCUIT:
+                    szTemp = String.Format("MINOR_OPENBUTTON_INPUT_SHORT_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_OPENBUTTON_INPUT_BROKEN_CIRCUIT:
+                    szTemp = String.Format("MINOR_OPENBUTTON_INPUT_BROKEN_CIRCUIT");
+                    break;
+                case CHCNetSDK.MINOR_OPENBUTTON_INPUT_EXCEPTION:
+                    szTemp = String.Format("MINOR_OPENBUTTON_INPUT_EXCEPTION");
+                    break;
+                case CHCNetSDK.MINOR_DOORLOCK_OPEN_EXCEPTION:
+                    szTemp = String.Format("MINOR_DOORLOCK_OPEN_EXCEPTION");
+                    break;
+                case CHCNetSDK.MINOR_DOORLOCK_OPEN_TIMEOUT:
+                    szTemp = String.Format("MINOR_DOORLOCK_OPEN_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE:
+                    szTemp = String.Format("MINOR_FIRSTCARD_OPEN_WITHOUT_AUTHORIZE");
+                    break;
+                case CHCNetSDK.MINOR_CALL_LADDER_RELAY_BREAK:
+                    szTemp = String.Format("MINOR_CALL_LADDER_RELAY_BREAK");
+                    break;
+                case CHCNetSDK.MINOR_CALL_LADDER_RELAY_CLOSE:
+                    szTemp = String.Format("MINOR_CALL_LADDER_RELAY_CLOSE");
+                    break;
+                case CHCNetSDK.MINOR_AUTO_KEY_RELAY_BREAK:
+                    szTemp = String.Format("MINOR_AUTO_KEY_RELAY_BREAK");
+                    break;
+                case CHCNetSDK.MINOR_AUTO_KEY_RELAY_CLOSE:
+                    szTemp = String.Format("MINOR_AUTO_KEY_RELAY_CLOSE");
+                    break;
+                case CHCNetSDK.MINOR_KEY_CONTROL_RELAY_BREAK:
+                    szTemp = String.Format("MINOR_KEY_CONTROL_RELAY_BREAK");
+                    break;
+                case CHCNetSDK.MINOR_KEY_CONTROL_RELAY_CLOSE:
+                    szTemp = String.Format("MINOR_KEY_CONTROL_RELAY_CLOSE");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_PW_PASS:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_PW_PASS");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_PW_FAIL:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_PW_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_EMPLOYEENO_AND_PW_TIMEOUT:
+                    szTemp = String.Format("MINOR_EMPLOYEENO_AND_PW_TIMEOUT");
+                    break;
+                case CHCNetSDK.MINOR_HUMAN_DETECT_FAIL:
+                    szTemp = String.Format("MINOR_HUMAN_DETECT_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_PEOPLE_AND_ID_CARD_COMPARE_PASS:
+                    szTemp = String.Format("MINOR_PEOPLE_AND_ID_CARD_COMPARE_PASS");
+                    break;
+                case CHCNetSDK.MINOR_PEOPLE_AND_ID_CARD_COMPARE_FAIL:
+                    szTemp = String.Format("MINOR_PEOPLE_AND_ID_CARD_COMPARE_FAIL");
+                    break;
+                case CHCNetSDK.MINOR_CERTIFICATE_BLACK_LIST:
+                    szTemp = String.Format("MINOR_CERTIFICATE_BLACK_LIST");
+                    break;
+                case CHCNetSDK.MINOR_LEGAL_MESSAGE:
+                    szTemp = String.Format("MINOR_LEGAL_MESSAGE");
+                    break;
+                case CHCNetSDK.MINOR_ILLEGAL_MESSAGE:
+                    szTemp = String.Format("MINOR_ILLEGAL_MESSAGE");
+                    break;
+                case CHCNetSDK.MINOR_MAC_DETECT:
+                    szTemp = String.Format("MINOR_MAC_DETECT");
+                    break;
+                default:
+                    szTemp = String.Format("Main Event unknown:" + "0x" + "stLogInfo.dwMinorType");
+                    break;
+            }
+            szTemp.CopyTo(0, csTmp, 0, szTemp.Length);
+            return;
+        }
+        // the main event type for this operation 
+        public static void OperationMinorTypeMap(CHCNetSDK.NET_DVR_LOG_V30 stLogInfo, char[] csTmp)
+        {
+            String szTemp = null;
+            char[] csParaType = new char[256];
+            switch (stLogInfo.dwMinorType)
+            {
+                //operation
+                case CHCNetSDK.MINOR_LOCAL_UPGRADE:
+                    szTemp = String.Format("MINOR_LOCAL_UPGRADE");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_LOGIN:
+                    szTemp = String.Format("REMOTE_LOGIN");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_LOGOUT:
+                    szTemp = String.Format("REMOTE_LOGOUT");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_ARM:
+                    szTemp = String.Format("REMOTE_ARM");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_DISARM:
+                    szTemp = String.Format("REMOTE_DISARM");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_REBOOT:
+                    szTemp = String.Format("REMOTE_REBOOT");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_UPGRADE:
+                    szTemp = String.Format("REMOTE_UPGRADE");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_CFGFILE_OUTPUT:
+                    szTemp = String.Format("REMOTE_CFGFILE_OUTPUT");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_CFGFILE_INTPUT:
+                    szTemp = String.Format("REMOTE_CFGFILE_INTPUT");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_ALARMOUT_OPEN_MAN:
+                    szTemp = String.Format("MINOR_REMOTE_ALARMOUT_OPEN_MAN");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_ALARMOUT_CLOSE_MAN:
+                    szTemp = String.Format("MINOR_REMOTE_ALARMOUT_CLOSE_MAN");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_OPEN_DOOR:
+                    szTemp = String.Format("MINOR_REMOTE_OPEN_DOOR");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_CLOSE_DOOR:
+                    szTemp = String.Format("MINOR_REMOTE_CLOSE_DOOR");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_ALWAYS_OPEN:
+                    szTemp = String.Format("MINOR_REMOTE_ALWAYS_OPEN");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_ALWAYS_CLOSE:
+                    szTemp = String.Format("MINOR_REMOTE_ALWAYS_CLOSE");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_CHECK_TIME:
+                    szTemp = String.Format("MINOR_REMOTE_CHECK_TIME");
+                    break;
+                case CHCNetSDK.MINOR_NTP_CHECK_TIME:
+                    szTemp = String.Format("MINOR_NTP_CHECK_TIME");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_CLEAR_CARD:
+                    szTemp = String.Format("MINOR_REMOTE_CLEAR_CARD"); ;
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_RESTORE_CFG:
+                    szTemp = String.Format("MINOR_REMOTE_RESTORE_CFG");
+                    break;
+                case CHCNetSDK.MINOR_ALARMIN_ARM:
+                    szTemp = String.Format("MINOR_ALARMIN_ARM");
+                    break;
+                case CHCNetSDK.MINOR_ALARMIN_DISARM:
+                    szTemp = String.Format("MINOR_ALARMIN_DISARM");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_RESTORE_CFG:
+                    szTemp = String.Format("MINOR_LOCAL_RESTORE_CFG");
+                    break;
+                case CHCNetSDK.MINOR_MOD_NET_REPORT_CFG:
+                    szTemp = String.Format("MINOR_MOD_NET_REPORT_CFG");
+                    break;
+                case CHCNetSDK.MINOR_MOD_GPRS_REPORT_PARAM:
+                    szTemp = String.Format("MINOR_MOD_GPRS_REPORT_PARAM");
+                    break;
+                case CHCNetSDK.MINOR_MOD_REPORT_GROUP_PARAM:
+                    szTemp = String.Format("MINOR_MOD_REPORT_GROUP_PARAM");
+                    break;
+                case CHCNetSDK.MINOR_UNLOCK_PASSWORD_OPEN_DOOR:
+                    szTemp = String.Format("MINOR_UNLOCK_PASSWORD_OPEN_DOOR");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_CAPTURE_PIC:
+                    szTemp = String.Format("MINOR_REMOTE_CAPTURE_PIC"); ;
+                    break;
+                case CHCNetSDK.MINOR_AUTO_RENUMBER:
+                    szTemp = String.Format("MINOR_AUTO_RENUMBER");
+                    break;
+                case CHCNetSDK.MINOR_AUTO_COMPLEMENT_NUMBER:
+                    szTemp = String.Format("MINOR_AUTO_COMPLEMENT_NUMBER");
+                    break;
+                case CHCNetSDK.MINOR_NORMAL_CFGFILE_INPUT:
+                    szTemp = String.Format("MINOR_NORMAL_CFGFILE_INPUT");
+                    break;
+                case CHCNetSDK.MINOR_NORMAL_CFGFILE_OUTTPUT:
+                    szTemp = String.Format("MINOR_NORMAL_CFGFILE_OUTTPUT");
+                    break;
+                case CHCNetSDK.MINOR_CARD_RIGHT_INPUT:
+                    szTemp = String.Format("MINOR_CARD_RIGHT_INPUT");
+                    break;
+                case CHCNetSDK.MINOR_CARD_RIGHT_OUTTPUT:
+                    szTemp = String.Format("MINOR_CARD_RIGHT_OUTTPUT");
+                    break;
+                case CHCNetSDK.MINOR_LOCAL_USB_UPGRADE:
+                    szTemp = String.Format("MINOR_LOCAL_USB_UPGRADE");
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_VISITOR_CALL_LADDER:
+                    szTemp = String.Format("MINOR_REMOTE_VISITOR_CALL_LADDER"); ;
+                    break;
+                case CHCNetSDK.MINOR_REMOTE_HOUSEHOLD_CALL_LADDER:
+                    szTemp = String.Format("MINOR_REMOTE_HOUSEHOLD_CALL_LADDER"); ;
+                    break;
+                default:
+                    szTemp = String.Format("0x" + stLogInfo.dwMinorType);
+                    break;
+            }
+            szTemp.CopyTo(0, csTmp, 0, szTemp.Length);
+            return;
+        }
+    }
+}

+ 121 - 0
CamTool/utils/VehicleUtil.cs

@@ -0,0 +1,121 @@
+using log4net;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace CamTool.utils
+{
+    class VehicleUtil
+    {
+        public static readonly ILog log = LogManager.GetLogger("CamTool");
+
+        public static string getVehicleType(byte type)
+        {
+            string vehicleType = "";
+            switch (type)//车辆类型
+            {
+                case 0:
+                    {
+                        vehicleType = "未知车型";
+                        break;
+                    }
+
+                case 1:
+                    {
+                        vehicleType = "大型车";
+                        break;
+                    }
+                case 2:
+                    {
+                        vehicleType = "中型车";
+                        break;
+                    }
+                case 3:
+                    {
+                        vehicleType = "小型车";
+                        break;
+                    }
+                case 4:
+                    {
+                        vehicleType = "摩托车";
+                        break;
+                    }
+                case 5:
+                    {
+                        vehicleType = "行人";
+                        break;
+                    }
+                default:
+                    {
+                        vehicleType = "未知车型";
+                        break;
+                    }
+            }
+            return vehicleType;
+        }
+
+        public static string getColor(byte color)
+        {
+            string vehicleColor = "";
+            switch (color)//车牌颜色
+            {
+                case 0:
+                    vehicleColor = "蓝色";
+                    break;
+                case 1:
+                    vehicleColor = "黄色";
+                    break;
+                case 2:
+                    vehicleColor = "白色";
+                    break;
+                case 3:
+                    vehicleColor = "黑色";
+                    break;
+                case 5:
+                    vehicleColor = "绿色";
+                    break;
+                case 6:
+                    vehicleColor = "黄绿";
+                    break;
+                case 4:
+                default:
+                    vehicleColor = "未识别";
+                    break;
+            }
+            return vehicleColor;
+        }
+
+        public static string savePanoramaPic(string parentDir, ref MyClass.T_PicInfo tPicInfo, int type)
+        {
+            string strImageFile1 = null;
+            string strTime = DateTime.Now.ToLocalTime().ToString("yyyy-MM-dd_HH_mm_ss_fff");
+            if ((type == 1 && tPicInfo.ptPanoramaPicBuff != IntPtr.Zero && tPicInfo.uiPanoramaPicLen != 0) ||
+                (type == 2 && tPicInfo.ptVehiclePicBuff != IntPtr.Zero && tPicInfo.uiVehiclePicLen != 0))
+            {
+                try
+                {
+                    log.Info("图片1:" + strImageFile1);
+                    byte[] BytePanoramaPicBuff = new byte[type == 1 ? tPicInfo.uiPanoramaPicLen : tPicInfo.uiVehiclePicLen];
+                    Marshal.Copy(type == 1 ? tPicInfo.ptPanoramaPicBuff : tPicInfo.ptVehiclePicBuff, BytePanoramaPicBuff, 0,
+                        (int)(type == 1 ? tPicInfo.uiPanoramaPicLen : tPicInfo.uiVehiclePicLen));
+                    strImageFile1 = String.Format("{0}\\{1}.jpg", parentDir, strTime);
+                    FileStream fs = new FileStream(strImageFile1, FileMode.Create, FileAccess.Write | FileAccess.Read, FileShare.None);
+                    fs.Write(BytePanoramaPicBuff, 0, (int)(type == 1 ? tPicInfo.uiPanoramaPicLen : tPicInfo.uiVehiclePicLen));
+                    //pictureBoxPlate.Image = Image.FromStream(fs);
+                    fs.Close();
+                    fs.Dispose();
+                }
+                catch (Exception e)
+                {
+                    strImageFile1 = null;
+                    log.Error("写入图片出错", e);
+                }
+            }
+            return strImageFile1;
+        }
+    }
+}