agrobot_base/AgroBase/AgroBase/Forms/Movimentacao/frmMovPlot.cs

94 lines
3.9 KiB
C#

using AgroBase.Comum;
using AgroBase.Models;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
using static AgroBase.Models.Enuns;
namespace AgroBase.Forms
{
public partial class frmMovPlot : Form
{
private DispositivosService DispMov;
public frmMovPlot()
{
InitializeComponent();
}
private void frmPlotMovimentacao_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Hide();
}
public void AtualizaGrafico()
{
DispMov = frmPrincipal.Dispositivos.FirstOrDefault(x => x._Porta.IsOpen && x.Dispositivo == T_Code.Mov);
if (chartET.InvokeRequired)
{
chartET.Invoke(new Action(AtualizaGrafico));
}
else
{
foreach (var Motor in ((MovimentacaoModel)DispMov.Dados).Motores.Where(x => x.Comandar))
{
SensorimanetoGrafico Log = null;
if (Motor.LogGrafico.Count > 0)
{
Log = Motor.LogGrafico[Motor.LogGrafico.Count - 1];
}
Chart chart = (Chart)(this.Controls.Find("chart" + Motor.ID, false).First());
chart.Titles.Clear();
chart.Titles.Add(Motor.Descricao);
var Logs = (Motor.LogGrafico.Count > 60 ? Motor.LogGrafico.Skip(Math.Max(0, Motor.LogGrafico.Count - 60)).Take(60).ToList() : Motor.LogGrafico).Where(log => log.Componente == Motor.ID).ToList();
chart.Series.Clear();
List<string> Momentos = Logs.Select(x => x.Momento.ToString("mm:ss:fff")).ToList();
var serieRPMsp = new Series("RPM SP: " + (Log != null ? Log.RPM_SP : 0));
serieRPMsp.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM_SP).ToList());
serieRPMsp.ChartType = SeriesChartType.Line;
chart.Series.Add(serieRPMsp);
var serieRPM = new Series("RPM: " + (Log != null ? Log.RPM : 0));
serieRPM.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM).ToList());
serieRPM.ChartType = SeriesChartType.Line;
chart.Series.Add(serieRPM);
var seriePotencia = new Series("Potencia: " + (Log != null ? Log.Potencia : 0));
seriePotencia.Points.DataBindXY(Momentos, Logs.Select(x => x.Potencia).ToList());
seriePotencia.ChartType = SeriesChartType.Line;
chart.Series.Add(seriePotencia);
var serieTemperatura = new Series("Temperatura: " + (Log != null ? Log.Temperatura : 0));
serieTemperatura.Points.DataBindXY(Momentos, Logs.Select(x => x.Temperatura).ToList());
serieTemperatura.ChartType = SeriesChartType.Line;
chart.Series.Add(serieTemperatura);
foreach (var legend in chart.Legends)
{
legend.Docking = Docking.Bottom;
}
if (Log != null)
{
RichTextBox txtHistorico = (RichTextBox)(this.Controls.Find("txa" + Motor.ID, false).First());
txtHistorico.Text += Environment.NewLine +
Log.RPM_SP.ToString("0000") +
" - " + Log.RPM.ToString("0000") +
" - " + Log.Potencia.ToString("000");
//txtHistorico.SelectionStart = txtHistorico.Text.Length;
//txtHistorico.ScrollToCaret();
}
}
}
}
}
}