Exemple #1
0
        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();
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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;
                }
            });
        }
Exemple #5
0
        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);
                }
            }
        }
Exemple #6
0
        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();
            }
        }