Ajustes no fluxo de fixacao da posicao da base

This commit is contained in:
Diego Freitas 2026-03-03 09:32:36 -03:00
parent c8861877fa
commit bd0dc7c6a5
2 changed files with 29 additions and 13 deletions

View File

@ -225,7 +225,9 @@ namespace OperationControl.Services
private bool InverterHeading = false; private bool InverterHeading = false;
private bool LoopRTK_Ntrip = false; private bool LoopRTK_Ntrip = false;
private bool Ntrip_Conectado = false;
private bool CorrecaoRTK_Ntrip = false; private bool CorrecaoRTK_Ntrip = false;
private int TempoSurveryIn = 120;
public int TaxaAmostragemHz = 5; public int TaxaAmostragemHz = 5;
private int rtk_timeout = 60; private int rtk_timeout = 60;
public GPSModel UltimaLeitura = new GPSModel(); public GPSModel UltimaLeitura = new GPSModel();
@ -245,6 +247,7 @@ namespace OperationControl.Services
LeverArm = new GeoLeverArm(VariaveisControleOperacao.LeverArmFrontal, VariaveisControleOperacao.LeverArmLateral); LeverArm = new GeoLeverArm(VariaveisControleOperacao.LeverArmFrontal, VariaveisControleOperacao.LeverArmLateral);
BaseFix = new BaseFixService(PortaGps, this); BaseFix = new BaseFixService(PortaGps, this);
bool sucesso = await BaseFix.FixarBaseViaNtripAsync( bool sucesso = await BaseFix.FixarBaseViaNtripAsync(
portaUsb: "com3",
portaSaida: "com3", portaSaida: "com3",
portaEntrada: "com3", portaEntrada: "com3",
startNtrip: async () => startNtrip: async () =>
@ -258,11 +261,13 @@ namespace OperationControl.Services
Models.Variaveis.MostrarLog("Parando correção NTRIP..."); Models.Variaveis.MostrarLog("Parando correção NTRIP...");
CorrecaoRTK_Ntrip = false; CorrecaoRTK_Ntrip = false;
}, },
segsFixEstavel: 120 segsFixEstavel: TempoSurveryIn
); );
if (!sucesso) 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")) if ((response ?? "").Contains("200 OK"))
{ {
Ntrip_Conectado = true;
Models.Variaveis.MostrarLog("Conexão bem-sucedida ao mountpoint!"); Models.Variaveis.MostrarLog("Conexão bem-sucedida ao mountpoint!");
byte[] buffer = new byte[4096]; byte[] buffer = new byte[4096];
@ -1069,6 +1075,7 @@ namespace OperationControl.Services
} }
else else
{ {
Ntrip_Conectado = false;
Models.Variaveis.MostrarLog($"Falha na conexão com NTRIP: {response}"); Models.Variaveis.MostrarLog($"Falha na conexão com NTRIP: {response}");
await Task.Delay(5000); // Aguarde antes de tentar novamente await Task.Delay(5000); // Aguarde antes de tentar novamente
break; break;
@ -1079,12 +1086,14 @@ namespace OperationControl.Services
} }
catch (Exception ex) catch (Exception ex)
{ {
Ntrip_Conectado = false;
Models.Variaveis.MostrarLog($"Erro na conexão RTK: {ex.Message}"); Models.Variaveis.MostrarLog($"Erro na conexão RTK: {ex.Message}");
await Task.Delay(5000); // Aguarde antes de tentar novamente await Task.Delay(5000); // Aguarde antes de tentar novamente
} }
} }
LoopRTK_Ntrip = false; LoopRTK_Ntrip = false;
Ntrip_Conectado = false;
} }
private void AtualizarCoordenadasGPS() private void AtualizarCoordenadasGPS()
@ -1152,15 +1161,19 @@ namespace OperationControl.Services
string progresso = ""; string progresso = "";
if (CorrecaoEmAndamento) 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) 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 else
{ {
@ -1169,6 +1182,7 @@ namespace OperationControl.Services
return progresso; return progresso;
} }
} }
public bool PosicaoBaseFixada = false;
public bool CorrecaoAbsoluta = false; public bool CorrecaoAbsoluta = false;
public bool CorrecaoEmAndamento = false; public bool CorrecaoEmAndamento = false;
public bool FixLiberado = 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."); Models.Variaveis.MostrarLog("Poucas amostras de RTK FIX coletadas. Tente aumentar o tempo ou verificar sinais.");
CorrecaoAbsoluta = false; CorrecaoAbsoluta = false;
FixLiberado = false; FixLiberado = false;
PosicaoBaseFixada = false;
return CorrecaoAbsoluta; return CorrecaoAbsoluta;
} }
@ -1214,6 +1229,7 @@ namespace OperationControl.Services
Models.Variaveis.MostrarLog($" lat = {lat:0.000000000}, lon = {lon:0.000000000}, h = {h:0.000}"); Models.Variaveis.MostrarLog($" lat = {lat:0.000000000}, lon = {lon:0.000000000}, h = {h:0.000}");
CorrecaoAbsoluta = true; CorrecaoAbsoluta = true;
FixLiberado = false; FixLiberado = false;
PosicaoBaseFixada = true;
return CorrecaoAbsoluta; return CorrecaoAbsoluta;
} }
finally finally

View File

@ -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_Posicao.Foreground = new SolidColorBrush(dados.Iniciado ? System.Windows.Media.Colors.Green : System.Windows.Media.Colors.Red);
lblGNSS_Correcao.Content = $"Correção {dados.QualidadeFix} " + lblGNSS_Correcao.Content = $"Correção {dados.QualidadeFix} " +
(dados.QualidadeFix == AgroBase.Models.Enums.TiposCorrecaoGPS.BaseFix ? (dados.QualidadeFix == AgroBase.Models.Enums.TiposCorrecaoGPS.BaseFix ?
(dados.OrientacaoReal.ToString("0.00") + "°") : ($"{dados.OrientacaoReal:F2}°") :
((dados.NtripAtivado ? "N" : "B") + $" {dados.IdadeCorrecao.ToString("0.0")} s")); ((dados.NtripAtivado ? "N" : "B") + $" {dados.IdadeCorrecao:F1} s"));
lblGNSS_Satelites.Content = $"Satélites {dados.NumeroSatelites} ({dados.PrecisaoCm.ToString("0.00")} cm)"; lblGNSS_Satelites.Content = $"Satélites {dados.NumeroSatelites} ({dados.PrecisaoCm:F2} cm)";
lblGNSS_Altitude.Content = $"Altitude {dados.Altitude.ToString("0.00")} m"; lblGNSS_Altitude.Content = $"Altitude {dados:F2} m";
if (dados_base) if (dados_base)
{ {
@ -1684,11 +1684,11 @@ namespace OperationControl.Windows
else else
{ {
lblGNSS_Progresso.Visibility = Visibility.Visible; 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>() { AgroBase.Models.Enums.TiposCorrecaoGPS.RTKFixo, AgroBase.Models.Enums.TiposCorrecaoGPS.RTKFlutuante }.Contains(Variaveis.GpsService?.UltimaLeitura?.QualidadeFix ?? AgroBase.Models.Enums.TiposCorrecaoGPS.SemCorrecao); bool gnss_fix_preciso = new List<AgroBase.Models.Enums.TiposCorrecaoGPS>() { 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"; bool gnss_fixando = btnGNSS_FixarBase.Content.ToString() == "Parar";
btnGNSS_FixarBase.IsEnabled = (gnss_fix_preciso && !gnss_fixado) || gnss_fixando || gnss_fixado; 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.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); 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) if (res == MessageBoxResult.Yes)