agrobot_base/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs

165 lines
8.5 KiB
C#

using AgroBase.Models;
using AgroBase.Services;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Windows.Forms;
using static AgroBase.Models.Enums;
namespace AgroBase.Forms.Operacoes
{
public partial class frmParametrizacaoOperacao : Form
{
List<OperacaoModulosMandatoriosModel> ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>();
public frmParametrizacaoOperacao()
{
InitializeComponent();
}
private void frmParametrizacaoOperacao_Load(object sender, EventArgs e)
{
cmbScriptErvas.Items.Clear();
cmbScriptErvas.Items.AddRange(new string[] { PythonService.ScriptWeedDetector.Replace(".py", ""), PythonService.ScriptGreenDetector.Replace(".py", "") });
CarregarParametros();
}
void CarregarParametros()
{
ModulosMandatorios = Variaveis.OperacaoEmAndamento.ModulosMandatorios.ToList();
cmbOperacao.Items.Clear();
cmbOperacao.Items.AddRange(Enum.GetNames(typeof(ModoOperacao)));
cmbOperacao.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Modo;
var chbModulos = gpbModulos.Controls.OfType<CheckBox>().Where(x => x.Name.Contains("chbD_")).ToList();
chbModulos.ForEach(chb =>
{
T_Code chbDisp = (T_Code)Enum.Parse(typeof(T_Code), chb.Name.Replace("chbD_", ""), ignoreCase: true);
chb.Checked = ModulosMandatorios.Any(x => x.Dispositivo == chbDisp);
CheckBox chbO = gpbModulos.Controls.OfType<CheckBox>().FirstOrDefault(x => x.Name == chb.Name.Replace("chbD_", "chbO_"));
chbO.Enabled = ModulosMandatorios.Any(x => x.Dispositivo == chbDisp);
if (chbO.Enabled)
{
chbO.Checked = !ModulosMandatorios.First(x => x.Dispositivo == chbDisp).Mandatorio;
}
GroupBox gpb = gpbModulos.Controls.OfType<GroupBox>().FirstOrDefault(x => x.Name == chb.Name.Replace("chbD_", "gpbP_"));
if (gpb != null)
{
gpb.Enabled = chb.Checked;
}
});
nudVelocidadeComErvas.Minimum = 0;
nudVelocidadeComErvas.Maximum = Convert.ToInt32(VariaveisEquipamento.RPM_Max_Roda);
nudVelocidadeComErvas.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.RPM_Min);
nudVelocidadeSemErvas.Minimum = 0;
nudVelocidadeSemErvas.Maximum = Convert.ToInt32(VariaveisEquipamento.RPM_Max_Roda);
nudVelocidadeSemErvas.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.RPM_Max);
lblKmhCErvas.Text = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Min).ToString("0.00") + " Km/h";
lblKmhSErvas.Text = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Max).ToString("0.00") + " Km/h";
nudAnguloMaximo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Max);
nudAnguloMinimo.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Min);
nudVelocidadeMP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP);
nudTemposalvarlog.Value = (decimal)OperacaoModel.tmrLogsInterval / 1000;
nudQtdBicos.Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.QuantidadeBicos;
nudQtdCameras.Value = Variaveis.OperacaoEmAndamento.QuantidadeCamerasSolo;
nudCapacidadereservatorio.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.CapacidadeReservatorio);
txtDensidadeherbicida.Text = Variaveis.OperacaoEmAndamento.DispAtu.Dados.DensidadeHerbicida.ToString("0.00");
nudAtuarem.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.PercentualInicioPulverizacao * 100);
cmbScriptErvas.SelectedIndex = cmbScriptErvas.Items.IndexOf(Variaveis.OperacaoEmAndamento.DispAtu.Dados.ScriptDeteccaoErvas.Replace(".py", ""));
}
private void chbD_CheckedChanged(object sender, EventArgs e)
{
CheckBox chbD = (CheckBox)sender;
CheckBox chbO = gpbModulos.Controls.OfType<CheckBox>().FirstOrDefault(x => x.Name == chbD.Name.Replace("chbD_", "chbO_"));
if (chbO != null)
{
chbO.Enabled = chbD.Checked;
}
T_Code chbDisp = (T_Code)Enum.Parse(typeof(T_Code), chbD.Name.Replace("chbD_", ""), ignoreCase: true);
if (!ModulosMandatorios.Any(x => x.Dispositivo == chbDisp))
{
ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel()
{
Dispositivo = chbDisp,
Mandatorio = !chbO.Checked,
});
}
ModulosMandatorios.First(x => x.Dispositivo == chbDisp).Utilizar = chbD.Checked;
GroupBox gpb = gpbModulos.Controls.OfType<GroupBox>().FirstOrDefault(x => x.Name == chbD.Name.Replace("chbD_", "gpbP_"));
if (gpb != null)
{
gpb.Enabled = chbD.Checked;
}
}
private void chbO_CheckedChanged(object sender, EventArgs e)
{
CheckBox chbO = (CheckBox)sender;
T_Code Disp = (T_Code)Enum.Parse(typeof(T_Code), chbO.Name.Replace("chbO_", ""), ignoreCase: true);
ModulosMandatorios.First(x => x.Dispositivo == Disp).Utilizar = true;
ModulosMandatorios.First(x => x.Dispositivo == Disp).Mandatorio = !chbO.Checked;
}
private void btnSalvar_Click(object sender, EventArgs e)
{
SalvarOperacao();
this.Close();
}
private void nudVelocidadeSemErvas_ValueChanged(object sender, EventArgs e)
{
lblKmhSErvas.Text = MovimentacaoModel.CalculaVelocidadeRPM((double)nudVelocidadeSemErvas.Value).ToString("0.00") + " Km/h";
}
private void nudVelocidadeComErvas_ValueChanged(object sender, EventArgs e)
{
lblKmhCErvas.Text = MovimentacaoModel.CalculaVelocidadeRPM((double)nudVelocidadeComErvas.Value).ToString("0.00") + " Km/h";
}
void SalvarOperacao()
{
Variaveis.OperacaoEmAndamento.ModulosMandatorios = ModulosMandatorios.Where(x => x.Utilizar).ToList();
Variaveis.OperacaoEmAndamento.Controle.RPM_Max = (int)(nudVelocidadeSemErvas.Value);
Variaveis.OperacaoEmAndamento.Controle.RPM_Min = (int)(nudVelocidadeComErvas.Value);
Variaveis.OperacaoEmAndamento.Controle.Angulo_Max = (int)(nudAnguloMaximo.Value);
Variaveis.OperacaoEmAndamento.Controle.Angulo_Min = (int)(nudAnguloMinimo.Value);
Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP = (int)(nudVelocidadeMP.Value);
OperacaoModel.tmrLogsInterval = (double)(nudTemposalvarlog.Value * 1000);
Variaveis.OperacaoEmAndamento.DispAtu.Dados.QuantidadeBicos = (int)nudQtdBicos.Value;
Variaveis.OperacaoEmAndamento.QuantidadeCamerasSolo = (int)nudQtdCameras.Value;
Variaveis.OperacaoEmAndamento.CapacidadeReservatorio = (double)nudCapacidadereservatorio.Value;
Variaveis.OperacaoEmAndamento.DispAtu.Dados.DensidadeHerbicida = Convert.ToDouble(txtDensidadeherbicida.Text.Replace(".", ","));
Variaveis.OperacaoEmAndamento.Controle.PercentualInicioPulverizacao = (double)(nudAtuarem.Value / 100);
Variaveis.OperacaoEmAndamento.DispAtu.Dados.ScriptDeteccaoErvas = cmbScriptErvas.Text + ".py";
if (chbSalvar.Checked)
{
OperacaoModel.SalvarOperacaoPersonalizada(Variaveis.OperacaoEmAndamento);
MessageBox.Show("Operação " + Enum.GetName(typeof(ModoOperacao), Variaveis.OperacaoEmAndamento.Modo) + " salva com sucesso!", "Sucesso");
}
}
private void btnCarregar_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Arquivos de Operação|*.opr";
ofd.InitialDirectory = Application.StartupPath;
if (ofd.ShowDialog() == DialogResult.OK)
{
string operacaoPath = ofd.FileName;
Variaveis.OperacaoEmAndamento = OperacaoModel.CarregarOperacaoPersonalizada(operacaoPath);
MessageBox.Show("Operação " + Enum.GetName(typeof(ModoOperacao), Variaveis.OperacaoEmAndamento.Modo) + " carregada com sucesso!", "Sucesso");
CarregarParametros();
}
}
}
}