225 lines
8.8 KiB
C#
225 lines
8.8 KiB
C#
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<SensorModel> Sensores = new List<SensorModel>();
|
|
Dictionary<string, string> Cameras = new Dictionary<string, string>();
|
|
|
|
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();
|
|
|
|
Cameras = CameraService.AtualizaListaCameras();
|
|
cmbCaminho.Items.Clear();
|
|
cmbCaminho.Items.AddRange(Cameras.Values.ToArray());
|
|
string IDrua = ((SensoriamentoModel)Disp.Dados).CameraID_Caminho;
|
|
if (Cameras.Any(x => x.Value == IDrua))
|
|
{
|
|
cmbCaminho.SelectedIndex = cmbCaminho.Items.IndexOf(IDrua);
|
|
}
|
|
else
|
|
{
|
|
cmbCaminho.Text = IDrua;
|
|
}
|
|
|
|
cmbSoloEsq.Items.Clear();
|
|
cmbSoloEsq.Items.AddRange(Cameras.Values.ToArray());
|
|
string IDsoloE = ((SensoriamentoModel)Disp.Dados).CameraID_SoloE;
|
|
if (Cameras.Any(x => x.Value == IDsoloE))
|
|
{
|
|
cmbSoloEsq.SelectedIndex = cmbSoloEsq.Items.IndexOf(IDsoloE);
|
|
}
|
|
else
|
|
{
|
|
cmbSoloEsq.Text = IDsoloE;
|
|
}
|
|
|
|
cmbSoloDir.Items.Clear();
|
|
cmbSoloDir.Items.AddRange(Cameras.Values.ToArray());
|
|
string IDsoloD = ((SensoriamentoModel)Disp.Dados).CameraID_SoloD;
|
|
if (Cameras.Any(x => x.Value == IDsoloD))
|
|
{
|
|
cmbSoloDir.SelectedIndex = cmbSoloDir.Items.IndexOf(IDsoloD);
|
|
}
|
|
else
|
|
{
|
|
cmbSoloDir.Text = IDsoloD;
|
|
}
|
|
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<DataGridView>().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<DataGridView>().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<DataGridView>().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<SensoriamentoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
|
|
_Disp.Dados.Sensores = Sensores.ToList();
|
|
_Disp.Dados.CameraID_Caminho = cmbCaminho.Text;
|
|
_Disp.Dados.CameraID_SoloE = cmbSoloEsq.Text;
|
|
_Disp.Dados.CameraID_SoloD = cmbSoloDir.Text;
|
|
_Disp.SalvarParametros(_Disp.Dados);
|
|
break;
|
|
}
|
|
case T_Code.Atu:
|
|
{
|
|
var _Disp = (DispositivosService<AtuadorModel>)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);
|
|
}
|
|
|
|
private void btnBateriaCalibrar_Click(object sender, EventArgs e)
|
|
{
|
|
var Comando = PZEMService.ComandoCalibragem();
|
|
PZEMService.EnviarComando(PZEMService.PortaPZEM, Comando);
|
|
}
|
|
|
|
}
|
|
}
|