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