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 OOK_ASK, který obsahuje funke :

public BoxObj[] BarevneBoxy(Data data, TypModulace typModulace, float pozice, float Velikost)

public PointPairList ModulacniSignal(Data data)

public PointPairList OOK(Data data)

public PointPairList ASK2(Data data)

public PointPairList ASK4(Data data)

public PointPairList ASK8(Data data)

 

 

kde :

public enum TypModulaceAM

 {

       ASK8 = 0,

        ASK2,

        OOK,

        ASK4

 

}

 

// Ampl1 až AMpl4 – amplituda signalu

// Freq – frekvence signalu

// time – cas zobrazeneho signalu

//bity[] – pole bitu

public Data(int Ampl1, int Ampl2, int Ampl3, int Ampl4, int Freq, int Time, bool[] bity)

 

 

//Generovani modulacniho signalu

            int index = 0; float i = 0;

            vrat.Add(0, 0);

            bool last = false;

            for (i = 0; i < lenght; i += deltat)

            {

                if (index >= 10) break;

                if (data.bity[index++])

                {

                    if (!last) vrat.Add(i, 0);

                    vrat.Add(i, 1);

                    last = true;

                }

                else

                {

                    if (last) vrat.Add(i, 1);

                    vrat.Add(i, 0);

                    last = false;

                }

            }

            if (last) vrat.Add(i, 1);

            else vrat.Add(i, 0);

 

 

//OOK

            float lenght = data.Time / 1000f;

            float deltat = 1.0f / (data.Time * data.Freq);

            if (deltat < 0.00001f) deltat = 0.00001f;

            float krok = lenght / 10;

 

            int index = 0; float i = 0;

            float krok2 = krok;

            for (i = 0; i < lenght; i += deltat)

            {

                if (index >= 10) break;

                if (i > krok2)

                {

                    krok2 += krok;

                    index++;

                }

                if (data.bity[index])

                    vrat.Add(i, data.Ampl1 * Math.Cos(2 * Math.PI * data.Freq * i));

                else

                    vrat.Add(i, 0);

            }

 

 

//ASK2

            float lenght = data.Time / 1000f;

            float deltat = 1.0f / (data.Time * data.Freq);

            if (deltat < 0.00001f) deltat = 0.00001f;

            float krok = lenght / 10;

 

            int index = 0; float i = 0;

            float krok2 = krok;

            for (i = 0; i < lenght ; i += deltat)

            {

                if (index >= 10) break;

                if (i > krok2)

                {

                    krok2 += krok;

                    index++;

                }

                if (data.bity[index]) //1

                    vrat.Add(i, data.Ampl1 * Math.Cos(2 * Math.PI * data.Freq * i));

                else //0

                    vrat.Add(i, data.Ampl1 * Math.Cos(2 * Math.PI * data.Freq * i + Math.PI));

            }

 

 

//ASK4

            float lenght = data.Time / 1000f;

            float deltat = 1.0f / (data.Time * data.Freq);

            if (deltat < 0.00001f) deltat = 0.00001f;

            float krok = lenght / 5;

 

            int index = 0; float i = 0;

            float krok2 = krok;

            for (i = 0; i < lenght; i += deltat)

            {

                if (index >= 8) break;

                if (i > krok2)

                {

                    krok2 += krok;

                    index+=2;

                }

                if ((data.bity[index] == false)&&(data.bity[index+1] == false)) //00

                    vrat.Add(i, data.Ampl1 * Math.Cos(2 * Math.PI * data.Freq * i));

                else if ((data.bity[index] == false) && (data.bity[index+1] == true)) //01

                    vrat.Add(i, data.Ampl2 * Math.Cos(2 * Math.PI * data.Freq * i));

                else if ((data.bity[index] == true) && (data.bity[index + 1] == false)) //10

                    vrat.Add(i, data.Ampl1 * Math.Cos(2 * Math.PI * data.Freq * i + Math.PI));

                else //11

                    vrat.Add(i, data.Ampl2 * Math.Cos(2 * Math.PI * data.Freq * i + Math.PI));

            }

 

 

 

//ASK8

            float lenght = data.Time / 1000f;

            float deltat = 1.0f / (data.Time * data.Freq);

            if (deltat < 0.00001f) deltat = 0.00001f;

            float krok = lenght / (10.0f/3.0f);

 

            int index = 0; float i = 0;

            float krok2 = krok;

            for (i = 0; i < lenght; i += deltat)

            {

                if (index >= 7) break;

                if (i > krok2)

                {

                    krok2 += krok;

                    index += 3;

                    if (index > 6) break;

                }

                if ((data.bity[index] == false) && (data.bity[index + 1] == false) && (data.bity[index + 2] == false)) //000

                    vrat.Add(i, data.Ampl1 * Math.Cos(2 * Math.PI * data.Freq * i));

                else if ((data.bity[index] == false) && (data.bity[index + 1] == false) && (data.bity[index + 2] == true)) //001

                    vrat.Add(i, data.Ampl2 * Math.Cos(2 * Math.PI * data.Freq * i));

                else if ((data.bity[index] == false) && (data.bity[index + 1] == true) && (data.bity[index + 2] == false)) //010

                    vrat.Add(i, data.Ampl3 * Math.Cos(2 * Math.PI * data.Freq * i));

                else if ((data.bity[index] == true) && (data.bity[index + 1] == false) && (data.bity[index + 2] == false)) //100

                    vrat.Add(i, data.Ampl4 * Math.Cos(2 * Math.PI * data.Freq * i));

                else if ((data.bity[index] == false) && (data.bity[index + 1] == true) && (data.bity[index + 2] == true)) //011

                    vrat.Add(i, data.Ampl1 * Math.Cos(2 * Math.PI * data.Freq * i + Math.PI));

                else if ((data.bity[index] == true) && (data.bity[index + 1] == false) && (data.bity[index + 2] == true)) //101

                    vrat.Add(i, data.Ampl2 * Math.Cos(2 * Math.PI * data.Freq * i + Math.PI));

                else if ((data.bity[index] == true) && (data.bity[index + 1] == true) && (data.bity[index + 2] == false)) //110

                    vrat.Add(i, data.Ampl3 * Math.Cos(2 * Math.PI * data.Freq * i + Math.PI));

                else  //111

                    vrat.Add(i, data.Ampl4 * Math.Cos(2 * Math.PI * data.Freq * i + Math.PI));

 

            }

 

 

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

-          ReckceZnaky.Velke

-          ReckceZnaky.Male