Exemple #1
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);
                }
            }
        }