290 lines
11 KiB
C#
290 lines
11 KiB
C#
using AgroBase.Comum;
|
|
using AgroBase.Models;
|
|
using AgroBase.Models.Modules;
|
|
using AgroBase.Services;
|
|
using AgroBase.Services.Operadores;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
using static AgroBase.Models.Enums;
|
|
|
|
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();
|
|
chbRequisitarDados.Checked = ((SensoriamentoModel)Disp.Dados).RequisitarDados;
|
|
|
|
AtualizarCameras();
|
|
break;
|
|
}
|
|
case T_Code.Atu:
|
|
{
|
|
Sensores = ((AtuadorModel)Disp.Dados).Sensores.ToList();
|
|
chbRequisitarDados.Checked = ((AtuadorModel)Disp.Dados).RequisitarDados;
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
txtEnderecoCAN_Tx.Text = FuncoesGlobais.HexByteToString(Disp.Dados._EnderecoCAN_Tx);
|
|
txtEnderecoCAN_Rx.Text = FuncoesGlobais.HexByteToString(Disp.Dados._EnderecoCAN_Rx);
|
|
|
|
PopulaParametrosSensor();
|
|
|
|
PreencheParametrosSensores();
|
|
|
|
/*cmbBateriaParametro.Items.Clear();
|
|
cmbBateriaParametro.Items.Add("Carga Consumida");
|
|
cmbBateriaParametro.Items.AddRange(PZEMService.Parametros.Keys.ToArray());
|
|
cmbBateriaParametro.SelectedIndex = 0;*/
|
|
}
|
|
|
|
private void AtualizarCameras()
|
|
{
|
|
Cameras = CameraService.ObterListaCameras();
|
|
cmbCaminho.Items.Clear();
|
|
cmbCaminho.Items.AddRange(Cameras.Values.ToArray());
|
|
string IDrua = CameraWorkerService.CameraCaminho.Id;
|
|
if (Cameras.Any(x => x.Value == IDrua))
|
|
{
|
|
cmbCaminho.SelectedIndex = cmbCaminho.Items.IndexOf(IDrua);
|
|
}
|
|
else
|
|
{
|
|
cmbCaminho.Text = IDrua;
|
|
}
|
|
|
|
var CamerasSolo = CameraWorkerService.CamerasSolo;
|
|
|
|
cmbSoloEsq.Items.Clear();
|
|
cmbSoloEsq.Items.AddRange(Cameras.Values.ToArray());
|
|
string IDsoloE = CamerasSolo.Count() > 0 ? CamerasSolo[0].Id : "";
|
|
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 = CamerasSolo.Count() > 1 ? CamerasSolo[1].Id : "";
|
|
if (Cameras.Any(x => x.Value == IDsoloD))
|
|
{
|
|
cmbSoloDir.SelectedIndex = cmbSoloDir.Items.IndexOf(IDsoloD);
|
|
}
|
|
else
|
|
{
|
|
cmbSoloDir.Text = IDsoloD;
|
|
}
|
|
}
|
|
|
|
private void btnAtualizarCameras_Click(object sender, EventArgs e)
|
|
{
|
|
AtualizarCameras();
|
|
}
|
|
|
|
private void PopulaParametrosSensor()
|
|
{
|
|
foreach (var Sensor in Sensores)
|
|
{
|
|
string gridName = $"grid{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.Descricao, Parametro.Descricao);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void PreencheParametrosSensores()
|
|
{
|
|
foreach (var Sensor in Sensores)
|
|
{
|
|
string gridName = $"grid{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;
|
|
|
|
for (int i = 0; i < Sensor.Parametros.Count; i++)
|
|
{
|
|
grid.Rows[novaLinhaIndex].Cells[i + ParametrosComecamEm].Value = Sensor.Parametros[i].Valor;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
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{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() });
|
|
|
|
for (int i = 0; i < Sensor.Parametros.Count; i++)
|
|
{
|
|
Sensor.Parametros[i].Valor = 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._EnderecoCAN_Tx = FuncoesGlobais.StringToHexByte(txtEnderecoCAN_Tx.Text);
|
|
_Disp.Dados._EnderecoCAN_Rx = FuncoesGlobais.StringToHexByte(txtEnderecoCAN_Rx.Text);
|
|
_Disp.Dados.RequisitarDados = chbRequisitarDados.Checked;
|
|
_Disp.Dados.Sensores = Sensores.ToList();
|
|
CameraWorkerService.CameraCaminho.Id = cmbCaminho.Text;
|
|
//_Disp.Dados.CamerasSolo.Clear();
|
|
//_Disp.Dados.CameraID_Solo.AddRange(new string[] { cmbSoloEsq.Text, cmbSoloDir.Text });
|
|
_Disp.SalvarParametros(_Disp.Dados);
|
|
break;
|
|
}
|
|
case T_Code.Atu:
|
|
{
|
|
var _Disp = (DispositivosService<AtuadorModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
|
|
_Disp.Dados._EnderecoCAN_Tx = FuncoesGlobais.StringToHexByte(txtEnderecoCAN_Tx.Text);
|
|
_Disp.Dados._EnderecoCAN_Rx = FuncoesGlobais.StringToHexByte(txtEnderecoCAN_Rx.Text);
|
|
_Disp.Dados.RequisitarDados = chbRequisitarDados.Checked;
|
|
_Disp.Dados.Sensores = Sensores.ToList();
|
|
_Disp.SalvarParametros(_Disp.Dados);
|
|
break;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private void btnBateriaVer_Click(object sender, EventArgs e)
|
|
{
|
|
/*if (cmbBateriaParametro.SelectedIndex == 0)
|
|
{
|
|
MessageBox.Show("Carga consumida da bateria: " + PZEMService.ContadorCarga.PercentualConsumido + "%");
|
|
}
|
|
else
|
|
{
|
|
PZEMService.ModoLeitura = true;
|
|
|
|
var Comando = new ModbusComandoModel()
|
|
{
|
|
Dispositivo = T_Code.Pzm,
|
|
Endereco = PZEMService.slaveAddress,
|
|
Comando = PZEMService.ComandoGetParametro(PZEMService.Parametros[cmbBateriaParametro.Text])
|
|
};
|
|
ModbusService.AdicionarComandoNaFila(Comando);
|
|
|
|
Task.Run(async () =>
|
|
{
|
|
await Task.Delay(1000);
|
|
PZEMService.ModoLeitura = false;
|
|
});
|
|
}*/
|
|
}
|
|
|
|
private void btnBateriaDefinir_Click(object sender, EventArgs e)
|
|
{
|
|
/*if (cmbBateriaParametro.SelectedIndex == 0)
|
|
{
|
|
double consumidoAtual = Convert.ToDouble(nudBateriaValor.Value);
|
|
PZEMService.ContadorCarga.AtualizarValorConsumido(consumidoAtual);
|
|
btnBateriaVer_Click(sender, e);
|
|
}
|
|
else
|
|
{
|
|
var Comando = new ModbusComandoModel()
|
|
{
|
|
Dispositivo = T_Code.Pzm,
|
|
Endereco = PZEMService.slaveAddress,
|
|
Comando = PZEMService.ComandoSetParametro(PZEMService.Parametros[cmbBateriaParametro.Text], Convert.ToInt32(nudBateriaValor.Value))
|
|
};
|
|
ModbusService.AdicionarComandoNaFila(Comando);
|
|
}*/
|
|
}
|
|
|
|
private void btnBateriaCalibrar_Click(object sender, EventArgs e)
|
|
{
|
|
/*var Comando = new ModbusComandoModel()
|
|
{
|
|
Dispositivo = T_Code.Pzm,
|
|
Endereco = PZEMService.slaveAddress,
|
|
Comando = PZEMService.ComandoCalibragem()
|
|
};
|
|
ModbusService.AdicionarComandoNaFila(Comando);*/
|
|
}
|
|
|
|
private void btnReiniciar_Click(object sender, EventArgs e)
|
|
{
|
|
if (MessageBox.Show($"Tem certeza que deseja reiniciar o módulo {Dispositivo}?", "Confirmação", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
|
|
{
|
|
if (Dispositivo == T_Code.Atu)
|
|
GeneralJoystick.EnviarComandoAtuador(S_Code.sMOD, "", true);
|
|
if (Dispositivo == T_Code.Sen)
|
|
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sMOD, "", true);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|