diff --git a/AgroBase/AgroBase/AgroBase.csproj b/AgroBase/AgroBase/AgroBase.csproj index 0a1ccf8c7..3bc617048 100644 --- a/AgroBase/AgroBase/AgroBase.csproj +++ b/AgroBase/AgroBase/AgroBase.csproj @@ -652,96 +652,6 @@ - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - PreserveNewest @@ -933,69 +843,6 @@ - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - Always - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - PreserveNewest @@ -1024,7 +871,7 @@ - + diff --git a/AgroBase/AgroBase/Forms/Atuador/frmAtuCalibragem.cs b/AgroBase/AgroBase/Forms/Atuador/frmAtuCalibragem.cs index 3b1ed80e9..20de49d14 100644 --- a/AgroBase/AgroBase/Forms/Atuador/frmAtuCalibragem.cs +++ b/AgroBase/AgroBase/Forms/Atuador/frmAtuCalibragem.cs @@ -27,7 +27,7 @@ namespace AgroBase.Forms.Atuador { PopularBicos(); - nudPressaoSP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.PressaoLinha); + nudPressaoSP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha); txtMMassaRef.Text = DispAtu.Dados._MassaRef.ToString(); txtMLeituraRef.Text = DispAtu.Dados._MassaLeituraRef.ToString(); txtPressaoVmin.Text = DispAtu.Dados._PressaoVmin.ToString(); @@ -63,7 +63,7 @@ namespace AgroBase.Forms.Atuador private void PopularBicos() { - for (int i = 0; i < DispAtu.Dados.QuantidadeBicos; i++) + for (int i = 0; i < Variaveis.OperacaoEmAndamento.Parametros.QtdBicos; i++) { string ID = DispAtu.Dados.BicosPulverizadores[i].ID; Label lblBico = new Label() @@ -153,7 +153,7 @@ namespace AgroBase.Forms.Atuador private void nudPressaoSP_ValueChanged(object sender, EventArgs e) { var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(); - Variaveis.OperacaoEmAndamento.Controle.PressaoLinha = Convert.ToInt32(((NumericUpDown)sender).Value); + Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Convert.ToInt32(((NumericUpDown)sender).Value); GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ComandoAtuar, Bomba.ID); } @@ -206,7 +206,7 @@ namespace AgroBase.Forms.Atuador private void btnSalvar_Click(object sender, EventArgs e) { - Variaveis.OperacaoEmAndamento.Controle.PressaoLinha = Convert.ToDouble(nudPressaoSP.Value); + Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Convert.ToDouble(nudPressaoSP.Value); DispAtu.Dados._MassaRef = Convert.ToDouble(txtMMassaRef.Text); DispAtu.Dados._MassaLeituraRef = Convert.ToDouble(txtMLeituraRef.Text); DispAtu.Dados._PressaoVmin = Convert.ToDouble(txtPressaoVmin.Text); diff --git a/AgroBase/AgroBase/Forms/Atuador/frmAtuConfig.cs b/AgroBase/AgroBase/Forms/Atuador/frmAtuConfig.cs index de28a78f9..e7ab89bd0 100644 --- a/AgroBase/AgroBase/Forms/Atuador/frmAtuConfig.cs +++ b/AgroBase/AgroBase/Forms/Atuador/frmAtuConfig.cs @@ -27,9 +27,9 @@ namespace AgroBase.Forms.Atuador } chbBicosAtuacao.Checked = Disp.Dados.BicosPulverizadores.Any(x => x.AtuacaoNivelAlto); - nudBicosQtd.Value = Disp.Dados.QuantidadeBicos; + nudBicosQtd.Value = Variaveis.OperacaoEmAndamento.Parametros.QtdBicos; txtDensidade.Text = Disp.Dados.DensidadeHerbicida.ToString("0.00"); - nudCapMax.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.CapacidadeReservatorio); + nudCapMax.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Parametros.QtdCamerasSolo); } private void frmAtuConfig_FormClosing(object sender, FormClosingEventArgs e) @@ -41,9 +41,9 @@ namespace AgroBase.Forms.Atuador private void btnSalvar_Click(object sender, EventArgs e) { Disp.Dados.BicosPulverizadores.ForEach(x => x.AtuacaoNivelAlto = chbBicosAtuacao.Checked); - Disp.Dados.QuantidadeBicos = Convert.ToInt32(nudBicosQtd.Value); + Variaveis.OperacaoEmAndamento.Parametros.QtdBicos = Convert.ToInt32(nudBicosQtd.Value); Disp.Dados.DensidadeHerbicida = Convert.ToDouble(txtDensidade.Text.Replace(".", ",")); - Variaveis.OperacaoEmAndamento.CapacidadeReservatorio = Convert.ToDouble(nudCapMax.Value); + Variaveis.OperacaoEmAndamento.Parametros.CapacidadeReservatorio = Convert.ToDouble(nudCapMax.Value); Disp.SalvarParametros(Disp.Dados); } diff --git a/AgroBase/AgroBase/Forms/IHM/frmAjustes.cs b/AgroBase/AgroBase/Forms/IHM/frmAjustes.cs index 0cdce0dcd..3c181d7fc 100644 --- a/AgroBase/AgroBase/Forms/IHM/frmAjustes.cs +++ b/AgroBase/AgroBase/Forms/IHM/frmAjustes.cs @@ -123,7 +123,7 @@ namespace AgroBase.Forms.IHM chbSonarAtivado.Enabled = KinectService.Iniciado; if (KinectService.Iniciado) { - chbSonarAtivado.Checked = Variaveis.OperacaoEmAndamento.Controle.SonarAtivado; + chbSonarAtivado.Checked = Variaveis.OperacaoEmAndamento.Parametros.Controle.SonarAtivado; } } @@ -259,7 +259,7 @@ namespace AgroBase.Forms.IHM CameraCaminho = Variaveis.OperacaoEmAndamento.DispSen.Dados.CameraCaminho.Clone(); CamerasSolo = new List(Variaveis.OperacaoEmAndamento.DispSen.Dados.CamerasSolo); - for (int i = 0; i < Variaveis.OperacaoEmAndamento.QuantidadeCamerasSolo; i++) + for (int i = 0; i < Variaveis.OperacaoEmAndamento.Parametros.QtdCamerasSolo; i++) { GerarCameraSolo(i); } diff --git a/AgroBase/AgroBase/Forms/IHM/frmDiagnosticos.cs b/AgroBase/AgroBase/Forms/IHM/frmDiagnosticos.cs index e1d892515..2e5653952 100644 --- a/AgroBase/AgroBase/Forms/IHM/frmDiagnosticos.cs +++ b/AgroBase/AgroBase/Forms/IHM/frmDiagnosticos.cs @@ -526,7 +526,7 @@ namespace AgroBase.Forms.IHM private async Task EnviarComandoBomba(bool Ligar, double Pressao, int Timeout, AtuadorModel disp = null) { var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(); - Variaveis.OperacaoEmAndamento.Controle.PressaoLinha = Pressao + 10; + Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Pressao + 10; GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Ligar, Bomba.ID); DateTime inicio = DateTime.Now; @@ -941,7 +941,7 @@ namespace AgroBase.Forms.IHM TipoMovimentoDirecional _oldTipoMovimento = Variaveis.OperacaoEmAndamento.Controle.TipoMovimento; double _oldAngulo = Variaveis.OperacaoEmAndamento.Controle.Angulo; - double _oldVelocidadeMP = Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP; + double _oldVelocidadeMP = Variaveis.OperacaoEmAndamento.Parametros.Controle.DirVelocidadeMovimento; DispositivosService Dispositivo = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Enums.T_Code.Mvd); @@ -952,7 +952,7 @@ namespace AgroBase.Forms.IHM Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = TipoMovimentoDirecional.Diagnostico; Variaveis.OperacaoEmAndamento.Controle.Angulo = 25; - Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP = 30; + Variaveis.OperacaoEmAndamento.Parametros.Controle.DirVelocidadeMovimento = 30; bool SenConectado = SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Sen); idx = PreencheDadosLinha(grid, Testes, idx, SenConectado ? 1 : 0); @@ -1001,7 +1001,7 @@ namespace AgroBase.Forms.IHM Variaveis.OperacaoEmAndamento.Controle.TipoMovimento = _oldTipoMovimento; Variaveis.OperacaoEmAndamento.Controle.Angulo = _oldAngulo; - Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP = _oldVelocidadeMP; + Variaveis.OperacaoEmAndamento.Parametros.Controle.DirVelocidadeMovimento = _oldVelocidadeMP; return true; } @@ -1227,7 +1227,7 @@ namespace AgroBase.Forms.IHM bool PzmConectado = SerialService.DispositivosMapeados.Any(x => x.Dispositivo == Enums.T_Code.Pzm); idx = PreencheDadosLinha(grid, Testes, idx, PzmConectado ? 1 : 0); - var S36V = Variaveis.OperacaoEmAndamento.Sensoriamento.Bateria; + var S36V = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Bateria; bool S36VInicializado = S36V.Iniciado; idx = PreencheDadosLinha(grid, Testes, idx, S36VInicializado ? 1 : 0); @@ -1264,7 +1264,7 @@ namespace AgroBase.Forms.IHM double Corrente12V = S12V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente).atual.valor; idx = PreencheDadosLinha(grid, Testes, idx, Corrente12V); - var SImu = Variaveis.OperacaoEmAndamento.Sensoriamento.IMU; + var SImu = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.IMU; double Orientacao = SImu.Iniciado ? SImu.Rotacao : -1; idx = PreencheDadosLinha(grid, Testes, idx, Orientacao); @@ -1274,13 +1274,13 @@ namespace AgroBase.Forms.IHM bool GpsInicializado = GPSService.Iniciado; idx = PreencheDadosLinha(grid, Testes, idx, GpsInicializado ? 1 : 0); - double Precisao = GpsInicializado ? (int)Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.QualidadeFix : -1; + double Precisao = GpsInicializado ? (int)Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.QualidadeFix : -1; idx = PreencheDadosLinha(grid, Testes, idx, Precisao); - double Satelites = GpsInicializado ? Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.NumeroSatelites : -1; + double Satelites = GpsInicializado ? Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.NumeroSatelites : -1; idx = PreencheDadosLinha(grid, Testes, idx, Satelites); - double OrientacaoGPS = GpsInicializado ? Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.OrientacaoReal : -1; + double OrientacaoGPS = GpsInicializado ? Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.OrientacaoReal : -1; idx = PreencheDadosLinha(grid, Testes, idx, OrientacaoGPS); bool A05Conectado = SerialService.DispositivosMapeados.Any(x => x.Dispositivo == Enums.T_Code.A05); diff --git a/AgroBase/AgroBase/Forms/IHM/frmDialogoMapa.cs b/AgroBase/AgroBase/Forms/IHM/frmDialogoMapa.cs index 516164116..9c0be1c03 100644 --- a/AgroBase/AgroBase/Forms/IHM/frmDialogoMapa.cs +++ b/AgroBase/AgroBase/Forms/IHM/frmDialogoMapa.cs @@ -136,7 +136,7 @@ namespace AgroBase.Forms.IHM public void AtualizarMapaDinamico() { - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; var _Trajetoria = Variaveis.OperacaoEmAndamento.Trajetoria; if (_Trajetoria != null && _Trajetoria.CorredorAtual != null) @@ -160,10 +160,10 @@ namespace AgroBase.Forms.IHM pnlOrientacao.Invalidate(); pnlInclinacao.Invalidate(); - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; - lblUltimaLeituraSolo.Text = "Última Leitura Solo: " + Variaveis.OperacaoEmAndamento.Sensoriamento.OperadorErvas.UltimaMensagem.ToString("HH:mm:ss.fff"); - lblUltimaLeituraCaminho.Text = "Última Leitura Caminho: " + Variaveis.OperacaoEmAndamento.Sensoriamento.OperadorVisual.UltimaMensagem.ToString("HH:mm:ss.fff"); + lblUltimaLeituraSolo.Text = "Última Leitura Solo: " + _Sensoriamento.OperadorErvas.UltimaMensagem.ToString("HH:mm:ss.fff"); + lblUltimaLeituraCaminho.Text = "Última Leitura Caminho: " + _Sensoriamento.OperadorVisual.UltimaMensagem.ToString("HH:mm:ss.fff"); lblPerformance.Text = _Sensoriamento.DadosPerformance.PerformanceStr; lblMapaCarregado.Text = "Operação: " + Variaveis.OperacaoEmAndamento.Descricao; @@ -210,7 +210,7 @@ namespace AgroBase.Forms.IHM tkbVelocidade.Value = Convert.ToInt32(_Sensoriamento.Controle.PercentualVelocidadeSP); tkbAnguloDirecional.Minimum = 0; - tkbAnguloDirecional.Maximum = Convert.ToInt32(_Sensoriamento.Controle.Angulo_Max); + tkbAnguloDirecional.Maximum = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Parametros.Controle.DirAnguloMaximo); tkbAnguloDirecional.Value = Math.Abs(Convert.ToInt32(_Sensoriamento.Controle.Angulo)); } @@ -294,8 +294,8 @@ namespace AgroBase.Forms.IHM { try { - double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.AnguloCarroDefinido; - FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90, (float)Variaveis.OperacaoEmAndamento.Sensoriamento.Trajetoria.AnguloCaminho); + double angulo = Variaveis.OperacaoEmAndamento.Parametros?.DadosLeitura?.Gps?.AnguloCarroDefinido ?? 0; + FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90, (float)(Variaveis.OperacaoEmAndamento.Parametros?.DadosLeitura?.Trajetoria?.AnguloCaminho ?? 0)); } catch { } } @@ -333,15 +333,16 @@ namespace AgroBase.Forms.IHM pnlJoystick.Visible = false; tabControl1.TabPages.Remove(tabControle); + var pControle = Variaveis.OperacaoEmAndamento.Parametros.Controle; var _Controle = Variaveis.OperacaoEmAndamento.Controle; cmbModoControle.SelectedIndex = (int)_Controle.TipoMovimento; - chbSonarAtivado.Checked = _Controle.SonarAtivado; - chbFrenagemAutomatica.Checked = _Controle.FrenagemAutomatica; - nudVelSemErvas.Value = (int)_Controle.PercentualVelocidadeMax; - nudVelComErvas.Value = (int)_Controle.PercentualVelocidadeMin; - chbPulverizadorAutomatico.Checked = _Controle.PulverizadorAutomatico; - nudPercentualAtuacaoBico.Value = (int)(_Controle.PercentualInicioPulverizacao * 100.0); - nudPressaoLinha.Value = (int)_Controle.PressaoLinha; + chbSonarAtivado.Checked = pControle.SonarAtivado; + chbFrenagemAutomatica.Checked = pControle.FrenagemAutomatica; + nudVelSemErvas.Value = (int)pControle.MovVelocidadeSErvasPercent; + nudVelComErvas.Value = (int)pControle.MovVelocidadeCErvasPercent; + chbPulverizadorAutomatico.Checked = pControle.PulverizadorAutomatico; + nudPercentualAtuacaoBico.Value = (int)pControle.AtuPercentualInicioPulverizacao; + nudPressaoLinha.Value = (int)pControle.AtuPressaoLinha; FuncoesGlobais.PreencheValorTrackBar(tkbAnguloDirecional, _Controle.Angulo); FuncoesGlobais.PreencheValorTrackBar(tkbVelocidade, _Controle.PercentualVelocidadeSP); @@ -670,7 +671,7 @@ namespace AgroBase.Forms.IHM try { // 1) Pega o estado atual do seu sistema - var src = Variaveis.OperacaoEmAndamento.ModulosMandatorios; + var src = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios; var saude = HealthWorkerService.ModulosSaude; // 2) Constrói snapshot @@ -802,7 +803,7 @@ namespace AgroBase.Forms.IHM // escreve de volta na fonte oficial var disp = _modulosUI[idx].Disp; - var alvo = Variaveis.OperacaoEmAndamento.ModulosMandatorios.FirstOrDefault(m => m.Dispositivo.Equals(disp)); + var alvo = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.FirstOrDefault(m => m.Dispositivo.Equals(disp)); if (alvo != null) { if (alvo.Utilizar && alvo.Mandatorio && !novoUtilizar) @@ -866,16 +867,16 @@ namespace AgroBase.Forms.IHM { ("Não", DialogResult.No), () => { } }, } ); - var _Controle = Variaveis.OperacaoEmAndamento.Controle; + var pControle = Variaveis.OperacaoEmAndamento.Parametros.Controle; if (res == DialogResult.Yes) { - _Controle.SonarAtivado = chbSonarAtivado.Checked; - _Controle.FrenagemAutomatica = chbFrenagemAutomatica.Checked; - _Controle.RPM_Max = (int)FuncoesMatematicas.CalculaRPMVelocidade(FuncoesMatematicas.CalculaVelocidadeMsPercentual((int)nudVelSemErvas.Value)); - _Controle.RPM_Min = (int)FuncoesMatematicas.CalculaRPMVelocidade(FuncoesMatematicas.CalculaVelocidadeMsPercentual((int)nudVelComErvas.Value)); - _Controle.PulverizadorAutomatico = chbPulverizadorAutomatico.Checked; - _Controle.PercentualInicioPulverizacao = ((double)nudPercentualAtuacaoBico.Value / 100.0); - _Controle.PressaoLinha = (double)nudPressaoLinha.Value; + pControle.SonarAtivado = chbSonarAtivado.Checked; + pControle.FrenagemAutomatica = chbFrenagemAutomatica.Checked; + pControle.MovVelocidadeSErvasPercent = (int)FuncoesMatematicas.CalculaRPMVelocidade(FuncoesMatematicas.CalculaVelocidadeMsPercentual((int)nudVelSemErvas.Value)); + pControle.MovVelocidadeCErvasPercent = (int)FuncoesMatematicas.CalculaRPMVelocidade(FuncoesMatematicas.CalculaVelocidadeMsPercentual((int)nudVelComErvas.Value)); + pControle.PulverizadorAutomatico = chbPulverizadorAutomatico.Checked; + pControle.AtuPercentualInicioPulverizacao = ((double)nudPercentualAtuacaoBico.Value / 100.0); + pControle.AtuPressaoLinha = (double)nudPressaoLinha.Value; RedisService.AtualizarCampos( CtxKey.DadosPesosMPC, @@ -893,13 +894,13 @@ namespace AgroBase.Forms.IHM } else { - chbSonarAtivado.Checked = _Controle.SonarAtivado; - chbFrenagemAutomatica.Checked = _Controle.FrenagemAutomatica; - nudVelSemErvas.Value = (int)_Controle.PercentualVelocidadeMax; - nudVelComErvas.Value = (int)_Controle.PercentualVelocidadeMin; - chbPulverizadorAutomatico.Checked = _Controle.PulverizadorAutomatico; - nudPercentualAtuacaoBico.Value = (int)(_Controle.PercentualInicioPulverizacao * 100.0); - nudPressaoLinha.Value = (int)_Controle.PressaoLinha; + chbSonarAtivado.Checked = pControle.SonarAtivado; + chbFrenagemAutomatica.Checked = pControle.FrenagemAutomatica; + nudVelSemErvas.Value = (int)pControle.MovVelocidadeSErvasPercent; + nudVelComErvas.Value = (int)pControle.MovVelocidadeCErvasPercent; + chbPulverizadorAutomatico.Checked = pControle.PulverizadorAutomatico; + nudPercentualAtuacaoBico.Value = (int)pControle.AtuPercentualInicioPulverizacao; + nudPressaoLinha.Value = (int)pControle.AtuPressaoLinha; string pesosMpcStr = RedisService.Get(CtxKey.DadosPesosMPC); var pesos = JsonConvert.DeserializeObject(pesosMpcStr); txtPesoPosicao.Text = pesos.posicao.ToString(); diff --git a/AgroBase/AgroBase/Forms/IHM/frmInicioOperacao.cs b/AgroBase/AgroBase/Forms/IHM/frmInicioOperacao.cs index 6fe2ec104..f1c201a15 100644 --- a/AgroBase/AgroBase/Forms/IHM/frmInicioOperacao.cs +++ b/AgroBase/AgroBase/Forms/IHM/frmInicioOperacao.cs @@ -227,7 +227,7 @@ namespace AgroBase.Forms.Operacoes { 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); + chb.Checked = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == Dispositivo && x.Mandatorio); } txtModoOperacao.Text = Variaveis.OperacaoEmAndamento.Modo.ToString(); diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs index 0e79ae965..36d91e1a4 100644 --- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs +++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs @@ -60,8 +60,8 @@ namespace AgroBase.Forms.Operacoes flwCamerasSolo.Controls.Add(pnlCam); } - chbPulverizador.Checked = Variaveis.OperacaoEmAndamento.Controle.PulverizadorAutomatico; - chbSonarAtivado.Checked = Variaveis.OperacaoEmAndamento.Controle.SonarAtivado; + chbPulverizador.Checked = Variaveis.OperacaoEmAndamento.Parametros.Controle.PulverizadorAutomatico; + chbSonarAtivado.Checked = Variaveis.OperacaoEmAndamento.Parametros.Controle.SonarAtivado; InicializarComandosDirecional(); PopularInformacoesGerais(); @@ -151,7 +151,7 @@ namespace AgroBase.Forms.Operacoes AtualizarInformacoesGerais(); - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; lblDistanciaEsquerda.Text = "Distancia Esq: " + _Sensoriamento.Trajetoria.DistanciaEsquerda.ToString("0.00") + " cm"; lblDistanciaDireita.Text = "Distancia Dir: " + _Sensoriamento.Trajetoria.DistanciaDireita.ToString("0.00") + " cm"; @@ -173,7 +173,7 @@ namespace AgroBase.Forms.Operacoes chbPulverizador.Checked = false; } - bool sonarAtivado = Variaveis.OperacaoEmAndamento.Sensoriamento.OperadorVisual.Status == StatusModulo.Operante; + bool sonarAtivado = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.OperadorVisual.Status == StatusModulo.Operante; chbSonarAtivado.Enabled = sonarAtivado; if (!sonarAtivado) { @@ -424,8 +424,8 @@ namespace AgroBase.Forms.Operacoes { try { - double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.OrientacaoReal; - double angulo2 = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.AnguloCarroDefinido; + double angulo = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.OrientacaoReal; + double angulo2 = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.AnguloCarroDefinido; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, -90, (float)angulo2); } catch { } @@ -433,7 +433,7 @@ namespace AgroBase.Forms.Operacoes private void pnlAnguloMagnetometro_Paint(object sender, PaintEventArgs e) { - var imu = Variaveis.OperacaoEmAndamento.Sensoriamento.IMU; + var imu = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.IMU; try { double angulo = imu.Rotacao; @@ -512,7 +512,7 @@ namespace AgroBase.Forms.Operacoes var AB12V = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB12V"); var AB19V = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB19V"); var AB24V = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB24V"); - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; gridDados.Rows[0].Cells[1].Value = _Sensoriamento.TempoDecorrido.ToString("HH:mm:ss"); gridDados.Rows[1].Cells[1].Value = _Sensoriamento.Movimentacao.TempoMovimento.ToString("HH:mm:ss"); @@ -570,15 +570,15 @@ namespace AgroBase.Forms.Operacoes private void PopularBicos() { var Atuador = Variaveis.OperacaoEmAndamento.DispAtu; - nudPressaoSP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.PressaoLinha); + nudPressaoSP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha); int panelWidth = pnlAtuadores.Width; int circleDiameter = 40; // Diâmetro dos círculos grandes - int spaceBetweenCircles = (panelWidth - (circleDiameter * Atuador.Dados.QuantidadeBicos)) / (Atuador.Dados.QuantidadeBicos + 1); + int spaceBetweenCircles = (panelWidth - (circleDiameter * Variaveis.OperacaoEmAndamento.Parametros.QtdBicos)) / (Variaveis.OperacaoEmAndamento.Parametros.QtdBicos + 1); int yPosition = (pnlAtuadores.Height - circleDiameter) / 3; // Centralizado verticalmente - for (int i = 0; i < Atuador.Dados.QuantidadeBicos; i++) + for (int i = 0; i < Variaveis.OperacaoEmAndamento.Parametros.QtdBicos; i++) { // Calcula a posição x do círculo int xPosition = spaceBetweenCircles + (i * (circleDiameter + spaceBetweenCircles)); @@ -637,7 +637,7 @@ namespace AgroBase.Forms.Operacoes private void nudPressaoSP_ValueChanged(object sender, EventArgs e) { var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(); - Variaveis.OperacaoEmAndamento.Controle.PressaoLinha = Convert.ToInt32(((NumericUpDown)sender).Value); + Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Convert.ToInt32(((NumericUpDown)sender).Value); GeneralJoystick.EnviarComandoAtuador(S_Code.sBMB, Bomba.ComandoAtuar, Bomba.ID); } @@ -678,12 +678,12 @@ namespace AgroBase.Forms.Operacoes private void chbPulverizador_CheckedChanged(object sender, EventArgs e) { - Variaveis.OperacaoEmAndamento.Controle.PulverizadorAutomatico = ((CheckBox)sender).Checked; + Variaveis.OperacaoEmAndamento.Parametros.Controle.PulverizadorAutomatico = ((CheckBox)sender).Checked; } private void chbSonarAtivado_CheckedChanged(object sender, EventArgs e) { - Variaveis.OperacaoEmAndamento.Controle.SonarAtivado = ((CheckBox)sender).Checked; + Variaveis.OperacaoEmAndamento.Parametros.Controle.SonarAtivado = ((CheckBox)sender).Checked; } private void chbSonarDesvioAutomatico_CheckedChanged(object sender, EventArgs e) diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs index 5a7a268da..664bd1488 100644 --- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs +++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs @@ -68,7 +68,7 @@ namespace AgroBase.Forms.Operacoes pnlCaminho.Invalidate(); pnlAnguloCamera.Invalidate(); - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; /*var ultimaLeitura = Variaveis.OperacaoEmAndamento.CamerasSolo.OrderByDescending(x => x.Leitura.timestamp).FirstOrDefault(); if (ultimaLeitura != null) @@ -282,7 +282,7 @@ namespace AgroBase.Forms.Operacoes { try { - double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.AnguloCarroDefinido; + double angulo = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.AnguloCarroDefinido; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, -90); } catch { } diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs b/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs index 9f8f87fe3..1e3a8ee4b 100644 --- a/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs +++ b/AgroBase/AgroBase/Forms/Operacoes/frmParametrizacaoOperacao.cs @@ -27,7 +27,8 @@ namespace AgroBase.Forms.Operacoes void CarregarParametros() { - ModulosMandatorios = Variaveis.OperacaoEmAndamento.ModulosMandatorios.ToList(); + var _Parametros = Variaveis.OperacaoEmAndamento.Parametros; + ModulosMandatorios = _Parametros.ModulosMandatorios.ToList(); cmbOperacao.Items.Clear(); cmbOperacao.Items.AddRange(Enum.GetNames(typeof(ModoOperacao))); @@ -52,24 +53,24 @@ namespace AgroBase.Forms.Operacoes }); nudVelocidadeComErvas.Minimum = 0; - nudVelocidadeComErvas.Maximum = Convert.ToInt32(VariaveisEquipamento.RPM_Max_Roda); - nudVelocidadeComErvas.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.RPM_Min); + nudVelocidadeComErvas.Maximum = 100; + nudVelocidadeComErvas.Value = Convert.ToInt32(_Parametros.Controle.MovVelocidadeCErvasPercent); nudVelocidadeSemErvas.Minimum = 0; - nudVelocidadeSemErvas.Maximum = Convert.ToInt32(VariaveisEquipamento.RPM_Max_Roda); - nudVelocidadeSemErvas.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.RPM_Max); + nudVelocidadeSemErvas.Maximum = 100; + nudVelocidadeSemErvas.Value = Convert.ToInt32(_Parametros.Controle.MovVelocidadeSErvasPercent); - lblKmhCErvas.Text = FuncoesMatematicas.CalculaVelocidadeRPM(Variaveis.OperacaoEmAndamento.Controle.RPM_Min).ToString("0.00") + " Km/h"; - lblKmhSErvas.Text = FuncoesMatematicas.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); + lblKmhCErvas.Text = FuncoesMatematicas.ConverteMsParaKmh(FuncoesMatematicas.CalculaVelocidadeMsPercentual(_Parametros.Controle.MovVelocidadeCErvasPercent)).ToString("0.00") + " Km/h"; + lblKmhSErvas.Text = FuncoesMatematicas.ConverteMsParaKmh(FuncoesMatematicas.CalculaVelocidadeMsPercentual(_Parametros.Controle.MovVelocidadeSErvasPercent)).ToString("0.00") + " Km/h"; + nudAnguloMaximo.Value = Convert.ToInt32(_Parametros.Controle.DirAnguloMaximo); + nudAnguloMinimo.Value = Convert.ToInt32(-_Parametros.Controle.DirAnguloMaximo); + nudVelocidadeMP.Value = Convert.ToInt32(_Parametros.Controle.DirVelocidadeMovimento); nudTemposalvarlog.Value = (decimal)Variaveis.OperacaoEmAndamento.tmrLogsInterval / 1000; - nudQtdBicos.Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.QuantidadeBicos; - nudQtdCameras.Value = Variaveis.OperacaoEmAndamento.QuantidadeCamerasSolo; - nudCapacidadereservatorio.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.CapacidadeReservatorio); + nudQtdBicos.Value = _Parametros.QtdBicos; + nudQtdCameras.Value = _Parametros.QtdCamerasSolo; + nudCapacidadereservatorio.Value = Convert.ToInt32(_Parametros.CapacidadeReservatorio); txtDensidadeherbicida.Text = Variaveis.OperacaoEmAndamento.DispAtu.Dados.DensidadeHerbicida.ToString("0.00"); - nudAtuarem.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.PercentualInicioPulverizacao * 100); + nudAtuarem.Value = Convert.ToInt32(_Parametros.Controle.AtuPercentualInicioPulverizacao); cmbScriptErvas.SelectedIndex = cmbScriptErvas.Items.IndexOf(Variaveis.OperacaoEmAndamento.DispAtu.Dados.ScriptDeteccaoErvas.Replace(".py", "")); } @@ -125,19 +126,18 @@ namespace AgroBase.Forms.Operacoes 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); + Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios = ModulosMandatorios.Where(x => x.Utilizar).ToList(); + Variaveis.OperacaoEmAndamento.Parametros.Controle.MovVelocidadeSErvasPercent = (int)(nudVelocidadeSemErvas.Value); + Variaveis.OperacaoEmAndamento.Parametros.Controle.MovVelocidadeCErvasPercent = (int)(nudVelocidadeComErvas.Value); + Variaveis.OperacaoEmAndamento.Parametros.Controle.DirAnguloMaximo = (int)(nudAnguloMaximo.Value); + Variaveis.OperacaoEmAndamento.Parametros.Controle.DirVelocidadeMovimento = (int)(nudVelocidadeMP.Value); Variaveis.OperacaoEmAndamento.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.Parametros.QtdBicos = (int)nudQtdBicos.Value; + Variaveis.OperacaoEmAndamento.Parametros.QtdCamerasSolo = (int)nudQtdCameras.Value; + Variaveis.OperacaoEmAndamento.Parametros.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"; + Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPercentualInicioPulverizacao = (double)(nudAtuarem.Value / 100); + //Variaveis.OperacaoEmAndamento.Parametros.DispAtu.Dados.ScriptDeteccaoErvas = cmbScriptErvas.Text + ".py"; if (chbSalvar.Checked) { diff --git a/AgroBase/AgroBase/Forms/Simuladores/frmSimulacaoMapaGPS.cs b/AgroBase/AgroBase/Forms/Simuladores/frmSimulacaoMapaGPS.cs index ed429b1c6..59074a3ee 100644 --- a/AgroBase/AgroBase/Forms/Simuladores/frmSimulacaoMapaGPS.cs +++ b/AgroBase/AgroBase/Forms/Simuladores/frmSimulacaoMapaGPS.cs @@ -49,7 +49,7 @@ namespace AgroBase.Forms { cmbTipoControleDirecional.Items.Clear(); cmbTipoControleDirecional.Items.AddRange(Enum.GetNames(typeof(Enums.TiposControladorDirecional))); - cmbTipoControleDirecional.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Controle.TipoControleDirecional; + cmbTipoControleDirecional.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Parametros.Controle.DirTipoMovimento; cmbStatusCorredor.Items.Clear(); cmbStatusCorredor.Items.AddRange(Enum.GetNames(typeof(Enums.StatusCarroMapa))); @@ -116,9 +116,15 @@ namespace AgroBase.Forms return; AtualizandoTela = true; - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; var _Trajetoria = Variaveis.OperacaoEmAndamento.Trajetoria; + if (_Trajetoria == null) + { + AtualizandoTela = false; + return; + } + lblStatusOperacao.Text = "Operação: " + Enum.GetName(typeof(StatusOperacao), _Sensoriamento.StatusOperacao); lblTipoMovimento.Text = _Sensoriamento.Controle.TipoMovimento.ToString(); @@ -257,12 +263,12 @@ namespace AgroBase.Forms // Obtém os parâmetros double anguloAtual = double.Parse(txtAnguloGPS.Text); - var _Gps = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps; + var _Gps = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps; double anguloControle = 0.0; TipoMovimentoDirecional tipoMovimento = Variaveis.OperacaoEmAndamento.Controle.TipoMovimento; - var tipoControle = Variaveis.OperacaoEmAndamento.Controle.TipoControleDirecional; + var tipoControle = Variaveis.OperacaoEmAndamento.Parametros.Controle.DirTipoMovimento; if (passosOperacao.Count > 0 && Variaveis.OperacaoEmAndamento.Simulando) { @@ -319,7 +325,7 @@ namespace AgroBase.Forms AtualizarPosicaoGPS(); - Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados(); + Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.AtualizarDados(); if (!chbAutomatico.Checked) { @@ -434,8 +440,8 @@ namespace AgroBase.Forms { //double angulo = Variaveis.OperacaoEmAndamento.Trajetoria.AnguloCaminho; //double anguloCorredor = Variaveis.OperacaoEmAndamento.Trajetoria.AnguloMedioCorredor; - double angulo = Variaveis.OperacaoEmAndamento.Trajetoria.ProximoPonto?.Orientacao ?? 0; - double anguloCorredor = Variaveis.OperacaoEmAndamento.Trajetoria.AnguloCaminho; + double angulo = Variaveis.OperacaoEmAndamento.Trajetoria?.ProximoPonto?.Orientacao ?? 0; + double anguloCorredor = Variaveis.OperacaoEmAndamento.Trajetoria?.AnguloCaminho ?? 0; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90, (float)anguloCorredor); } catch { } @@ -445,7 +451,7 @@ namespace AgroBase.Forms { try { - double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps?.AnguloCarroDefinido ?? 0; + double angulo = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura?.Gps?.AnguloCarroDefinido ?? 0; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90); } catch { } @@ -456,7 +462,7 @@ namespace AgroBase.Forms try { double angulo = Variaveis.OperacaoEmAndamento.SimulacaoAnguloControle; - double dif = Variaveis.OperacaoEmAndamento.Sensoriamento.Trajetoria?.ErroOrientacaoAngularProximoPonto ?? 0; + double dif = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura?.Trajetoria?.ErroOrientacaoAngularProximoPonto ?? 0; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90, (float)dif); } catch { } @@ -500,7 +506,7 @@ namespace AgroBase.Forms private void cmbTipoControleDirecional_SelectedIndexChanged(object sender, EventArgs e) { - Variaveis.OperacaoEmAndamento.Controle.TipoControleDirecional = (TiposControladorDirecional)cmbTipoControleDirecional.SelectedIndex; + Variaveis.OperacaoEmAndamento.Parametros.Controle.DirTipoMovimento = (TiposControladorDirecional)cmbTipoControleDirecional.SelectedIndex; RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false)); } diff --git a/AgroBase/AgroBase/Forms/Simuladores/frmSimulacaoMapeamentoVisual.cs b/AgroBase/AgroBase/Forms/Simuladores/frmSimulacaoMapeamentoVisual.cs index e4390b433..e7770b5ae 100644 --- a/AgroBase/AgroBase/Forms/Simuladores/frmSimulacaoMapeamentoVisual.cs +++ b/AgroBase/AgroBase/Forms/Simuladores/frmSimulacaoMapeamentoVisual.cs @@ -69,7 +69,7 @@ namespace AgroBase.Forms.Simuladores Task.Run(async () => { OAKCameraFrameModel frame = await VisualWorkerService.GetCameraFrame(CameraFrameType.Segmentacao); - var dadosSeg = Variaveis.OperacaoEmAndamento.Sensoriamento.OperadorVisual.Analises.segmentacao; + var dadosSeg = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.OperadorVisual.Analises.segmentacao; DesenharCorredor(frame?.image(), dadosSeg.centros_corredor, dadosSeg.width, dadosSeg.height, 80); this.Invoke((MethodInvoker)(() => diff --git a/AgroBase/AgroBase/Forms/Simuladores/frmTreinamentoIA.cs b/AgroBase/AgroBase/Forms/Simuladores/frmTreinamentoIA.cs index 52c28326d..ce109edca 100644 --- a/AgroBase/AgroBase/Forms/Simuladores/frmTreinamentoIA.cs +++ b/AgroBase/AgroBase/Forms/Simuladores/frmTreinamentoIA.cs @@ -214,7 +214,7 @@ namespace AgroBase.Forms { try { - double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.AnguloCarroDefinido; + double angulo = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.AnguloCarroDefinido; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90); } catch { } @@ -476,7 +476,7 @@ namespace AgroBase.Forms { Latitude = GPSService.UltimaLeitura.Latitude, Longitude = GPSService.UltimaLeitura.Longitude, - Orientation = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.AnguloCarroDefinido + Orientation = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.AnguloCarroDefinido }); _robotState.UpdateCurrentRobotState(); diff --git a/AgroBase/AgroBase/Forms/frmAcompanhamento.cs b/AgroBase/AgroBase/Forms/frmAcompanhamento.cs index 81324aa3f..146a3cb07 100644 --- a/AgroBase/AgroBase/Forms/frmAcompanhamento.cs +++ b/AgroBase/AgroBase/Forms/frmAcompanhamento.cs @@ -69,9 +69,9 @@ namespace AgroBase.Forms AtualizarDadosSensorCorrente("AB36V", lblB36V); } - lblMagnetometro.ForeColor = Variaveis.OperacaoEmAndamento.Sensoriamento.IMU.Iniciado ? Color.Green : Color.Red; + lblMagnetometro.ForeColor = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.IMU.Iniciado ? Color.Green : Color.Red; - var Gps = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps; + var Gps = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps; lblGPS.ForeColor = Gps.Inicializado ? Color.Green : Color.Red; if (Gps.Inicializado) { @@ -395,7 +395,7 @@ namespace AgroBase.Forms private void pnlOrientacaoGPS_Paint(object sender, PaintEventArgs e) { - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; double Angulo = _Sensoriamento.Gps.OrientacaoReal; double AnguloMovimento = _Sensoriamento.Gps.OrientacaoMovimento; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)Angulo, -90, (float)AnguloMovimento); @@ -403,7 +403,7 @@ namespace AgroBase.Forms private void pnlOrientacaoMagnetometro_Paint(object sender, PaintEventArgs e) { - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; double Angulo = _Sensoriamento.IMU.Rotacao; double AnguloCorrigido = _Sensoriamento.IMU.RotacaoCorrigida; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)Angulo, -90, (float)AnguloCorrigido); diff --git a/AgroBase/AgroBase/Forms/frmGPS.cs b/AgroBase/AgroBase/Forms/frmGPS.cs index e0e76cac4..97d74b74f 100644 --- a/AgroBase/AgroBase/Forms/frmGPS.cs +++ b/AgroBase/AgroBase/Forms/frmGPS.cs @@ -41,7 +41,7 @@ namespace AgroBase.Forms private async Task tmrLeitura_Tick() { - var Gps = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps; + var Gps = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps; lblAltitude.Text = "Altitude: " + Gps.Altitude.ToString("0.0") + " m"; lblDatahora.Text = "Ultima Leitura: " + Gps.DataHora.ToString("HH:mm:ss"); diff --git a/AgroBase/AgroBase/Forms/frmMapa.cs b/AgroBase/AgroBase/Forms/frmMapa.cs index 355fd639d..3083b6d51 100644 --- a/AgroBase/AgroBase/Forms/frmMapa.cs +++ b/AgroBase/AgroBase/Forms/frmMapa.cs @@ -62,7 +62,7 @@ namespace AgroBase.Forms private void btnRegistrarPontos_Click(object sender, EventArgs e) { - GPSModel P1 = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.Clone(); + GPSModel P1 = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.Clone(); if (Pontos[idxRua].Count == 0) { @@ -127,8 +127,8 @@ namespace AgroBase.Forms { try { - double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.AnguloCarroDefinido; - double anguloCorredor = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.OrientacaoMovimento; + double angulo = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.AnguloCarroDefinido; + double anguloCorredor = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps.OrientacaoMovimento; FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90, (float)anguloCorredor); } catch { } @@ -180,7 +180,7 @@ namespace AgroBase.Forms ultimoPonto = Pontos[Pontos.Count - 2][Pontos[Pontos.Count - 2].Count - 1]; } - var Gps = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps; + var Gps = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps; pnlOrientacaoGps.Invalidate(); lblStatusGPS.Text = $"GPS - Precisão: {Gps.PrecisaoCm} cm, " + diff --git a/AgroBase/AgroBase/Forms/frmPrincipal.cs b/AgroBase/AgroBase/Forms/frmPrincipal.cs index a2f83e6bc..75f154f8d 100644 --- a/AgroBase/AgroBase/Forms/frmPrincipal.cs +++ b/AgroBase/AgroBase/Forms/frmPrincipal.cs @@ -172,7 +172,7 @@ namespace AgroBase tkbVelocidade.Minimum = 0; tkbVelocidade.Maximum = 100; - FuncoesGlobais.PreencheValorTrackBar(tkbVelocidade, Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP); + FuncoesGlobais.PreencheValorTrackBar(tkbVelocidade, Variaveis.OperacaoEmAndamento.Parametros.Controle.DirVelocidadeMovimento); tkbAngulo.Minimum = 0; tkbAngulo.Maximum = 90; @@ -181,7 +181,7 @@ namespace AgroBase trkKmh.Minimum = 0; trkKmh.Maximum = 100; - trkRPM.Minimum = Variaveis.OperacaoEmAndamento.Controle.RPM_Min; + trkRPM.Minimum = Variaveis.OperacaoEmAndamento.Parametros.Controle.MovVelocidadeCErvasPercent; trkRPM.Maximum = VariaveisEquipamento.RPM_Max_Roda; AtualizaRPM((int)Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP); @@ -267,8 +267,8 @@ namespace AgroBase private void tkbVelocidadeMP_ValueChanged(object sender, EventArgs e) { - Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP = tkbVelocidade.Value; - lblVelocidade.Text = "Velocidade: " + Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP + "%"; + Variaveis.OperacaoEmAndamento.Parametros.Controle.DirVelocidadeMovimento = tkbVelocidade.Value; + lblVelocidade.Text = "Velocidade: " + Variaveis.OperacaoEmAndamento.Parametros.Controle.DirVelocidadeMovimento + "%"; } private void tkbAngulo_ValueChanged(object sender, EventArgs e) diff --git a/AgroBase/AgroBase/Forms/frmWT901C.cs b/AgroBase/AgroBase/Forms/frmWT901C.cs index dccddbd39..7317d0b35 100644 --- a/AgroBase/AgroBase/Forms/frmWT901C.cs +++ b/AgroBase/AgroBase/Forms/frmWT901C.cs @@ -59,7 +59,7 @@ namespace AgroBase.Forms private async Task tmrLeitura_Tick() { - var Imu = Variaveis.OperacaoEmAndamento.Sensoriamento.IMU; + var Imu = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.IMU; AnguloX = Imu.InclinacaoFrontal; AnguloY = Imu.InclinacaoLateral; AnguloZ = Imu.Rotacao; diff --git a/AgroBase/AgroBase/Models/Enums.cs b/AgroBase/AgroBase/Models/Enums.cs index bc27403b0..02fe27cd9 100644 --- a/AgroBase/AgroBase/Models/Enums.cs +++ b/AgroBase/AgroBase/Models/Enums.cs @@ -181,7 +181,8 @@ Aguardando = 3, EmAndamento = 4, Parado = 5, - Concluido = 6 + Concluido = 6, + Erro = 7 } public enum StatusCarroMapa diff --git a/AgroBase/AgroBase/Models/GPSModel.cs b/AgroBase/AgroBase/Models/GPSModel.cs index 366e5878a..2bba6f853 100644 --- a/AgroBase/AgroBase/Models/GPSModel.cs +++ b/AgroBase/AgroBase/Models/GPSModel.cs @@ -66,6 +66,8 @@ namespace AgroBase.Models public DateTime UltimoComandoRespondido { get; set; } public double AnguloCarroDefinido { get; set; } public int Heartbeat { get; set; } = 0; + public double LeverArmLateral { get; set; } = 0; + public double LeverArmFrontal { get; set; } = 0; public GPSModel Clone() { @@ -105,6 +107,10 @@ namespace AgroBase.Models PDOP = PDOP, VDOP = VDOP, BaseID = BaseID, + LeverArmFrontal = LeverArmFrontal, + LeverArmLateral = LeverArmLateral, + X = X, + Y = Y }; } } diff --git a/AgroBase/AgroBase/Models/GeneralJoystick.cs b/AgroBase/AgroBase/Models/GeneralJoystick.cs index dd7523a42..dc7d34e81 100644 --- a/AgroBase/AgroBase/Models/GeneralJoystick.cs +++ b/AgroBase/AgroBase/Models/GeneralJoystick.cs @@ -826,7 +826,7 @@ namespace AgroBase private static bool VerificaComandoValidoSonar(Keys Comando) { List ComandosImpedidos = new List(); - var Sonar = Variaveis.OperacaoEmAndamento.Sensoriamento.OperadorVisual; + var Sonar = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.OperadorVisual; Sonar?.Resumo?.AtualizarStatusBloqueio(false); var DeveParar = Sonar?.Resumo?.DeveParar ?? false; if (DeveParar) diff --git a/AgroBase/AgroBase/Models/MPCController.cs b/AgroBase/AgroBase/Models/MPCController.cs index b46500d79..e716771fe 100644 --- a/AgroBase/AgroBase/Models/MPCController.cs +++ b/AgroBase/AgroBase/Models/MPCController.cs @@ -64,7 +64,7 @@ public class MPCController public async Task EnviarDadosTrajetoria(List _trajetoria) { - var _Controle = Variaveis.OperacaoEmAndamento.Controle; + var pControle = Variaveis.OperacaoEmAndamento.Parametros.Controle; var trajetoria = new { @@ -78,10 +78,10 @@ public class MPCController }) .ToList(), horizonte = Horizonte, - angulo_max_graus = _Controle.Angulo_Max, + angulo_max_graus = pControle.DirAnguloMaximo, distancia_entre_eixos = (VariaveisEquipamento.DistanciaEntreEixos / 100.0), - velocidade_min = FuncoesMatematicas.CalculaVelocidadeMsPercentual(_Controle.PercentualVelocidadeMin), - velocidade_max = FuncoesMatematicas.CalculaVelocidadeMsPercentual(_Controle.PercentualVelocidadeMax) + velocidade_min = FuncoesMatematicas.CalculaVelocidadeMsPercentual(pControle.MovVelocidadeCErvasPercent), + velocidade_max = FuncoesMatematicas.CalculaVelocidadeMsPercentual(pControle.MovVelocidadeSErvasPercent) }; await Variaveis.MqttServiceLocal.PublishAsync( @@ -101,7 +101,7 @@ public class MPCController _dt = (EnviadoEm - _ultimaAtualizacao).TotalSeconds; double dtCalc = Math.Max(tempoMinimo, Math.Min(tempoMaximo, _dt)); - var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento; + var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura; var dadosEnvio = new { diff --git a/AgroBase/AgroBase/Models/MPCControllerAprimorado.cs b/AgroBase/AgroBase/Models/MPCControllerAprimorado.cs index c8da527d6..f4be5fcea 100644 --- a/AgroBase/AgroBase/Models/MPCControllerAprimorado.cs +++ b/AgroBase/AgroBase/Models/MPCControllerAprimorado.cs @@ -24,10 +24,10 @@ public class MPCControllerAprimorado public MPCControllerAprimorado() { - this.maxAnguloDirecao = Variaveis.OperacaoEmAndamento?.Controle?.Angulo_Max ?? 30.0; + this.maxAnguloDirecao = Variaveis.OperacaoEmAndamento.Parametros?.Controle?.DirAnguloMaximo ?? 30.0; this.maxAngulo4Rodas = this.maxAnguloDirecao * 0.8; - this.velocidadeMin = Variaveis.OperacaoEmAndamento?.Controle?.PercentualVelocidadeMin ?? 20.0; - this.velocidadeMax = Variaveis.OperacaoEmAndamento?.Controle?.PercentualVelocidadeMax ?? 100.0; + this.velocidadeMin = Variaveis.OperacaoEmAndamento.Parametros?.Controle?.MovVelocidadeCErvasPercent ?? 20.0; + this.velocidadeMax = Variaveis.OperacaoEmAndamento.Parametros?.Controle?.MovVelocidadeSErvasPercent ?? 100.0; } public (double anguloControle, Enums.TipoMovimentoDirecional modo) CalcularControle(GPSModel posicalAtual, double velocidadeAtual, List proximaTrajetoria, Enums.TipoMovimentoDirecional[] modosPermitidos) diff --git a/AgroBase/AgroBase/Models/MPCControllerSimple.cs b/AgroBase/AgroBase/Models/MPCControllerSimple.cs index 1db001cff..dd7c26600 100644 --- a/AgroBase/AgroBase/Models/MPCControllerSimple.cs +++ b/AgroBase/AgroBase/Models/MPCControllerSimple.cs @@ -28,10 +28,10 @@ public class MPCControllerSimple { // Definições baseadas em variáveis globais this.horizon = Convert.ToInt32(distancePredict / TrajetoriaMapaOperacaoModel.DistanciaEntrePontos); - this.maxSteeringAngle = Variaveis.OperacaoEmAndamento?.Controle?.Angulo_Max ?? 30.0; + this.maxSteeringAngle = Variaveis.OperacaoEmAndamento.Parametros.Controle?.DirAnguloMaximo ?? 30.0; this.maxSteeringAngleFourWheels = this.maxSteeringAngle * 1.0; - this.minVelocity = Variaveis.OperacaoEmAndamento?.Controle?.PercentualVelocidadeMin ?? 20.0; - this.maxVelocity = Variaveis.OperacaoEmAndamento?.Controle?.PercentualVelocidadeMax ?? 100.0; + this.minVelocity = Variaveis.OperacaoEmAndamento.Parametros.Controle?.MovVelocidadeCErvasPercent ?? 20.0; + this.maxVelocity = Variaveis.OperacaoEmAndamento.Parametros.Controle?.MovVelocidadeSErvasPercent ?? 100.0; this.accelerationLimit = 1.5; // Limita aceleração a valores realistas } @@ -52,7 +52,7 @@ public class MPCControllerSimple List<(double steering, Enums.TipoMovimentoDirecional mode)> candidates = GenerateControlCandidates(); double bestCost = double.MaxValue; (double steeringAngle, Enums.TipoMovimentoDirecional mode) bestControl = (0, Enums.TipoMovimentoDirecional.RodasDianteiras); - bool insideStreet = Variaveis.OperacaoEmAndamento.Sensoriamento.Trajetoria.CorredorAtual.Dentro; + bool insideStreet = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Trajetoria.CorredorAtual.Dentro; double velocity = FuncoesMatematicas.CalculaVelocidadeMsPercentual(currentVelocity); double distanciaPasso = dt * velocity; diff --git a/AgroBase/AgroBase/Models/MapaDinamicoModel.cs b/AgroBase/AgroBase/Models/MapaDinamicoModel.cs index 0d2941126..2142ae907 100644 --- a/AgroBase/AgroBase/Models/MapaDinamicoModel.cs +++ b/AgroBase/AgroBase/Models/MapaDinamicoModel.cs @@ -666,7 +666,7 @@ namespace AgroBase.Models private void DrawObstacle(Graphics g, float xRobot, float yRobot, Color pointColor, Color borderColor, float angle, Obstaculo obstaculo, float PxToCm) { - GPSModel posicaoRobo = Variaveis.OperacaoEmAndamento.Sensoriamento.Gps; + GPSModel posicaoRobo = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Gps; GPSModel posicaoObstaculo = GPSUtils.GerarPontoDeslocado(posicaoRobo, angle, obstaculo.DistanciaMedia_mm / 1000); float x = xRobot + (float)((posicaoObstaculo.Longitude - posicaoRobo.Longitude) * _zoom); diff --git a/AgroBase/AgroBase/Models/MapasModel.cs b/AgroBase/AgroBase/Models/MapasModel.cs index 2b6a7b589..77c6fff94 100644 --- a/AgroBase/AgroBase/Models/MapasModel.cs +++ b/AgroBase/AgroBase/Models/MapasModel.cs @@ -157,66 +157,66 @@ namespace AgroBase.Models } } - public void PopularTrajetoriaMapa() + public void PopularTrajetoriaMapa(MapaFeatureCollectionModel dados = null) { - if (mapaService.DadosMapa != null) + if (dados != null) mapaService.DadosMapa = dados; + if (mapaService.DadosMapa == null) return; + + double OrientacaoRuas = -999; + //DistanciaTotal = 0; + /*if (!RuasPercorrer.Any()) { - double OrientacaoRuas = -999; - //DistanciaTotal = 0; - /*if (!RuasPercorrer.Any()) - { - RuasPercorrer = mapaService.DadosMapa.features.Select(x => x.geometry.id).ToList(); - }*/ - TrajetoriaMapa = new List>(); + RuasPercorrer = mapaService.DadosMapa.features.Select(x => x.geometry.id).ToList(); + }*/ + TrajetoriaMapa = new List>(); - foreach (var ID in RuasPercorrer) + foreach (var ID in RuasPercorrer) + { + var rua = mapaService.DadosMapa.features.FirstOrDefault(x => ID == x.geometry.id); + if (rua != null) { - var rua = mapaService.DadosMapa.features.FirstOrDefault(x => ID == x.geometry.id); - if (rua != null) + TrajetoriaMapa.Add(new List()); + foreach (var ponto in rua.geometry.coordinates) { - TrajetoriaMapa.Add(new List()); - foreach (var ponto in rua.geometry.coordinates) + /*if (rua.geometry.coordinates.IndexOf(ponto) == 0 || rua.geometry.coordinates.IndexOf(ponto) == rua.geometry.coordinates.Count - 1) { - /*if (rua.geometry.coordinates.IndexOf(ponto) == 0 || rua.geometry.coordinates.IndexOf(ponto) == rua.geometry.coordinates.Count - 1) - { - continue; - }*/ + continue; + }*/ - GPSModel item = new GPSModel() - { - Longitude = ponto[0], - Latitude = ponto[1], - }; - TrajetoriaMapa[TrajetoriaMapa.Count - 1].Add(item); - /*if (Trajetoria[Trajetoria.Count - 1].Count > 1) - { - DistanciaTotal += GPSService.DistanciaEntrePontos(Trajetoria[Trajetoria.Count - 1][Trajetoria[Trajetoria.Count - 1].Count - 2], item); - }*/ - } + GPSModel item = new GPSModel() + { + Longitude = ponto[0], + Latitude = ponto[1], + }; + TrajetoriaMapa[TrajetoriaMapa.Count - 1].Add(item); + /*if (Trajetoria[Trajetoria.Count - 1].Count > 1) + { + DistanciaTotal += GPSService.DistanciaEntrePontos(Trajetoria[Trajetoria.Count - 1][Trajetoria[Trajetoria.Count - 1].Count - 2], item); + }*/ + } - var Rua = TrajetoriaMapa[TrajetoriaMapa.Count - 1]; - if (OrientacaoRuas == -999) + var Rua = TrajetoriaMapa[TrajetoriaMapa.Count - 1]; + if (OrientacaoRuas == -999) + { + OrientacaoRuas = GPSUtils.CalcularOrientacao(Rua[Rua.Count - 1], Rua[Rua.Count - 2]); + } + else + { + double MargemErroAngulo = 45; + double orientacaoRua = GPSUtils.CalcularOrientacao(Rua[Rua.Count - 1], Rua[Rua.Count - 2]); + double anguloOposto = (orientacaoRua + 180) % 360; + if ((anguloOposto + MargemErroAngulo) >= OrientacaoRuas && (anguloOposto - MargemErroAngulo) <= OrientacaoRuas) { - OrientacaoRuas = GPSUtils.CalcularOrientacao(Rua[Rua.Count - 1], Rua[Rua.Count - 2]); - } - else - { - double MargemErroAngulo = 45; - double orientacaoRua = GPSUtils.CalcularOrientacao(Rua[Rua.Count - 1], Rua[Rua.Count - 2]); - double anguloOposto = (orientacaoRua + 180) % 360; - if ((anguloOposto + MargemErroAngulo) >= OrientacaoRuas && (anguloOposto - MargemErroAngulo) <= OrientacaoRuas) - { - Rua.Reverse(); - } + Rua.Reverse(); } } } + } - if (TrajetoriaMapa.Any()) - { - Variaveis.OperacaoEmAndamento.Trajetoria = new TrajetoriaMapaOperacaoModel(TrajetoriaMapa); - Variaveis.OperacaoEmAndamento.Trajetoria.ProjetarTrajetoriaFixa(); - } + if (TrajetoriaMapa.Any()) + { + Variaveis.OperacaoEmAndamento.Trajetoria = new TrajetoriaMapaOperacaoModel(TrajetoriaMapa); + Variaveis.OperacaoEmAndamento.Trajetoria.ProjetarTrajetoriaFixa(); } } diff --git a/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs b/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs index e543e64d8..7f62f0be4 100644 --- a/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs +++ b/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs @@ -55,7 +55,7 @@ namespace AgroBase.Models.Modules FuncoesPinout.SDA, FuncoesPinout.SCL, }; - public int QuantidadeBicos { get; set; } = 4; + //public int QuantidadeBicos { get; set; } = 4; public double DensidadeHerbicida { get; set; } = 1.0; public List BicosPulverizadores { get; set; } = new List(); public List BombasPressurizadoras { get; set; } = new List(); @@ -90,7 +90,7 @@ namespace AgroBase.Models.Modules { get { - return VolumeReservatorio / Variaveis.OperacaoEmAndamento.CapacidadeReservatorio * 100.0; + return VolumeReservatorio / Variaveis.OperacaoEmAndamento.Parametros.CapacidadeReservatorio * 100.0; } } #endregion @@ -140,7 +140,7 @@ namespace AgroBase.Models.Modules } public void AtualizaPercentualErvas() { - double tempoTotalOperacao = Variaveis.OperacaoEmAndamento.Sensoriamento.TempoDecorridoSeg * 1000.0; + double tempoTotalOperacao = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.TempoDecorridoSeg * 1000.0; if (tempoTotalOperacao > 0) { @@ -225,7 +225,6 @@ namespace AgroBase.Models.Modules _EnderecoCAN_Rx = 0x12, _TaxaAmostragem = 1000, RequisitarDados = true, - QuantidadeBicos = 4, BicosPulverizadores = new List(), BombasPressurizadoras = new List() { @@ -422,7 +421,7 @@ namespace AgroBase.Models.Modules }, }, }; - for (int i = 0; i < Atuador.QuantidadeBicos; i++) + for (int i = 0; i < Variaveis.OperacaoEmAndamento.Parametros.QtdBicos; i++) { int posicao = (i + 1); Atuador.BicosPulverizadores.Add(new AtuadorBicoModel() @@ -779,7 +778,7 @@ namespace AgroBase.Models.Modules bomba.ComandoAtuar = false; } // Religa a bomba caso esteja desligada, o nivel de herbicida esta estavel e o pulverizador automatico esta ligado - else if (PercentualReservatorio >= VariaveisEquipamento.PercentualReservatorioMin && leituraEstado == false && Variaveis.OperacaoEmAndamento.Controle.PulverizadorAutomatico) + else if (PercentualReservatorio >= VariaveisEquipamento.PercentualReservatorioMin && leituraEstado == false && Variaveis.OperacaoEmAndamento.Parametros.Controle.PulverizadorAutomatico) { bomba.ComandoAtuar = true; } @@ -1077,7 +1076,7 @@ namespace AgroBase.Models.Modules { (byte)Componente, (byte)(conectar ? 1 : 0), - (byte)Variaveis.OperacaoEmAndamento.Controle.PressaoLinha, + (byte)Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha, (byte)(pinout.Pinos.FirstOrDefault(x => x.ComponenteID == ID && x.Funcao == FuncoesPinout.ENA)?.Pino ?? PinoutUtils.PINO_INVALIDO), (byte)(pinout.Pinos.FirstOrDefault(x => x.Funcao == FuncoesPinout.CS)?.Pino ?? PinoutUtils.PINO_INVALIDO), }; @@ -1105,12 +1104,12 @@ namespace AgroBase.Models.Modules new byte[] { (byte)(ComandoAtuar ? Estado.Ligado : Estado.Desligado), - (byte)(Variaveis.OperacaoEmAndamento.Controle.PressaoLinha) + (byte)(Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha) } ); } - public bool AtingiuPressao() => Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha >= Variaveis.OperacaoEmAndamento.Controle.PressaoLinha; + public bool AtingiuPressao() => Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha >= Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha; } diff --git a/AgroBase/AgroBase/Models/Modules/DirecionalModel.cs b/AgroBase/AgroBase/Models/Modules/DirecionalModel.cs index 6f11bff91..dbc3e715e 100644 --- a/AgroBase/AgroBase/Models/Modules/DirecionalModel.cs +++ b/AgroBase/AgroBase/Models/Modules/DirecionalModel.cs @@ -29,7 +29,7 @@ namespace AgroBase.Models.Modules { get { - return Convert.ToInt32(((Variaveis.OperacaoEmAndamento.Controle?.VelocidadeMP ?? 0) / 100.0) * Velocidade_Max); + return Convert.ToInt32(((Variaveis.OperacaoEmAndamento.Parametros?.Controle?.DirVelocidadeMovimento ?? 0) / 100.0) * Velocidade_Max); } } diff --git a/AgroBase/AgroBase/Models/Modules/MovimentacaoModel.cs b/AgroBase/AgroBase/Models/Modules/MovimentacaoModel.cs index b6b5a8e0a..35b070fb3 100644 --- a/AgroBase/AgroBase/Models/Modules/MovimentacaoModel.cs +++ b/AgroBase/AgroBase/Models/Modules/MovimentacaoModel.cs @@ -489,7 +489,7 @@ namespace AgroBase.Models.Modules } private double VelocidadeAtual => - FuncoesMatematicas.CalculaVelocidadePercentualMs(Variaveis.OperacaoEmAndamento.Sensoriamento.Movimentacao?.VelocidadeMedia ?? 0); + FuncoesMatematicas.CalculaVelocidadePercentualMs(Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura?.Movimentacao?.VelocidadeMedia ?? 0); private bool StatusControleEmFreio => (Variaveis.OperacaoEmAndamento.Controle?.TiposControle? diff --git a/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs b/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs index 6e566e3ab..08c7a4641 100644 --- a/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs +++ b/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs @@ -7,7 +7,6 @@ using static AgroBase.Models.Enums; using System.Globalization; using System.Data; using static AgroBase.Services.LoRaEspService; -using System.Windows.Forms; using AgroBase.Services.Operadores; using AgroBase.Models.Operadores; using System.Diagnostics; @@ -1689,7 +1688,7 @@ namespace AgroBase.Models.Modules }, }; - for (int i = 0; i < Variaveis.OperacaoEmAndamento.QuantidadeCamerasSolo; i++) + for (int i = 0; i < Variaveis.OperacaoEmAndamento.Parametros.QtdCamerasSolo; i++) { obj.CamerasSolo.Add(new OAKCameraModel()); } @@ -2025,7 +2024,7 @@ namespace AgroBase.Models.Modules GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, ledOP.ID, comportamento); } - var statusLedAt = Variaveis.OperacaoEmAndamento.Controle.MovimentoAutomatico ? StatusLED.Aceso : StatusLED.Apagado; + var statusLedAt = Variaveis.OperacaoEmAndamento.Parametros.Controle.MovimentoAutomatico ? StatusLED.Aceso : StatusLED.Apagado; var valAt = (int?)(ledAT?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.StatusLEDComando)?.atual?.valor) ?? 0; if (ledAT != null && (!ledAT.Comportamento.statusLED.Equals(statusLedAt) || (valAt != (int)statusLedAt))) { @@ -2931,7 +2930,7 @@ namespace AgroBase.Models.Modules { case DadosLoRaParse.ComandoControle: { - Keys tecla = (Keys)data[2]; + BotoesJoystick tecla = (BotoesJoystick)data[2]; int percentualVelocidadeSp = data[3]; TipoMovimentoDirecional tipoMovimentoDirecional = (TipoMovimentoDirecional)data[4]; int anguloMp = data[5]; @@ -2939,15 +2938,17 @@ namespace AgroBase.Models.Modules T_Code dispositivo = (T_Code)data[6]; bool emergencia = data[7] == 1; - OperacaoControleBaseModel Controle = new OperacaoControleBaseModel() + OperacaoComandoBaseModel Controle = new OperacaoComandoBaseModel() { Momento = DateTime.Now, Tecla = tecla, - AnguloMP = anguloMp, + Controle = new OperacaoComandoBaseControleModel() + { + AnguloSP = anguloMp, + PercentualVelocidadeSP = percentualVelocidadeSp, + TipoMovimentoDirecional = tipoMovimentoDirecional, + }, Emergencia = emergencia, - PercentualVelocidadeSP = percentualVelocidadeSp, - TipoMovimento = tipoMovimentoDirecional, - //VelocidadeMP = velocidadeMp, Dispositivo = dispositivo }; Variaveis.OperacaoEmAndamento.ExecutaComandoDaBase(Controle); diff --git a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs index ebb7a16b4..5c3eae07a 100644 --- a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs +++ b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs @@ -55,7 +55,8 @@ namespace AgroBase.Models public MapasModel Mapa { get; set; } = new MapasModel(); public TrajetoriaMapaOperacaoModel Trajetoria { get; set; } public List GPSTrajetoria { get; set; } = new List(); - public OperacaoSensoriamentoLogModel Sensoriamento { get; set; } = new OperacaoSensoriamentoLogModel(); + public OperacaoParametrosModel Parametros { get; set; } = new OperacaoParametrosModel(); + //public OperacaoSensoriamentoLogModel Sensoriamento { get; set; } = new OperacaoSensoriamentoLogModel(); public PerformanceModel DadosPerformance { get; set; } = new PerformanceModel(); public Form frmOperacao { get; set; } @@ -116,10 +117,8 @@ namespace AgroBase.Models public Dictionary> ModsCalibragem { get; set; } = new Dictionary>(); - public List ModulosMandatorios { get; set; } = new List(); - public List ParametrosMandatorios { get; set; } = new List(); - public double CapacidadeReservatorio { get; set; } = 30; - public int QuantidadeCamerasSolo { get; set; } = 1; + //public List ModulosMandatorios { get; set; } = new List(); + //public List ParametrosMandatorios { get; set; } = new List(); public int TempoIniciarOperacao { get; set; } = 30; public string ID { get; set; } public double tmrLogsInterval @@ -176,7 +175,7 @@ namespace AgroBase.Models return false; } - if (Variaveis.OperacaoEmAndamento.ParametrosMandatorios.Any(x => x.Parametro == ParametrosOperacao.Mapa && x.Mandatorio) && string.IsNullOrEmpty(Variaveis.OperacaoEmAndamento.Mapa?.mapaService?.CaminhoMapa) && !(Variaveis.OperacaoEmAndamento.Mapa?.RuasPercorrer ?? new List()).Any()) + if (Variaveis.OperacaoEmAndamento.Parametros.ParametrosMandatorios.Any(x => x.Parametro == ParametrosOperacao.Mapa && x.Mandatorio) && string.IsNullOrEmpty(Variaveis.OperacaoEmAndamento.Mapa?.mapaService?.CaminhoMapa) && !(Variaveis.OperacaoEmAndamento.Mapa?.RuasPercorrer ?? new List()).Any()) { MessageBox.Show("Selecione o mapa da operação e selecione as ruas a serem percorridas!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Warning); return false; @@ -186,26 +185,32 @@ namespace AgroBase.Models { Modo = Variaveis.OperacaoEmAndamento.Modo, Descricao = descricao, - AtuCapacidadeReservatorio = capacidadeReservatorio, - AtuDuracaoAtuacao = duracaoAtuacao, - AtuPercentualDeteccaoVertical = percentualAtuacao, - AtuPressaoLinha = pressaoLinha, - DirAnguloMaximo = anguloMaximo, - DirVelocidadeMovimento = velocidadeMovimento, - DirTipoMovimento = tipoControleDirecional, - MovVelocidadeCErvasPercent = velocidadeCervasPercent, - MovVelocidadeSErvasPercent = velocidadeServasPercent, - ModulosMandatorios = new List(Variaveis.OperacaoEmAndamento.ModulosMandatorios), - ParametrosMandatorios = new List(Variaveis.OperacaoEmAndamento.ParametrosMandatorios), - Mapa = Variaveis.OperacaoEmAndamento.Mapa, - ConfiguracaoUltrassom = ConfigUltrassom, - SonarAtivado = sonarAtivado, + CapacidadeReservatorio = capacidadeReservatorio, + Controle = new OperacaoParametrosControleModel() + { + SonarAtivado = sonarAtivado, + MovimentoAutomatico = movimentoAutomatico, + PulverizadorAutomatico = pulverizadorAutomatico, + FrenagemAutomatica = frenagemAutomatica, + AtuDuracaoAtuacao = duracaoAtuacao, + AtuPercentualInicioPulverizacao = percentualAtuacao, + AtuPressaoLinha = pressaoLinha, + DirAnguloMaximo = anguloMaximo, + DirVelocidadeMovimento = velocidadeMovimento, + DirTipoMovimento = tipoControleDirecional, + MovVelocidadeCErvasPercent = velocidadeCervasPercent, + MovVelocidadeSErvasPercent = velocidadeServasPercent, + }, + + ModulosMandatorios = new List(Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios), + ParametrosMandatorios = new List(Variaveis.OperacaoEmAndamento.Parametros.ParametrosMandatorios), + //Mapa = Variaveis.OperacaoEmAndamento.Mapa, + //ConfiguracaoUltrassom = ConfigUltrassom, + QtdCamerasSolo = qtdCamerasSolo, - MovimentoAutomatico = movimentoAutomatico, - PulverizadorAutomatico = pulverizadorAutomatico, - FrenagemAtuomatica = frenagemAutomatica + }; - Parametros.Mapa.LimparDados(true); + //Parametros.Mapa.LimparDados(true); string ParametrosJson = JsonConvert.SerializeObject(Parametros, Formatting.None); SaveFileDialog saveFileDialog = new SaveFileDialog(); @@ -247,63 +252,34 @@ namespace AgroBase.Models CarregarParametrosOperacaoPadrao(Parametros.Modo); - OperacaoControleModel controle = new OperacaoControleModel() - { - RPM_Max = (int)(VariaveisEquipamento.RPM_Max_Roda * (Parametros.MovVelocidadeSErvasPercent / 100.0)), - RPM_Min = (int)(VariaveisEquipamento.RPM_Max_Roda * (Parametros.MovVelocidadeCErvasPercent / 100.0)), - Angulo_Max = Parametros.DirAnguloMaximo, - Angulo_Min = Parametros.DirAnguloMaximo * -1, - VelocidadeMP = Parametros.DirVelocidadeMovimento, - TempoAtuacao = Parametros.AtuDuracaoAtuacao, - PercentualInicioPulverizacao = Parametros.AtuPercentualDeteccaoVertical / 100.0, - PressaoLinha = Parametros.AtuPressaoLinha, - Angulo = 0, - Direcao = Direcao.Parado, - PercentualVelocidadeSP = 0, - TiposControle = new List(Variaveis.OperacaoEmAndamento.Controle.TiposControle), - SonarAtivado = Parametros.SonarAtivado, - TipoControleDirecional = Parametros.DirTipoMovimento, - PulverizadorAutomatico = Parametros.PulverizadorAutomatico, - MovimentoAutomatico = Parametros.MovimentoAutomatico, - FrenagemAutomatica = Parametros.FrenagemAtuomatica, - TipoMovimento = Variaveis.OperacaoEmAndamento.Controle.TipoMovimento, - heartbeat = 0, - SimulacaoMPC = new List(), - BicosAtuados = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores?.Select(x => x.Clone())?.ToList() ?? new List(), - ticks_sem_resposta = DateTime.MinValue, - }; + Variaveis.OperacaoEmAndamento.Parametros = Parametros; Variaveis.OperacaoEmAndamento.Descricao = Parametros.Descricao; Variaveis.OperacaoEmAndamento.OprPath = opr_path; - Variaveis.OperacaoEmAndamento.QuantidadeCamerasSolo = Parametros.QtdCamerasSolo; - Variaveis.OperacaoEmAndamento.ModulosMandatorios = new List(Parametros.ModulosMandatorios ?? new List()); - Variaveis.OperacaoEmAndamento.ParametrosMandatorios = new List(Parametros.ParametrosMandatorios ?? new List()); - Variaveis.OperacaoEmAndamento.CapacidadeReservatorio = Parametros.AtuCapacidadeReservatorio; - Variaveis.OperacaoEmAndamento.Controle = controle; if (Variaveis.OperacaoEmAndamento.DispSen == null) { Variaveis.OperacaoEmAndamento.DispSen = new DispositivosService(); } - Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom = Parametros.ConfiguracaoUltrassom; + //Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom = Parametros.ConfiguracaoUltrassom; List ruasSelecionadas = new List(); - if (Parametros.Mapa.mapaService.DadosMapa != null) - { - ruasSelecionadas = Parametros.Mapa.RuasPercorrer.ToList(); - string geoJson = JsonConvert.SerializeObject(Parametros.Mapa.mapaService.DadosMapa, Formatting.None); - File.WriteAllText(path, geoJson, Encoding.UTF8); - Variaveis.OperacaoEmAndamento.Mapa = Parametros.Mapa; - - /*Panel pnlMapa = FuncoesGlobais.FindControlRecursive(Variaveis.OperacaoEmAndamento.frmOperacao, "pnlMapa"); - Label lblMapa = FuncoesGlobais.FindControlRecursive