="justify"> Дана система повинна містити компоненти, які повинні відповідати всім необхідним вимогам.
) Компонент Setka. Даний компонент представляє з насіння об'єкт, успадкований від PictureBox, так як надалі ми будемо використовувати його для малювання графіків. Даний компонент являє собою екран для відображення електричних сигналів. Від повинен бути розділений вертикальними і горизонтальними лініями на частини (квадрати). Чотирьом розподілам по вертикалі відповідає напруга в 1 вольт. Одному діленню по горизонталі відповідає частота в 1000 Гц або 1міллісекунда. Всі параметри будуть налаштовуватися надалі на головному компоненті, а розміри, за якими будуть намальовані поділу повинні бути відомі заздалегідь. Дана компонента містить горизонтальну і вертикальну лінію, яка розділяє екран на чотири частки. Тобто ці лінії є центром вікна. У них квадрати діляться на десять частин, утворюючи тим самим десяті частки поділу. Даний компонент має властивості зміни кольору ліній, товщини ліній і розміру поділу. У зв'язку з цим можна встановити бажаний інтерфейс екрану для відображення і вимірювання електричних сигналів як змінного, так і постійного струму.
) Компонент Signal є настроювачем параметрів електричних сигналів. На ньому можна вибрати тип сигналу (гармонійний або імпульсний) і задати параметри сигналів для кожного типу. Для гармонійного сигналу ними є напруга і частота, а для імпульсного - напруга, частота і час імпульсу (тривалість).
) Третій компонент - Ostsilograf. Він успадкований від класу UserControl і містить в собі безліч кнопок, повзунків і інших елементів управління для реалізації інтерфейсу, необхідного для функціональність, подібної реальному осцилографа. На ньому так само знаходиться описаний раніше компонент Setka для відображення сигналів. Даний компонент являє можливість завдання двох сигналів (двоканальний осцилограф). Для їх завдання необхідна натиснути на кнопку «Включити». Відразу загориться зелена лампочка і розморозяться всі компоненти. Далі необхідно натиснути на кнопку «Сигнал ...», відкриється компонент Signal, в якому можна задати параметри сигналу обраного типу. Потім слід встановити прапорець на номер каналу і сигнал з'явиться у вікні осцилографа. Для зміни амплітуди і частоти потрібно змінювати відповідно розгортку і тривалість. Для переміщення по вертикалі і горизонталі потрібно змінювати положення відповідних повзунків. Сигнал можна заземлити, в цьому випадку можна натиснути відповідну кнопку, і з'явиться промінь. Також сигнали можна зберігати і відкривати. Для зміни налаштувань екрану існує панель «Налаштування екрану». Тут можна змінити яскравість, чіткість і підсвічування.
5. Вихідні тексти програм
. 1 Клас SignalObject
Даний клас являє собою структуру для створення сигналу (гармонійного або синусоїдального). Він містить із собі функції для створення гармонійного і імпульсного сигналу, властивості, що відображають напругу, частоту і час імпульсу.
using System; System.Collections.Generic; System.Linq; System.Text; System.Drawing; Mycomponent
{
[Serializable] SignalObject
{GarmGarm; UU; ff; titi; List lt; PointF gt; L;//список точекfloat koeffDlit;//коефіцієнт длітельностіfloat koeffRazv;// коефіцієнт рагверткіbool Ok;//якщо создаетсяint micro;//мікросекундиint koeffNastr; k1;//коеффициент для частотиSignalObject (int koeffNastr)
{= new List lt; PointF gt; ();=1;=1;=- 1;=1; .koeffNastr=koeffNastr;
} int Garm
{{return GarmGarm; } {GarmGarm=value; }
} float U
{{return UU; } {UU=value; }
} float f
{{return ff; } {Ff=value; }
} float ti
{{return titi; } {Titi=value; }
} void CalculateSin (int h, int start, int end)
{= 2 * (Math.PI)/(1000 * koeffNastr); (Garm == - 1) {return; } p=start; (p!=end)
{y=(float) Math.Sin (p * koeffDlit * ff * k1/micro); +=1;=koeffNastr * (float) 1.41 * y * UU /koeffRazv;.Add ( new PointF (p, y + h));
}
} void CalculateImp (int h, int start, int end)
{p=start; x=(float) Math.Pow (ff, - 1); tp=(x - titi); y=h + koeffNastr * UU/koeffRazv; (p lt; end)
{. Add (new PointF (p, y)); +=koeffNastr * titi * 1000 * micro/(koeffDlit) ;. Add (new PointF (p, y)) ;. Add ( new PointF (p, h + 0)); +=koeffNastr * tp * 1000 * micro/(koeffDlit) ;. Add (new PointF (p, h + 0));
}
}
}
...