|
|
@@ -436,5 +436,110 @@ namespace DeviceCenter
|
|
|
}
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ private void getEvent(int userId)
|
|
|
+ {
|
|
|
+ CHCNetSDK.NET_DVR_ACS_EVENT_COND struCond = new CHCNetSDK.NET_DVR_ACS_EVENT_COND();
|
|
|
+ struCond.Init();
|
|
|
+ struCond.dwSize = (uint)Marshal.SizeOf(struCond);
|
|
|
+
|
|
|
+ struCond.dwMajor = CHCNetSDK.MAJOR_EVENT;
|
|
|
+
|
|
|
+ struCond.dwMinor = CHCNetSDK.MINOR_FACE_VERIFY_PASS;
|
|
|
+
|
|
|
+ DateTime date = DateTime.Now.AddDays(-1);
|
|
|
+ struCond.struStartTime.dwYear = date.Year;
|
|
|
+ struCond.struStartTime.dwMonth = date.Month;
|
|
|
+ struCond.struStartTime.dwDay = date.Day;
|
|
|
+ struCond.struStartTime.dwHour = 0;
|
|
|
+ struCond.struStartTime.dwMinute = 0;
|
|
|
+ struCond.struStartTime.dwSecond = 0;
|
|
|
+
|
|
|
+ struCond.struEndTime.dwYear = date.Year;
|
|
|
+ struCond.struEndTime.dwMonth = date.Month;
|
|
|
+ struCond.struEndTime.dwDay = date.Day;
|
|
|
+ struCond.struEndTime.dwHour = 23;
|
|
|
+ struCond.struEndTime.dwMinute = 59;
|
|
|
+ struCond.struEndTime.dwSecond = 59;
|
|
|
+
|
|
|
+ struCond.byPicEnable = 0;
|
|
|
+ struCond.szMonitorID = "";
|
|
|
+ struCond.wInductiveEventType = 65535;
|
|
|
+
|
|
|
+ //if (!StrToByteArray(ref struCond.byCardNo, textBoxCardNo.Text))
|
|
|
+ //{
|
|
|
+ // return;
|
|
|
+ //}
|
|
|
+
|
|
|
+ //if (!StrToByteArray(ref struCond.byName, textBoxName.Text))
|
|
|
+ //{
|
|
|
+ // return;
|
|
|
+ //}
|
|
|
+ //struCond.dwBeginSerialNo = 0;
|
|
|
+ //struCond.dwEndSerialNo = 0;
|
|
|
+
|
|
|
+ uint dwSize = struCond.dwSize;
|
|
|
+ IntPtr ptrCond = Marshal.AllocHGlobal((int)dwSize);
|
|
|
+ Marshal.StructureToPtr(struCond, ptrCond, false);
|
|
|
+ int m_lGetAcsEventHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(userId, CHCNetSDK.NET_DVR_GET_ACS_EVENT, ptrCond, (int)dwSize, null, IntPtr.Zero);
|
|
|
+ if (-1 == m_lGetAcsEventHandle)
|
|
|
+ {
|
|
|
+ Marshal.FreeHGlobal(ptrCond);
|
|
|
+ log.Error($"NET_DVR_StartRemoteConfig FAIL, ERROR CODE {CHCNetSDK.NET_DVR_GetLastError()}");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Thread m_pDisplayListThread = new Thread(() =>
|
|
|
+ {
|
|
|
+ ProcessEvent(m_lGetAcsEventHandle);
|
|
|
+ });
|
|
|
+ m_pDisplayListThread.Start();
|
|
|
+ Marshal.FreeHGlobal(ptrCond);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void ProcessEvent(int m_lGetAcsEventHandle)
|
|
|
+ {
|
|
|
+ int dwStatus = 0;
|
|
|
+ Boolean Flag = true;
|
|
|
+ CHCNetSDK.NET_DVR_ACS_EVENT_CFG struCFG = new CHCNetSDK.NET_DVR_ACS_EVENT_CFG();
|
|
|
+ struCFG.dwSize = (uint)Marshal.SizeOf(struCFG);
|
|
|
+ int dwOutBuffSize = (int)struCFG.dwSize;
|
|
|
+ struCFG.init();
|
|
|
+ while (Flag)
|
|
|
+ {
|
|
|
+ dwStatus = CHCNetSDK.NET_DVR_GetNextRemoteConfig(m_lGetAcsEventHandle, ref struCFG, dwOutBuffSize);
|
|
|
+ switch (dwStatus)
|
|
|
+ {
|
|
|
+ case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS://成功读取到数据,处理完本次数据后需调用next
|
|
|
+ ProcessAcsEvent(ref struCFG, ref Flag);
|
|
|
+ break;
|
|
|
+ case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_NEED_WAIT:
|
|
|
+ Thread.Sleep(200);
|
|
|
+ break;
|
|
|
+ case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_FAILED:
|
|
|
+ CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetAcsEventHandle);
|
|
|
+ log.Error($"NET_SDK_GET_NEXT_STATUS_FAILED {CHCNetSDK.NET_DVR_GetLastError()}");
|
|
|
+ Flag = false;
|
|
|
+ break;
|
|
|
+ case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_FINISH:
|
|
|
+ CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetAcsEventHandle);
|
|
|
+ Flag = false;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ log.Info($"NET_SDK_GET_NEXT_STATUS_UNKOWN {CHCNetSDK.NET_DVR_GetLastError()}");
|
|
|
+ Flag = false;
|
|
|
+ CHCNetSDK.NET_DVR_StopRemoteConfig(m_lGetAcsEventHandle);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void ProcessAcsEvent(ref CHCNetSDK.NET_DVR_ACS_EVENT_CFG struCFG, ref bool flag)
|
|
|
+ {
|
|
|
+ int employNo = (int)struCFG.struAcsEventInfo.dwEmployeeNo;
|
|
|
+ string cardNo = Encoding.UTF8.GetString(struCFG.struAcsEventInfo.byCardNo).TrimEnd('\0');
|
|
|
+ string time = $"{struCFG.struTime.dwYear:D4}-{struCFG.struTime.dwMonth:D2}-{struCFG.struTime.dwDay:D4} {struCFG.struTime.dwHour:D2}:{struCFG.struTime.dwMinute:D2}:{struCFG.struTime.dwSecond:D2}";
|
|
|
+ log.Info($"receive acs event employNo:{employNo} cardNo:{cardNo} time:{time}");
|
|
|
+ }
|
|
|
}
|
|
|
}
|