|
|
@@ -4,6 +4,7 @@ using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.IO;
|
|
|
using System.Runtime.InteropServices;
|
|
|
+using System.Threading;
|
|
|
using System.Threading.Tasks;
|
|
|
using System.Windows;
|
|
|
|
|
|
@@ -363,5 +364,110 @@ namespace DeviceCenter
|
|
|
|
|
|
return sContents;
|
|
|
}
|
|
|
+
|
|
|
+ public void getEvent(int userId, DateTime start, DateTime end)
|
|
|
+ {
|
|
|
+ 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 = start.Year;
|
|
|
+ struCond.struStartTime.dwMonth = start.Month;
|
|
|
+ struCond.struStartTime.dwDay = start.Day;
|
|
|
+ struCond.struStartTime.dwHour = start.Hour;
|
|
|
+ struCond.struStartTime.dwMinute = start.Minute;
|
|
|
+ struCond.struStartTime.dwSecond = start.Second;
|
|
|
+
|
|
|
+ struCond.struEndTime.dwYear = end.Year;
|
|
|
+ struCond.struEndTime.dwMonth = end.Month;
|
|
|
+ struCond.struEndTime.dwDay = end.Day;
|
|
|
+ struCond.struEndTime.dwHour = end.Hour;
|
|
|
+ struCond.struEndTime.dwMinute = end.Minute;
|
|
|
+ struCond.struEndTime.dwSecond = end.Second;
|
|
|
+
|
|
|
+ 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(() =>
|
|
|
+ {
|
|
|
+ List<AcsEvent> events = ProcessEvent(m_lGetAcsEventHandle);
|
|
|
+ EventUploadReq req = new EventUploadReq(ip, start.ToString("yyyy-MM-dd HH:mm:ss"), end.ToString("yyyy-MM-dd HH:mm:ss"), events);
|
|
|
+ });
|
|
|
+ m_pDisplayListThread.Start();
|
|
|
+ Marshal.FreeHGlobal(ptrCond);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<AcsEvent> 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();
|
|
|
+ List<AcsEvent> eventList = new List<AcsEvent>();
|
|
|
+ while (Flag)
|
|
|
+ {
|
|
|
+ dwStatus = CHCNetSDK.NET_DVR_GetNextRemoteConfig(m_lGetAcsEventHandle, ref struCFG, dwOutBuffSize);
|
|
|
+ switch (dwStatus)
|
|
|
+ {
|
|
|
+ case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS://成功读取到数据,处理完本次数据后需调用next
|
|
|
+ int employNo = (int)struCFG.struAcsEventInfo.dwEmployeeNo;
|
|
|
+ string cardNo = System.Text.Encoding.UTF8.GetString(struCFG.struAcsEventInfo.byCardNo).TrimEnd('\0');
|
|
|
+ string time = $"{struCFG.struTime.dwYear:D4}-{struCFG.struTime.dwMonth:D2}-{struCFG.struTime.dwDay:D2} {struCFG.struTime.dwHour:D2}:{struCFG.struTime.dwMinute:D2}:{struCFG.struTime.dwSecond:D2}";
|
|
|
+ log.Info($"receive acs event employNo:{employNo} cardNo:{cardNo} time:{time}");
|
|
|
+ eventList.Add(new AcsEvent(ip, direction.ToString(), employNo.ToString(), cardNo, time));
|
|
|
+ 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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return eventList;
|
|
|
+ }
|
|
|
}
|
|
|
}
|