public IActionResult ThresholdGenerate([FromBody] LfsrGeneratorsViewModel viewModel) { var numOfRegisters = viewModel.Registers.Length; Lfsr[] registers = new Lfsr[numOfRegisters]; for (int i = 0; i < numOfRegisters; i++) { registers[i] = new Lfsr(viewModel.Registers[i]); registers[i].SetFeedbackFunction(viewModel.FeedbackFunctions[i]); } ThresholdGenerator generator = new ThresholdGenerator(registers); SeriesMode mode = (SeriesMode)viewModel.Mode; switch (mode) { case SeriesMode.Binary: { var data = generator.GenerateBitsAsChars(viewModel.Length); var r = LfsrHelper.GetRegisterAsStringArray(generator.Registers); return(Json(new { data = new string(data), registers = r })); } case SeriesMode.Hex: { var data = generator.GenerateBytes(viewModel.Length); var r = LfsrHelper.GetRegisterAsStringArray(generator.Registers); return(Json(new { data = BitConverter.ToString(data), registers = r })); } case SeriesMode.Base64: { var data = generator.GenerateBytes(viewModel.Length); var r = LfsrHelper.GetRegisterAsStringArray(generator.Registers); return(Json(new { data = data, registers = r })); } } return(Json("")); }
private void createRegistersBtn_Click(object sender, RoutedEventArgs e) { if (string.IsNullOrEmpty(numOfLfsrTxtBox.Text)) { return; } int numOfRegisters = int.Parse(numOfLfsrTxtBox.Text); if (numOfRegisters % 2 == 0) { MessageBox.Show("Liczba rejestrów musi być nieparzysta!"); return; } Lfsr_list.Children.Clear(); registersLabel = new Label[numOfRegisters]; for (int i = 0; i < numOfRegisters; i++) { RegisterUserControl register = new RegisterUserControl(); register.RegisterNumberLabel.Content = "Rejestr " + (i + 1); if (i % 2 == 0) { register.MainGrid.Background = Brushes.LightYellow; } Lfsr_list.Children.Add(register); registersLabel[i] = register.rState; } Lfsr[] registers = new Lfsr[numOfRegisters]; for (int i = 0; i < registers.Length; i++) { registers[i] = new Lfsr(registersLabel[i].Content as string); } generator = new ThresholdGenerator(registers); }
private void Button_Click(object sender, RoutedEventArgs e) { uint parsedValue; if ((series_length.Text).ToString().Length == 0) { MessageBox.Show("Podaj długość ciągu do wygenerowania."); return; } else if (!uint.TryParse(series_length.Text, out parsedValue)) { MessageBox.Show("Długość ciągu do wygenerowania musi być dodatnią liczbą całkowitą."); return; } int numOfLfsr = Convert.ToInt32(lfsr_amount.Text); Lfsr[] lfsr = new Lfsr[numOfLfsr]; uint[] parsed = new uint[numOfLfsr]; var registersLength = Convert.ToInt32(RegisterLength_ComboBox.SelectedItem); for (int i = 0; i < numOfLfsr; i++) { string s = ((TextBox)Lfsr_list.Children[((i + 1) * 2) - 1]).Text; if (s.Length == 0) { MessageBox.Show("Uzupełnij pola z wartościami początkowymi rejestrów."); return; } else if (!uint.TryParse(s, out parsed[i])) { MessageBox.Show("Wartości początkowe rejestrów muszą być dodatnią liczbą całkowitą."); return; } lfsr[i] = new Lfsr(registersLength); var boolArray = Convert.ToString(parsed[i], 2).Select(str => str.Equals('1')).Take(registersLength).ToArray(); var bitArray = new BitArray(registersLength); for (int j = 0; j < boolArray.Length; j++) { bitArray[j] = boolArray[j]; } lfsr[i].SetRegisterValues(bitArray); } wynik.Clear(); LfsrGenerator generator = new ThresholdGenerator(lfsr); if (typ.SelectedIndex == 0) { var gen = generator.GenerateBitsAsChars(Convert.ToInt32(series_length.Text)); wynik.Text = new string(gen); } else if (typ.SelectedIndex == 1) { var gen1 = generator.GenerateBytes(Convert.ToInt32(series_length.Text)); wynik.Text = BitConverter.ToString(gen1); } else if (typ.SelectedIndex == 2) { var gen1 = generator.GenerateIntegers(Convert.ToInt32(series_length.Text)); wynik.Text = String.Join(" ", gen1.Select(p => p.ToString()).ToArray()); } }
private void Button_Click(object sender, RoutedEventArgs e) { int parsedValue; byte parsed; if (!int.TryParse(series_length.Text, out parsedValue)) { MessageBox.Show("Długość ciągu do wygenerowania musi być liczbą całkowitą."); return; } else if ((series_length.Text).ToString().Length == 0) { MessageBox.Show("Podaj długość ciągu do wygenerowania."); return; } else if (Convert.ToInt32(series_length.Text) < 1) { MessageBox.Show("Długość ciągu do wygenerowania musi być większa od zera."); return; } int numOfLfsr = Convert.ToInt32(lfsr_amount.Text); Lfsr[] lfsr = new Lfsr[numOfLfsr]; for (int i = 0; i < numOfLfsr; i++) { lfsr[i] = new Lfsr(); string s = ((TextBox)Lfsr_list.Children[((i + 1) * 2) - 1]).Text; if (s.Length == 0) { MessageBox.Show("Musisz podać wartości początkowe rejestrów."); return; } else if (!byte.TryParse(s, out parsed)) { MessageBox.Show("Musisz podać wartości początkowe rejestrów z zakresu (0-255)."); return; } lfsr[i].SetRegisterValues(new BitArray(new byte[] { Convert.ToByte(s) })); } Stopwatch sw = new Stopwatch(); wynik.Clear(); LfsrGenerator generator = new ThresholdGenerator(lfsr); if (typ.SelectedIndex == 0) { sw.Start(); var gen = generator.GenerateBitsAsChars(Convert.ToInt32(series_length.Text)); sw.Stop(); foreach (var item in gen) { wynik.Text = wynik.Text + item; } sw.Reset(); } else if (typ.SelectedIndex == 1) { sw.Start(); var gen1 = generator.GenerateBytes(Convert.ToInt32(series_length.Text)); sw.Stop(); foreach (var item in gen1) { wynik.Text = wynik.Text + item; } sw.Reset(); } else if (typ.SelectedIndex == 2) { sw.Start(); var gen1 = generator.GenerateIntegers(Convert.ToInt32(series_length.Text)); sw.Stop(); foreach (var item in gen1) { wynik.Text = wynik.Text + item; } sw.Reset(); } }