using AgroBase.Comum; using AgroBase.Models; using AgroBase.Models.Modules; using AgroBase.Services; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using static AgroBase.Models.Enuns; namespace AgroBase.Forms.Sensoriamento { public partial class frmSenConfig : Form { IDispositivosService Disp = null; public T_Code Dispositivo = T_Code.Sen; List Sensores = new List(); int ParametrosComecamEm = 3; public frmSenConfig() { InitializeComponent(); } private void frmSenConfig_Load(object sender, EventArgs e) { Disp = Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo); if (Disp == null) { return; } switch (Dispositivo) { case T_Code.Sen: { Sensores = ((SensoriamentoModel)Disp.Dados).Sensores.ToList(); break; } case T_Code.Atu: { Sensores = ((AtuadorModel)Disp.Dados).Sensores.ToList(); break; } } PopulaParametrosSensor(); PreencheParametrosSensores(); cmbBateriaParametro.Items.Clear(); cmbBateriaParametro.Items.AddRange(PZEMService.Parametros.Keys.ToArray()); cmbBateriaParametro.SelectedIndex = 0; } private void PopulaParametrosSensor() { foreach (var Sensor in Sensores) { string gridName = "grid" + Enum.GetName(typeof(S_Code), Sensor.Componente); DataGridView grid = this.Controls.OfType().ToList().FirstOrDefault(x => x.Name == gridName); if (grid != null && grid.Columns.Count == 0) { grid.Rows.Clear(); grid.Columns.Clear(); grid.Columns.Add("clSensor", "Sensor"); grid.Columns.Add("clLimiteMin", "Limite Mínimo"); grid.Columns.Add("clLimiteMax", "Limite Máximo"); foreach (var Parametro in Sensor.Parametros) { grid.Columns.Add("cl" + Parametro[0], Parametro[0]); } } } } private void PreencheParametrosSensores() { foreach (var Sensor in Sensores) { string gridName = "grid" + Enum.GetName(typeof(S_Code), Sensor.Componente); DataGridView grid = this.Controls.OfType().ToList().FirstOrDefault(x => x.Name == gridName); if (grid != null && grid.Columns.Count > 0) { int novaLinhaIndex = grid.Rows.Add(); grid.Rows[novaLinhaIndex].Cells[0].Value = Sensor.Descricao; grid.Rows[novaLinhaIndex].Cells[1].Value = Sensor.LimiteMinimo; grid.Rows[novaLinhaIndex].Cells[2].Value = Sensor.LimiteMaximo; for (int i = 0; i < Sensor.Parametros.Count; i++) { grid.Rows[novaLinhaIndex].Cells[i + ParametrosComecamEm].Value = Sensor.Parametros[i][1]; } } } } private void frmSenConfig_FormClosing(object sender, FormClosingEventArgs e) { e.Cancel = true; this.Visible = false; } private void btnSalvar_Click(object sender, EventArgs e) { if (Disp == null) { return; } foreach (var Sensor in Sensores) { string gridName = "grid" + Enum.GetName(typeof(S_Code), Sensor.Componente); DataGridView grid = this.Controls.OfType().ToList().FirstOrDefault(x => x.Name == gridName); if (grid != null && grid.Rows.Count > 1) { foreach (DataGridViewRow Row in grid.Rows) { if (Row.Cells[0].Value != null && Row.Cells[0].Value.ToString() == Sensor.Descricao) { //Sensor.Parametros.Add(new string[] { Row.Cells[0].Value.ToString(), Row.Cells[1].Value.ToString() }); Sensor.LimiteMinimo = Convert.ToDouble(Row.Cells[1].Value.ToString()); Sensor.LimiteMaximo = Convert.ToDouble(Row.Cells[2].Value.ToString()); for (int i = 0; i < Sensor.Parametros.Count; i++) { Sensor.Parametros[i][1] = Row.Cells[i + ParametrosComecamEm].Value.ToString(); } break; } } } } switch (Dispositivo) { case T_Code.Sen: { var _Disp = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo); _Disp.Dados.Sensores = Sensores.ToList(); _Disp.SalvarParametros(_Disp.Dados); break; } case T_Code.Atu: { var _Disp = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo); _Disp.Dados.Sensores = Sensores.ToList(); _Disp.SalvarParametros(_Disp.Dados); break; } } } private void btnBateriaVer_Click(object sender, EventArgs e) { var Comando = PZEMService.ComandoGetParametro(PZEMService.Parametros[cmbBateriaParametro.Text]); PZEMService.EnviarComando(PZEMService.PortaPZEM, Comando); } private void btnBateriaDefinir_Click(object sender, EventArgs e) { var Comando = PZEMService.ComandoSetParametro(PZEMService.Parametros[cmbBateriaParametro.Text], Convert.ToInt32(nudBateriaValor.Value)); PZEMService.EnviarComando(PZEMService.PortaPZEM, Comando); } } }