ajustado fixacao da posicao da base

This commit is contained in:
Diego Freitas 2026-03-03 12:12:50 -03:00
parent 025d71b48d
commit e6417d4b8a
1 changed files with 20 additions and 10 deletions

View File

@ -225,7 +225,7 @@ 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; public bool Ntrip_Conectado = false;
private bool CorrecaoRTK_Ntrip = false; private bool CorrecaoRTK_Ntrip = false;
private int TempoSurveryIn = 120; private int TempoSurveryIn = 120;
public int TaxaAmostragemHz = 5; public int TaxaAmostragemHz = 5;
@ -266,8 +266,9 @@ namespace OperationControl.Services
if (!sucesso) if (!sucesso)
{ {
Models.Variaveis.MostrarLog("Configurando módulo como base survery in..."); Models.Variaveis.MostrarLog("Configurando módulo como base survery in...");
BaseFix.inicioProcesso = DateTime.UtcNow;
await ConfigurarModuloBase(tempo_fixacao: TempoSurveryIn, porta_usb: "com3", porta_saida: "com3"); await ConfigurarModuloBase(tempo_fixacao: TempoSurveryIn, porta_usb: "com3", porta_saida: "com3");
BaseFix.PosicaoBaseFixada = true; BaseFix.inicioFix = DateTime.UtcNow;
} }
} }
@ -1107,8 +1108,7 @@ namespace OperationControl.Services
{ {
try try
{ {
((App)Application.Current).Shell.Main.AtualizarDadosTela_GNSS(UltimaLeitura.ToGnssModel(), marker_id: VariaveisControleOperacao.BaseMarkerID, progresso: BaseFix.Progresso); ((App)Application.Current).Shell.Main?.AtualizarDadosTela_Telemetria(VariaveisControleOperacao.BaseMarkerID);
((App)Application.Current).Shell.Main.AtualizarDadosTela_Heading(UltimaLeitura.AnguloCarroDefinido);
} }
catch (Exception exUi) catch (Exception exUi)
{ {
@ -1133,9 +1133,9 @@ namespace OperationControl.Services
private readonly GpsService gpsService; private readonly GpsService gpsService;
private int _lastReadHeartbeat = -1; private int _lastReadHeartbeat = -1;
public List<GgaFix> amostras_pos = new List<GgaFix>(1000); public List<GgaFix> amostras_pos = new List<GgaFix>(1000);
private DateTime? inicioProcesso = null; public DateTime? inicioProcesso = null;
private DateTime? inicioFix = null; public DateTime? inicioFix = null;
private DateTime? fimProcesso = null; public DateTime? fimProcesso = null;
private int segundosFixEstavel = 120; private int segundosFixEstavel = 120;
private int maxJanelaSegundos = 120; private int maxJanelaSegundos = 120;
public double Progresso public double Progresso
@ -1143,6 +1143,10 @@ namespace OperationControl.Services
get get
{ {
double progresso = inicioFix is null ? 0 : fimProcesso != null ? 100 : (DateTime.UtcNow - inicioFix.Value).TotalSeconds / segundosFixEstavel * 100.0; double progresso = inicioFix is null ? 0 : fimProcesso != null ? 100 : (DateTime.UtcNow - inicioFix.Value).TotalSeconds / segundosFixEstavel * 100.0;
if (fimProcesso == null && progresso >= 100)
{
fimProcesso = DateTime.UtcNow;
}
return progresso; return progresso;
} }
} }
@ -1182,7 +1186,7 @@ namespace OperationControl.Services
return progresso; return progresso;
} }
} }
public bool PosicaoBaseFixada = false; public bool PosicaoBaseFixada => gpsService.UltimaLeitura.QualidadeFix == TiposCorrecaoGPS.BaseFix;
public bool CorrecaoAbsoluta = false; public bool CorrecaoAbsoluta = false;
public bool CorrecaoEmAndamento = false; public bool CorrecaoEmAndamento = false;
public bool FixLiberado = false; public bool FixLiberado = false;
@ -1207,6 +1211,14 @@ namespace OperationControl.Services
try try
{ {
if (!gpsService.Ntrip_Conectado)
{
Models.Variaveis.MostrarLog("Ntrip não conectado.");
CorrecaoAbsoluta = false;
FixLiberado = false;
return CorrecaoAbsoluta;
}
// 2) Esperar FIX sustentado e coletar GNGGA // 2) Esperar FIX sustentado e coletar GNGGA
var amostras = await EsperarFixEAmostrarAsync(); var amostras = await EsperarFixEAmostrarAsync();
@ -1215,7 +1227,6 @@ 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;
} }
@ -1229,7 +1240,6 @@ 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