V Programu jsou vytvořeny funkce, které se zavolají s příslušnými parametry a následně nám vrátí požadované data, které lze přímo vykreslit do grafu. Je zde soubor PPM_PNM_PWM, který obsahuje funke :

public PointPairList ModulacniSignal(Data data)

public PointPairList[] Vzorky(Data data, float sizeUp, float sizeDown)

public PointPairList PPM(Data data)

public PointPairList PNM(Data data)

public PointPairList PWM(Data data)

public PointPairList PDM(Data data)

 

kde :

public enum TypModulace

 {

        PDM = 0,

        PNM,

        PPM,

        PWM

 

}

 

// Ampl_mod – amplituda modulacniho signalu

// Freq – frekvence modulacniho signalu

// TypSig_mod – typ modulacniho signalu (sin, cos)

// Ts– perioda vzorkovani

public Data(int Ampl_mod, int freq, TypSignalu TypSig_mod, int Ts)

 

 

//Modulacni signal

            float t = (1.0f / (float)data.Freq1);

            double y1 = 0;

            for (float i = 0; i < t; i += (t / 1000))

            {

                if(data.typSignalu == TypSignalu.sin)

                    y1 = data.Ampl_mod + (data.Ampl_mod * Math.Sin((float)i * 2 * 3.14 * data.Freq1));

                else y1 = data.Ampl_mod + (data.Ampl_mod * Math.Cos((float)i * 2 * 3.14 * data.Freq1));

                vrat.Add(i, y1);

            }

 

 

//Vzorky

            float t = (1.0f / (float)data.Freq1);

            float t2 = t / data.Ts;

            float dx = 0;

            int index = 0;

            for (float i = 0; i < t; i += (t / 1000))

            {

                if (i > dx)

                {

                    dx += t2;

                    vrat[index] = new PointPairList();

                    vrat[index].Add(i, sizeUp);

                    vrat[index++].Add(i, -sizeDown);

                }

            }

 

 

//PPM

            double t = (1.0f / (double)data.Freq1);

            double t2 = t / (data.Ts);

            double dx = 0;

            double dx2 = t / 1000;

            double dx3 = t2 / 8;

            double pocitej = 0;

            double value = 0;

            double krok = (2*data.Ampl_mod) / 8f;

            bool one = false;

            for (double i = 0; i < t; i += dx2)

            {

                if (i > dx)

                {

                    if (data.typSignalu == TypSignalu.sin)

                        value = data.Ampl_mod + (data.Ampl_mod * Math.Sin((float)i * 2 * 3.14 * data.Freq1));

                    else

                        value = data.Ampl_mod + (data.Ampl_mod * Math.Cos((float)i * 2 * 3.14 * data.Freq1));

                    pocitej = 0;

                    one = false;

                    //if (value < 0) i += t2;

                    value = Math.Abs(value);

                    dx += t2;

                }

 

                if ((pocitej  < dx3))

                {

                    if ((value > krok * 8) && (!one)) { one = true; vrat.Add(i, 1); }

                    else { vrat.Add(i, 0); }

                }

                else if ( (pocitej < (dx3 * 2)))

                {

                    if ((value > krok * 7) && (!one)) { one = true; vrat.Add(i, 1); }

                    else { vrat.Add(i, 0); }

                }

                else if ((pocitej < (dx3 * 3)))

                {

                    if ((value > krok * 6) && (!one)) { one = true; vrat.Add(i, 1); }

                    else { vrat.Add(i, 0); }

                }

                else if ( (pocitej  < (dx3 * 4)))

                {

                    if ((value > krok * 5) && (!one)) { one = true; vrat.Add(i, 1); }

                    else { vrat.Add(i, 0); }

                }

                else if ((pocitej < (dx3 * 5)))

                {

 

                    if ((value > krok * 4) && (!one)) { one = true; vrat.Add(i, 1); }

                    else { vrat.Add(i, 0); }

                   

                }

                else if ((pocitej < (dx3 * 6)))

                {

 

 

//PNM

            double t = (1.0f / (double)data.Freq1);

            double t2 = t / (data.Ts);

            double dx = 0;

            double dx2 = t / 500;

            double dx3 = t2 / 8;

            double pocitej = 0;

            double value = 0;

            double krok = (2*data.Ampl_mod) / 8f;

            bool one = false;

            for (double i = 0; i < t; i += dx2)

            {

                if (i > dx)

                {

                    if (data.typSignalu == TypSignalu.sin)

                        value = data.Ampl_mod + (data.Ampl_mod * Math.Sin((float)i * 2 * 3.14 * data.Freq1));

                    else

                        value =  data.Ampl_mod + (data.Ampl_mod * Math.Cos((float)i * 2 * 3.14 * data.Freq1));

                    pocitej = 0;

                    one = false;

                    value = Math.Abs(value);

                    dx += t2;

                }

 

                if ((pocitej < dx3))

                {

                    if ((value > krok) && (!one)) { one = true; vrat.Add(i, 1); }

                    else { one = false; vrat.Add(i, 0); }

                }

                else if ((pocitej < (dx3 * 2)))

                {

                    if ((value > krok * 2) && (!one)) { one = true; vrat.Add(i, 1); }

                    else { one = false; vrat.Add(i, 0); }

                }

                else if ((pocitej < (dx3 * 3)))

                {

                    if ((value > krok * 3) && (!one)) { one = true; vrat.Add(i, 1); }

                    else { one = false; vrat.Add(i, 0); }

                }

                else if ((pocitej  < (dx3 * 4)))

                {

 

 

//PWM

            double t = (1.0f / (double)data.Freq1);

            double t2 = t / data.Ts;

            double dx = 0;

            double dx2 = t / 1000;

            double dx3 = t2 / 8;

            double pocitej = 0;

            double value = 0;

            double krok = (2*data.Ampl_mod) / 8f;

            for (double i = 0; i < t; i += dx2)

            {

                if (i > dx)

                {

                    dx += t2;

                    if (data.typSignalu == TypSignalu.sin)

                        value = data.Ampl_mod + (data.Ampl_mod * Math.Sin((float)i * 2 * 3.14 * data.Freq1));

                    else value = data.Ampl_mod + (data.Ampl_mod * Math.Cos((float)i * 2 * 3.14 * data.Freq1));

                    value = Math.Abs(value);

                    value = Math.Round(value, 0);

                    pocitej = 0;

                }

 

                if (pocitej < dx3)

                {

                    if (value > krok ) vrat.Add(i, 1);

                    else vrat.Add(i, 0);

                }

                else if (pocitej < dx3*2)

                {

                    if (value >= krok * 2)vrat.Add(i, 1);

                    else vrat.Add(i, 0);

                }

                else if(pocitej < dx3*3)

                {

                    if (value >= krok * 3)vrat.Add(i, 1);

                    else vrat.Add(i, 0);

                }

                else if (pocitej < dx3 * 4)

                {

 

Pro zobrazení písmen řeské abecedy byla vytořeny funkce :

-          ReckceZnaky.Velke

-          ReckceZnaky.Male