251 lines
10 KiB
C#
251 lines
10 KiB
C#
using AgroBase.Forms;
|
|
using AgroBase.Models;
|
|
using AgroBase.Services;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using static AgroBase.Models.Enums;
|
|
|
|
namespace AgroMonitor.Forms
|
|
{
|
|
public partial class frmAjustesOperacao : Form
|
|
{
|
|
AsyncTaskTimerModel tmrDadosMapa;
|
|
string path = Variaveis.CaminhoSistema + Variaveis.CaminhoOperacoes + "\\" + MapasVariaveisModel.NomeArquivoMapaInterativoSaida;
|
|
UltrasonicA05Configuracoes ConfigUltrassom = UltrasonicA05Helper.CarregarConfiguracaoPadrao(ConfiguracaoSensorUltrassonico.NaoUtilizado);
|
|
bool carregarOpPadrao = true;
|
|
|
|
public frmAjustesOperacao()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void frmAjustesOperacao_Load(object sender, EventArgs e)
|
|
{
|
|
cmbConfiguracaoUltrassom.Items.Clear();
|
|
cmbConfiguracaoUltrassom.Items.AddRange(Enum.GetNames(typeof(ConfiguracaoSensorUltrassonico)));
|
|
cmbConfiguracaoUltrassom.SelectedIndex = 0;
|
|
|
|
cmbModosOperacao.Items.Clear();
|
|
cmbModosOperacao.Items.AddRange(Enum.GetNames(typeof(ModoOperacao)));
|
|
cmbModosOperacao.SelectedIndex = 0;
|
|
}
|
|
|
|
private void frmAjustesOperacao_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
tmrDadosMapa?.Dispose();
|
|
}
|
|
|
|
|
|
|
|
private void cmbModosOperacao_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
AtualizarDadosOperacao();
|
|
}
|
|
|
|
private void AtualizarDadosOperacao()
|
|
{
|
|
if (carregarOpPadrao)
|
|
{
|
|
OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModosOperacao.SelectedIndex);
|
|
}
|
|
|
|
foreach (var chb in pnlModulos.Controls.OfType<CheckBox>())
|
|
{
|
|
string disp = chb.Name.Replace("chb", "");
|
|
T_Code Dispositivo = (T_Code)Enum.Parse(typeof(T_Code), disp);
|
|
chb.Checked = Variaveis.OperacaoEmAndamento.ModulosMandatorios.Any(x => x.Dispositivo == Dispositivo && x.Mandatorio);
|
|
}
|
|
|
|
double velMaxRoda = FuncoesMatematicas.CalculaVelocidadeRPM(VariaveisEquipamento.RPM_Max_Roda);
|
|
double velocidadeMax = FuncoesMatematicas.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Max);
|
|
int percentMax = (int)FuncoesMatematicas.Map(velocidadeMax, 0.0, velMaxRoda, 0, 100.0);
|
|
double velocidadeMin = FuncoesMatematicas.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Min);
|
|
int percentMin = (int)FuncoesMatematicas.Map(velocidadeMin, 0.0, velMaxRoda, 0, 100.0);
|
|
|
|
txtDescricao.Text = Variaveis.OperacaoEmAndamento.Descricao;
|
|
nudVelMax.Value = percentMax;
|
|
nudVelMin.Value = percentMin;
|
|
txtAnguloMaximo.Text = Variaveis.OperacaoEmAndamento.Controle.Angulo_Max.ToString("0");
|
|
txtVelocidadeDirecional.Text = Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP.ToString("0");
|
|
txtPercentualAtuacao.Text = (Variaveis.OperacaoEmAndamento.Controle.PercentualInicioPulverizacao * 100).ToString("0");
|
|
txtCapacidadeReservatorio.Text = Variaveis.OperacaoEmAndamento.CapacidadeReservatorio.ToString("0");
|
|
txtPressaoLinha.Text = Variaveis.OperacaoEmAndamento.Controle.PressaoLinha.ToString("0");
|
|
txtDuracaoAtuacao.Text = Variaveis.OperacaoEmAndamento.Controle.TempoAtuacao.ToString("0");
|
|
if (Variaveis.OperacaoEmAndamento.DispSen != null)
|
|
{
|
|
ConfigUltrassom = Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom;
|
|
cmbConfiguracaoUltrassom.SelectedIndex = (int)ConfigUltrassom.Configuracao;
|
|
}
|
|
chbSonarAtivado.Checked = Variaveis.OperacaoEmAndamento.Controle.SonarAtivado;
|
|
}
|
|
|
|
private void btnProximo_Click(object sender, EventArgs e)
|
|
{
|
|
tabControl1.SelectedIndex = 1;
|
|
}
|
|
|
|
private void btnCarregarMapa_Click(object sender, EventArgs e)
|
|
{
|
|
List<string> ruasSelecionadas = new List<string>();
|
|
|
|
Variaveis.OperacaoEmAndamento.Mapa = new MapasModel();
|
|
Variaveis.OperacaoEmAndamento.Mapa.pnlMapa = pnlMapa;
|
|
Variaveis.OperacaoEmAndamento.Mapa.lblMapa = lblMapaCarregado;
|
|
|
|
tabControl1.SelectedIndex = 1;
|
|
|
|
Variaveis.OperacaoEmAndamento.Mapa.btnCarregar_Click(sender, e);
|
|
|
|
if (tmrDadosMapa == null || !tmrDadosMapa.IsRunning)
|
|
{
|
|
tmrDadosMapa = new AsyncTaskTimerModel("tmrDadosMapa", tmrDadosMapa_Tick, 500, this);
|
|
tmrDadosMapa.Start();
|
|
}
|
|
}
|
|
|
|
private async Task tmrDadosMapa_Tick()
|
|
{
|
|
if (Variaveis.OperacaoEmAndamento.Mapa.mapaService.DadosMapa == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
//GPSService.AtualizarRuasSelecionadas(new List<string>() { "183", "182", "181" });
|
|
|
|
Variaveis.OperacaoEmAndamento.Mapa.AtualizarRuasSelecionadas();
|
|
|
|
lblDistanciaTotal.Text = $"Distância total: {Variaveis.OperacaoEmAndamento.Mapa.mapaService.DadosMapa.features.Sum(x => x.properties.Length).ToString("0.00")} m";
|
|
lblDistanciaOperacao.Text = $"Distância da operação: {(Variaveis.OperacaoEmAndamento.Trajetoria?.DistanciaTotal ?? 0).ToString("0.00")} m";
|
|
|
|
double.TryParse(txtVelocidadeSemErvas.Text, out double velocidadeSemErvas);
|
|
double.TryParse(txtVelocidadeComErvas.Text, out double velocidadeComErvas);
|
|
|
|
Variaveis.OperacaoEmAndamento.Trajetoria?.AtualizarTempoEstimado(FuncoesMatematicas.ConverteKmhParaMs(velocidadeSemErvas), FuncoesMatematicas.ConverteKmhParaMs(velocidadeComErvas));
|
|
string tempo = Variaveis.OperacaoEmAndamento.Trajetoria?.TempoEstimadoOperacao;
|
|
|
|
lblTempoEstimado.Text = $"Tempo estimado: {tempo}";
|
|
}
|
|
|
|
|
|
private void btnSalvar_Click(object sender, EventArgs e)
|
|
{
|
|
int.TryParse(txtQtdCameras.Text, out int qtdCameras);
|
|
bool sucesso = Variaveis.OperacaoEmAndamento.SalvarParametrizacaoOperacao(
|
|
txtDescricao.Text,
|
|
txtCapacidadeReservatorio.Text,
|
|
txtPressaoLinha.Text,
|
|
txtDuracaoAtuacao.Text,
|
|
txtPercentualAtuacao.Text,
|
|
txtAnguloMaximo.Text,
|
|
txtVelocidadeDirecional.Text,
|
|
(int)nudVelMax.Value,
|
|
(int)nudVelMin.Value,
|
|
ConfigUltrassom,
|
|
chbSonarAtivado.Checked,
|
|
qtdCameras
|
|
);
|
|
if (!sucesso)
|
|
{
|
|
txtDescricao.Focus();
|
|
}
|
|
}
|
|
|
|
private async void btnCarregar_Click(object sender, EventArgs e)
|
|
{
|
|
await CarregarOperacao();
|
|
}
|
|
|
|
private async Task CarregarOperacao()
|
|
{
|
|
(bool carregado, List<string> ruasSelecionadas) = await Variaveis.OperacaoEmAndamento.CarregarParametrizacaoOperacao(pnlMapa, lblMapaCarregado);
|
|
if (carregado)
|
|
{
|
|
tabControl1.SelectedIndex = 1;
|
|
|
|
carregarOpPadrao = false;
|
|
cmbModosOperacao.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Modo;
|
|
|
|
MessageBox.Show("Operação carregada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
|
|
tmrDadosMapa = new AsyncTaskTimerModel("tmrDadosMapa", tmrDadosMapa_Tick, 500, this);
|
|
tmrDadosMapa.Start();
|
|
|
|
await Task.Delay(2000);
|
|
|
|
if (ruasSelecionadas.Any())
|
|
{
|
|
await Task.Delay(1000);
|
|
GPSService.AtualizarRuasSelecionadas(ruasSelecionadas);
|
|
File.Delete(path);
|
|
}
|
|
|
|
carregarOpPadrao = true;
|
|
}
|
|
}
|
|
|
|
private void chbModulo_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
CheckBox chb = (CheckBox)sender;
|
|
string ModID = chb.Name.Replace("chb", "");
|
|
T_Code Dispositivo = (T_Code)Enum.Parse(typeof(T_Code), ModID);
|
|
|
|
if (Variaveis.OperacaoEmAndamento.ModulosMandatorios.Any(x => x.Dispositivo == Dispositivo))
|
|
{
|
|
Variaveis.OperacaoEmAndamento.ModulosMandatorios.First(x => x.Dispositivo == Dispositivo).Mandatorio = chb.Checked;
|
|
}
|
|
else
|
|
{
|
|
Variaveis.OperacaoEmAndamento.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel()
|
|
{
|
|
Dispositivo = Dispositivo,
|
|
Conectado = false,
|
|
Mandatorio = chb.Checked,
|
|
Utilizar = chb.Checked,
|
|
});
|
|
}
|
|
|
|
if (Dispositivo == T_Code.A05 || Dispositivo == T_Code.Knt)
|
|
{
|
|
gpbSensoriamento.Enabled = chb.Checked;
|
|
}
|
|
}
|
|
|
|
private void btnConfigurar_Click(object sender, EventArgs e)
|
|
{
|
|
frmA05Config frm = new frmA05Config(ConfigUltrassom);
|
|
frm.ShowDialog();
|
|
ConfigUltrassom = frm.ConfiguracaoSensores;
|
|
}
|
|
|
|
private void cmbConfiguracaoUltrassom_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
ConfiguracaoSensorUltrassonico Config = (ConfiguracaoSensorUltrassonico)cmbConfiguracaoUltrassom.SelectedIndex;
|
|
rtbDescricao.Text = UltrasonicA05Helper.DescricaoConfiguracoes[Config];
|
|
if (Config != ConfigUltrassom.Configuracao)
|
|
{
|
|
ConfigUltrassom = UltrasonicA05Helper.CarregarConfiguracaoPadrao(Config);
|
|
}
|
|
}
|
|
|
|
private void nudVelMax_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
int Percentual = (int)((NumericUpDown)sender).Value;
|
|
double velocidadeMs = FuncoesMatematicas.CalculaVelocidadeMsPercentual(Percentual);
|
|
double Velocidade = FuncoesMatematicas.ConverteMsParaKmh(velocidadeMs);
|
|
txtVelocidadeSemErvas.Text = Velocidade.ToString("0.00");
|
|
}
|
|
|
|
private void nudVelMin_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
int Percentual = (int)((NumericUpDown)sender).Value;
|
|
double velocidadeMs = FuncoesMatematicas.CalculaVelocidadeMsPercentual(Percentual);
|
|
double Velocidade = FuncoesMatematicas.ConverteMsParaKmh(velocidadeMs);
|
|
txtVelocidadeComErvas.Text = Velocidade.ToString("0.00");
|
|
}
|
|
}
|
|
}
|