Плохо: график загрузки пользовательского элемента управления из формы 1 - PullRequest
0 голосов
/ 12 мая 2019

Я пишу код на C # уже год и начинаю разрабатывать интересные вещи.Я инженер по автоматизации, и у меня есть проект по разработке системы как можно более полной с помощью ПК.ПК действует как автомат, сервер базы данных и средство контроля.На данный момент я общаюсь с базами удаленного ввода / вывода благодаря моим методам MODBUS, я могу записывать события в базы данных и т. Д. На данный момент я вполне доволен своей работой.Проблематично только одно: графический интерфейс.

В моем проекте у меня есть класс, который содержит переменные, которые я получаю их статус каждые 10 с через таймер, у меня есть форма, которая содержит datagridviewer для отображениясостояние переменных и пользовательский элемент управления, который содержит диаграмму и отображает мои переменные в режиме реального времени

код моего класса

       Random r = new Random();
    public static DateTime TheDateTimeNow = DateTime.Now;
    public double pitch_Col2r { get; set; }
    public double roll_Col2r { get; set; }

    //// affichage Table datagridview

    public void FillMainTable(int index)
    {

        pitch_Col2r = r.Next(1, 45);
        roll_Col2r = r.Next(10, 1000);

        string ClassName = "Sexdof";
        TheDateTimeNow = DateTime.Now;
        Form1.dtMain.Rows.Add(new Object[] { ++index, "Pitch_Col2", pitch_Col2r, DateTime.Now, ClassName });
        TheDateTimeNow = DateTime.Now;
        Form1.dtMain.Rows.Add(new Object[] { ++index, "Roll_Col2", roll_Col2r, DateTime.Now, ClassName });
    }

код контроля пользователя (диаграмма) 6dof objsexdof2 = new_6dof ();private int nbPointAffiches = 10;

    private static Chart1 _chart1;

    public static Chart1 chart1
    {
        get
        {
            if (_chart1 == null)
                _chart1 = new Chart1();
            return _chart1;
        }
    }


    public Chart1()
    {
        InitializeComponent();
    }

    private void initializeChart()
    {

        for (int iplot = 0; iplot < this.chart2.Series.Count; iplot++)
        {
            Series s = this.chart2.Series[iplot];
            s.YValueType = ChartValueType.Single;
            s.XValueType = ChartValueType.Time;
            s.ChartType = SeriesChartType.Line;
        }
        // Propriété du ChartArea :
        chart2.ChartAreas[0].AxisX.LabelStyle.Format = "mm:ss";
    }
    public void BuildChart()
    {
        // Positionne les min et max de l'axe X :
        chart2.ChartAreas[0].AxisX.Minimum = DateTime.Now.AddSeconds(-5).ToOADate();
        chart2.ChartAreas[0].AxisX.Maximum = DateTime.Now.AddSeconds(5).ToOADate();

        // Boucle sur les series :
        for (int iplot = 0; iplot < this.chart2.Series.Count; iplot++)
        {
            // Supprime le premier point de la série si nécessaire :
            if (this.chart2.Series[iplot].Points.Count > nbPointAffiches)
                this.chart2.Series[iplot].Points.RemoveAt(0);
        }
        // Ajoute un point Y aléatoire à l'heure Now :
        objsexdof2.FillMainTable(2);
        this.chart2.Series[0].Points.AddXY(DateTime.Now.ToOADate(), objsexdof2.pitch_Col2r);
        this.chart2.Series[1].Points.AddXY(DateTime.Now.ToOADate(), objsexdof2.roll_Col2r);
    }

    private void Chart1_Load(object sender, EventArgs e)
    {
        this.chart2.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss";
        //this.chart2.ChartAreas[0].AxisY.Minimum = 10;
       // this.chart2.ChartAreas[0].AxisY.Maximum = 1000;
        initializeChart();
    }

Он восстанавливает точки, но не отслеживает их:

введите описание изображения здесь введите описание изображения здесь

Мой [исходный код] [3], если кто-нибудь может взглянуть.

http://www.mediafire.com/file/mxymx1bmmthu3hl/Codetest_10_05_20199%25282%2529.zip/file

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...