private void enrollmentControl_OnEnroll(object control, int fingerNbr, DPFP.Template template, ref EventHandlerStatus eventHandlerStatus) { if (eventHandlerStatus == EventHandlerStatus.Failure) { MessageBox.Show("Finger enrollment failed.", "Enrollment Failure", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } var fingerIndex = DpfpFingerNbrToFingerIndex[fingerNbr]; string base64EncodedTemplate = FingerprintReader.EncodeBase64Template(template); var ctx = RemoteDatabase.GetDbContext(); { ctx.Fingerprints.Add(new SmartDrawerDatabase.DAL.Fingerprint { Index = (int)fingerIndex, GrantedUserId = _currentUser.GrantedUserId, Template = base64EncodedTemplate }); ctx.SaveChanges(); ctx.Database.Connection.Close(); ctx.Dispose(); } }
private static string PromptForSerialPort() { var baseChar = 65; var portNames = FingerprintReader.GetPortNames() .ToDictionary(p => (ConsoleKey)baseChar++, v => v); if (portNames.Any() == false) { "There is not serial ports connected, please check your hardware".Error(); return(string.Empty); } if (portNames.Count == 1) { return(portNames.First().Value); } var portSelection = Terminal.ReadPrompt("Select Port to Open", portNames, "Exit this program"); return(portNames.ContainsKey(portSelection.Key) ? portNames[portSelection.Key] : string.Empty); }
public EnrollFingersForm(GrantedUser user) { InitializeComponent(); var serialNumbers = FingerprintReader.GetPluggedReadersSerialNumbers(); if (serialNumbers.Count == 0) { MessageBox.Show("No fingerprint reader available.", "Module not Found!"); Close(); return; } enrollmentControl.ReaderSerialNumber = serialNumbers[0]; _currentUser = user; labelUsername.Text = _currentUser.Login; foreach (var fp in _currentUser.Fingerprints) { enrollmentControl.EnrolledFingerMask += FingerIndexToMaskValue[(FingerIndex)fp.Index]; } }
public static void TryInitializeLocalDeviceAsync() { ThreadPool.QueueUserWorkItem(delegate { if (!DevicesConnected) { FindAndConnectDevice(); } if (!GpioCardObject.IsConnected) { FindAndConnectGPIO(); } //ConnectAccessBadge("COM2"); // fingerprint reader var fpReadersSerialNumbers = FingerprintReader.GetPluggedReadersSerialNumbers(); if (fpReadersSerialNumbers.Count > 0) { FPReader = new FingerprintReader(fpReadersSerialNumbers.First()); FPReader.StartCapture(); FPReader.FingerprintReaderEvent += FPReader_FingerprintReaderEvent; } }); }
public static async Task Main(string[] args) { var portName = PromptForSerialPort(); if (string.IsNullOrEmpty(portName)) { return; } using (var reader = new FingerprintReader()) { $"Opening port '{portName}' . . .".Info(); await reader.OpenAsync(portName); while (true) { #region Main Menu ConsoleKeyInfo selectedOption; var menuOption = Terminal.ReadPrompt("Select an option", ActionOptions, "Exit this program"); if (menuOption.Key == ConsoleKey.Q) { selectedOption = Terminal.ReadPrompt("Select an option", ModuleActionOptions, "Exit this prompt"); } else if (menuOption.Key == ConsoleKey.W) { selectedOption = Terminal.ReadPrompt("Select an option", UsersActionOptions, "Exit this prompt"); } else if (menuOption.Key == ConsoleKey.E) { selectedOption = Terminal.ReadPrompt("Select an option", MatchingActionOptions, "Exit this prompt"); } else { break; } #endregion #region Action Options switch (selectedOption.Key) { case ConsoleKey.V: { var result = await reader.GetDspVersionNumber(); break; } case ConsoleKey.M: { var result = await reader.GetRegistrationMode(); break; } case ConsoleKey.J: { var result = await reader.GetAllUsers(); if (result != null && result.IsSuccessful) { foreach (var kvp in result.Users) { $"User: {kvp.Key,4} Privilege: {kvp.Value,4}".Info(); } } break; } case ConsoleKey.U: { var userId = Terminal.ReadNumber("Enter User Id", 1); var result = await reader.GetUserProperties(userId); $"User: {result.UserId} Privilege: {result.UserPrivilege} Eigenvalues: {(result.Eigenvalues != null ? result.Eigenvalues.Length : 0)} bytes" .Info(); break; } case ConsoleKey.B: { var baseChar = 65; var baudRates = Enum.GetNames(typeof(BaudRate)) .ToDictionary(p => (ConsoleKey)baseChar++, v => v); var baudSelection = Terminal.ReadPrompt( $"Select new Baud Rate - Current Rate is {reader.SerialPort.BaudRate}", baudRates, "Exit this prompt"); if (baudRates.ContainsKey(baudSelection.Key)) { var newBaudRate = (BaudRate)Enum.Parse(typeof(BaudRate), baudRates[baudSelection.Key]); await reader.SetBaudRate(newBaudRate); } break; } case ConsoleKey.Y: { var userId = Terminal.ReadNumber("Enter User Id", 1); var privilege = Terminal.ReadNumber("Enter Privilege", 1); var eigenvaluesResult = await reader.AcquireImageEigenvalues(); var result = await reader.SetUserProperties(userId, privilege, eigenvaluesResult.Eigenvalues); break; } case ConsoleKey.F3: { "Place your finger on the sensor to produce some eigenvalues".Info(); var eigenvaluesResult = await reader.AcquireImageEigenvalues(); "Place your finger on the sensor once again to compare the eigenvalues".Info(); var result = await reader.MatchImageToEigenvalues(eigenvaluesResult.Eigenvalues); break; } case ConsoleKey.F4: { var userId = Terminal.ReadNumber("Enter User Id", 1); "Place your finger on the sensor to produce some eigenvalues".Info(); var eigenvaluesResult = await reader.AcquireImageEigenvalues(); "Place your finger on the sensor once again to compare the eigenvalues".Info(); var result = await reader.MatchUserToEigenvalues(userId, eigenvaluesResult.Eigenvalues); break; } case ConsoleKey.F5: { "Place your finger on the sensor to produce some eigenvalues".Info(); var eigenvaluesResult = await reader.AcquireImageEigenvalues(); var result = await reader.MatchEigenvaluesToUser(eigenvaluesResult.Eigenvalues); break; } case ConsoleKey.P: { var userId = Terminal.ReadNumber("Enter User Id", 1); var result = await reader.GetUserPrivilege(userId); break; } case ConsoleKey.L: { var result = await reader.GetMatchingLevel(); break; } case ConsoleKey.K: { var matchingLevel = Terminal.ReadNumber("Enter Matching Level (0 to 9)", 5); if (matchingLevel < 0) { matchingLevel = 0; } if (matchingLevel > 9) { matchingLevel = 9; } var result = await reader.SetMatchingLevel(matchingLevel); break; } case ConsoleKey.G: { var timeout = Terminal.ReadNumber("Enter CaptureTimeout (0 to 255)", 0); if (timeout < 0) { timeout = 0; } if (timeout > 255) { timeout = 255; } var result = await reader.SetCaptureTimeout(timeout); break; } case ConsoleKey.T: { await reader.GetCaptureTimeout(); break; } case ConsoleKey.C: { var result = await reader.GetUserCount(); $"User count: {result.UserCount}".Info(); break; } case ConsoleKey.F6: { var result = await reader.AcquireImage(); break; } case ConsoleKey.F7: { var result = await reader.AcquireImageEigenvalues(); break; } case ConsoleKey.Q: { var userId = Terminal.ReadNumber("Enter User Id", 1); var result = await reader.MatchOneToOne(userId); break; } case ConsoleKey.W: { var result = await reader.MatchOneToN(); $"Successful: {result.IsSuccessful}".Info(); break; } case ConsoleKey.R: { var mode = Terminal.ReadNumber("Enter Registration Mode - 1 disallows repeated fingerprints", 1); var result = await reader.SetRegistrationMode(mode == 1); break; } case ConsoleKey.A: { var userId = Terminal.ReadNumber("Enter User Id", 1); var privilege = Terminal.ReadNumber("Enter Privilege", 1); "Place your finger on the sensor".Info(); var fp1 = await reader.AddFingerprint(1, userId, privilege); if (fp1 != null && fp1.IsSuccessful) { "Place your finger on the sensor again".Info(); var fp2 = await reader.AddFingerprint(2, userId, privilege); if (fp2 != null && fp2.IsSuccessful) { "Place your finger on the sensor once again".Info(); var fp3 = await reader.AddFingerprint(3, userId, privilege); if (fp3 != null && fp3.IsSuccessful) { "User added successfully".Info(); } else { "Failed on acquisition 3".Error(); } } else { "Failed on acquisition 2".Error(); } } else { "Failed on acquisition 1".Error(); } break; } default: { switch (selectedOption.Key) { case ConsoleKey.W: { var userId = Terminal.ReadNumber("Enter User Id", 1); var result = await reader.DeleteUser(userId); break; } case ConsoleKey.Z: { var result = await reader.DeleteAllUsers(); break; } case ConsoleKey.S: { var result = await reader.Sleep(); break; } } break; } } #endregion Console.WriteLine("Press any key to continue . . ."); Console.ReadKey(true); } } }
public static async Task Main(string[] args) { try { "Getting ports...".Info(); foreach (var p in FingerprintReader.GetPortNames()) { $"Port: {p}".Info(); } "Creating port...".Info(); var reader = new FingerprintReader(FingerprintReaderModel.GT521F52); $"Opening port at {InitialBaudRate}...".Info(); await reader.OpenAsync("COM4").ConfigureAwait(false); $"Serial Number: {reader.SerialNumber}".Info(); $"Firmware Version: {reader.FirmwareVersion}".Info(); while (true) { var option = Terminal.ReadPrompt("Select an option", Options, "Esc to quit"); if (option.Key == ConsoleKey.C) { var countResponse = await reader.CountEnrolledFingerprintAsync().ConfigureAwait(false); if (countResponse.IsSuccessful) { $"Users enrolled: {countResponse.EnrolledFingerprints}".Info(); } } else if (option.Key == ConsoleKey.M) { try { var matchResponse = await reader.MatchOneToN().ConfigureAwait(false); if (matchResponse.IsSuccessful) { $"UserId: {matchResponse.UserId}".Info(); } else { $"Error: {matchResponse.ErrorCode}".Error(); } } catch (OperationCanceledException ex) { $"Error: {ex.Message}".Error(); } } else if (option.Key == ConsoleKey.I) { try { var imageResponse = await reader.GetImageAsync().ConfigureAwait(false); if (imageResponse.IsSuccessful) { $"Image size: {imageResponse.Image.Length}bytes".Info(); #if NET461 SaveImage(imageResponse.Image, 202, 258, "Image.bmp"); #endif } else { $"Error: {imageResponse.ErrorCode}".Error(); } } catch (OperationCanceledException ex) { $"Error: {ex.Message}".Error(); } } else if (option.Key == ConsoleKey.R) { try { var imageResponse = await reader.GetRawImageAsync().ConfigureAwait(false); if (imageResponse.IsSuccessful) { $"Image size: {imageResponse.Image.Length}bytes".Info(); #if NET461 SaveImage(imageResponse.Image, 160, 120, "RawImage.bmp"); #endif } else { $"Error: {imageResponse.ErrorCode}".Error(); } } catch (OperationCanceledException ex) { $"Error: {ex.Message}".Error(); } } else if (option.Key == ConsoleKey.S) { var standbyResponse = await reader.EnterStandByMode().ConfigureAwait(false); if (standbyResponse.IsSuccessful) { "Standby Mode".Info(); } else { $"Error: {standbyResponse.ErrorCode}".Error(); } } else if (option.Key == ConsoleKey.Escape) { break; } } "Closing port...".Info(); reader.Dispose(); Console.Clear(); } catch (Exception ex) { ex.Log("Program.Main"); Console.ReadLine(); } }