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); } }
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); } } }
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); } }
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)); } }
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; } } }
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); } } }
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); } } }
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); } } }
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; } } } }
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); } } }
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); } } }
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; } } }