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