private extern static WinBioErrorCode CaptureSample( WinBioSessionHandle sessionHandle, WinBioBirPurpose purpose, WinBioBirDataFlags flags, out int unitId, out IntPtr sample, out int sampleSize, out WinBioRejectDetail rejectDetail);
public void CaptureSample(WinBioBirPurpose purpose, WinBioBirDataFlags dataFlags) { int sampleSize; WinBioRejectDetail rejectDetail; var unitId = WinBio.CaptureSample(_handle, purpose, dataFlags, out sampleSize, out rejectDetail); Console.WriteLine("Unit id: {0}", unitId); Console.WriteLine("Captured sample size: {0}", sampleSize); Console.WriteLine("Reject details: {0}", rejectDetail); }
public void CaptureSample(WinBioBirPurpose purpose, WinBioBirDataFlags dataFlags) { Bitmap image; WinBioRejectDetail rejectDetail; var unitId = WinBio.CaptureSample(_handle, purpose, dataFlags, out rejectDetail, out image); Console.WriteLine("Unit id: {0}", unitId); Console.WriteLine("Captured sample size: {0}x{1}", image.Width, image.Height); Console.WriteLine("Reject details: {0}", rejectDetail); }
public static int CaptureSample( WinBioSessionHandle sessionHandle, WinBioBirPurpose purpose, WinBioBirDataFlags flags, out int sampleSize, out WinBioRejectDetail rejectDetail) { int unitId; IntPtr pointer; var code = CaptureSample(sessionHandle, purpose, flags, out unitId, out pointer, out sampleSize, out rejectDetail); WinBioException.ThrowOnError(code, "WinBioCaptureSample failed"); //TODO: parse WINBIO_BIR structure at pointer Free(pointer); return(unitId); }
public static int CaptureSample( WinBioSessionHandle sessionHandle, WinBioBirPurpose purpose, WinBioBirDataFlags flags, out WinBioRejectDetail rejectDetail, out Bitmap fingerprintImage) { int unitId; int sampleSize; IntPtr samplePointer; var code = CaptureSample(sessionHandle, purpose, flags, out unitId, out samplePointer, out sampleSize, out rejectDetail); WinBioException.ThrowOnError(code, "WinBioCaptureSample failed"); WinBioBir sample = (WinBioBir)Marshal.PtrToStructure(samplePointer, typeof(WinBioBir)); if (sample.StandardDataBlock.Size == 0) { throw new WinBioException("Your fingerprint sensor doesn't support StandardDataBlock"); } IntPtr birHeaderPointer = samplePointer + sample.HeaderBlock.Offset; IntPtr ansiHeaderPointer = samplePointer + sample.StandardDataBlock.Offset; IntPtr ansiRecordPointer = ansiHeaderPointer + Marshal.SizeOf(typeof(WinBioBdbAnsi381Header)); WinBioBdbAnsi381Record ansiRecord = (WinBioBdbAnsi381Record)Marshal.PtrToStructure( ansiRecordPointer, typeof(WinBioBdbAnsi381Record)); Size imageSize = new Size(ansiRecord.HorizontalLineLength, ansiRecord.VerticalLineLength); IntPtr firstPixelPointer = ansiRecordPointer + Marshal.SizeOf(typeof(WinBioBdbAnsi381Record)); fingerprintImage = new Bitmap(imageSize.Width, imageSize.Height, 1 * imageSize.Width, PixelFormat.Format8bppIndexed, firstPixelPointer); ColorPalette palette = fingerprintImage.Palette; for (int i = 0; i <= 255; i++) { palette.Entries[i] = Color.FromArgb(i, i, i); } fingerprintImage.Palette = palette; Free(samplePointer); return(unitId); }