/// <summary> /// Funkcija iškviečiama, kuomet vartotojas paspaudžia "Pateikti" mygtuką. /// </summary> private void ButtonSubmitVariables_Click(object sender, RoutedEventArgs e) { var inputIsValid = false; if (_errorChance == -1) { _errorMessage = "Neteisingai įvesta klaidos tikimybė (p)."; } else if (_cols == -1) { _errorMessage = "Neteisingai įvestas matricos ilgis (n)."; } else if (_rows == -1) { _errorMessage = "Neteisingai įvesta matricos dimensija (k)."; } else { inputIsValid = true; } if (!inputIsValid) { ShowErrorMessage(); return; } // Paslepiame kodo ilgį. InputCols.Visibility = Visibility.Hidden; LabelCols.Visibility = Visibility.Hidden; // Paslepiame kodo dimensiją. InputRows.Visibility = Visibility.Hidden; LabelRows.Visibility = Visibility.Hidden; // Paslepiame kas liko. CheckBoxOwnMatrix.Visibility = Visibility.Hidden; // Varnelė savo matricos pateikimui. ButtonSubmitVariables.Visibility = Visibility.Hidden; // Mygtukas visko pateikimui. if (_entersOwnMatrix) { LetUserEnterGMatrix(); } else { _matrixG = new MatrixG(_cols, _rows); _matrixH = _matrixG.GetMatrixH(); // Paslepiame nebeaktualius langelius ir parodome aktualius. HideInputFieldsAndShowChooseImage(); } }
/// <summary> /// Funkcija iškviečiama, kuomet vartotojas paspaudžia "Enter" klavišą įvedęs vektorių matricai. /// </summary> private void InputMatrixRow_KeyUp(object sender, KeyEventArgs e) { // Reiškia matrica jau sukurta - nebereikia čia nieko daryti. if (_matrixG != null) { return; } if (e.Key != Key.Enter) { return; } try { // Patikriname ar įvestas vektorius tinkamas matricai. var row = _validator.ValidateGMatrixRow(InputMatrixRow.Text); _tempMatrix.Add(row); InputMatrixRow.Text = string.Empty; LabelInputMatrixRow.Content = $"Įveskite {_tempMatrix.Count + 1}-ąjį vektorių: "; // Jeigu jau turime pakankamai matricos eilučių. if (_tempMatrix.Count == _rows) { try { _matrixG = new MatrixG(length: _cols, dimension: _rows, matrix: _tempMatrix); _matrixH = _matrixG.GetMatrixH(); // Paslepiame nebeaktualius langelius ir parodome aktualius. HideInputFieldsAndShowChooseImage(); } catch (Exception ex) { _errorMessage = ex.Message; ShowErrorMessage(); // Nepavyko sukurti matricos iš paduotų vektorių tad išvalome esamą matricą. _tempMatrix.Clear(); LabelInputMatrixRow.Content = $"Įveskite {_tempMatrix.Count + 1}-ąjį vektorių: "; } } } // Jeigu buvo įvestas netinkamas vektorius. catch (Exception ex) { _errorMessage = ex.Message; ShowErrorMessage(); } }
private IList <byte> _receivedVector; // '_decodedVector' dekoduotas G matrica. // PUBLIC /// <summary> /// Įjungia vartotojo sąsają. /// </summary> public void Start() { _errorProbability = GetErrorProbabilty(); _channel = new Channel(_errorProbability); _cols = GetNumberOfCols(); _rows = GetNumberOfRows(); if (AskYesOrNoQuestion("Ar norite įvesti generuojančią matricą patys (jeigu ne - ji bus sugeneruota už jus)?")) { LetUserEnterGMatrix(); } else { _matrixG = new MatrixG(_cols, _rows); } _matrixH = _matrixG.GetMatrixH(); while (true) { _originalVector = GetVectorToSend(); _encodedVector = _matrixG.Encode(_originalVector); _distortedVector = _channel.SendVectorThrough(_encodedVector); _errorVector = _channel.FindDifferences(_encodedVector, _distortedVector); if (AskYesOrNoQuestion("Ar norite keisti iš kanalo gautą vektorių?")) { LetUserEnterErrorVector(); } _decodedVector = _matrixH.Decode(_distortedVector); _receivedVector = _matrixG.Decode(_decodedVector); if (!AskYesOrNoQuestion("Ar norite siųsti dar vieną vektorių?")) { break; } _originalVector = null; _encodedVector = null; _distortedVector = null; _errorVector = null; _decodedVector = null; _receivedVector = null; } }