Exemple #1
0
        private void BT_Code_MouseUp(object sender, MouseEventArgs e)
        {
            //Очистка RichTextBox-ов
            RTB_BinStr.Clear();
            RTB_AditElems.Clear();
            RTB_ConvolCode.Clear();

            bin_arr               = StrngToBin.StrToBin(RTB_Source.Text);
            adit_elem             = WorkWithFinka.CodeArr(StrngToBin.StrArrToStr(bin_arr));
            convol_code           = WorkWithFinka.CodeViaFinka(RTB_Source.Text);
            convol_code_inter     = convol_code;
            recovered_convol_code = WorkWithFinka.UncodeFinkaArr(convol_code_inter);
            str_recovered         = StrngToBin.BinToStr(recovered_convol_code);

            FillRTB(RTB_BinStr, bin_arr);                // Выводим каждый элемент исходной строки в двоичном коде

            FillRTB(RTB_AditElems, adit_elem, true);     // Вывод дополнительных элементов

            for (int i = 0; i < convol_code.Length; i++) // Вывод свёрточного кода
            {
                for (int j = 0; j < convol_code[i].Length; j++)
                {
                    RTB_ConvolCode.Text += convol_code[i][j];
                    RTB_ConvolCode.Select(j, 1);
                    RTB_ConvolCode.SelectionColor = j % 2 == 0 ? Color.Black : Color.Green; // Цвет для выделенной строки не задаётся почему-то...
                    RTB_ConvolCode.DeselectAll();
                }

                RTB_ConvolCode.Text += " ";
            }

            FillInterfRTB(); // Заполняем панель с помехами
        }
Exemple #2
0
        private void BT_InsertInterf_MouseUp(object sender, MouseEventArgs e)
        {
            System.Drawing.Point[] InterferdBits_arr = InterferenceGenerator.GenInter(ref convol_code_inter, (int)NUD_InterfIntensive.Value);
            recovered_convol_code = WorkWithFinka.UncodeFinkaArr(convol_code_inter);
            str_recovered         = StrngToBin.BinToStr(recovered_convol_code);

            for (int i = 0; i < RTB_ConvolCodeWithInter.TextLength; i++) // Должно раскрашивать красным цветом помехи в свёрточном коде (изменённые биты), но не работает...
            {
                if (RTB_ConvolCodeWithInter.Text[i] != RTB_ConvolCode.Text[i])
                {
                    RTB_ConvolCodeWithInter.Select(i, 1);
                    RTB_ConvolCodeWithInter.SelectionColor = Color.Red;
                    RTB_ConvolCodeWithInter.DeselectAll();
                }
            }

            for (int i = 0; i < RTB_RecoveredCode.TextLength; i++) // Должно раскрашивать красным цветом помехи в восстановленом коде (изменённые биты), но не работает...
            {
                if (RTB_RecoveredCode.Text[i] != RTB_BinStr.Text[i])
                {
                    RTB_RecoveredCode.Select(i, 1);
                    RTB_RecoveredCode.SelectionColor = Color.Red;
                    RTB_RecoveredCode.DeselectAll();
                }
            }

            FillInterfRTB();
        }
Exemple #3
0
        static public string[] CodeViaFinka(string str) // Функция кодирует каждый символ строи в код Финка и возвращает массив строк с закодированными двоичными значениями
        {
            string[] bin_arr = StrngToBin.StrToBin(str), code_arr, res_arr = new string[str.Length];

            for (int i = 0; i < bin_arr.Length; i++)
            {
                code_arr = CodeArr(bin_arr[i]);
                for (int j = 0; j < bin_arr[i].Length - 1; j++)
                {
                    res_arr[i] += bin_arr[i][j] + code_arr[j];
                }
            }

            return(res_arr);
        }