diff --git a/.vs/BioMatrix/v14/.suo b/.vs/BioMatrix/v14/.suo index cdf7d42..949e236 100644 Binary files a/.vs/BioMatrix/v14/.suo and b/.vs/BioMatrix/v14/.suo differ diff --git a/BioMetrixCore/Master.cs b/BioMetrixCore/Master.cs index ac2a63c..e4a586b 100644 --- a/BioMetrixCore/Master.cs +++ b/BioMetrixCore/Master.cs @@ -2,6 +2,7 @@ using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; +using System.Threading.Tasks; namespace BioMetrixCore { @@ -81,17 +82,17 @@ private void RaiseDeviceEvent(object sender, string actionType) } - private void btnConnect_Click(object sender, EventArgs e) + private async void btnConnect_Click(object sender, EventArgs e) { try { - this.Cursor = Cursors.WaitCursor; + //this.Cursor = Cursors.WaitCursor; ShowStatusBar(string.Empty, true); if (IsDeviceConnected) { IsDeviceConnected = false; - this.Cursor = Cursors.Default; + //this.Cursor = Cursors.Default; return; } @@ -105,20 +106,20 @@ private void btnConnect_Click(object sender, EventArgs e) if (!int.TryParse(port, out portNumber)) throw new Exception("Not a valid port number"); - bool isValidIpA = UniversalStatic.ValidateIP(ipAddress); + bool isValidIpA = await Task.Run(() => UniversalStatic.ValidateIP(ipAddress)); if (!isValidIpA) throw new Exception("The Device IP is invalid !!"); - isValidIpA = UniversalStatic.PingTheDevice(ipAddress); + isValidIpA = await Task.Run(() => UniversalStatic.PingTheDevice(ipAddress)); if (!isValidIpA) throw new Exception("The device at " + ipAddress + ":" + port + " did not respond!!"); objZkeeper = new ZkemClient(RaiseDeviceEvent); - IsDeviceConnected = objZkeeper.Connect_Net(ipAddress, portNumber); + IsDeviceConnected = await Task.Run(() => objZkeeper.Connect_Net(ipAddress, portNumber)); if (IsDeviceConnected) { - string deviceInfo = manipulator.FetchDeviceInfo(objZkeeper, int.Parse(tbxMachineNumber.Text.Trim())); + string deviceInfo = await Task.Run(() => manipulator.FetchDeviceInfo(objZkeeper, int.Parse(tbxMachineNumber.Text.Trim()))); lblDeviceInfo.Text = deviceInfo; } @@ -198,13 +199,13 @@ private void btnBeep_Click(object sender, EventArgs e) objZkeeper.Beep(100); } - private void btnDownloadFingerPrint_Click(object sender, EventArgs e) + private async void btnDownloadFingerPrint_Click(object sender, EventArgs e) { try { ShowStatusBar(string.Empty, true); - - ICollection lstFingerPrintTemplates = manipulator.GetAllUserInfo(objZkeeper, int.Parse(tbxMachineNumber.Text.Trim())); + dgvRecords.DataSource = null; + ICollection lstFingerPrintTemplates = await GetAllUserInfo(objZkeeper, int.Parse(tbxMachineNumber.Text.Trim())); if (lstFingerPrintTemplates != null && lstFingerPrintTemplates.Count > 0) { BindToGridView(lstFingerPrintTemplates); @@ -217,17 +218,21 @@ private void btnDownloadFingerPrint_Click(object sender, EventArgs e) { DisplayListOutput(ex.Message); } - } + private async Task> GetAllUserInfo(ZkemClient objZkeeper, int machineNumber) + { + ICollection lstFingerPrintTemplates = await Task.Run(() => manipulator.GetAllUserInfo(objZkeeper, machineNumber)); + return lstFingerPrintTemplates; + } - private void btnPullData_Click(object sender, EventArgs e) + private async void btnPullData_Click(object sender, EventArgs e) { try { ShowStatusBar(string.Empty, true); - - ICollection lstMachineInfo = manipulator.GetLogData(objZkeeper, int.Parse(tbxMachineNumber.Text.Trim())); + dgvRecords.DataSource = null; + ICollection lstMachineInfo = await GetLogData(objZkeeper, int.Parse(tbxMachineNumber.Text.Trim())); if (lstMachineInfo != null && lstMachineInfo.Count > 0) { @@ -241,9 +246,13 @@ private void btnPullData_Click(object sender, EventArgs e) { DisplayListOutput(ex.Message); } - } + private async Task> GetLogData(ZkemClient objZkeeper, int machineNumber) + { + ICollection lstMachineInfo = await Task.Run(() => manipulator.GetLogData(objZkeeper, machineNumber)); + return lstMachineInfo; + } private void ClearGrid() { @@ -264,7 +273,7 @@ private void BindToGridView(object list) UniversalStatic.ChangeGridProperties(dgvRecords); } - + private void DisplayListOutput(string message) { @@ -331,7 +340,7 @@ private void btnGetDeviceTime_Click(object sender, EventArgs e) lstDeviceInfo.Add(new DeviceTimeInfo() { DeviceTime = deviceTime }); BindToGridView(lstDeviceInfo); } - + private void btnEnableDevice_Click(object sender, EventArgs e) { @@ -340,7 +349,7 @@ private void btnEnableDevice_Click(object sender, EventArgs e) } - + private void btnDisableDevice_Click(object sender, EventArgs e) { diff --git a/BioMetrixCore/Utilities/DeviceManipulator.cs b/BioMetrixCore/Utilities/DeviceManipulator.cs index fc6f83e..bdc3624 100644 --- a/BioMetrixCore/Utilities/DeviceManipulator.cs +++ b/BioMetrixCore/Utilities/DeviceManipulator.cs @@ -1,13 +1,15 @@ using System; using System.Collections.Generic; using System.Text; +using System.Threading.Tasks; +using System.Threading; namespace BioMetrixCore { internal class DeviceManipulator { - public ICollection GetAllUserInfo(ZkemClient objZkeeper, int machineNumber) + public async Task> GetAllUserInfo(ZkemClient objZkeeper, int machineNumber) { string sdwEnrollNumber = string.Empty, sName = string.Empty, sPassword = string.Empty, sTmpData = string.Empty; int iPrivilege = 0, iTmpLength = 0, iFlag = 0, idwFingerIndex; @@ -15,35 +17,44 @@ public ICollection GetAllUserInfo(ZkemClient objZkeeper, int machineNu ICollection lstFPTemplates = new List(); - objZkeeper.ReadAllUserID(machineNumber); - objZkeeper.ReadAllTemplate(machineNumber); + bool ReadAllUserID; + ReadAllUserID = await Task.Run(() => objZkeeper.ReadAllUserID(machineNumber)); - while (objZkeeper.SSR_GetAllUserInfo(machineNumber, out sdwEnrollNumber, out sName, out sPassword, out iPrivilege, out bEnabled)) + if (ReadAllUserID) { - for (idwFingerIndex = 0; idwFingerIndex < 10; idwFingerIndex++) + bool ReadAllTemplate; + ReadAllTemplate = await Task.Run(() => objZkeeper.ReadAllTemplate(machineNumber)); + //Thread.Sleep(5000); + if (ReadAllTemplate) { - if (objZkeeper.GetUserTmpExStr(machineNumber, sdwEnrollNumber, idwFingerIndex, out iFlag, out sTmpData, out iTmpLength)) + UserInfo fpInfo; + while (objZkeeper.SSR_GetAllUserInfo(machineNumber, out sdwEnrollNumber, out sName, out sPassword, out iPrivilege, out bEnabled)) { - UserInfo fpInfo = new UserInfo(); - fpInfo.MachineNumber = machineNumber; - fpInfo.EnrollNumber = sdwEnrollNumber; - fpInfo.Name = sName; - fpInfo.FingerIndex = idwFingerIndex; - fpInfo.TmpData = sTmpData; - fpInfo.Privelage = iPrivilege; - fpInfo.Password = sPassword; - fpInfo.Enabled = bEnabled; - fpInfo.iFlag = iFlag.ToString(); - - lstFPTemplates.Add(fpInfo); + for (idwFingerIndex = 0; idwFingerIndex < 10; idwFingerIndex++) + { + if (objZkeeper.GetUserTmpExStr(machineNumber, sdwEnrollNumber, idwFingerIndex, out iFlag, out sTmpData, out iTmpLength)) + { + fpInfo = new UserInfo(); + fpInfo.MachineNumber = machineNumber; + fpInfo.EnrollNumber = sdwEnrollNumber; + fpInfo.Name = sName; + fpInfo.FingerIndex = idwFingerIndex; + fpInfo.TmpData = sTmpData; + fpInfo.Privelage = iPrivilege; + fpInfo.Password = sPassword; + fpInfo.Enabled = bEnabled; + fpInfo.iFlag = iFlag.ToString(); + + lstFPTemplates.Add(fpInfo); + } + } } } - } return lstFPTemplates; } - public ICollection GetLogData(ZkemClient objZkeeper, int machineNumber) + public async Task> GetLogData(ZkemClient objZkeeper, int machineNumber) { string dwEnrollNumber1 = ""; int dwVerifyMode = 0; @@ -58,22 +69,25 @@ public ICollection GetLogData(ZkemClient objZkeeper, int machineNum ICollection lstEnrollData = new List(); - objZkeeper.ReadAllGLogData(machineNumber); - - while (objZkeeper.SSR_GetGeneralLogData(machineNumber, out dwEnrollNumber1, out dwVerifyMode, out dwInOutMode, out dwYear, out dwMonth, out dwDay, out dwHour, out dwMinute, out dwSecond, ref dwWorkCode)) - - + bool ReadAllGLogData; + ReadAllGLogData = await Task.Run(() => objZkeeper.ReadAllGLogData(machineNumber)); + //Thread.Sleep(5000); + if (ReadAllGLogData) { - string inputDate = new DateTime(dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond).ToString(); + MachineInfo objInfo; + string inputDate; + while (objZkeeper.SSR_GetGeneralLogData(machineNumber, out dwEnrollNumber1, out dwVerifyMode, out dwInOutMode, out dwYear, out dwMonth, out dwDay, out dwHour, out dwMinute, out dwSecond, ref dwWorkCode)) + { + inputDate = new DateTime(dwYear, dwMonth, dwDay, dwHour, dwMinute, dwSecond).ToString(); - MachineInfo objInfo = new MachineInfo(); - objInfo.MachineNumber = machineNumber; - objInfo.IndRegID = int.Parse(dwEnrollNumber1); - objInfo.DateTimeRecord = inputDate; + objInfo = new MachineInfo(); + objInfo.MachineNumber = machineNumber; + objInfo.IndRegID = int.Parse(dwEnrollNumber1); + objInfo.DateTimeRecord = inputDate; - lstEnrollData.Add(objInfo); + lstEnrollData.Add(objInfo); + } } - return lstEnrollData; } @@ -86,10 +100,11 @@ public ICollection GetAllUserID(ZkemClient objZkeeper, int machineNu int dwEnabled = 0; ICollection lstUserIDInfo = new List(); + UserIDInfo userID; while (objZkeeper.GetAllUserID(machineNumber, ref dwEnrollNumber, ref dwEMachineNumber, ref dwBackUpNumber, ref dwMachinePrivelage, ref dwEnabled)) { - UserIDInfo userID = new UserIDInfo(); + userID = new UserIDInfo(); userID.BackUpNumber = dwBackUpNumber; userID.Enabled = dwEnabled; userID.EnrollNumber = dwEnrollNumber; @@ -112,13 +127,19 @@ public void GetGeneratLog(ZkemClient objZkeeper, int machineNumber, string enrol int idwFingerIndex = 0;// [ <--- Enter your fingerprint index here ] int iFlag = 0; - objZkeeper.ReadAllTemplate(machineNumber); - - while (objZkeeper.SSR_GetUserInfo(machineNumber, enrollNo, out name, out password, out previlage, out enabled)) + bool ReadAllTemplate; + ReadAllTemplate = objZkeeper.ReadAllTemplate(machineNumber); + if (ReadAllTemplate) { - if (objZkeeper.GetUserTmpEx(machineNumber, enrollNo, idwFingerIndex, out iFlag, out byTmpData[0], out tempLength)) + + //objZkeeper.ReadAllTemplate(machineNumber); + + while (objZkeeper.SSR_GetUserInfo(machineNumber, enrollNo, out name, out password, out previlage, out enabled)) { - break; + if (objZkeeper.GetUserTmpEx(machineNumber, enrollNo, idwFingerIndex, out iFlag, out byTmpData[0], out tempLength)) + { + break; + } } } } @@ -207,7 +228,6 @@ public string FetchDeviceInfo(ZkemClient objZkeeper, int machineNumber) string returnValue = string.Empty; - objZkeeper.GetFirmwareVersion(machineNumber, ref returnValue); if (returnValue.Trim() != string.Empty) { @@ -216,7 +236,6 @@ public string FetchDeviceInfo(ZkemClient objZkeeper, int machineNumber) sb.Append(","); } - returnValue = string.Empty; objZkeeper.GetVendor(ref returnValue); if (returnValue.Trim() != string.Empty) @@ -258,7 +277,5 @@ public string FetchDeviceInfo(ZkemClient objZkeeper, int machineNumber) return sb.ToString(); } - - } -} +} \ No newline at end of file diff --git a/BioMetrixCore/Utilities/ZkemClient.cs b/BioMetrixCore/Utilities/ZkemClient.cs index 7c61e6c..62f3202 100644 --- a/BioMetrixCore/Utilities/ZkemClient.cs +++ b/BioMetrixCore/Utilities/ZkemClient.cs @@ -1,6 +1,6 @@ - -using System; +using System; using zkemkeeper; +using System.Threading; namespace BioMetrixCore { @@ -146,20 +146,65 @@ public bool QueryState(ref int State) return objCZKEM.QueryState(ref State); } + private delegate bool DelegateReadAllGLogData(int dwMachineNumber); + private DelegateReadAllGLogData DelegateReadAllGLogDataAsync; + private bool IsCompleteReadAllGLogData; + private bool ReturnReadAllGLogData; public bool ReadAllGLogData(int dwMachineNumber) { - return objCZKEM.ReadAllGLogData(dwMachineNumber); + IsCompleteReadAllGLogData = false; + DelegateReadAllGLogDataAsync = new DelegateReadAllGLogData(objCZKEM.ReadAllGLogData); + IAsyncResult IAR = DelegateReadAllGLogDataAsync.BeginInvoke(dwMachineNumber, new AsyncCallback(CompleteReadAllGLogData), null); + while (!IsCompleteReadAllGLogData) { Thread.Sleep(1000); } + return ReturnReadAllGLogData; + //return objCZKEM.ReadAllGLogData(dwMachineNumber); } + private void CompleteReadAllGLogData(IAsyncResult IAR) + { + ReturnReadAllGLogData = DelegateReadAllGLogDataAsync.EndInvoke(IAR); + IsCompleteReadAllGLogData = true; + } + private delegate bool DelegateReadAllTemplate(int dwMachineNumber); + private DelegateReadAllTemplate DelegateReadAllTemplateAsync; + private bool IsCompleteReadAllTemplate; + private bool ReturnReadAllTemplate; public bool ReadAllTemplate(int dwMachineNumber) { - return objCZKEM.ReadAllTemplate(dwMachineNumber); + IsCompleteReadAllTemplate = false; + DelegateReadAllTemplateAsync = new DelegateReadAllTemplate(objCZKEM.ReadAllTemplate); + IAsyncResult IAR = DelegateReadAllTemplateAsync.BeginInvoke(dwMachineNumber, new AsyncCallback(CompleteReadAllTemplate), null); + while (!IsCompleteReadAllTemplate) { Thread.Sleep(1000); } + return ReturnReadAllTemplate; + //return objCZKEM.ReadAllTemplate(dwMachineNumber); + } + + private void CompleteReadAllTemplate(IAsyncResult IAR) + { + ReturnReadAllTemplate = DelegateReadAllTemplateAsync.EndInvoke(IAR); + IsCompleteReadAllTemplate = true; } + private delegate bool DelegateReadAllUserID(int dwMachineNumber); + private DelegateReadAllUserID DelegateReadAllUserIDAsync; + private bool IsCompleteReadAllUserID; + private bool ReturnReadAllUserID; public bool ReadAllUserID(int dwMachineNumber) { - return objCZKEM.ReadAllUserID(dwMachineNumber); + IsCompleteReadAllUserID = false; + DelegateReadAllUserIDAsync = new DelegateReadAllUserID(objCZKEM.ReadAllUserID); + IAsyncResult IAR = DelegateReadAllUserIDAsync.BeginInvoke(dwMachineNumber, new AsyncCallback(CompleteReadAllUserID), null); + //IAR.AsyncWaitHandle.WaitOne(,) + while (!IsCompleteReadAllUserID) { Thread.Sleep(1000); } + return ReturnReadAllUserID; + //return objCZKEM.ReadAllUserID(dwMachineNumber); + } + + private void CompleteReadAllUserID(IAsyncResult IAR) + { + ReturnReadAllUserID = DelegateReadAllUserIDAsync.EndInvoke(IAR); + IsCompleteReadAllUserID = true; } public bool RefreshData(int dwMachineNumber) @@ -198,6 +243,7 @@ public bool SSR_GetAllUserInfo(int dwMachineNumber, out string dwEnrollNumber, o { return objCZKEM.SSR_GetAllUserInfo(dwMachineNumber, out dwEnrollNumber, out Name, out Password, out Privilege, out Enabled); } + public bool GetAllGLogData(int dwMachineNumber, ref int dwTMachineNumber, ref int dwEnrollNumber, ref int dwEMachineNumber, ref int dwVerifyMode, ref int dwInOutMode, ref int dwYear, ref int dwMonth, ref int dwDay, ref int dwHour, ref int dwMinute) { throw new NotImplementedException(); @@ -576,7 +622,7 @@ public bool GetHoliday(int dwMachineNumber, ref string Holiday) throw new NotImplementedException(); } - + public bool GetPhotoByName(int dwMachineNumber, string PhotoName, out byte PhotoData, out int PhotoLength) { @@ -701,7 +747,7 @@ public bool GetACFun(ref int ACFun) throw new NotImplementedException(); } - + public int GetBackupNumber(int dwMachineNumber) { throw new NotImplementedException(); diff --git a/BioMetrixCore/bin/Debug/BioMetrixCore.exe b/BioMetrixCore/bin/Debug/BioMetrixCore.exe index 44240f7..77d34f0 100644 Binary files a/BioMetrixCore/bin/Debug/BioMetrixCore.exe and b/BioMetrixCore/bin/Debug/BioMetrixCore.exe differ diff --git a/BioMetrixCore/bin/Debug/BioMetrixCore.pdb b/BioMetrixCore/bin/Debug/BioMetrixCore.pdb index 73c801f..984a6fe 100644 Binary files a/BioMetrixCore/bin/Debug/BioMetrixCore.pdb and b/BioMetrixCore/bin/Debug/BioMetrixCore.pdb differ diff --git a/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.FileListAbsolute.txt b/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.FileListAbsolute.txt index 1e4ce0d..0b683fc 100644 --- a/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.FileListAbsolute.txt +++ b/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.FileListAbsolute.txt @@ -10,3 +10,15 @@ D:\Zktech\ZKTeco Using C#\BioMatrix\BioMetrixCore\obj\Debug\BioMetrixCore.Proper D:\Zktech\ZKTeco Using C#\BioMatrix\BioMetrixCore\obj\Debug\BioMetrixCore.csproj.GenerateResource.Cache D:\Zktech\ZKTeco Using C#\BioMatrix\BioMetrixCore\obj\Debug\BioMetrixCore.exe D:\Zktech\ZKTeco Using C#\BioMatrix\BioMetrixCore\obj\Debug\BioMetrixCore.pdb +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\bin\Debug\BioMetrixCore.exe.config +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\Interop.zkemkeeper.dll +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\BioMetrixCore.csproj.ResolveComReference.cache +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\BioMetrixCore.exe +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\BioMetrixCore.pdb +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\bin\Debug\BioMetrixCore.exe +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\bin\Debug\BioMetrixCore.pdb +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\BioMetrixCore.csprojResolveAssemblyReference.cache +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\BioMetrixCore.DataEmpty.resources +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\BioMetrixCore.Master.resources +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\BioMetrixCore.Properties.Resources.resources +D:\Data Jhony\Documents\GitHub\BioMetrix\BioMetrixCore\obj\Debug\BioMetrixCore.csproj.GenerateResource.Cache diff --git a/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.GenerateResource.Cache b/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.GenerateResource.Cache index 7cbbdbd..a28d0a1 100644 Binary files a/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.GenerateResource.Cache and b/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.GenerateResource.Cache differ diff --git a/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.ResolveComReference.cache b/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.ResolveComReference.cache index fca51e7..88390ae 100644 Binary files a/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.ResolveComReference.cache and b/BioMetrixCore/obj/Debug/BioMetrixCore.csproj.ResolveComReference.cache differ diff --git a/BioMetrixCore/obj/Debug/BioMetrixCore.csprojResolveAssemblyReference.cache b/BioMetrixCore/obj/Debug/BioMetrixCore.csprojResolveAssemblyReference.cache index 7c5b832..c3dd99e 100644 Binary files a/BioMetrixCore/obj/Debug/BioMetrixCore.csprojResolveAssemblyReference.cache and b/BioMetrixCore/obj/Debug/BioMetrixCore.csprojResolveAssemblyReference.cache differ diff --git a/BioMetrixCore/obj/Debug/BioMetrixCore.exe b/BioMetrixCore/obj/Debug/BioMetrixCore.exe index 44240f7..77d34f0 100644 Binary files a/BioMetrixCore/obj/Debug/BioMetrixCore.exe and b/BioMetrixCore/obj/Debug/BioMetrixCore.exe differ diff --git a/BioMetrixCore/obj/Debug/BioMetrixCore.pdb b/BioMetrixCore/obj/Debug/BioMetrixCore.pdb index 73c801f..984a6fe 100644 Binary files a/BioMetrixCore/obj/Debug/BioMetrixCore.pdb and b/BioMetrixCore/obj/Debug/BioMetrixCore.pdb differ diff --git a/BioMetrixCore/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/BioMetrixCore/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index f100024..3e0c858 100644 Binary files a/BioMetrixCore/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/BioMetrixCore/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/BioMetrixCore/obj/Debug/Interop.zkemkeeper.dll b/BioMetrixCore/obj/Debug/Interop.zkemkeeper.dll index d4b012c..12c9260 100644 Binary files a/BioMetrixCore/obj/Debug/Interop.zkemkeeper.dll and b/BioMetrixCore/obj/Debug/Interop.zkemkeeper.dll differ