From 286e5a62c4d3410a1099c1e6e4ef4238f2629ae3 Mon Sep 17 00:00:00 2001 From: Diego Freitas Date: Mon, 16 Mar 2026 16:22:06 -0300 Subject: [PATCH] Ajustes camera e carregamento de parametros operacao padrao --- AgroBase/AgroBase/Forms/IHM/frmIHM.cs | 2 +- AgroBase/AgroBase/Forms/frmPrincipal.cs | 2 +- .../Models/Operacoes/OperacaoModel.cs | 911 +++++++++--------- AgroBase/AgroBase/Services/SerialService.cs | 2 +- .../workers/weed_worker/camera_manager.py | 22 +- AgroBase/OperationControl/Models/Variaveis.cs | 2 +- .../Views/Operacao/OperacaoRightViewModel.cs | 68 +- .../ViewModels/Windows/DockWindowViewModel.cs | 27 +- .../Views/Operacao/OperacaoRightView.xaml | 4 + .../Views/Operacao/OperacaoRightView.xaml.cs | 9 + 10 files changed, 529 insertions(+), 520 deletions(-) diff --git a/AgroBase/AgroBase/Forms/IHM/frmIHM.cs b/AgroBase/AgroBase/Forms/IHM/frmIHM.cs index 813a3c352..218738ce8 100644 --- a/AgroBase/AgroBase/Forms/IHM/frmIHM.cs +++ b/AgroBase/AgroBase/Forms/IHM/frmIHM.cs @@ -44,7 +44,7 @@ namespace AgroBase.Forms.IHM }); FuncoesGlobais.DefinirEventosPicBtn(picManual, "Erro ao carregar modo de controle manual!", async () => { - OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.Manual); + OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.Manual, true); if (Variaveis.OperacaoEmAndamento.OperacaoLiberada) { frmDialogoMapa frm = new frmDialogoMapa(); diff --git a/AgroBase/AgroBase/Forms/frmPrincipal.cs b/AgroBase/AgroBase/Forms/frmPrincipal.cs index 75f154f8d..de0d052ff 100644 --- a/AgroBase/AgroBase/Forms/frmPrincipal.cs +++ b/AgroBase/AgroBase/Forms/frmPrincipal.cs @@ -206,7 +206,7 @@ namespace AgroBase private void cmbModoOperacao_SelectedIndexChanged(object sender, EventArgs e) { - OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModoOperacao.SelectedIndex); + OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModoOperacao.SelectedIndex, true); } private void btnIniciarOperacao_Click(object sender, EventArgs e) diff --git a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs index 2cf5a2365..76d6ac67b 100644 --- a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs +++ b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs @@ -291,7 +291,7 @@ namespace AgroBase.Models if (Parametros.Modo == null) return (false, new List()); - CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo); + CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo, true); Variaveis.OperacaoEmAndamento.Parametros = Parametros; @@ -333,521 +333,512 @@ namespace AgroBase.Models } - public static void CarregarParametrosOperacaoPadrao(ModoOperacao Modo) + public static OperacaoParametrosModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo, bool isagrobase) { - var SenConectado = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Sen); - var AtuConectado = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Atu); - var MvdConectado = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd); - - tmrLogs?.Stop(); - - Variaveis.OperacaoEmAndamento = new OperacaoModel(Modo) + OperacaoParametrosModel p = new OperacaoParametrosModel() { - Iniciado = false, - DataInicio = DateTime.MinValue, - DataFim = DateTime.MinValue, - DispAtu = AtuConectado, - DispSen = SenConectado, - DispMvd = MvdConectado, + Modo = Modo, + QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo, + QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores, + CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio, + RoverId = VariaveisEquipamento.Parametros.serial_number, + RuasPercorrer = null, + Mapa = null, + DadosLeitura = new OperacaoParametrosDadosModel(), }; + if (isagrobase) + { + var SenConectado = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Sen); + var AtuConectado = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Atu); + var MvdConectado = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd); + tmrLogs?.Stop(); + Variaveis.OperacaoEmAndamento = new OperacaoModel(Modo) + { + Iniciado = false, + DataInicio = DateTime.MinValue, + DataFim = DateTime.MinValue, + DispAtu = AtuConectado, + DispSen = SenConectado, + DispMvd = MvdConectado, + }; + } + switch (Modo) { case ModoOperacao.Manual: - Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() + p.Controle = new OperacaoParametrosControleModel() { - Modo = Modo, - QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo, - QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores, - CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio, - RoverId = VariaveisEquipamento.Parametros.serial_number, - RuasPercorrer = null, - Mapa = null, - Controle = new OperacaoParametrosControleModel() - { - MovimentoAutomatico = false, - DirecionalAutomatico = false, - PulverizadorAutomatico = false, - FrenagemAutomaticaAoParar = true, - MovVelocidadeSErvasPercent = 100, - MovVelocidadeCErvasPercent = 15, - DirAnguloMaximo = 25, - DirVelocidadeMovimento = 40, - SonarAtivado = false, - DirTipoMovimento = TiposControladorDirecional.Manual, + RegistrarDadosPosProcessamento = false, - AtuAlturaAreaPulverizacao = 10, - AtuDuracaoAtuacao = 200, - AtuPercentualErvasBicoOff = 2, - AtuPercentualErvasBicoOn = 1, - AtuPercentualInicioPulverizacao = 70, - AtuPressaoLinha = 85, - }, - ModulosMandatorios = new List() + MovimentoAutomatico = false, + DirecionalAutomatico = false, + PulverizadorAutomatico = false, + + SonarAtivado = false, + FrenagemAutomaticaAoParar = false, + ImuParadaPorInclinacao = false, + OakParadaPorObstaculo = false, + MpcMatrizCusto = false, + MpcHorizonte = 4.0, + + MovVelocidadeSErvasPercent = 100, + MovVelocidadeCErvasPercent = 15, + DirAnguloMaximo = 25, + DirVelocidadeMovimento = 40, + + DirTipoMovimento = TiposControladorDirecional.Manual, + + AtuAlturaAreaPulverizacao = 10, + AtuDuracaoAtuacao = 200, + AtuPercentualErvasBicoOff = 2, + AtuPercentualErvasBicoOn = 1, + AtuPercentualInicioPulverizacao = 70, + AtuPressaoLinha = 85, + }; + p.ModulosMandatorios = new List() + { + new OperacaoModulosMandatoriosModel() { - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Mov, - Mandatorio = false, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Dir, - Mandatorio = false, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Atu, - Mandatorio = false, - Utilizar = true, - } + Dispositivo = T_Code.Mov, + Mandatorio = false, + Utilizar = true, }, - ParametrosMandatorios = new List() + new OperacaoModulosMandatoriosModel() { - new OperacaoParametrosMandatoriosModel() - { - Parametro = ParametrosOperacao.Joystick, - Mandatorio = false, - Utilizar = true, - }, - //new OperacaoParametrosMandatoriosModel() - //{ - // Parametro = ParametrosOperacao.LoRa, - // Mandatorio = false, - // Utilizar = true, - //}, + Dispositivo = T_Code.Dir, + Mandatorio = false, + Utilizar = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Atu, + Mandatorio = false, + Utilizar = true, } }; - Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoManual(); - Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); - Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() + p.ParametrosMandatorios = new List() { - TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, - Angulo = 25, - Direcao = Direcao.Parado, - EmFreio = false, - PercentualVelocidadeSP = 20, - AlturaBarra = 50, - TiposControle = new List() + new OperacaoParametrosMandatoriosModel() { - new OperacaoControleTipoModel() - { - Tipo = T_Code.Mov, - DelayEnvioComandoBase = 10, - DelayEnvioComando = 10, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, - new OperacaoControleTipoModel() - { - Tipo = T_Code.Dir, - DelayEnvioComandoBase = 10, - DelayEnvioComando = 10, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, - new OperacaoControleTipoModel() - { - Tipo = T_Code.Atu, - DelayEnvioComandoBase = 10, - DelayEnvioComando = 10, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, + Parametro = ParametrosOperacao.Joystick, + Mandatorio = false, + Utilizar = true, }, }; + if (isagrobase) + { + Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoManual(); + Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); + Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() + { + TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, + Angulo = 25, + Direcao = Direcao.Parado, + EmFreio = false, + PercentualVelocidadeSP = 20, + AlturaBarra = 50, + TiposControle = new List() + { + new OperacaoControleTipoModel() + { + Tipo = T_Code.Mov, + DelayEnvioComandoBase = 10, + DelayEnvioComando = 10, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + new OperacaoControleTipoModel() + { + Tipo = T_Code.Dir, + DelayEnvioComandoBase = 10, + DelayEnvioComando = 10, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + new OperacaoControleTipoModel() + { + Tipo = T_Code.Atu, + DelayEnvioComandoBase = 10, + DelayEnvioComando = 10, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + }, + }; + } break; case ModoOperacao.MapaGPS: - Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() + p.Controle = new OperacaoParametrosControleModel() { - Modo = Modo, - QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo, - QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores, - CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio, - RoverId = VariaveisEquipamento.Parametros.serial_number, - RuasPercorrer = null, - Mapa = null, - Controle = new OperacaoParametrosControleModel() - { - MovimentoAutomatico = true, - DirecionalAutomatico = true, - PulverizadorAutomatico = true, - FrenagemAutomaticaAoParar = true, - MovVelocidadeSErvasPercent = 50, - MovVelocidadeCErvasPercent = 20, - DirAnguloMaximo = 30, - DirVelocidadeMovimento = 50, - SonarAtivado = true, - DirTipoMovimento = TiposControladorDirecional.MPC, + RegistrarDadosPosProcessamento = false, - AtuAlturaAreaPulverizacao = 10, - AtuDuracaoAtuacao = 200, - AtuPercentualErvasBicoOff = 2, - AtuPercentualErvasBicoOn = 1, - AtuPercentualInicioPulverizacao = 70, - AtuPressaoLinha = 85, - }, - ModulosMandatorios = new List() - { - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Mov, - Mandatorio = true, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Dir, - Mandatorio = true, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Sen, - Mandatorio = true, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Atu, - Mandatorio = true, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Gps, - Mandatorio = true, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Cam, - Mandatorio = true, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Snr, - Mandatorio = false, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Lvx, - Mandatorio = false, - Utilizar = true, - } - }, - ParametrosMandatorios = new List() - { - //new OperacaoParametrosMandatoriosModel() - //{ - // Parametro = ParametrosOperacao.CameraSolo, - // Mandatorio = true, - // Utilizar = true, - //}, - //new OperacaoParametrosMandatoriosModel() - //{ - // Parametro = ParametrosOperacao.Sonar, - // Mandatorio = false, - // Utilizar = true, - //}, - new OperacaoParametrosMandatoriosModel() - { - Parametro = ParametrosOperacao.Mapa, - Mandatorio = true, - Utilizar = true, - }, - //new OperacaoParametrosMandatoriosModel() - //{ - // Parametro = ParametrosOperacao.LoRa, - // Mandatorio = true, - // Utilizar = true, - //} - } + MovimentoAutomatico = true, + DirecionalAutomatico = true, + PulverizadorAutomatico = true, + + SonarAtivado = false, + FrenagemAutomaticaAoParar = true, + ImuParadaPorInclinacao = true, + OakParadaPorObstaculo = true, + MpcMatrizCusto = false, + MpcHorizonte = 4.0, + + MovVelocidadeSErvasPercent = 50, + MovVelocidadeCErvasPercent = 20, + DirAnguloMaximo = 30, + DirVelocidadeMovimento = 50, + + DirTipoMovimento = TiposControladorDirecional.MPC, + + AtuAlturaAreaPulverizacao = 10, + AtuDuracaoAtuacao = 200, + AtuPercentualErvasBicoOff = 2, + AtuPercentualErvasBicoOn = 1, + AtuPercentualInicioPulverizacao = 70, + AtuPressaoLinha = 85, }; - Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoMapaGPS(); - Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); - Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() + p.ModulosMandatorios = new List() { - TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, - Angulo = 0, - Direcao = Direcao.Parado, - EmFreio = false, - PercentualVelocidadeSP = 0, - AlturaBarra = 50, - TiposControle = new List() + new OperacaoModulosMandatoriosModel() { - new OperacaoControleTipoModel() - { - Tipo = T_Code.Mov, - DelayEnvioComandoBase = 500, - DelayEnvioComando = 500, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, - new OperacaoControleTipoModel() - { - Tipo = T_Code.Dir, - DelayEnvioComandoBase = 300, - DelayEnvioComando = 300, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, - new OperacaoControleTipoModel() - { - Tipo = T_Code.Atu, - DelayEnvioComandoBase = 200, - DelayEnvioComando = 200, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, + Dispositivo = T_Code.Mov, + Mandatorio = true, + Utilizar = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Dir, + Mandatorio = true, + Utilizar = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Sen, + Mandatorio = true, + Utilizar = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Atu, + Mandatorio = true, + Utilizar = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Gps, + Mandatorio = true, + Utilizar = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Cam, + Mandatorio = true, + Utilizar = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Snr, + Mandatorio = true, + Utilizar = true, }, }; + p.ParametrosMandatorios = new List() + { + new OperacaoParametrosMandatoriosModel() + { + Parametro = ParametrosOperacao.Mapa, + Mandatorio = true, + Utilizar = true, + }, + }; + if (isagrobase) + { + Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoMapaGPS(); + Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); + Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() + { + TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, + Angulo = 0, + Direcao = Direcao.Parado, + EmFreio = false, + PercentualVelocidadeSP = 0, + AlturaBarra = 50, + TiposControle = new List() + { + new OperacaoControleTipoModel() + { + Tipo = T_Code.Mov, + DelayEnvioComandoBase = 500, + DelayEnvioComando = 500, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + new OperacaoControleTipoModel() + { + Tipo = T_Code.Dir, + DelayEnvioComandoBase = 300, + DelayEnvioComando = 300, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + new OperacaoControleTipoModel() + { + Tipo = T_Code.Atu, + DelayEnvioComandoBase = 200, + DelayEnvioComando = 200, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + }, + }; + } break; case ModoOperacao.TreinamentoIA: - Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() + p.Controle = new OperacaoParametrosControleModel() { - Modo = Modo, - QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo, - QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores, - CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio, - RoverId = VariaveisEquipamento.Parametros.serial_number, - RuasPercorrer = null, - Mapa = null, - Controle = new OperacaoParametrosControleModel() - { - MovimentoAutomatico = true, - DirecionalAutomatico = true, - PulverizadorAutomatico = false, - FrenagemAutomaticaAoParar = false, - MovVelocidadeSErvasPercent = 50, - MovVelocidadeCErvasPercent = 20, - DirAnguloMaximo = 30, - DirVelocidadeMovimento = 50, - SonarAtivado = false, - DirTipoMovimento = TiposControladorDirecional.IA, + RegistrarDadosPosProcessamento = false, - AtuAlturaAreaPulverizacao = 10, - AtuDuracaoAtuacao = 200, - AtuPercentualErvasBicoOff = 2, - AtuPercentualErvasBicoOn = 1, - AtuPercentualInicioPulverizacao = 70, - AtuPressaoLinha = 85, - }, - ModulosMandatorios = new List() + MovimentoAutomatico = true, + DirecionalAutomatico = true, + PulverizadorAutomatico = false, + + SonarAtivado = false, + FrenagemAutomaticaAoParar = false, + ImuParadaPorInclinacao = false, + OakParadaPorObstaculo = false, + MpcMatrizCusto = false, + MpcHorizonte = 4.0, + + MovVelocidadeSErvasPercent = 50, + MovVelocidadeCErvasPercent = 20, + DirAnguloMaximo = 30, + DirVelocidadeMovimento = 50, + DirTipoMovimento = TiposControladorDirecional.IA, + + AtuAlturaAreaPulverizacao = 10, + AtuDuracaoAtuacao = 200, + AtuPercentualErvasBicoOff = 2, + AtuPercentualErvasBicoOn = 1, + AtuPercentualInicioPulverizacao = 70, + AtuPressaoLinha = 85, + }; + p.ModulosMandatorios = new List() + { + new OperacaoModulosMandatoriosModel() { - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Mov, - Mandatorio = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Dir, - Mandatorio = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Atu, - Mandatorio = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Gps, - Mandatorio = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Sen, - Mandatorio = false, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Wit, - Mandatorio = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Pzm, - Mandatorio = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Lra, - Mandatorio = true, - } + Dispositivo = T_Code.Mov, + Mandatorio = true, }, - ParametrosMandatorios = new List() + new OperacaoModulosMandatoriosModel() { - new OperacaoParametrosMandatoriosModel() - { - Parametro = ParametrosOperacao.CameraSolo, - Mandatorio = true, - }, - new OperacaoParametrosMandatoriosModel() - { - Parametro = ParametrosOperacao.Sonar, - Mandatorio = true, - }, - new OperacaoParametrosMandatoriosModel() - { - Parametro = ParametrosOperacao.Mapa, - Mandatorio = true, - } + Dispositivo = T_Code.Dir, + Mandatorio = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Atu, + Mandatorio = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Gps, + Mandatorio = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Sen, + Mandatorio = false, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Wit, + Mandatorio = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Pzm, + Mandatorio = true, + }, + new OperacaoModulosMandatoriosModel() + { + Dispositivo = T_Code.Lra, + Mandatorio = true, } }; - Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); - Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() + p.ParametrosMandatorios = new List() { - TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, - Angulo = 0, - Direcao = Direcao.Parado, - EmFreio = false, - PercentualVelocidadeSP = 0, - TiposControle = new List() + new OperacaoParametrosMandatoriosModel() { - new OperacaoControleTipoModel() - { - Tipo = T_Code.Mov, - DelayEnvioComandoBase = 500, - DelayEnvioComando = 500, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, - new OperacaoControleTipoModel() - { - Tipo = T_Code.Dir, - DelayEnvioComandoBase = 1000, - DelayEnvioComando = 1000, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, - new OperacaoControleTipoModel() - { - Tipo = T_Code.Atu, - DelayEnvioComandoBase = 500, - DelayEnvioComando = 500, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, + Parametro = ParametrosOperacao.CameraSolo, + Mandatorio = true, }, + new OperacaoParametrosMandatoriosModel() + { + Parametro = ParametrosOperacao.Sonar, + Mandatorio = true, + }, + new OperacaoParametrosMandatoriosModel() + { + Parametro = ParametrosOperacao.Mapa, + Mandatorio = true, + } }; + if (isagrobase) + { + Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); + Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() + { + TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, + Angulo = 0, + Direcao = Direcao.Parado, + EmFreio = false, + PercentualVelocidadeSP = 0, + TiposControle = new List() + { + new OperacaoControleTipoModel() + { + Tipo = T_Code.Mov, + DelayEnvioComandoBase = 500, + DelayEnvioComando = 500, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + new OperacaoControleTipoModel() + { + Tipo = T_Code.Dir, + DelayEnvioComandoBase = 1000, + DelayEnvioComando = 1000, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + new OperacaoControleTipoModel() + { + Tipo = T_Code.Atu, + DelayEnvioComandoBase = 500, + DelayEnvioComando = 500, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + }, + }; + } break; case ModoOperacao.MapeamentoVisual: - Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() + p.Controle = new OperacaoParametrosControleModel() { - Modo = Modo, - QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo, - QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores, - CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio, - RoverId = VariaveisEquipamento.Parametros.serial_number, - RuasPercorrer = null, - Mapa = null, - Controle = new OperacaoParametrosControleModel() - { - MovimentoAutomatico = true, - DirecionalAutomatico = true, - PulverizadorAutomatico = false, - FrenagemAutomaticaAoParar = true, - MovVelocidadeSErvasPercent = 40, - MovVelocidadeCErvasPercent = 20, - DirAnguloMaximo = 30, - DirVelocidadeMovimento = 50, - SonarAtivado = true, - DirTipoMovimento = TiposControladorDirecional.PID, + RegistrarDadosPosProcessamento = false, - AtuAlturaAreaPulverizacao = 10, - AtuDuracaoAtuacao = 200, - AtuPercentualErvasBicoOff = 2, - AtuPercentualErvasBicoOn = 1, - AtuPercentualInicioPulverizacao = 70, - AtuPressaoLinha = 85, - }, - ModulosMandatorios = new List() + MovimentoAutomatico = true, + DirecionalAutomatico = true, + PulverizadorAutomatico = false, + + SonarAtivado = false, + FrenagemAutomaticaAoParar = true, + ImuParadaPorInclinacao = true, + OakParadaPorObstaculo = true, + MpcMatrizCusto = false, + MpcHorizonte = 4.0, + + MovVelocidadeSErvasPercent = 40, + MovVelocidadeCErvasPercent = 20, + DirAnguloMaximo = 30, + DirVelocidadeMovimento = 50, + + DirTipoMovimento = TiposControladorDirecional.PID, + + AtuAlturaAreaPulverizacao = 10, + AtuDuracaoAtuacao = 200, + AtuPercentualErvasBicoOff = 2, + AtuPercentualErvasBicoOn = 1, + AtuPercentualInicioPulverizacao = 70, + AtuPressaoLinha = 85, + }; + p.ModulosMandatorios = new List() + { + new OperacaoModulosMandatoriosModel() { - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Mov, - Mandatorio = true, - Utilizar = true, - }, - new OperacaoModulosMandatoriosModel() - { - Dispositivo = T_Code.Dir, - Mandatorio = true, - Utilizar = true, - } + Dispositivo = T_Code.Mov, + Mandatorio = true, + Utilizar = true, }, - ParametrosMandatorios = new List() + new OperacaoModulosMandatoriosModel() { - new OperacaoParametrosMandatoriosModel() - { - Parametro = ParametrosOperacao.Sonar, - Mandatorio = true, - Utilizar = true, - } + Dispositivo = T_Code.Dir, + Mandatorio = true, + Utilizar = true, } }; - Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); - Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() + p.ParametrosMandatorios = new List() { - TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, - Angulo = 0, - Direcao = Direcao.Parado, - EmFreio = false, - PercentualVelocidadeSP = 0, - TiposControle = new List() + new OperacaoParametrosMandatoriosModel() { - new OperacaoControleTipoModel() - { - Tipo = T_Code.Mov, - DelayEnvioComandoBase = 500, - DelayEnvioComando = 500, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - }, - new OperacaoControleTipoModel() - { - Tipo = T_Code.Dir, - DelayEnvioComandoBase = 200, - DelayEnvioComando = 200, - DelayEnvioComandoExtra = 0, - Comandos = new List(), - UltimoComando = DateTime.Now - } - }, + Parametro = ParametrosOperacao.Sonar, + Mandatorio = true, + Utilizar = true, + } }; + if (isagrobase) + { + Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); + Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() + { + TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, + Angulo = 0, + Direcao = Direcao.Parado, + EmFreio = false, + PercentualVelocidadeSP = 0, + TiposControle = new List() + { + new OperacaoControleTipoModel() + { + Tipo = T_Code.Mov, + DelayEnvioComandoBase = 500, + DelayEnvioComando = 500, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + }, + new OperacaoControleTipoModel() + { + Tipo = T_Code.Dir, + DelayEnvioComandoBase = 200, + DelayEnvioComando = 200, + DelayEnvioComandoExtra = 0, + Comandos = new List(), + UltimoComando = DateTime.Now + } + }, + }; + } break; } - Variaveis.OperacaoEmAndamento.Parametros.RoverId = VariaveisEquipamento.Parametros.serial_number; - Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true }); - Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Can, Mandatorio = true, Utilizar = true }); - Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Ipb, Mandatorio = true, Utilizar = true }); - Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true }); + p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true }); + p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Can, Mandatorio = true, Utilizar = true }); + p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Ipb, Mandatorio = true, Utilizar = true }); + p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true }); + p.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = Variaveis.OperacaoEmAndamento.PreencherComponentesEmUso(m.Dispositivo)); - Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = Variaveis.OperacaoEmAndamento.PreencherComponentesEmUso(m.Dispositivo)); + if (isagrobase) + { + Variaveis.OperacaoEmAndamento.Parametros = p; + Variaveis.OperacaoEmAndamento.Trajetoria = new TrajetoriaMapaOperacaoModel(new List>()); + Variaveis.OperacaoEmAndamento.Sensoriamento = new OperacaoSensoriamentoLogModel(); + RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false)); + Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados(); + } - Variaveis.OperacaoEmAndamento.Trajetoria = new TrajetoriaMapaOperacaoModel(new List>()); - Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura = new OperacaoParametrosDadosModel(); - Variaveis.OperacaoEmAndamento.Sensoriamento = new OperacaoSensoriamentoLogModel(); - - RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false)); - - Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados(); + return p; } private Dictionary PreencherComponentesEmUso(T_Code Modulo) @@ -980,7 +971,7 @@ namespace AgroBase.Models { if (Parametros.Modo == null) return (false, new List()); - CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo); + CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo, true); Variaveis.OperacaoEmAndamento.Parametros = Parametros; Variaveis.OperacaoEmAndamento.Parametros.RoverId = VariaveisEquipamento.Parametros.serial_number; diff --git a/AgroBase/AgroBase/Services/SerialService.cs b/AgroBase/AgroBase/Services/SerialService.cs index a7927b01e..54a195bf5 100644 --- a/AgroBase/AgroBase/Services/SerialService.cs +++ b/AgroBase/AgroBase/Services/SerialService.cs @@ -379,7 +379,7 @@ namespace AgroBase.Services }); if (PrimeiraExecucao) { - OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.MapaGPS); + OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.MapaGPS, true); } //DispositivosMapeados.ForEach(d => d.AtualizarDados()); diff --git a/AgroBase/AgroBase/bin/x64/Debug/Python/Scripts/workers/weed_worker/camera_manager.py b/AgroBase/AgroBase/bin/x64/Debug/Python/Scripts/workers/weed_worker/camera_manager.py index 1f94de7c2..19eb9ed86 100644 --- a/AgroBase/AgroBase/bin/x64/Debug/Python/Scripts/workers/weed_worker/camera_manager.py +++ b/AgroBase/AgroBase/bin/x64/Debug/Python/Scripts/workers/weed_worker/camera_manager.py @@ -16,6 +16,7 @@ class CameraManager: def __init__(self, mostrar_log): self.mostrar_log = mostrar_log self.mx_id = None + self.model_svc = None self.reiniciar_status() def reiniciar_status(self): @@ -151,16 +152,17 @@ class CameraManager: def get_selected_frame(self, _frame_type: TipoFrameCamera): _frame = None if (_frame_type in [TipoFrameCamera.Rgb, TipoFrameCamera.Segmentacao, TipoFrameCamera.Overlay, TipoFrameCamera.Debug]): - rgb_frame, seg_frame, overlay_frame, _, _ = self.model_svc.preview_infer_cached(self._ultimo_raw_input, self._ultimo_predictions, alpha=0.5) - if _frame_type == TipoFrameCamera.Rgb: - _frame = rgb_frame - elif _frame_type == TipoFrameCamera.Segmentacao: - _frame = seg_frame - elif _frame_type == TipoFrameCamera.Overlay: - _frame = overlay_frame - elif _frame_type == TipoFrameCamera.Debug: - self.weed_detector._mostrar_debug_bicos_overlay(overlay_frame, [], self._ultimo_controle, show=False) - _frame = self.weed_detector._dbg_img + if self.model_svc is not None: + rgb_frame, seg_frame, overlay_frame, _, _ = self.model_svc.preview_infer_cached(self._ultimo_raw_input, self._ultimo_predictions, alpha=0.5) + if _frame_type == TipoFrameCamera.Rgb: + _frame = rgb_frame + elif _frame_type == TipoFrameCamera.Segmentacao: + _frame = seg_frame + elif _frame_type == TipoFrameCamera.Overlay: + _frame = overlay_frame + elif _frame_type == TipoFrameCamera.Debug: + self.weed_detector._mostrar_debug_bicos_overlay(overlay_frame, [], self._ultimo_controle, show=False) + _frame = self.weed_detector._dbg_img elif _frame_type == TipoFrameCamera.Raw4: _frame = self._ultimo_raw_base return _frame diff --git a/AgroBase/OperationControl/Models/Variaveis.cs b/AgroBase/OperationControl/Models/Variaveis.cs index dd36d4547..ff886b15b 100644 --- a/AgroBase/OperationControl/Models/Variaveis.cs +++ b/AgroBase/OperationControl/Models/Variaveis.cs @@ -198,7 +198,7 @@ namespace OperationControl.Models } ((App)Application.Current).Shell.Main?.AtualizarDadosTela_ParametrosOperacao(obj.Controle); ((App)Application.Current).Shell.Main?.MAP?.CarregarDadosMapa(obj.Mapa, obj.RuasPercorrer); - ((App)Application.Current).Shell.Dock?._vm?.AtualizarDadosMapa(obj); + ((App)Application.Current).Shell.Dock?._vm?.AtualizarParametrosRover(obj); } catch (Exception ex) { diff --git a/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoRightViewModel.cs b/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoRightViewModel.cs index 0d4b1ff76..d079450aa 100644 --- a/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoRightViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Views/Operacao/OperacaoRightViewModel.cs @@ -1,4 +1,5 @@ -using AgroBase.Models.Operacoes; +using AgroBase.Models; +using AgroBase.Models.Operacoes; using OperationControl.Helpers; using OperationControl.Models; using OperationControl.Models.Operacao; @@ -17,7 +18,20 @@ namespace OperationControl.ViewModels.Views.Operacao private bool _isCollapsed; private RoverCardModel _roverSelecionado; public ResumoOperacionalModel Resumo { get; } = new ResumoOperacionalModel(); - public OperacaoParametrosModel Parametros { get; } = new OperacaoParametrosModel(); + + private OperacaoParametrosModel _parametros = new OperacaoParametrosModel(); + public OperacaoParametrosModel Parametros + { + get => _parametros; + set + { + if (_parametros != value) + { + _parametros = value; + OnPropertyChanged(nameof(Parametros)); + } + } + } public OperacaoRightViewModel() { @@ -33,6 +47,7 @@ namespace OperationControl.ViewModels.Views.Operacao SelecionarSecao(secaoParseada); }); AcaoBotaoTopoCommand = new RelayCommand(_ => ExecutarAcaoBotaoTopo()); + CarregarParametrosPadraoCommand = new RelayCommand(p => CarregarParametrosPadrao((AgroBase.Models.Enums.ModoOperacao)p)); LerParametrosCommand = new RelayCommand(_ => LerParametrosSolicitado?.Invoke()); SalvarParametrosCommand = new RelayCommand(_ => SalvarParametrosSolicitado?.Invoke(Parametros)); } @@ -51,6 +66,7 @@ namespace OperationControl.ViewModels.Views.Operacao public ICommand AcaoBotaoTopoCommand { get; } public ICommand LerParametrosCommand { get; } public ICommand SalvarParametrosCommand { get; } + public ICommand CarregarParametrosPadraoCommand { get; } public bool IsCollapsed { @@ -115,6 +131,8 @@ namespace OperationControl.ViewModels.Views.Operacao public string TextoBotaoTopo => BotaoTopoEhVoltar ? "◀ Voltar" : "Trocar Rover"; + public Array ModosOperacaoDisponiveis { get; } = Enum.GetValues(typeof(AgroBase.Models.Enums.ModoOperacao)); + private void ExecutarAcaoBotaoTopo() { if (BotaoTopoEhVoltar) @@ -127,6 +145,12 @@ namespace OperationControl.ViewModels.Views.Operacao } } + private void CarregarParametrosPadrao(AgroBase.Models.Enums.ModoOperacao modo) + { + var p = OperacaoModel.CarregarParametrosOperacaoPadrao(modo, false); + p.Descricao = $"{p.Modo} - Padrão"; + Parametros = p; + } public void ToggleCollapse() { @@ -226,45 +250,7 @@ namespace OperationControl.ViewModels.Views.Operacao public void AtualizarParametros(OperacaoParametrosModel origem) { if (origem == null) return; - - Parametros.Modo = origem.Modo; - Parametros.Descricao = origem.Descricao; - Parametros.QtdBicos = origem.QtdBicos; - Parametros.QtdCamerasSolo = origem.QtdCamerasSolo; - Parametros.CapacidadeReservatorio = origem.CapacidadeReservatorio; - - var controle_o = origem.Controle; - if (controle_o == null) return; - if (Parametros.Controle == null) Parametros.Controle = new OperacaoParametrosControleModel(); - var controle_p = Parametros.Controle; - - controle_p.MovimentoAutomatico = controle_o.MovimentoAutomatico; - controle_p.DirecionalAutomatico = controle_o.DirecionalAutomatico; - controle_p.PulverizadorAutomatico = controle_o.PulverizadorAutomatico; - controle_p.SonarAtivado = controle_o.SonarAtivado; - controle_p.OakParadaPorObstaculo = controle_o.OakParadaPorObstaculo; - controle_p.ImuParadaPorInclinacao = controle_o.ImuParadaPorInclinacao; - controle_p.FrenagemAutomaticaAoParar = controle_o.FrenagemAutomaticaAoParar; - controle_p.RegistrarDadosPosProcessamento = controle_o.RegistrarDadosPosProcessamento; - - controle_p.MovVelocidadeSErvasPercent = controle_o.MovVelocidadeSErvasPercent; - controle_p.MovVelocidadeCErvasPercent = controle_o.MovVelocidadeCErvasPercent; - - controle_p.DirAnguloMaximo = controle_o.DirAnguloMaximo; - controle_p.DirVelocidadeMovimento = controle_o.DirVelocidadeMovimento; - controle_p.DirTipoMovimento = controle_o.DirTipoMovimento; - - controle_p.AtuPressaoLinha = controle_o.AtuPressaoLinha; - controle_p.AtuDuracaoAtuacao = controle_o.AtuDuracaoAtuacao; - controle_p.AtuPercentualInicioPulverizacao = controle_o.AtuPercentualInicioPulverizacao; - controle_p.AtuAlturaAreaPulverizacao = controle_o.AtuAlturaAreaPulverizacao; - controle_p.AtuPercentualErvasBicoOn = controle_o.AtuPercentualErvasBicoOn; - controle_p.AtuPercentualErvasBicoOff = controle_o.AtuPercentualErvasBicoOff; - - controle_p.MpcMatrizCusto = controle_o.MpcMatrizCusto; - controle_p.MpcHorizonte = controle_o.MpcHorizonte; - - OnPropertyChanged(nameof(Parametros)); + Parametros = origem; } private void OnPropertyChanged(string nome) diff --git a/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs b/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs index bd4b79111..8cad71d68 100644 --- a/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs +++ b/AgroBase/OperationControl/ViewModels/Windows/DockWindowViewModel.cs @@ -614,6 +614,12 @@ namespace OperationControl.ViewModels Mapa?.markers?.UpdateMarkerPosition(VariaveisControleOperacao.BaseMarkerID, lat: dados?.Latitude, lon: dados?.Longitude, heading: dados?.OrientacaoReal); } + public void AtualizarParametrosRover(OperacaoParametrosModel? rover) + { + _viewOperacaoRight?._vm?.AtualizarParametros(rover); + AtualizarDadosMapa(rover); + } + public void AtualizarDadosMapa(OperacaoParametrosModel? dados) { _viewOperacaoCenter?.Mapa?.LoadMapFile(_ultimoMapaCarregado); @@ -956,8 +962,6 @@ namespace OperationControl.ViewModels return; VariaveisControleOperacao.RequisitarParametrosOperacao(); - - _viewOperacaoRight?._vm?.AtualizarParametros(VariaveisControleOperacao.RoverEmFoco); } private void OnSalvarParametrosSolicitado(OperacaoParametrosModel parametros) { @@ -968,7 +972,7 @@ namespace OperationControl.ViewModels var novosParametros = new OperacaoParametrosModel() { - Modo = parametros.Modo ?? AgroBase.Models.Enums.ModoOperacao.NaoDefinido, + Modo = parametros.Modo, Descricao = parametros.Descricao, QtdCamerasSolo = parametros.QtdCamerasSolo, QtdBicos = parametros.QtdBicos, @@ -976,8 +980,8 @@ namespace OperationControl.ViewModels Controle = parametros.Controle, - ModulosMandatorios = rover?.ModulosMandatorios, - ParametrosMandatorios = rover?.ParametrosMandatorios, + ModulosMandatorios = parametros?.ModulosMandatorios, + ParametrosMandatorios = parametros?.ParametrosMandatorios, RuasPercorrer = _viewOperacaoCenter?.Mapa?.RuasMapaCarregado?.Where(x => x.Selected)?.Select(x => x.Id)?.ToList(), Mapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa() @@ -990,9 +994,22 @@ namespace OperationControl.ViewModels VariaveisControleOperacao.RoverEmFoco.QtdCamerasSolo = novosParametros.QtdCamerasSolo; VariaveisControleOperacao.RoverEmFoco.QtdBicos = novosParametros.QtdBicos; VariaveisControleOperacao.RoverEmFoco.CapacidadeReservatorio = novosParametros.CapacidadeReservatorio; + VariaveisControleOperacao.RoverEmFoco.Controle = novosParametros.Controle; + + VariaveisControleOperacao.RoverEmFoco.ModulosMandatorios = novosParametros.ModulosMandatorios; + VariaveisControleOperacao.RoverEmFoco.ParametrosMandatorios = novosParametros.ParametrosMandatorios; + VariaveisControleOperacao.RoverEmFoco.RuasPercorrer = novosParametros.RuasPercorrer; VariaveisControleOperacao.RoverEmFoco.Mapa = novosParametros.Mapa; + + VariaveisControleOperacao.RequisitarParametrosOperacao(); + + Task.Run(async () => + { + await Task.Delay(1000); + _viewOperacaoRight?._vm?.SelecionarSecao(SecaoRightBar.Diagnostico); + }); } diff --git a/AgroBase/OperationControl/Views/Operacao/OperacaoRightView.xaml b/AgroBase/OperationControl/Views/Operacao/OperacaoRightView.xaml index 5827c8df8..ab61016f4 100644 --- a/AgroBase/OperationControl/Views/Operacao/OperacaoRightView.xaml +++ b/AgroBase/OperationControl/Views/Operacao/OperacaoRightView.xaml @@ -3,7 +3,9 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:local="clr-namespace:OperationControl.Views.Operacao" + xmlns:i="http://schemas.microsoft.com/xaml/behaviors" mc:Ignorable="d"> @@ -360,6 +362,8 @@ + + diff --git a/AgroBase/OperationControl/Views/Operacao/OperacaoRightView.xaml.cs b/AgroBase/OperationControl/Views/Operacao/OperacaoRightView.xaml.cs index 631fe1b41..03ba44d07 100644 --- a/AgroBase/OperationControl/Views/Operacao/OperacaoRightView.xaml.cs +++ b/AgroBase/OperationControl/Views/Operacao/OperacaoRightView.xaml.cs @@ -36,5 +36,14 @@ namespace OperationControl.Views.Operacao _vm = vm; DataContext = _vm; } + + private void cmbModoOperacao_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + if (DataContext is OperacaoRightViewModel vm && sender is System.Windows.Controls.ComboBox combo && combo.SelectedItem is AgroBase.Models.Enums.ModoOperacao modo) + { + if (vm.CarregarParametrosPadraoCommand?.CanExecute(modo) == true) + vm.CarregarParametrosPadraoCommand.Execute(modo); + } + } } }