private void ProcessCapFingerData(ref CHCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_CFG struCFG, ref bool flag) { string strpath = null; DateTime dt = DateTime.Now; strpath = string.Format("capFingerPrint.dat", Environment.CurrentDirectory); try { using (FileStream fs = new FileStream(strpath, FileMode.OpenOrCreate)) { fs.Write(struCFG.byFingerData, 0, struCFG.dwFingerPrintDataSize); fs.Close(); } textBoxFingerData.Text = strpath; MessageBox.Show("FingerPrint Cap SUCCEED", "SUCCEED", MessageBoxButtons.OK); } catch { MessageBox.Show("CapFingerprint process failed"); flag = false; } }
public static extern int NET_DVR_GetNextRemoteConfig(int lHandle, ref CHCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_CFG lpOutBuff, int dwOutBuffSize);
private void btnCap_Click(object sender, EventArgs e) { if (m_lCapFingerPrintCfHandle != -1) { CHCNetSDK.NET_DVR_StopRemoteConfig(m_lCapFingerPrintCfHandle); m_lCapFingerPrintCfHandle = -1; } CHCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_COND struCond = new CHCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_COND(); struCond.init(); struCond.dwSize = Marshal.SizeOf(struCond); int dwInBufferSize = struCond.dwSize; struCond.byFingerPrintPicType = 1; //指纹图片类型是什么暂定1 struCond.byFingerNo = 1; IntPtr ptrStruCond = Marshal.AllocHGlobal(struCond.dwSize); Marshal.StructureToPtr(struCond, ptrStruCond, false); m_lCapFingerPrintCfHandle = CHCNetSDK.NET_DVR_StartRemoteConfig(m_UserID, CHCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_INFO, ptrStruCond, dwInBufferSize, null, IntPtr.Zero); if (-1 == m_lCapFingerPrintCfHandle) { Marshal.FreeHGlobal(ptrStruCond); MessageBox.Show("NET_DVR_CAP_FINGERPRINT FAIL, ERROR CODE" + CHCNetSDK.NET_DVR_GetLastError().ToString(), "Error", MessageBoxButtons.OK); } bool flag = true; int dwStatus = 0; CHCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_CFG struCFG = new CHCNetSDK.NET_DVR_CAPTURE_FINGERPRINT_CFG(); struCFG.init(); struCFG.dwSize = Marshal.SizeOf(struCFG); int dwOutBuffSize = struCFG.dwSize; while (flag) { dwStatus = CHCNetSDK.NET_DVR_GetNextRemoteConfig(m_lCapFingerPrintCfHandle, ref struCFG, dwOutBuffSize); switch (dwStatus) { case CHCNetSDK.NET_SDK_GET_NEXT_STATUS_SUCCESS: //成功读取到数据,处理完本次数据后需调用next ProcessCapFingerData(ref struCFG, 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_lCapFingerPrintCfHandle); 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_lCapFingerPrintCfHandle); 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_lCapFingerPrintCfHandle); break; } } Marshal.FreeHGlobal(ptrStruCond); }