private void ProcessDelDataRes(ref CHCNetSDK.NET_DVR_FINGER_PRINT_INFO_STATUS_V50 struStatus, ref bool flag) { switch (struStatus.byStatus) { case 0: MessageBox.Show("DelFp Invalid"); break; case 1: MessageBox.Show("DelFp is Processing"); break; case 2: MessageBox.Show("DelFp failed"); break; case 3: MessageBox.Show("DelFp succeed"); break; default: flag = false; break; } }
public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, ref CHCNetSDK.NET_DVR_FINGER_PRINT_INFO_STATUS_V50 lpOutBuff, int dwOutBuffSize);
private void btnDel_Click(object sender, EventArgs e) { if (-1 != m_lDelFingerPrintCfHandle) { CHCNetSDK.NET_DVR_StopRemoteConfig(m_lDelFingerPrintCfHandle); m_lDelFingerPrintCfHandle = -1; } //这边是联合体,暂收默认卡号人员ID方式删除 CHCNetSDK.NET_DVR_FINGER_PRINT_INFO_CTRL_V50_ByCardNo struCardNo = new CHCNetSDK.NET_DVR_FINGER_PRINT_INFO_CTRL_V50_ByCardNo(); struCardNo.init(); struCardNo.byMode = 0; byte[] byTempCardNo = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text); ByteCopy(ref byTempCardNo, ref struCardNo.struProcessMode.byCardNo); int dwFingerID = 0; int.TryParse(textBoxFingerID.Text, out dwFingerID); if (dwFingerID > 0 && dwFingerID <= 10) { struCardNo.struProcessMode.byFingerPrintID[dwFingerID - 1] = 1; } struCardNo.dwSize = Marshal.SizeOf(struCardNo); int dwSize = struCardNo.dwSize; int dwEnableReaderNo = 1; int.TryParse(textBoxCardReaderNo.Text, out dwEnableReaderNo); if (dwEnableReaderNo <= 0) { dwEnableReaderNo = 1; } // 使能读卡器参数byEnableCardReader[下发的读卡器编号-1] = 1,保证和下发的是同一个读卡器 struCardNo.struProcessMode.byEnableCardReader[dwEnableReaderNo - 1] = 1; IntPtr ptrStruCardNo = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(struCardNo, ptrStruCardNo, false); m_lDelFingerPrintCfHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_UserID, CHCNetSDK.NET_DVR_DEL_FINGERPRINT, ptrStruCardNo, dwSize, null, IntPtr.Zero); if (-1 == m_lDelFingerPrintCfHandle) { Marshal.FreeHGlobal(ptrStruCardNo); MessageBox.Show("NET_DVR_DEL_FINGERPRINT FAIL, ERROR CODE" + CHCNetSDK.NET_DVR_GetLastError().ToString(), "Error", MessageBoxButtons.OK); return; } Boolean Flag = true; int dwStatus = 0; CHCNetSDK.NET_DVR_FINGER_PRINT_INFO_STATUS_V50 struStatus = new CHCNetSDK.NET_DVR_FINGER_PRINT_INFO_STATUS_V50(); struStatus.init(); struStatus.dwSize = Marshal.SizeOf(struStatus); int struSize = struStatus.dwSize; while (Flag) { dwStatus = CHCNetSDK.NET_DVR_GetNextRemoteConfig(m_lDelFingerPrintCfHandle, ref struStatus, struSize); switch (dwStatus) { case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS: //成功读取到数据,处理完本次数据后需调用next ProcessDelDataRes(ref struStatus, ref Flag); break; case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_NEED_WAIT: break; case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_FAILED: CHCNetSDK.NET_DVR_StopRemoteConfig(m_lDelFingerPrintCfHandle); m_lDelFingerPrintCfHandle = -1; MessageBox.Show("NET_SDK_GET_NEXT_STATUS_FAILED" + CHCNetSDK.NET_DVR_GetLastError().ToString(), "Error", MessageBoxButtons.OK); Flag = false; break; case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_FINISH: CHCNetSDK.NET_DVR_StopRemoteConfig(m_lDelFingerPrintCfHandle); m_lDelFingerPrintCfHandle = -1; MessageBox.Show("NET_SDK_GET_NEXT_STATUS_FINISH"); Flag = false; break; default: MessageBox.Show("NET_SDK_GET_NEXT_STATUS_UNKOWN" + CHCNetSDK.NET_DVR_GetLastError().ToString(), "Error", MessageBoxButtons.OK); Flag = false; break; } } Marshal.FreeHGlobal(ptrStruCardNo); }