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 { Timer tmrDadosMapa = new Timer(); string path = Variaveis.CaminhoSistema + Variaveis.CaminhoOperacoes + "\\" + MapasVariaveisModel.NomeArquivoMapaInterativoSaida; UltrasonicA05Configuracoes ConfigUltrassom = UltrasonicA05Helper.CarregarConfiguracaoPadrao(ConfiguracaoSensorUltrassonico.NaoUtilizado); 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.Stop(); } private void cmbModosOperacao_SelectedIndexChanged(object sender, EventArgs e) { AtualizarDadosOperacao(true); } private void AtualizarDadosOperacao(bool CarregarOperacao) { if (CarregarOperacao) { Variaveis.OperacaoEmAndamento = OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModosOperacao.SelectedIndex); } foreach (var chb in pnlModulos.Controls.OfType()) { 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); } double velMaxRoda = MovimentacaoModel.CalculaVelocidadeRPM(VariaveisEquipamento.RPM_Max_Roda); double velocidadeMax = MovimentacaoModel.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Max); int percentMax = (int)FuncoesMatematicas.Map(velocidadeMax, 0.0, velMaxRoda, 0, 100.0); double velocidadeMin = MovimentacaoModel.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; } } private void btnProximo_Click(object sender, EventArgs e) { tabControl1.SelectedIndex = 1; } private void btnCarregarMapa_Click(object sender, EventArgs e) { List ruasSelecionadas = new List(); 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.Enabled) { tmrDadosMapa = new Timer() { Interval = 500 }; tmrDadosMapa.Tick += tmrDadosMapa_Tick; tmrDadosMapa.Start(); } } private void tmrDadosMapa_Tick(object sender, EventArgs e) { if (Variaveis.OperacaoEmAndamento.Mapa.mapaService.DadosMapa == null) { return; } //GPSService.AtualizarRuasSelecionadas(new List() { "183", "182", "181" }); Variaveis.OperacaoEmAndamento.OpMapaGPS.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.Mapa.DistanciaTotal.ToString("0.00")} m"; double.TryParse(txtVelocidadeSemErvas.Text, out double velocidadeSemErvas); double.TryParse(txtVelocidadeComErvas.Text, out double velocidadeComErvas); string tempo = Variaveis.OperacaoEmAndamento.TempoEstimadoOperacao(velocidadeSemErvas, velocidadeComErvas); lblTempoEstimado.Text = $"Tempo estimado: {tempo}"; } private void btnSalvar_Click(object sender, EventArgs e) { 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 ); if (!sucesso) { txtDescricao.Focus(); } } private async void btnCarregar_Click(object sender, EventArgs e) { await CarregarOperacao(); } private async Task CarregarOperacao() { (bool carregado, List ruasSelecionadas) = Variaveis.OperacaoEmAndamento.CarregarParametrizacaoOperacao(pnlMapa, lblMapaCarregado); if (carregado) { tabControl1.SelectedIndex = 1; AtualizarDadosOperacao(false); MessageBox.Show("Operação carregada com sucesso!", "Sucesso", MessageBoxButtons.OK, MessageBoxIcon.Information); tmrDadosMapa = new Timer() { Interval = 500 }; tmrDadosMapa.Tick += tmrDadosMapa_Tick; tmrDadosMapa.Start(); await Task.Delay(1000); if (ruasSelecionadas.Any()) { await Task.Delay(1000); GPSService.AtualizarRuasSelecionadas(ruasSelecionadas); File.Delete(path); } } } 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) { 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; int RPM = Convert.ToInt32((Percentual / 100.0) * VariaveisEquipamento.RPM_Max_Roda); double Velocidade = MovimentacaoModel.CalculaVelocidadeRPM(RPM); txtVelocidadeSemErvas.Text = Velocidade.ToString("0.00"); } private void nudVelMin_ValueChanged(object sender, EventArgs e) { int Percentual = (int)((NumericUpDown)sender).Value; int RPM = Convert.ToInt32((Percentual / 100.0) * VariaveisEquipamento.RPM_Max_Roda); double Velocidade = MovimentacaoModel.CalculaVelocidadeRPM(RPM); txtVelocidadeComErvas.Text = Velocidade.ToString("0.00"); } } }