private void Button_Click(object sender, RoutedEventArgs e)
        {
            Stream source = null;

            if (FileSelectRadio.IsChecked.GetValueOrDefault())
            {
                source = new FileStream(inputFileName, FileMode.Open, FileAccess.Read);
            }
            else if (BitsSelectRadio.IsChecked.GetValueOrDefault())
            {
                source = new MemoryStream(BitsUtils.ToBinary(BitsTextBox.Text));
            }
            else
            {
                throw new Exception("Source not specified");
            }
            int mode = 0;

            if (DECCRadio.IsChecked.GetValueOrDefault())
            {
                mode = 2;
            }
            else if (SECCRadio.IsChecked.GetValueOrDefault())
            {
                mode = 1;
            }
            else
            {
                throw new Exception("Mode not specified");
            }

            if (FileOutputCheckBox.IsChecked.GetValueOrDefault())
            {
                SaveFileDialog dialog = new SaveFileDialog();
                if (dialog.ShowDialog() == true)
                {
                    using (var fs = new FileStream(dialog.FileName, FileMode.Create, FileAccess.Write))
                    {
                        ECC.Decode(mode, source, fs);
                    }
                }
            }
            else
            {
                OutputText.Document.Blocks.Clear();
                byte[] encoded = Telekom.ECC.Decode(mode, source);
                for (int i = 0; i < encoded.Length; i++)
                {
                    OutputText.AppendText(Convert.ToString(encoded[i], 2).PadLeft(8, '0'));
                }
            }
            source.Close();
        }
Example #2
0
        static void Main(string[] args)
        {
            var str   = "1101000110";            // wiadomość do zakodowania (10 bitów)
            var bytes = BitsUtils.ToBinary(str); // konwersja do postaci bitowej

            using MemoryStream ms = new MemoryStream(bytes);
            var       encoded = Telekom.ECC.Encode(1, ms); // Zakodowanie wiadomości do słowa kodowego
            BitVector vector  = new BitVector(encoded);

            vector.SwitchBit(3);                 // zamiana 3 bitu (pierwsze słowo kodowe)
            vector.SwitchBit(12);                // zamiana 12 bitu (drugie słowo kodowe)
            using MemoryStream ms1 = new MemoryStream(encoded);
            var docoded = SingleECC.Decode(ms1); // Odkodowanie słowa kodowego (i korekcja błędów)
        }