private void ProcessSetFingerData(ref CHCNetSDK.NET_DVR_FINGERPRINT_STATUS ststus, ref bool flag) { switch (ststus.byRecvStatus) { case 0: MessageBox.Show("SetFingegDataSuccessful", "Succeed", MessageBoxButtons.OK); break; default: flag = false; MessageBox.Show("NET_SDK_SET_FINGER_DATA_FAILED" + ststus.byRecvStatus.ToString(), "ERROR", MessageBoxButtons.OK); break; } }
public static extern int NET_DVR_SendWithRecvRemoteConfig(int lHandle, ref CHCNetSDK.NET_DVR_FINGERPRINT_RECORD lpInBuff, int dwInBuffSize, ref CHCNetSDK.NET_DVR_FINGERPRINT_STATUS lpOutBuff, int dwOutBuffSize, IntPtr dwOutDataLen);
private void button5_Click(object sender, EventArgs e) { if (m_lSetFingerPrintCfgHandle != -1) { CHCNetSDK.NET_DVR_StopRemoteConfig((int)m_lSetFingerPrintCfgHandle); m_lSetFingerPrintCfgHandle = -1; } CHCNetSDK.NET_DVR_FINGERPRINT_COND strupond = new CHCNetSDK.NET_DVR_FINGERPRINT_COND(); strupond.init(); int dwSize = Marshal.SizeOf(strupond); strupond.dwSize = dwSize; byte.TryParse(textBoxFingerID.Text, out strupond.byFingerPrintID); int.TryParse(textBoxCardReaderNo.Text, out strupond.dwEnableReaderNo); strupond.dwFingerprintNum = 1;//指纹数量写死的 byte[] byTempptrRec = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text); for (int i = 0; i < byTempptrRec.Length; i++) { strupond.byCardNo[i] = byTempptrRec[i]; } IntPtr ptrStrucond = Marshal.AllocHGlobal(dwSize); Marshal.StructureToPtr(strupond, ptrStrucond, false); m_lSetFingerPrintCfgHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_UserID, CHCNetSDK.NET_DVR_SET_FINGERPRINT, ptrStrucond, dwSize, null, IntPtr.Zero); if (-1 == m_lSetFingerPrintCfgHandle) { Marshal.FreeHGlobal(ptrStrucond); MessageBox.Show("NET_DVR_SET_FINGERPRINT_CFG_V50 FAIL, ERROR CODE" + CHCNetSDK.NET_DVR_GetLastError().ToString(), "Error", MessageBoxButtons.OK); return; } Boolean Flag = true; int dwStatus = 0; CHCNetSDK.NET_DVR_FINGERPRINT_RECORD StruRecord = new CHCNetSDK.NET_DVR_FINGERPRINT_RECORD(); StruRecord.init(); int dwInBuffSize = Marshal.SizeOf(StruRecord); StruRecord.dwSize = dwInBuffSize; byte.TryParse(textBoxFingerID.Text, out StruRecord.byFingerPrintID); int.TryParse(textBoxCardReaderNo.Text, out StruRecord.dwEnableReaderNo); byte[] byTemp = System.Text.Encoding.UTF8.GetBytes(textBoxCardNo.Text); for (int i = 0; i < byTemp.Length; i++) { StruRecord.byCardNo[i] = byTemp[i]; } ReadFingerData(ref StruRecord); CHCNetSDK.NET_DVR_FINGERPRINT_STATUS StruStatus = new CHCNetSDK.NET_DVR_FINGERPRINT_STATUS(); StruStatus.init(); int dwOutBuffSize = Marshal.SizeOf(StruStatus); StruStatus.dwSize = dwOutBuffSize; IntPtr ptrOutDataLen = Marshal.AllocHGlobal(sizeof(int)); while (Flag) { dwStatus = CHCNetSDK.NET_DVR_SendWithRecvRemoteConfig(m_lSetFingerPrintCfgHandle, ref StruRecord, dwInBuffSize, ref StruStatus, dwOutBuffSize, ptrOutDataLen); switch (dwStatus) { case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS: //成功读取到数据,处理完本次数据后需调用next ProcessSetFingerData(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_lSetFingerPrintCfgHandle); 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_lSetFingerPrintCfgHandle); Flag = false; break; default: MessageBox.Show("NET_SDK_GET_NEXT_STATUS_UNKOWN" + CHCNetSDK.NET_DVR_GetLastError().ToString(), "Error", MessageBoxButtons.OK); Flag = false; CHCNetSDK.NET_DVR_StopRemoteConfig(m_lSetFingerPrintCfgHandle); break; } } Marshal.FreeHGlobal(ptrStrucond); Marshal.FreeHGlobal(ptrOutDataLen); }