94 lines
3.9 KiB
C#
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();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|