Ejemplo n.º 1
0
        /// <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();
            }
        }
Ejemplo n.º 2
0
        /// <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();
            }
        }
Ejemplo n.º 3
0
        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;
            }
        }