private void button1_Click_1(object sender, EventArgs e) { if (0 == comboBoxDeleteMeth.SelectedIndex) { CHCNetSDK.NET_DVR_FACE_PARAM_CTRL_ByCard struDelCfg = new CHCNetSDK.NET_DVR_FACE_PARAM_CTRL_ByCard(); struDelCfg.Init(); struDelCfg.dwSize = (int)Marshal.SizeOf(struDelCfg); struDelCfg.byMode = 0; StrToByteArray(ref struDelCfg.struProcessMode.byCardNo, textBoxAssociatedCardNo.Text); GetCardReaderIndex(ref struDelCfg.struProcessMode.byEnableCardReader); GetFaceIDWhenDelByCard(ref struDelCfg); int dwSize = struDelCfg.dwSize; IntPtr PtrStruDelCfg = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(struDelCfg, PtrStruDelCfg, true); Boolean res = CHCNetSDK.NET_DVR_RemoteControl(m_lServerID, CHCNetSDK.NET_DVR_DEL_FACE_PARAM_CFG, PtrStruDelCfg, (uint)dwSize); if (true == res) { g_formList.AddLog(m_iDevIndex, AcsDemoPublic.OPERATION_SUCC_T, "NET_DVR_DEL_FACE_PARAM_CFG SUCC"); } else { g_formList.AddLog(m_iDevIndex, AcsDemoPublic.OPERATION_FAIL_T, "NET_DVR_DEL_FACE_PARAM_CFG FAILED"); } Marshal.FreeHGlobal(PtrStruDelCfg); } }
private void GetFaceIDWhenDelByCard(ref CHCNetSDK.NET_DVR_FACE_PARAM_CTRL_ByCard struDelCfg) { for (int i = 0; i < checkedListBoxDelByCardNo.Items.Count; ++i) { if (checkedListBoxCardReader.GetItemChecked(i)) { struDelCfg.struProcessMode.byFaceID[i] = 1; } else { struDelCfg.struProcessMode.byFaceID[i] = 0; } } }
private void btnDel_Click(object sender, EventArgs e) { if (m_lDelFingerPrintCfHandle != -1) { CHCNetSDK.NET_DVR_StopRemoteConfig(m_lDelFingerPrintCfHandle); } if (comboBoxdDel.SelectedIndex == 0) { //按卡号方式删除 CHCNetSDK.NET_DVR_FACE_PARAM_CTRL_ByCard m_struDelByCard = new CHCNetSDK.NET_DVR_FACE_PARAM_CTRL_ByCard(); m_struDelByCard.Init(); m_struDelByCard.dwSize = Marshal.SizeOf(m_struDelByCard); m_struDelByCard.byMode = (byte)comboBoxdDel.SelectedIndex; byte[] byCardNo = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text); for (int i = 0; i < byCardNo.Length; i++) { m_struDelByCard.struProcessMode.byCardNo[i] = byCardNo[i]; } for (int i = 0; i < CHCNetSDK.MAX_FACE_NUM; ++i) { m_struDelByCard.struProcessMode.byFaceID[i] = 1; //之前的算法需要两张人脸(一张带眼镜,一张不带眼镜)所以有了这个数组(现在只需要一张),删除时把这个数组都赋值为1。 } for (int i = 0; i < 512; i++) { if (checkedListBoxCardReader.GetItemChecked(i)) { m_struDelByCard.struProcessMode.byEnableCardReader[i] = 1; } } IntPtr ptrstruDel = Marshal.AllocHGlobal(m_struDelByCard.dwSize); Marshal.StructureToPtr(m_struDelByCard, ptrstruDel, false); if (CHCNetSDK.NET_DVR_RemoteControl(m_UserID, CHCNetSDK.NET_DVR_DEL_FACE_PARAM_CFG, ptrstruDel, (uint)m_struDelByCard.dwSize)) { MessageBox.Show("NET_SDK_DEL_FACE_Success"); } else { MessageBox.Show("NET_SDK_DEL_FACE_FAILED error:" + CHCNetSDK.NET_DVR_GetLastError()); } Marshal.FreeHGlobal(ptrstruDel); } else { //按读卡器方式删除 CHCNetSDK.NET_DVR_FACE_PARAM_CTRL_ByReader m_struDelByReader = new CHCNetSDK.NET_DVR_FACE_PARAM_CTRL_ByReader(); m_struDelByReader.Init(); m_struDelByReader.dwSize = Marshal.SizeOf(m_struDelByReader); m_struDelByReader.byMode = (byte)comboBoxdDel.SelectedIndex; byte[] byCardNo = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text); for (int i = 0; i < byCardNo.Length; i++) { m_struDelByReader.struProcessMode.byCardNo[i] = byCardNo[i]; } int.TryParse(textBoxReaderNo.Text, out m_struDelByReader.struProcessMode.dwCardReaderNo); if (checkBoxDelAll.Checked) { m_struDelByReader.struProcessMode.byClearAllCard = 1; } else { m_struDelByReader.struProcessMode.byClearAllCard = 0; } IntPtr ptrstruDel = Marshal.AllocHGlobal(m_struDelByReader.dwSize); Marshal.StructureToPtr(m_struDelByReader, ptrstruDel, false); if (CHCNetSDK.NET_DVR_RemoteControl(m_UserID, CHCNetSDK.NET_DVR_DEL_FACE_PARAM_CFG, ptrstruDel, (uint)m_struDelByReader.dwSize)) { MessageBox.Show("NET_SDK_DEL_FACE_Success"); } else { MessageBox.Show("NET_SDK_DEL_FACE_FAILED error:" + CHCNetSDK.NET_DVR_GetLastError()); } Marshal.FreeHGlobal(ptrstruDel); } }