Я пишу код на 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