}
5.2 Клас Ostsilograf
Даний клас є основним в даній системі. Даний код описує головний компонент Ostsilograf, який відображає інтерфейс віртуального осцилографа і реалізує взаємодію між іншими компонентами. Тут створюються сигналу заново або відтворюються з файлу. Містяться так само функції для зміни положення сигналу, його амплітуди і фази. Тут реалізований інтерфейс екрану (Настройки екрана), де можна встановити підсвічування екрану, яскравість і чіткість сигналу. Сигнал можна заземлити (для цього реалізовані відповідні функції). Сигнал можна зберегти і прочитати з файлу, для цього створені відповідні функції, що реалізують сериализацию і десеріалізацію. Даний компонент є двоканальним віртуальним осцилографом. Тому можна вимірювати як один, так і два сигнали, порівнювати їх амплітуди і фази.
using System;System.Collections.Generic;System.ComponentModel;System.Drawing;System.Data;System.Linq;System.Text;System.Windows.Forms;System.IO;System.Runtime.Serialization.Formatters.Binary;Mycomponent
{partial class Ostsilograf: UserControl
{Col;//Колір крівойh=0;//товщина крівойx;//зсув
int y;
int y1;y2;So1;So2;On;//включениеKanal1;//каналыKanal2;pen;//пероzemlya1;//заземлениеzemlya2;ColSetka;[] V_del1, V_del2, Dlit;//масиви для зберігання параметрів розгортки і
длітельностіOstsilograf ()
{= Color.FromArgb (255,0,200,0);//колір зображення
x=0;//зсув=3;=0;=y;=y;=false;//ключено/вимкнено
Kanal1=false;=false;=new Pen (Col, h);=false;=false; () ;. button3.Enabled=true; _del1=Zapolnenie_Razvertki ();//параметри розгортки канала1_del2=Zapolnenie_Razvertki ();//параметри розгортки канала2=Zapolnenie_Dlitelnosti ();//параметри длітельності.Items.AddRange (V_del1) ;. Items.AddRange (V_del2) ;. Items.AddRange (Dlit);
}
//першого сігналvoid button1_Click (object sender, EventArgs e)
{. Visible=true;=new SignalObject (setka1.SetkaSize) ;. Ok=true; (So2!=null)
{. Ok=false;
}
} void setka1_Paint (object sender, PaintEventArgs e)
{(On == false) {return; }//осцилограф виключен.Graphics.TranslateTransform (- 100 + x, 0);//переміщення
//промінь (Kanal1 == false amp; amp; Kanal2 == false amp; amp; zemlya1 == false amp; amp; zemlya2 == false)
{. Graphics.DrawLine (pen, -this.Width, y, this.Width, y);
}
//промінь першого каналу ((Kanal1 == false) amp; amp; zemlya1 == true)
{. Graphics.DrawLine (pen, -this.Width, y1, this.Width, y1);
}
//промінь другого каналу ((Kanal2 == false) amp; amp; zemlya2 == true)
{. Graphics.DrawLine (pen, -this.Width, y2, this.Width, y2);
}
//зображення першого сигналу
if (Kanal1 == true amp; amp; So1!=null)
{(So1, e);
}
//зображення другого сигналу
if (Kanal2 == true amp; amp; So2!=null)
{(So2, e);
}
}
//функція зображення сигналів
private void Izobrajenie (SignalObject So, PaintEventArgs e)
{(So.Garm == 1)//сигнал гармонійний
{. Graphics.DrawLines (pen, So.L.ToArray ());
} if (So.Garm == 0)//сигнал імпульсний
{(int i=0; i lt; So.L.Count - 1; i=i + 2)
{. Graphics.DrawLine (pen, So.L [i], So.L [i + 1]);
}
}
}
//виклик генератора сігналовvoid signal1_VisibleChanged (object sender, EventArgs e)
{(signal1.Visible == true)
{;
} (So1!=null amp; amp; So1.Ok == true)
{(y1, So1);
} (So2!=null amp; amp; So2.Ok == true)
{(y2, So2);
} ();
}
//другому сігналvoid button2_Click (object sender, EventArgs e)
{. Visible=true;=new SignalObject (setka1.SetkaSize) ;. Ok=true; (So1!=null)
{. Ok=false;
}
}
//Переміщення по горизонталі
...