예제 #1
0
 private void showStateInfoToolStripMenuItem_Click(object sender, EventArgs e)
 {
     if (SI == null)
     {
         SI = new SysInfo(sys);
     }
     else
     {
         SI.UpdateInfo(sys);
     }
     this.SI.Show();
 }
예제 #2
0
        private void CreateSys()
        {
            sys = new ESystem(CreateF1.sys1.current_state);

            if (sys != null)
            {
                //грузим полученный sys в формочку
                if (SI == null && sys != null)//проверка на открытие файла снова
                {
                    SI = new SysInfo(sys);
                }
                else
                {
                    SI.UpdateInfo(sys);
                }
                //разблокировка элементов
                this.showStateInfoToolStripMenuItem.Enabled  = true;
                this.startEmulationToolStripMenuItem.Enabled = true;

                tabControl1.SelectTab(0);
                if (!debug)
                {
                    step = 0;
                }
                else
                {
                    step = 4;
                }
                tabPage2.Controls.Clear();
                tabPage2.Controls.Add(button2);

                tabPage1.Controls.Clear();
                tabPage1.Controls.Add(button1);
                tabPage1.Controls.Add(label1);
                tabPage1.Controls.Add(lAnalogEquation);
                lAnalogEquation.Text = "x'(t) = ";

                for (int i = 0; i < sys.current_state.analog_A()[0].Count; i++)
                {
                    if (i != 0)
                    {
                        this.lAnalogEquation.Text += " + ";
                    }
                    this.lAnalogEquation.Text += "Ан" + i.ToString() + "x(t";
                    if (i == 0)
                    {
                        this.lAnalogEquation.Text += ")";
                    }
                    else
                    {
                        this.lAnalogEquation.Text += " - " + sys.current_state.tau[i] + ")";
                    }
                }

                for (int i = 0; i < sys.current_state.analog_B()[0].Count; i++)
                {
                    this.lAnalogEquation.Text += " + Bн" + i.ToString() + "u(t";
                    if (i == 0)
                    {
                        this.lAnalogEquation.Text += ")";
                    }
                    else
                    {
                        this.lAnalogEquation.Text += " - " + sys.current_state.teta[i] + ")";
                    }
                }


                UniversalMatrixBox = new List <MatrixDrawer>();
                LabelList          = new List <System.Windows.Forms.Label>();

                int loctemp = 20;
                int j       = 0;
                for (int i = 0; i < sys.current_state.analog_B()[0].Count + sys.current_state.analog_A()[0].Count; i++)
                {
                    MatrixDrawer tmp = new MatrixDrawer(new MatrixLibrary.Matrix(10, 10));

                    this.UniversalMatrixBox.Add(new MatrixDrawer(new MatrixLibrary.Matrix(10, 10)));
                    this.LabelList.Add(new System.Windows.Forms.Label());


                    UniversalMatrixBox[i].Visible  = false;
                    UniversalMatrixBox[i].Location = new Point(loctemp, 130);
                    this.LabelList[i].Location     = new Point(loctemp, 115);
                    this.LabelList[i].Font         = new Font(this.Font, FontStyle.Bold);


                    this.tabPage1.Controls.Add(UniversalMatrixBox[i]);
                    this.tabPage1.Controls.Add(LabelList[i]);


                    if (i < sys.current_state.analog_A()[0].Count)
                    {
                        this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_A()[0][i]);
                        this.LabelList[i].Text = "Ан" + i.ToString() + ": ";
                    }
                    else
                    {
                        this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_B()[0][j]);
                        this.LabelList[i].Text = "Bн" + j.ToString() + ": ";
                        j++;
                    }
                    UniversalMatrixBox[i].Visible = true;
                    loctemp += UniversalMatrixBox[i].Size.Width + 20;
                }

                button1.Location = new Point(20, UniversalMatrixBox[0].Location.Y + 20 + UniversalMatrixBox[0].Size.Height);
                button1.Visible  = true;
            }
        }
예제 #3
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //отлавливаем исключения инициализации
            try
            {
                //загрузка sys из файла
                sys = GUI.OpenJsonFile(isSpline, isNoiseEnabled);
            }
            catch (Exception excption)                                                                                                                                                     //если при определении следующего шага чтото пошло нетак
            {
                MessageBox.Show(excption.Message + "\n" + excption.StackTrace.ToString(), "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); //вываливаем сообщение
            }
            //если файл был успешно загружен
            if (sys != null)
            {
                //грузим полученный sys в формочку
                if (SI == null && sys != null)//проверка на открытие файла снова
                {
                    SI = new SysInfo(sys);
                }
                else
                {
                    SI.UpdateInfo(sys);
                }
                //разблокировка элементов
                this.showStateInfoToolStripMenuItem.Enabled  = true;
                this.startEmulationToolStripMenuItem.Enabled = true;

                tabControl1.SelectTab(0);
                if (!debug)
                {
                    step = 0;
                }
                else
                {
                    step = 4;
                }
                tabPage2.Controls.Clear();
                tabPage2.Controls.Add(button2);

                tabPage1.Controls.Clear();
                tabPage1.Controls.Add(button1);
                tabPage1.Controls.Add(label1);
                tabPage1.Controls.Add(lAnalogEquation);
                lAnalogEquation.Text = "x'(t) = ";

                for (int i = 0; i < sys.current_state.analog_A()[0].Count; i++)
                {
                    if (i != 0)
                    {
                        this.lAnalogEquation.Text += " + ";
                    }
                    this.lAnalogEquation.Text += "Ан" + i.ToString() + "x(t";
                    if (i == 0)
                    {
                        this.lAnalogEquation.Text += ")";
                    }
                    else
                    {
                        this.lAnalogEquation.Text += " - " + sys.current_state.tau[i] + ")";
                    }
                }

                for (int i = 0; i < sys.current_state.analog_B()[0].Count; i++)
                {
                    this.lAnalogEquation.Text += " + Bн" + i.ToString() + "u(t";
                    if (i == 0)
                    {
                        this.lAnalogEquation.Text += ")";
                    }
                    else
                    {
                        this.lAnalogEquation.Text += " - " + sys.current_state.teta[i] + ")";
                    }
                }


                UniversalMatrixBox = new List <MatrixDrawer>();
                LabelList          = new List <System.Windows.Forms.Label>();

                int loctemp = 20;
                int j       = 0;
                for (int i = 0; i < sys.current_state.analog_B()[0].Count + sys.current_state.analog_A()[0].Count; i++)
                {
                    MatrixDrawer tmp = new MatrixDrawer(new MatrixLibrary.Matrix(10, 10));

                    this.UniversalMatrixBox.Add(new MatrixDrawer(new MatrixLibrary.Matrix(10, 10)));
                    this.LabelList.Add(new System.Windows.Forms.Label());


                    UniversalMatrixBox[i].Visible  = false;
                    UniversalMatrixBox[i].Location = new Point(loctemp, 130);
                    this.LabelList[i].Location     = new Point(loctemp, 115);
                    this.LabelList[i].Font         = new Font(this.Font, FontStyle.Bold);


                    this.tabPage1.Controls.Add(UniversalMatrixBox[i]);
                    this.tabPage1.Controls.Add(LabelList[i]);


                    if (i < sys.current_state.analog_A()[0].Count)
                    {
                        this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_A()[0][i]);
                        this.LabelList[i].Text = "Ан" + i.ToString() + ": ";
                    }
                    else
                    {
                        this.UniversalMatrixBox[i].ReloadMatrix(sys.current_state.analog_B()[0][j]);
                        this.LabelList[i].Text = "Bн" + j.ToString() + ": ";
                        j++;
                    }
                    UniversalMatrixBox[i].Visible = true;
                    loctemp += UniversalMatrixBox[i].Size.Width + 20;
                }

                button1.Location = new Point(20, UniversalMatrixBox[0].Location.Y + 20 + UniversalMatrixBox[0].Size.Height);
                button1.Visible  = true;
            }
        }
예제 #4
0
        /// <summary>
        /// Следующий шаг и по кнопке и по таймеру
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainCalcTimer_Tick(object sender, EventArgs e)
        {
            //моргалка подписью таймера
            if (this.TimerIntervalValue.Enabled)
            {
                this.TimerIntervalValue.Enabled = false;
            }
            else
            {
                this.TimerIntervalValue.Enabled = true;
            }
            try//отлов событий из системы
            {
                //следующий шаг системы к светлому будующему. данные пока неоткуда.
                sys.next_stage(DataGetter.GetData(sys.current_state));
            }
            catch (Exception excption)                                                                                                                                                     //если при определении следующего шага чтото пошло нетак
            {
                IsTimerEnabled.Checked = false;                                                                                                                                            //останавливаем время
                MessageBox.Show(excption.Message + "\n" + excption.StackTrace.ToString(), "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1); //вываливаем сообщение
            }
            if (SI == null)
            {
                SI = new SysInfo(sys);
            }
            else
            {
                SI.UpdateInfo(sys);
            }
            //грузим новые графики
            //GUI.LoadPanes(sys);
            //обновляем графики
            //GUI.redraw();
            List <List <PointF> > pointList0 = new List <List <PointF> >();

            for (int i = 0; i < sys.current_state.n; i++)
            {
                pointList0.Add(Graph.LoadPointsFromSys(sys.current_state.x, i));
            }
            Graph.CreateGraph(zedGraphControl1, "X", pointList0, sys.current_state.n);
            List <List <PointF> > pointList1 = new List <List <PointF> >();

            for (int i = 0; i < sys.current_state.m; i++)
            {
                pointList1.Add(Graph.LoadPointsFromSys(sys.current_state.u, i));
            }
            Graph.CreateGraph(zedGraphControl2, "U", pointList1, sys.current_state.m);
            List <List <PointF> > pointList2 = new List <List <PointF> >();

            for (int i = 0; i < sys.current_state.y[0].NoRows; i++)
            {
                pointList2.Add(Graph.LoadPointsFromSys(sys.current_state.y, i));
            }
            Graph.CreateGraph(zedGraphControl3, "Y", pointList2, sys.current_state.y[0].NoRows);
            //var pointList2 = Graph.LoadPointsFromSys(sys.current_state.y, 0);
            //Graph.CreateGraph(zedGraphControl3, "Y", pointList2);
            var pointList3 = Graph.LoadPointsFromDouble(sys.current_state.quality_f);

            Graph.CreateGraph(zedGraphControl4, "F (Quality)", pointList3);

            view_matrixG.Enabled = true;
        }