diff --git a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs index 4f62e18ad..b143e58ec 100644 --- a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs +++ b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs @@ -1702,8 +1702,8 @@ namespace AgroBase.Models var cmdRover = GeneralJoystick.DeParaComandos.FirstOrDefault(x => x.botaoJoy == controleBase.Tecla); - if (cmdRover?.Dispositivo == T_Code.Mov && Variaveis.OperacaoEmAndamento.Parametros.Controle.MovimentoAutomatico && Variaveis.OperacaoEmAndamento.Iniciado) return; - if (cmdRover?.Dispositivo == T_Code.Dir && Variaveis.OperacaoEmAndamento.Parametros.Controle.DirecionalAutomatico && Variaveis.OperacaoEmAndamento.Iniciado) return; + if (cmdRover?.Dispositivo == T_Code.Mov && (Variaveis.OperacaoEmAndamento.Parametros?.Controle?.MovimentoAutomatico ?? false) && Variaveis.OperacaoEmAndamento.Iniciado) return; + if (cmdRover?.Dispositivo == T_Code.Dir && (Variaveis.OperacaoEmAndamento.Parametros?.Controle?.DirecionalAutomatico ?? false) && Variaveis.OperacaoEmAndamento.Iniciado) return; var _Controle = Variaveis.OperacaoEmAndamento.Controle; if (controleBase.Controle.PercentualVelocidadeSP != null) _Controle.PercentualVelocidadeSP = (double)controleBase.Controle.PercentualVelocidadeSP; @@ -1716,10 +1716,10 @@ namespace AgroBase.Models switch (cmdRover?.Dispositivo) { case T_Code.Mov: - GeneralJoystick.ProcessarDadosControle(cmdRover.botaoJoy, controleBase.Solto, valorDesejado: _Controle.PercentualVelocidadeSP); + GeneralJoystick.ProcessarDadosControle(cmdRover.botaoJoy, controleBase.Solto, valorDesejado: _Controle.PercentualVelocidadeSP, ForcarComando: true); break; case T_Code.Dir: - GeneralJoystick.ProcessarDadosControle(cmdRover.botaoJoy, controleBase.Solto, valorDesejado: _Controle.Angulo); + GeneralJoystick.ProcessarDadosControle(cmdRover.botaoJoy, controleBase.Solto, valorDesejado: _Controle.Angulo, ForcarComando: true); break; } } diff --git a/AgroBase/AgroBase/Services/GPSService.cs b/AgroBase/AgroBase/Services/GPSService.cs index ae9976b14..f37763126 100644 --- a/AgroBase/AgroBase/Services/GPSService.cs +++ b/AgroBase/AgroBase/Services/GPSService.cs @@ -1214,7 +1214,7 @@ namespace AgroBase.Services double headingDeg, // OrientacaoReal (antena/corpo) double angMovDeg, // OrientacaoMovimento (calculada acima) double distLinearJanela, // UltimaLeitura.Distancia (Δpos linear entre 1ª e última amostra) - double velPercent = 0.0, // se tiver velocidade filtrada, passe aqui; senão 0 + double velPercent = 0.0, // se tiver velocidade filtrada, passe aqui; senão 0 bool rtkFix = true, // se tiver essa info double angFundidoAnterior = double.NaN, // para low-pass; passe double.NaN para desabilitar double alfaLowPass = 0.25 // 0→sem low-pass; 0.2–0.35 costuma ser bom diff --git a/AgroBase/OperationControl/Services/ManualControlSender.cs b/AgroBase/OperationControl/Services/ManualControlSender.cs index f3f9ffbd4..4494b59cb 100644 --- a/AgroBase/OperationControl/Services/ManualControlSender.cs +++ b/AgroBase/OperationControl/Services/ManualControlSender.cs @@ -147,7 +147,7 @@ public sealed class ManualControlSender : IDisposable } private static bool IsNeutral(UdpCtrlMessage msg) - => msg.Key == AgroBase.Models.Enums.BotoesJoystick.Vazio; + => msg.Key == AgroBase.Models.Enums.BotoesJoystick.Vazio || msg.released; private UdpCtrlMessage BuildStopMsg() { @@ -156,6 +156,7 @@ public sealed class ManualControlSender : IDisposable Device = _device, Flags = UdpCtrlFlags.HasKey | UdpCtrlFlags.HasPayload, Key = AgroBase.Models.Enums.BotoesJoystick.Vazio, + released = false, P1 = 0, P2 = 0 }; @@ -169,4 +170,5 @@ public sealed class ManualControlSender : IDisposable _cts = null; _loop = null; } + } \ No newline at end of file diff --git a/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/Diagnostico/DiagnosticoViewModel.cs b/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/Diagnostico/DiagnosticoViewModel.cs index e784a1fe1..0c038ddbb 100644 --- a/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/Diagnostico/DiagnosticoViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/Diagnostico/DiagnosticoViewModel.cs @@ -140,30 +140,35 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento.Diagnostico // ATUADOR / SISTEMA DE PULVERIZAÇÃO // ============================= + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_BMBAGT", Modulo = T_Code.Atu, LabelModulo = "BMBAGT", SCode = S_Code.sBMB, TextoBase = "AGIT", Left = 315, Top = 570 }); DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_PRSLN", Modulo = T_Code.Atu, LabelModulo = "PRSLN", SCode = S_Code.sPRS, TextoBase = "PRS", Left = 230, Top = 610 }); DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU", Modulo = T_Code.Atu, LabelModulo = "", SCode = S_Code.sMOD, TextoBase = "ATU", Left = 315, Top = 610 }); DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_FLXLN", Modulo = T_Code.Atu, LabelModulo = "FLXLN", SCode = S_Code.sFLX, TextoBase = "FLX", Left = 400, Top = 610 }); - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_BOMBA", Modulo = T_Code.Atu, LabelModulo = "BOMBA", SCode = S_Code.sBMB, TextoBase = "BMB", Left = 230, Top = 650 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_BMBLN", Modulo = T_Code.Atu, LabelModulo = "BOMBA", SCode = S_Code.sBMB, TextoBase = "BMB", Left = 230, Top = 650 }); DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MASRS", Modulo = T_Code.Atu, LabelModulo = "MASRS", SCode = S_Code.sMAS, TextoBase = "MAS", Left = 400, Top = 650 }); DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "CAM", Modulo = T_Code.Cam, LabelModulo = "", SCode = S_Code.sVZO, TextoBase = "CAM", Left = 315, Top = 650 }); + // ============================= + // SENSORES BARRA PULVERIZADORA + // ============================= + + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGESQ", Modulo = T_Code.Atu, LabelModulo = "MAGESQ", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 165, Top = 705 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGALT", Modulo = T_Code.Atu, LabelModulo = "MAGALT", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 315, Top = 705 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGDIR", Modulo = T_Code.Atu, LabelModulo = "MAGDIR", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 465, Top = 705 }); + // ============================= // BICOS // ============================= - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_SRVB1", Modulo = T_Code.Atu, LabelModulo = "SRVB1", SCode = S_Code.sSRV, TextoBase = "SVB1", Left = 110, Top = 705 }); - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B01", Modulo = T_Code.Atu, LabelModulo = "B01", SCode = S_Code.sBIC, TextoBase = "B01", Left = 110, Top = 745 }); - - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGESQ", Modulo = T_Code.Atu, LabelModulo = "MAGESQ", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 215, Top = 730 }); - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGALT", Modulo = T_Code.Atu, LabelModulo = "MAGALT", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 315, Top = 705 }); - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGDIR", Modulo = T_Code.Atu, LabelModulo = "MAGDIR", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 415, Top = 730 }); - - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B02", Modulo = T_Code.Atu, LabelModulo = "B02", SCode = S_Code.sBIC, TextoBase = "B02", Left = 315, Top = 745 }); - - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_SRVB3", Modulo = T_Code.Atu, LabelModulo = "SRVB3", SCode = S_Code.sSRV, TextoBase = "SVB3", Left = 520, Top = 705 }); - DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B03", Modulo = T_Code.Atu, LabelModulo = "B03", SCode = S_Code.sBIC, TextoBase = "B03", Left = 520, Top = 745 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B01", Modulo = T_Code.Atu, LabelModulo = "B01", SCode = S_Code.sBIC, TextoBase = "B01", Left = 90, Top = 745 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B02", Modulo = T_Code.Atu, LabelModulo = "B02", SCode = S_Code.sBIC, TextoBase = "B02", Left = 165, Top = 745 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B03", Modulo = T_Code.Atu, LabelModulo = "B03", SCode = S_Code.sBIC, TextoBase = "B03", Left = 240, Top = 745 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B04", Modulo = T_Code.Atu, LabelModulo = "B04", SCode = S_Code.sBIC, TextoBase = "B04", Left = 315, Top = 745 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B05", Modulo = T_Code.Atu, LabelModulo = "B05", SCode = S_Code.sBIC, TextoBase = "B05", Left = 390, Top = 745 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B06", Modulo = T_Code.Atu, LabelModulo = "B06", SCode = S_Code.sBIC, TextoBase = "B06", Left = 465, Top = 745 }); + DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B07", Modulo = T_Code.Atu, LabelModulo = "B07", SCode = S_Code.sBIC, TextoBase = "B07", Left = 540, Top = 745 }); } @@ -586,6 +591,14 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento.Diagnostico { mod.Mandatorio = MandatorioSelecionado; mod.Utilizar = EmUsoSelecionado; + if (mod.ComponentesEmUso != null) + { + var chaves = mod.ComponentesEmUso.Keys.ToList(); + foreach (var key in chaves) + { + mod.ComponentesEmUso[key] = (MandatorioSelecionado, EmUsoSelecionado); + } + } } else { diff --git a/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/MonitoramentoViewModel.cs b/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/MonitoramentoViewModel.cs index 1f6a12922..05a0db0b4 100644 --- a/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/MonitoramentoViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Views/Operacao/Monitoramento/MonitoramentoViewModel.cs @@ -160,9 +160,9 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento Task.Run(async () => { await VariaveisControleOperacao.EnviarComandoParadaUDP(pausa: true); - await Task.Delay(500); + await Task.Delay(2000); VariaveisControleOperacao.EnviarComandoRetornoBase(lat, lon); - await Task.Delay(1000); + await Task.Delay(2000); await VariaveisControleOperacao.EnviarComandoParadaUDP(pausa: false); }); diff --git a/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoLeftViewModel.cs b/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoLeftViewModel.cs index ffb6272a6..ad97b1c8f 100644 --- a/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoLeftViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoLeftViewModel.cs @@ -342,9 +342,9 @@ namespace OperationControl.ViewModels.Views.Operacao if ((dadosRover?.Operacao?.Status ?? StatusOperacao.NaoIniciado) == StatusOperacao.Concluido) { VariaveisControleOperacao.EnviarComandoIniciarOperacao(false, false); - await Task.Delay(500); + await Task.Delay(2000); } - bool simulador = VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Gnss?.Iniciado != true; + bool simulador = AppShell.Mock || AppShell.AddRover; // || VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Gnss?.Iniciado != true; VariaveisControleOperacao.EnviarComandoIniciarOperacao(true, simulador); await Task.Delay(1000); if (!(dadosRover?.Operacao?.Liberada ?? false))