From bd0dc7c6a515353c363b9280eb3f45cccba4caf4 Mon Sep 17 00:00:00 2001 From: Diego Freitas Date: Tue, 3 Mar 2026 09:32:36 -0300 Subject: [PATCH] Ajustes no fluxo de fixacao da posicao da base --- .../OperationControl/Services/GpsService.cs | 28 +++++++++++++++---- .../Windows/MainWindow.xaml.cs | 14 +++++----- 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/AgroBase/OperationControl/Services/GpsService.cs b/AgroBase/OperationControl/Services/GpsService.cs index 0647357bd..524c416d4 100644 --- a/AgroBase/OperationControl/Services/GpsService.cs +++ b/AgroBase/OperationControl/Services/GpsService.cs @@ -225,7 +225,9 @@ namespace OperationControl.Services private bool InverterHeading = false; private bool LoopRTK_Ntrip = false; + private bool Ntrip_Conectado = false; private bool CorrecaoRTK_Ntrip = false; + private int TempoSurveryIn = 120; public int TaxaAmostragemHz = 5; private int rtk_timeout = 60; public GPSModel UltimaLeitura = new GPSModel(); @@ -245,6 +247,7 @@ namespace OperationControl.Services LeverArm = new GeoLeverArm(VariaveisControleOperacao.LeverArmFrontal, VariaveisControleOperacao.LeverArmLateral); BaseFix = new BaseFixService(PortaGps, this); bool sucesso = await BaseFix.FixarBaseViaNtripAsync( + portaUsb: "com3", portaSaida: "com3", portaEntrada: "com3", startNtrip: async () => @@ -258,11 +261,13 @@ namespace OperationControl.Services Models.Variaveis.MostrarLog("Parando correção NTRIP..."); CorrecaoRTK_Ntrip = false; }, - segsFixEstavel: 120 + segsFixEstavel: TempoSurveryIn ); if (!sucesso) { - await ConfigurarModuloBase(tempo_fixacao: 60, porta_saida: "com3"); + Models.Variaveis.MostrarLog("Configurando módulo como base survery in..."); + await ConfigurarModuloBase(tempo_fixacao: TempoSurveryIn, porta_usb: "com3", porta_saida: "com3"); + BaseFix.PosicaoBaseFixada = true; } } @@ -1054,6 +1059,7 @@ namespace OperationControl.Services { if ((response ?? "").Contains("200 OK")) { + Ntrip_Conectado = true; Models.Variaveis.MostrarLog("Conexão bem-sucedida ao mountpoint!"); byte[] buffer = new byte[4096]; @@ -1069,6 +1075,7 @@ namespace OperationControl.Services } else { + Ntrip_Conectado = false; Models.Variaveis.MostrarLog($"Falha na conexão com NTRIP: {response}"); await Task.Delay(5000); // Aguarde antes de tentar novamente break; @@ -1079,12 +1086,14 @@ namespace OperationControl.Services } catch (Exception ex) { + Ntrip_Conectado = false; Models.Variaveis.MostrarLog($"Erro na conexão RTK: {ex.Message}"); await Task.Delay(5000); // Aguarde antes de tentar novamente } } LoopRTK_Ntrip = false; + Ntrip_Conectado = false; } private void AtualizarCoordenadasGPS() @@ -1152,15 +1161,19 @@ namespace OperationControl.Services string progresso = ""; if (CorrecaoEmAndamento) { - progresso = $"Recebendo correção RTK via Ntrip. Progresso geral: {ProgressoGeral.ToString("0.00")}%, Progresso correção: {Progresso.ToString("0.00")}%"; + progresso = $"Recebendo correção RTK via Ntrip. Progresso geral: {ProgressoGeral:F2}%, Progresso correção: {Progresso:F2}%"; } - else if (CorrecaoAbsoluta && inicioProcesso.HasValue && fimProcesso.HasValue) + else if (PosicaoBaseFixada && CorrecaoAbsoluta && inicioProcesso.HasValue && fimProcesso.HasValue) { - progresso = $"Correção absoluta concluída com {amostras_pos.Count} amostras em {(fimProcesso.Value - inicioProcesso.Value).TotalSeconds.ToString("0.00")} segundos"; + progresso = $"Correção absoluta concluída com {amostras_pos.Count} amostras em {(fimProcesso.Value - inicioProcesso.Value).TotalSeconds:F2} segundos"; + } + else if (PosicaoBaseFixada && !CorrecaoAbsoluta) + { + progresso = $"Correção relativa concluída em {segundosFixEstavel} segundos"; } else if (inicioProcesso.HasValue && fimProcesso.HasValue) { - progresso = $"Correção absoluta falhou com {amostras_pos.Count} amostras em {(fimProcesso.Value - inicioProcesso.Value).TotalSeconds.ToString("0.00")} segundos"; + progresso = $"Correção absoluta falhou com {amostras_pos.Count} amostras em {(fimProcesso.Value - inicioProcesso.Value).TotalSeconds:F2} segundos"; } else { @@ -1169,6 +1182,7 @@ namespace OperationControl.Services return progresso; } } + public bool PosicaoBaseFixada = false; public bool CorrecaoAbsoluta = false; public bool CorrecaoEmAndamento = false; public bool FixLiberado = false; @@ -1201,6 +1215,7 @@ namespace OperationControl.Services Models.Variaveis.MostrarLog("Poucas amostras de RTK FIX coletadas. Tente aumentar o tempo ou verificar sinais."); CorrecaoAbsoluta = false; FixLiberado = false; + PosicaoBaseFixada = false; return CorrecaoAbsoluta; } @@ -1214,6 +1229,7 @@ namespace OperationControl.Services Models.Variaveis.MostrarLog($" lat = {lat:0.000000000}, lon = {lon:0.000000000}, h = {h:0.000}"); CorrecaoAbsoluta = true; FixLiberado = false; + PosicaoBaseFixada = true; return CorrecaoAbsoluta; } finally diff --git a/AgroBase/OperationControl/Windows/MainWindow.xaml.cs b/AgroBase/OperationControl/Windows/MainWindow.xaml.cs index 9d5b6b6f6..c862f4ef7 100644 --- a/AgroBase/OperationControl/Windows/MainWindow.xaml.cs +++ b/AgroBase/OperationControl/Windows/MainWindow.xaml.cs @@ -1669,10 +1669,10 @@ namespace OperationControl.Windows lblGNSS_Posicao.Foreground = new SolidColorBrush(dados.Iniciado ? System.Windows.Media.Colors.Green : System.Windows.Media.Colors.Red); lblGNSS_Correcao.Content = $"Correção {dados.QualidadeFix} " + (dados.QualidadeFix == AgroBase.Models.Enums.TiposCorrecaoGPS.BaseFix ? - (dados.OrientacaoReal.ToString("0.00") + "°") : - ((dados.NtripAtivado ? "N" : "B") + $" {dados.IdadeCorrecao.ToString("0.0")} s")); - lblGNSS_Satelites.Content = $"Satélites {dados.NumeroSatelites} ({dados.PrecisaoCm.ToString("0.00")} cm)"; - lblGNSS_Altitude.Content = $"Altitude {dados.Altitude.ToString("0.00")} m"; + ($"{dados.OrientacaoReal:F2}°") : + ((dados.NtripAtivado ? "N" : "B") + $" {dados.IdadeCorrecao:F1} s")); + lblGNSS_Satelites.Content = $"Satélites {dados.NumeroSatelites} ({dados.PrecisaoCm:F2} cm)"; + lblGNSS_Altitude.Content = $"Altitude {dados:F2} m"; if (dados_base) { @@ -1684,11 +1684,11 @@ namespace OperationControl.Windows else { lblGNSS_Progresso.Visibility = Visibility.Visible; - lblGNSS_Progresso.Content = $"{progresso.ToString("0.00")}%"; + lblGNSS_Progresso.Content = $"{progresso:F2}%"; } bool gnss_fix_preciso = new List() { AgroBase.Models.Enums.TiposCorrecaoGPS.RTKFixo, AgroBase.Models.Enums.TiposCorrecaoGPS.RTKFlutuante }.Contains(Variaveis.GpsService?.UltimaLeitura?.QualidadeFix ?? AgroBase.Models.Enums.TiposCorrecaoGPS.SemCorrecao); - bool gnss_fixado = Variaveis.GpsService?.BaseFix?.CorrecaoAbsoluta ?? false; + bool gnss_fixado = Variaveis.GpsService?.BaseFix?.PosicaoBaseFixada ?? false; bool gnss_fixando = btnGNSS_FixarBase.Content.ToString() == "Parar"; btnGNSS_FixarBase.IsEnabled = (gnss_fix_preciso && !gnss_fixado) || gnss_fixando || gnss_fixado; @@ -1711,7 +1711,7 @@ namespace OperationControl.Windows { if (!Variaveis.GpsService.BaseFix.FixLiberado) { - if (Variaveis.GpsService.BaseFix.CorrecaoAbsoluta) + if (Variaveis.GpsService.BaseFix.PosicaoBaseFixada) { var res = MessageBox.Show("Mudar posição da base?", "Tem certeza que deseja fixar a posição da base novamente?", MessageBoxButton.YesNo, MessageBoxImage.Question); if (res == MessageBoxResult.Yes)