private void SendCardData() { CHCNetSDK.NET_DVR_CARD_RECORD struData = new CHCNetSDK.NET_DVR_CARD_RECORD(); struData.Init(); struData.dwSize = (uint)Marshal.SizeOf(struData); struData.byCardType = 1; byte[] byTempCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; byTempCardNo = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text); for (int i = 0; i < byTempCardNo.Length; i++) { struData.byCardNo[i] = byTempCardNo[i]; } ushort.TryParse(textBoxCardRightPlan.Text, out struData.wCardRightPlan[0]); uint.TryParse(textBoxEmployeeNo.Text, out struData.dwEmployeeNo); byte[] byTempName = new byte[CHCNetSDK.NAME_LEN]; byTempName = System.Text.Encoding.Default.GetBytes(textBoxName.Text); for (int i = 0; i < byTempName.Length; i++) { struData.byName[i] = byTempName[i]; } struData.struValid.byEnable = 1; struData.struValid.struBeginTime.wYear = 2000; struData.struValid.struBeginTime.byMonth = 1; struData.struValid.struBeginTime.byDay = 1; struData.struValid.struBeginTime.byHour = 11; struData.struValid.struBeginTime.byMinute = 11; struData.struValid.struBeginTime.bySecond = 11; struData.struValid.struEndTime.wYear = 2030; struData.struValid.struEndTime.byMonth = 1; struData.struValid.struEndTime.byDay = 1; struData.struValid.struEndTime.byHour = 11; struData.struValid.struEndTime.byMinute = 11; struData.struValid.struEndTime.bySecond = 11; struData.byDoorRight[0] = 1; struData.wCardRightPlan[0] = 1; IntPtr ptrStruData = Marshal.AllocHGlobal((int)struData.dwSize); Marshal.StructureToPtr(struData, ptrStruData, false); CHCNetSDK.NET_DVR_CARD_STATUS struStatus = new CHCNetSDK.NET_DVR_CARD_STATUS(); struStatus.Init(); struStatus.dwSize = (uint)Marshal.SizeOf(struStatus); IntPtr ptrdwState = Marshal.AllocHGlobal((int)struStatus.dwSize); Marshal.StructureToPtr(struStatus, ptrdwState, false); int dwState = (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS; uint dwReturned = 0; while (true) { dwState = CHCNetSDK.NET_DVR_SendWithRecvRemoteConfig(m_lSetCardCfgHandle, ptrStruData, struData.dwSize, ptrdwState, struStatus.dwSize, ref dwReturned); struStatus = (CHCNetSDK.NET_DVR_CARD_STATUS)Marshal.PtrToStructure(ptrdwState, typeof(CHCNetSDK.NET_DVR_CARD_STATUS)); if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_NEEDWAIT) { Thread.Sleep(10); continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FAILED) { MessageBox.Show("NET_DVR_SET_CARD fail error: " + CHCNetSDK.NET_DVR_GetLastError()); } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS) { if (struStatus.dwErrorCode != 0) { MessageBox.Show("NET_DVR_SET_CARD success but errorCode:" + struStatus.dwErrorCode); } else { MessageBox.Show("NET_DVR_SET_CARD success"); } } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FINISH) { MessageBox.Show("NET_DVR_SET_CARD finish"); break; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_EXCEPTION) { MessageBox.Show("NET_DVR_SET_CARD exception error: " + CHCNetSDK.NET_DVR_GetLastError()); break; } else { MessageBox.Show("unknown status error: " + CHCNetSDK.NET_DVR_GetLastError()); break; } } CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetCardCfgHandle); m_lSetCardCfgHandle = -1; Marshal.FreeHGlobal(ptrStruData); Marshal.FreeHGlobal(ptrdwState); return; }
/// <summary> /// Įeigos kortelės numerio užregistravimas įeigos kontrolės įrenginyje. /// </summary> /// <param name="user">Registruojamas darbuotojas</param> /// <param name="setCardCfgHandle">Naudotojo išsaugojimui įeigos kontrolės įrenginyje reikalinga reikšmė</param> private static void SendCardDataToAccessController(User user, Int32 setCardCfgHandle) { CHCNetSDK.NET_DVR_CARD_RECORD struData = new CHCNetSDK.NET_DVR_CARD_RECORD(); struData.Init(); struData.dwSize = (uint)Marshal.SizeOf(struData); struData.byCardType = 1; byte[] byTempCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; byTempCardNo = System.Text.Encoding.UTF8.GetBytes(user.card_id); for (int i = 0; i < byTempCardNo.Length; i++) { struData.byCardNo[i] = byTempCardNo[i]; } uint.TryParse(user.id.ToString(), out struData.dwEmployeeNo); byte[] byTempName = new byte[CHCNetSDK.NAME_LEN]; byTempName = System.Text.Encoding.Default.GetBytes(user.name + "_" + user.surname); for (int i = 0; i < byTempName.Length; i++) { struData.byName[i] = byTempName[i]; } struData.struValid.byEnable = 1; struData.struValid.struBeginTime.wYear = 2000; struData.struValid.struBeginTime.byMonth = 1; struData.struValid.struBeginTime.byDay = 1; struData.struValid.struBeginTime.byHour = 11; struData.struValid.struBeginTime.byMinute = 11; struData.struValid.struBeginTime.bySecond = 11; struData.struValid.struEndTime.wYear = 2100; struData.struValid.struEndTime.byMonth = 1; struData.struValid.struEndTime.byDay = 1; struData.struValid.struEndTime.byHour = 11; struData.struValid.struEndTime.byMinute = 11; struData.struValid.struEndTime.bySecond = 11; struData.byDoorRight[0] = 1; struData.wCardRightPlan[0] = 1; IntPtr ptrStruData = Marshal.AllocHGlobal((int)struData.dwSize); Marshal.StructureToPtr(struData, ptrStruData, false); CHCNetSDK.NET_DVR_CARD_STATUS struStatus = new CHCNetSDK.NET_DVR_CARD_STATUS(); struStatus.Init(); struStatus.dwSize = (uint)Marshal.SizeOf(struStatus); IntPtr ptrdwState = Marshal.AllocHGlobal((int)struStatus.dwSize); Marshal.StructureToPtr(struStatus, ptrdwState, false); int dwState = (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS; uint dwReturned = 0; while (true) { dwState = CHCNetSDK.NET_DVR_SendWithRecvRemoteConfig(setCardCfgHandle, ptrStruData, struData.dwSize, ptrdwState, struStatus.dwSize, ref dwReturned); struStatus = (CHCNetSDK.NET_DVR_CARD_STATUS)Marshal.PtrToStructure(ptrdwState, typeof(CHCNetSDK.NET_DVR_CARD_STATUS)); if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_NEEDWAIT) { Thread.Sleep(10); continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FAILED) { continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS) { continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FINISH) { break; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_EXCEPTION) { break; } else { break; } } CHCNetSDK.NET_DVR_StopRemoteConfig(setCardCfgHandle); Marshal.FreeHGlobal(ptrStruData); Marshal.FreeHGlobal(ptrdwState); return; }
private void btnDelete_Click(object sender, EventArgs e) { if (m_lDelCardCfgHandle != -1) { if (CHCNetSDK.NET_DVR_StopRemoteConfig(m_lDelCardCfgHandle)) { m_lDelCardCfgHandle = -1; } } CHCNetSDK.NET_DVR_CARD_COND struCond = new CHCNetSDK.NET_DVR_CARD_COND(); struCond.Init(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = 1; IntPtr ptrStruCond = Marshal.AllocHGlobal((int)struCond.dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); CHCNetSDK.NET_DVR_CARD_SEND_DATA struSendData = new CHCNetSDK.NET_DVR_CARD_SEND_DATA(); struSendData.Init(); struSendData.dwSize = (uint)Marshal.SizeOf(struSendData); byte[] byTempCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; byTempCardNo = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text); for (int i = 0; i < byTempCardNo.Length; i++) { struSendData.byCardNo[i] = byTempCardNo[i]; } IntPtr ptrStruSendData = Marshal.AllocHGlobal((int)struSendData.dwSize); Marshal.StructureToPtr(struSendData, ptrStruSendData, false); CHCNetSDK.NET_DVR_CARD_STATUS struStatus = new CHCNetSDK.NET_DVR_CARD_STATUS(); struStatus.Init(); struStatus.dwSize = (uint)Marshal.SizeOf(struStatus); IntPtr ptrdwState = Marshal.AllocHGlobal((int)struStatus.dwSize); Marshal.StructureToPtr(struStatus, ptrdwState, false); m_lGetCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_UserID, CHCNetSDK.NET_DVR_DEL_CARD, ptrStruCond, (int)struCond.dwSize, null, this.Handle); if (m_lGetCardCfgHandle < 0) { MessageBox.Show("NET_DVR_DEL_CARD error:" + CHCNetSDK.NET_DVR_GetLastError()); Marshal.FreeHGlobal(ptrStruCond); return; } else { int dwState = (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS; uint dwReturned = 0; while (true) { dwState = CHCNetSDK.NET_DVR_SendWithRecvRemoteConfig(m_lGetCardCfgHandle, ptrStruSendData, struSendData.dwSize, ptrdwState, struStatus.dwSize, ref dwReturned); if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_NEEDWAIT) { Thread.Sleep(10); continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FAILED) { MessageBox.Show("NET_DVR_DEL_CARD fail error: " + CHCNetSDK.NET_DVR_GetLastError()); } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS) { MessageBox.Show("NET_DVR_DEL_CARD success"); } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FINISH) { MessageBox.Show("NET_DVR_DEL_CARD finish"); break; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_EXCEPTION) { MessageBox.Show("NET_DVR_DEL_CARD exception error: " + CHCNetSDK.NET_DVR_GetLastError()); break; } else { MessageBox.Show("unknown status error: " + CHCNetSDK.NET_DVR_GetLastError()); break; } } } CHCNetSDK.NET_DVR_StopRemoteConfig(m_lDelCardCfgHandle); m_lDelCardCfgHandle = -1; Marshal.FreeHGlobal(ptrStruSendData); Marshal.FreeHGlobal(ptrdwState); }
/// <summary> /// Naudotojo pašalinimas iš įeigos kontrolės įrenginio. /// </summary> /// <param name="user">Pašalinimas naudotojas</param> /// <param name="accessController_user_id">Įeigos kontrolės įrenginio naudotojo ID</param> /// <param name="handle">Naudotojo pašalinimui iš įeigos kontrolės įrenginio reikalinga reikšmė</param> private static void AccessControllerDeleteUser(User user, int accessController_user_id, IntPtr handle) { Int32 setCardCfgHandle = -1; CHCNetSDK.NET_DVR_CARD_COND struCond = new CHCNetSDK.NET_DVR_CARD_COND(); struCond.Init(); struCond.dwSize = (uint)Marshal.SizeOf(struCond); struCond.dwCardNum = 1; IntPtr ptrStruCond = Marshal.AllocHGlobal((int)struCond.dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); CHCNetSDK.NET_DVR_CARD_SEND_DATA struSendData = new CHCNetSDK.NET_DVR_CARD_SEND_DATA(); struSendData.Init(); struSendData.dwSize = (uint)Marshal.SizeOf(struSendData); byte[] byTempCardNo = new byte[CHCNetSDK.ACS_CARD_NO_LEN]; byTempCardNo = System.Text.Encoding.UTF8.GetBytes(user.card_id); for (int i = 0; i < byTempCardNo.Length; i++) { struSendData.byCardNo[i] = byTempCardNo[i]; } IntPtr ptrStruSendData = Marshal.AllocHGlobal((int)struSendData.dwSize); Marshal.StructureToPtr(struSendData, ptrStruSendData, false); CHCNetSDK.NET_DVR_CARD_STATUS struStatus = new CHCNetSDK.NET_DVR_CARD_STATUS(); struStatus.Init(); struStatus.dwSize = (uint)Marshal.SizeOf(struStatus); IntPtr ptrdwState = Marshal.AllocHGlobal((int)struStatus.dwSize); Marshal.StructureToPtr(struStatus, ptrdwState, false); setCardCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(accessController_user_id, CHCNetSDK.NET_DVR_DEL_CARD, ptrStruCond, (int)struCond.dwSize, null, handle); if (setCardCfgHandle < 0) { Marshal.FreeHGlobal(ptrStruCond); return; } else { int dwState = (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS; uint dwReturned = 0; while (true) { dwState = CHCNetSDK.NET_DVR_SendWithRecvRemoteConfig(setCardCfgHandle, ptrStruSendData, struSendData.dwSize, ptrdwState, struStatus.dwSize, ref dwReturned); if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_NEEDWAIT) { Thread.Sleep(10); continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FAILED) { continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_SUCCESS) { continue; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_FINISH) { break; } else if (dwState == (int)CHCNetSDK.NET_SDK_SENDWITHRECV_STATUS.NET_SDK_CONFIG_STATUS_EXCEPTION) { break; } else { break; } } } CHCNetSDK.NET_DVR_StopRemoteConfig(setCardCfgHandle); setCardCfgHandle = -1; Marshal.FreeHGlobal(ptrStruSendData); Marshal.FreeHGlobal(ptrdwState); CHCNetSDK.NET_DVR_Logout_V30(accessController_user_id); CHCNetSDK.NET_DVR_Cleanup(); }