예제 #1
0
        private void correrAlgoritmosModulation()
        {
            Graficos g = new Graficos(panelGrafismoModulation.CreateGraphics());

            panelGrafismoModulation.Refresh();

            if (textBoxCodigoBinario.TextLength <= 0)
            {
                MessageBox.Show("tens que inserir um código binário!", "Ooops!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                panelGrafismoModulation.Refresh();
                g.desenharQuadro();
                return;
            }

            if (radioButtonAmplitudeShiftKeying.Checked)
            {
                Modulation.aplicarAmplitudeShiftKeying(textBoxCodigoBinario.Text, g, Convert.ToDouble(hScrollBarFrequencia.Value), Convert.ToDouble(hScrollBarAmplitude.Value), hScrollBarTempo.Value);
            }
            else if (radioButtonFrequencyShiftKeying.Checked)
            {
                Modulation.aplicarFrequencyShiftKeying(textBoxCodigoBinario.Text, g, Convert.ToDouble(hScrollBarFrequencia.Value), Convert.ToDouble(hScrollBarAmplitude.Value), hScrollBarTempo.Value, Convert.ToDouble(hScrollBarFrequencia2.Value));
            }
            else if (radioButtonPhaseShiftKeying.Checked)
            {
                Modulation.aplicarPhaseShiftKeying(textBoxCodigoBinario.Text, g, Convert.ToDouble(hScrollBarFrequencia.Value), Convert.ToDouble(hScrollBarAmplitude.Value), hScrollBarTempo.Value);
            }
        }
예제 #2
0
        public static void aplicarNRZL(String s, Graficos g)
        {
            g.x = -g.tamanhoLinha;
            g.y = 50;

            if (s[0] == '0')
            {
                g.y -= g.tamanhoLinha;
            }

            for (int i = 0; i < s.Length; i++)
            {
                g.desenharBinario(s[i], (i * g.tamanhoLinha) + (g.tamanhoLinha / 3), 0);

                if (s[i] == '0')
                {
                    g.desenharLinhaHorizontal();
                }
                else
                {
                    g.desenharLinhaHorizontal();
                }

                if (((i + 1) != s.Length) && (s[i + 1] != s[i]))
                {
                    g.desenharLinhaVertical((s[i + 1] == '1') ? g.DESENHAR_BAIXO : g.DESENHAR_CIMA);
                }
            }
        }
예제 #3
0
        private void correrAlgoritmosModulation()
        {
            Graficos g = new Graficos(panelGrafismoModulation.CreateGraphics());

            panelGrafismoModulation.Refresh();

            if (textBoxCodigoBinario.TextLength <= 0)
            {
                MessageBox.Show("tens que inserir um código binário!", "Ooops!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                panelGrafismoModulation.Refresh();
                g.desenharQuadro();
                return;
            }

            if (radioButtonAmplitudeShiftKeying.Checked)
            {
                Modulation.aplicarAmplitudeShiftKeying(textBoxCodigoBinario.Text, g, Convert.ToDouble(hScrollBarFrequencia.Value), Convert.ToDouble(hScrollBarAmplitude.Value), hScrollBarTempo.Value);
            }
            else if (radioButtonFrequencyShiftKeying.Checked)
            {
                Modulation.aplicarFrequencyShiftKeying(textBoxCodigoBinario.Text, g, Convert.ToDouble(hScrollBarFrequencia.Value), Convert.ToDouble(hScrollBarAmplitude.Value), hScrollBarTempo.Value, Convert.ToDouble(hScrollBarFrequencia2.Value));
            }
            else if (radioButtonPhaseShiftKeying.Checked)
            {
                Modulation.aplicarPhaseShiftKeying(textBoxCodigoBinario.Text, g, Convert.ToDouble(hScrollBarFrequencia.Value), Convert.ToDouble(hScrollBarAmplitude.Value), hScrollBarTempo.Value);                
            }
        }
예제 #4
0
        public static void aplicarNRZL(String s, Graficos g)
        {
            g.x = -g.tamanhoLinha;
            g.y = 50;

            if (s[0] == '0')
            {
                g.y -= g.tamanhoLinha;
            }

            for (int i = 0; i < s.Length; i++)
            {
                g.desenharBinario(s[i], (i * g.tamanhoLinha) + (g.tamanhoLinha / 3), 0);

                if (s[i] == '0')
                {
                    g.desenharLinhaHorizontal();
                }
                else
                {
                    g.desenharLinhaHorizontal();
                }

                if (((i + 1) != s.Length) && (s[i + 1] != s[i]))
                {
                    g.desenharLinhaVertical((s[i + 1] == '1') ? g.DESENHAR_BAIXO : g.DESENHAR_CIMA);
                }
            }
        }
예제 #5
0
        private void correrAlgoritmosEncoding()
        {
            Graficos g = new Graficos(panelGrafismo.CreateGraphics());

            panelGrafismo.Refresh();
            g.desenharQuadro();

            if (textBoxCodigoBinario.TextLength <= 0)
            {
                MessageBox.Show("tens que inserir um código binário!", "Ooops!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                panelGrafismo.Refresh();
                g.desenharQuadro();
                return;
            }
            else if (!checkBoxBipolarAMI.Checked && !checkBoxDiferencialManchester.Checked && !checkBoxNRZI.Checked && !checkBoxNRZL.Checked &&
                     !checkBoxPseudoternary.Checked && !checkBoxManchester.Checked)
            {
                MessageBox.Show("tens que seleccionar pelo menos um tipo de codificação!", "Ooops!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                panelGrafismo.Refresh();
                g.desenharQuadro();
                return;
            }

            if (checkBoxBipolarAMI.Checked)
            {
                Encoding.aplicarBipolarAMI(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxDiferencialManchester.Checked)
            {
                Encoding.aplicarDiferencialManchester(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxNRZI.Checked)
            {
                Encoding.aplicarNRZI(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxNRZL.Checked)
            {
                Encoding.aplicarNRZL(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxPseudoternary.Checked)
            {
                Encoding.aplicarPseudoternary(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxManchester.Checked)
            {
                Encoding.aplicarManchester(textBoxCodigoBinario.Text, g);
            }
        }
예제 #6
0
        private void hScrollBarFrequencia2_ValueChanged(object sender, EventArgs e)
        {
            this.labelValorFrequencia2.Text = Convert.ToString(this.hScrollBarFrequencia2.Value) + " hz";

            if (radioButtonFrequencyShiftKeying.Checked)
            {
                Graficos g = new Graficos(panelGrafismoModulation.CreateGraphics());
                panelGrafismoModulation.Refresh();

                Modulation.aplicarFrequencyShiftKeying(textBoxCodigoBinario.Text, g, Convert.ToDouble(hScrollBarFrequencia.Value), Convert.ToDouble(hScrollBarAmplitude.Value), hScrollBarTempo.Value, Convert.ToDouble(hScrollBarFrequencia2.Value));
            }
        }
예제 #7
0
        public static void aplicarPhaseShiftKeying(String s, Graficos gx, double frequencia, double amplitude, int tempo)
        {
            Graphics g = gx.getGraphics();

            PointF[] pontos = new PointF[tempo];

            int    dy = 200;
            float  x  = 1.0F;
            double calc;
            int    sig = 1;

            for (int j = 0; j < s.Length; j++)
            {
                g.DrawString(Convert.ToString(s[j]), new Font("Verdana", 8), Brushes.Black, x + (tempo / 3), dy - ((float)amplitude + 25));

                if (s[j] == '0')
                {
                    for (int i = 0; i < tempo; i++)
                    {
                        calc      = (amplitude * Math.Sin(2 * 3.14 * frequencia * i)) * sig;
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x        += 1.0F;
                    }

                    x -= 1.0F;
                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }
                else
                {
                    for (int i = 0; i < tempo; i++)
                    {
                        calc      = (amplitude * Math.Sin(2 * 3.14 * frequencia * i)) * sig;
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x        += 1.0F;
                    }

                    x -= 1.0F;
                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }

                if (j + 1 != s.Length && s[j + 1] == '1')
                {
                    sig *= -1;
                }
            }
        }
예제 #8
0
        public static void aplicarAmplitudeShiftKeying(String s, Graficos gx, double frequencia, double amplitude, int tempo)
        {
            Graphics g = gx.getGraphics();

            PointF[] pontos = new PointF[tempo];

            int    dy = 200;
            float  x  = 1.0F;
            double calc;

            for (int j = 0; j < s.Length; j++)
            {
                g.DrawString(Convert.ToString(s[j]), new Font("Verdana", 8), Brushes.Black, x + (tempo / 3), dy - ((float)amplitude + 25));

                if (s[j] == '0')
                {
                    g.DrawLine(new Pen(Brushes.Black, 1), x, dy, x + tempo, dy);
                    x += tempo;
                }
                else
                {
                    int comecaEm = 0;
                    if (j != 0 && s[j - 1] == '0')
                    {
                        pontos[0] = new PointF(x, 200);
                        comecaEm  = 1;
                    }

                    for (int i = comecaEm; i < tempo; i++)
                    {
                        calc      = amplitude * Math.Cos(2 * 3.14 * frequencia * i);
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x        += 1.0F;
                    }

                    if (j + 1 != s.Length && s[j + 1] == '0')
                    {
                        pontos[tempo - 1] = new PointF(x, 200);
                    }

                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }
            }
        }
예제 #9
0
        public static void aplicarAmplitudeShiftKeying(String s, Graficos gx, double frequencia, double amplitude, int tempo)
        {
            Graphics g = gx.getGraphics();
            PointF[] pontos = new PointF[tempo];

            int dy = 200;            
            float x = 1.0F;
            double calc;            

            for (int j = 0; j < s.Length; j++)
            {
                g.DrawString(Convert.ToString(s[j]), new Font("Verdana", 8), Brushes.Black, x + (tempo / 3), dy - ((float)amplitude + 25));

                if (s[j] == '0')
                {                    
                    g.DrawLine(new Pen(Brushes.Black, 1), x, dy, x + tempo, dy);
                    x += tempo;
                }
                else
                {
                    int comecaEm = 0;
                    if (j != 0 && s[j - 1] == '0')
                    {
                        pontos[0] = new PointF(x, 200);
                        comecaEm = 1;
                    }

                    for (int i = comecaEm; i < tempo; i++)
                    {
                        calc = amplitude * Math.Cos(2 * 3.14 * frequencia * i);
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x += 1.0F;
                    }

                    if (j + 1 != s.Length && s[j + 1] == '0')
                    {
                        pontos[tempo - 1] = new PointF(x, 200);
                    }

                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }
            }
        }
예제 #10
0
        public static void aplicarDiferencialManchester(String s, Graficos g)
        {
            g.x = -g.tamanhoLinha / 2;
            g.y = 400;

            int posActual = g.DESENHAR_CIMA;

            if (s[0] == '0')
            {
                posActual = g.DESENHAR_BAIXO;
                g.desenharLinhaVertical(posActual, g.tamanhoLinha / 2, g.tamanhoLinha);
            }

            for (int i = 0; i < s.Length; i++)
            {
                g.desenharBinario(s[i], (i * g.tamanhoLinha) + (g.tamanhoLinha / 3), 375);

                if (s[i] == '0')
                {
                    posActual = (posActual > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;

                    g.desenharLinhaHorizontal(g.tamanhoLinha / 2);
                    g.desenharLinhaVertical(posActual, g.tamanhoLinha / 2, g.tamanhoLinha);
                    g.desenharLinhaHorizontal(g.tamanhoLinha / 2);
                }
                else
                {
                    posActual = (posActual > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;

                    g.desenharLinhaHorizontal(g.tamanhoLinha / 2);
                    g.desenharLinhaVertical(posActual, g.tamanhoLinha / 2, g.tamanhoLinha);
                    g.desenharLinhaHorizontal(g.tamanhoLinha / 2);
                }

                if (((i + 1) != s.Length) && (s[i + 1] != '1'))
                {
                    posActual = (posActual > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;
                    g.desenharLinhaVertical(posActual, g.tamanhoLinha / 2, g.tamanhoLinha);
                }
            }
        }
예제 #11
0
        public static void aplicarDiferencialManchester(String s, Graficos g)
        {
            g.x = -g.tamanhoLinha / 2;
            g.y = 400;

            int posActual = g.DESENHAR_CIMA;

            if (s[0] == '0')
            {
                posActual = g.DESENHAR_BAIXO;
                g.desenharLinhaVertical(posActual, g.tamanhoLinha / 2, g.tamanhoLinha);
            }

            for (int i = 0; i < s.Length; i++)
            {
                g.desenharBinario(s[i], (i * g.tamanhoLinha) + (g.tamanhoLinha / 3), 375);

                if (s[i] == '0')
                {
                    posActual = (posActual > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;

                    g.desenharLinhaHorizontal(g.tamanhoLinha / 2);
                    g.desenharLinhaVertical(posActual, g.tamanhoLinha / 2, g.tamanhoLinha);
                    g.desenharLinhaHorizontal(g.tamanhoLinha / 2);
                }
                else
                {
                    posActual = (posActual > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;

                    g.desenharLinhaHorizontal(g.tamanhoLinha / 2);
                    g.desenharLinhaVertical(posActual, g.tamanhoLinha / 2, g.tamanhoLinha);
                    g.desenharLinhaHorizontal(g.tamanhoLinha / 2);
                }

                if (((i + 1) != s.Length) && (s[i + 1] != '1'))
                {
                    posActual = (posActual > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;
                    g.desenharLinhaVertical(posActual, g.tamanhoLinha / 2, g.tamanhoLinha);
                }
            }
        }
예제 #12
0
        public static void aplicarFrequencyShiftKeying(String s, Graficos gx, double frequencia, double amplitude, int tempo, double frequenciaAlt)
        {
            Graphics g = gx.getGraphics();

            PointF[] pontos = new PointF[tempo];

            int dy = 200;

            double calc;

            float x = 1.0F;

            for (int j = 0; j < s.Length; j++)
            {
                g.DrawString(Convert.ToString(s[j]), new Font("Verdana", 8), Brushes.Black, x + (tempo / 3), dy - ((float)amplitude + 25));

                if (s[j] == '0')
                {
                    for (int i = 0; i < tempo; i++)
                    {
                        calc      = amplitude * Math.Cos(2 * 3.14 * frequenciaAlt * i);
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x        += 1.0F;
                    }

                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }
                else
                {
                    for (int i = 0; i < tempo; i++)
                    {
                        calc      = amplitude * Math.Cos(2 * 3.14 * frequencia * i);
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x        += 1.0F;
                    }

                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }
            }
        }
예제 #13
0
        public static void aplicarBipolarAMI(String s, Graficos g)
        {
            g.x = -g.tamanhoLinha;
            g.y = 190;

            int polaridade = g.DESENHAR_BAIXO;

            if (s[0] == '1')
            {
                polaridade = g.DESENHAR_CIMA;
                g.desenharLinhaVertical(polaridade, g.tamanhoLinha, g.tamanhoLinha / 2);
            }

            for (int i = 0; i < s.Length; i++)
            {
                g.desenharBinario(s[i], (i * g.tamanhoLinha) + (g.tamanhoLinha / 3), 156);

                if (s[i] == '0')
                {
                    g.desenharLinhaHorizontal();
                }
                else
                {
                    if (i != 0)
                    {
                        polaridade = (polaridade > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;
                        g.desenharLinhaVertical(polaridade, g.tamanhoLinha, g.tamanhoLinha / 2);
                    }

                    g.desenharLinhaHorizontal();
                    polaridade = (polaridade > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;

                    if (i + 1 < s.Length)
                    {
                        g.desenharLinhaVertical(polaridade, g.tamanhoLinha, g.tamanhoLinha / 2);
                        polaridade = (polaridade > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;
                    }
                }
            }
        }
예제 #14
0
        public static void aplicarFrequencyShiftKeying(String s, Graficos gx, double frequencia, double amplitude, int tempo, double frequenciaAlt)
        {
            Graphics g = gx.getGraphics();
            PointF[] pontos = new PointF[tempo];

            int dy = 200;

            double calc;                                    

            float x = 1.0F;

            for (int j = 0; j < s.Length; j++)
            {
                g.DrawString(Convert.ToString(s[j]), new Font("Verdana", 8), Brushes.Black, x + (tempo / 3), dy - ((float)amplitude + 25));

                if (s[j] == '0')
                {
                    for (int i = 0; i < tempo; i++)
                    {
                        calc = amplitude * Math.Cos(2 * 3.14 * frequenciaAlt * i);
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x += 1.0F;
                    }

                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }
                else
                {
                    for (int i = 0; i < tempo; i++)
                    {
                        calc = amplitude * Math.Cos(2 * 3.14 * frequencia * i);
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x += 1.0F;
                    }

                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }
            }
        }
예제 #15
0
        public static void aplicarNRZI(String s, Graficos g)
        {
            g.x = -g.tamanhoLinha;
            g.y = 125;

            if (s[0] == '1')
            {
                g.y = 105;
            }

            int posActual = g.DESENHAR_CIMA;

            if (s[0] == '0')
            {
                posActual = g.DESENHAR_BAIXO;
            }

            for (int i = 0; i < s.Length; i++)
            {
                g.desenharBinario(s[i], (i * g.tamanhoLinha) + (g.tamanhoLinha / 3), 78);

                if (s[i] == '0')
                {
                    g.desenharLinhaHorizontal();
                }
                else
                {
                    g.desenharLinhaHorizontal();
                }

                if ( (i + 1 < s.Length) && (s[i + 1] == '1') )
                {
                    posActual = (posActual > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;
                    g.desenharLinhaVertical(posActual);
                }
            }
        }
예제 #16
0
        public static void aplicarNRZI(String s, Graficos g)
        {
            g.x = -g.tamanhoLinha;
            g.y = 125;

            if (s[0] == '1')
            {
                g.y = 105;
            }

            int posActual = g.DESENHAR_CIMA;

            if (s[0] == '0')
            {
                posActual = g.DESENHAR_BAIXO;
            }

            for (int i = 0; i < s.Length; i++)
            {
                g.desenharBinario(s[i], (i * g.tamanhoLinha) + (g.tamanhoLinha / 3), 78);

                if (s[i] == '0')
                {
                    g.desenharLinhaHorizontal();
                }
                else
                {
                    g.desenharLinhaHorizontal();
                }

                if ((i + 1 < s.Length) && (s[i + 1] == '1'))
                {
                    posActual = (posActual > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;
                    g.desenharLinhaVertical(posActual);
                }
            }
        }
예제 #17
0
        private void correrAlgoritmosEncoding()
        {
            Graficos g = new Graficos(panelGrafismo.CreateGraphics());

            panelGrafismo.Refresh();
            g.desenharQuadro();

            if (textBoxCodigoBinario.TextLength <= 0)
            {
                MessageBox.Show("tens que inserir um código binário!", "Ooops!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                panelGrafismo.Refresh();
                g.desenharQuadro();
                return;
            }
            else if (!checkBoxBipolarAMI.Checked && !checkBoxDiferencialManchester.Checked && !checkBoxNRZI.Checked && !checkBoxNRZL.Checked
                        && !checkBoxPseudoternary.Checked && !checkBoxManchester.Checked)
            {
                MessageBox.Show("tens que seleccionar pelo menos um tipo de codificação!", "Ooops!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                panelGrafismo.Refresh();
                g.desenharQuadro();
                return;
            }

            if (checkBoxBipolarAMI.Checked)
            {
                Encoding.aplicarBipolarAMI(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxDiferencialManchester.Checked)
            {
                Encoding.aplicarDiferencialManchester(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxNRZI.Checked)
            {
                Encoding.aplicarNRZI(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxNRZL.Checked)
            {
                Encoding.aplicarNRZL(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxPseudoternary.Checked)
            {
                Encoding.aplicarPseudoternary(textBoxCodigoBinario.Text, g);
            }

            if (checkBoxManchester.Checked)
            {
                Encoding.aplicarManchester(textBoxCodigoBinario.Text, g);
            }
        }
예제 #18
0
        public static void aplicarPhaseShiftKeying(String s, Graficos gx, double frequencia, double amplitude, int tempo)
        {
            Graphics g = gx.getGraphics();
            PointF[] pontos = new PointF[tempo];

            int dy = 200;
            float x = 1.0F;            
            double calc;
            int sig = 1;
            
            for (int j = 0; j < s.Length; j++)
            {                
                g.DrawString(Convert.ToString(s[j]), new Font("Verdana", 8), Brushes.Black, x + (tempo / 3), dy - ((float)amplitude + 25));

                if (s[j] == '0')
                {
                    for (int i = 0; i < tempo; i++)
                    {
                        calc = (amplitude * Math.Sin(2 * 3.14 * frequencia * i)) * sig;
                        pontos[i] = new PointF(x, (float)calc+ dy);
                        x += 1.0F;
                    }

                    x -= 1.0F;
                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }
                else
                {
                    for (int i = 0; i < tempo; i++)
                    {
                        calc = (amplitude * Math.Sin(2 * 3.14 * frequencia * i)) * sig;
                        pontos[i] = new PointF(x, (float)calc + dy);
                        x += 1.0F;
                    }

                    x -= 1.0F;
                    g.DrawCurve(new Pen(Brushes.Black, 1), pontos);
                }

                if (j + 1 != s.Length && s[j + 1] == '1')
                {
                    sig *= -1;
                }
            }
        }
예제 #19
0
        private void hScrollBarFrequencia2_ValueChanged(object sender, EventArgs e)
        {          
            this.labelValorFrequencia2.Text = Convert.ToString(this.hScrollBarFrequencia2.Value) + " hz";

            if (radioButtonFrequencyShiftKeying.Checked)
            {
                Graficos g = new Graficos(panelGrafismoModulation.CreateGraphics());
                panelGrafismoModulation.Refresh();

                Modulation.aplicarFrequencyShiftKeying(textBoxCodigoBinario.Text, g, Convert.ToDouble(hScrollBarFrequencia.Value), Convert.ToDouble(hScrollBarAmplitude.Value), hScrollBarTempo.Value, Convert.ToDouble(hScrollBarFrequencia2.Value));
            }
        }
예제 #20
0
        public static void aplicarBipolarAMI(String s, Graficos g)
        {
            g.x = -g.tamanhoLinha;
            g.y = 190;

            int polaridade = g.DESENHAR_BAIXO;

            if (s[0] == '1')
            {
                polaridade = g.DESENHAR_CIMA;
                g.desenharLinhaVertical(polaridade, g.tamanhoLinha, g.tamanhoLinha / 2);
            }

            for (int i = 0; i < s.Length; i++)
            {
                g.desenharBinario(s[i], (i * g.tamanhoLinha) + (g.tamanhoLinha / 3), 156);

                if (s[i] == '0')
                {
                    g.desenharLinhaHorizontal();
                }
                else
                {
                    if (i != 0)
                    {
                        polaridade = (polaridade > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;
                        g.desenharLinhaVertical(polaridade, g.tamanhoLinha, g.tamanhoLinha / 2);
                    }

                    g.desenharLinhaHorizontal();
                    polaridade = (polaridade > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;

                    if (i + 1 < s.Length)
                    {
                        g.desenharLinhaVertical(polaridade, g.tamanhoLinha, g.tamanhoLinha / 2);
                        polaridade = (polaridade > 0) ? g.DESENHAR_CIMA : g.DESENHAR_BAIXO;
                    }
                }
            }
        }