示例#1
0
        private void button1_Click(object sender, EventArgs e)  //проверка ключа
        {
            List <FixedKey> fix = new List <FixedKey>();

            try
            {
                SaveBmp(bm2, $@"{dir}\test");         //сохраняем рисунок ключа
                bool[,] arrFilled = BmpToMatrix(bm2); //переводим в вид матрицы
                TestKey newKey = new TestKey(DateTime.Now, arrFilled);
                //чтение списка эталонных ключей
                System.IO.FileStream fs = new System.IO.FileStream($@"{dir}\collection.ini", System.IO.FileMode.Open);
                BinaryFormatter      bf = new BinaryFormatter();
                fix.Clear();//очищаем коллекцию перед записью из файла
                do
                {
                    fix.Add((FixedKey)bf.Deserialize(fs));
                } while (fs.Position < fs.Length);
                fs.Close();
                int i = 1;
                foreach (FixedKey f in fix)
                {
                    int ck = newKey.CheckTestKey(newKey.matrix, f.matrix);
                    textBox1.Text += $"{i}) {ck}%" + Environment.NewLine;
                    i++;
                }
                // NewPic();   //очистка поля после проверки
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
示例#2
0
        private void btnChkKey_Click(object sender, RoutedEventArgs e) //проверка ключа
        {
            if (dir == null)                                           //если не прочитаны настройки (некуда сохранять ключи) - выходим
            {
                System.Windows.MessageBox.Show($"Невозможно сохранить ключи.\nЛибо не читаются настройки, либо указана некорректная дирректория сохранения.");
                return;
            }
            bool opened = false;

            textBox1.Text = null;//##окно для вывода % совпадения ключей, потом убрать
            Bitmap bmp = MakeBmpFromInkCanvas();

            bool[,] arrFilled = BmpToMatrix(bmp);//переводим в вид матрицы тестовый ключ
            TestKey newKey = new TestKey(DateTime.Now, arrFilled);

            fix = TakeFixKey();
            if (fix == null)
            {
                return;             //проверяем на наличие ключей
            }
            int i = 1;

            foreach (FixedKey f in fix)
            {
                int ck = newKey.CheckTestKey(newKey.matrix, f.matrix);
                textBox1.Text += $"{i}) {ck}%" + Environment.NewLine;
                if (ck >= 98 && !opened)
                {
                    OpenLock();                                //##Подумать над механизмом разрешения!!!
                    opened     = true;
                    failsCount = 0;                            //обнуляем счётчик неудачных вводов
                }
                i++;
            }
            LogWrite($"Произведено сравнение ключа c эталонным.");
            if (!opened)
            {
                failsCount++;
            }
            if (failsCount >= 3)            //если неудачных попыток ввода >=3
            {
                AlertMail(failsCount);
            }

            inkcanvas.Strokes.Clear();  //очищаем поле ввода ключа
        }