Ajustes no fluxo de fixacao da posicao da base
This commit is contained in:
parent
c8861877fa
commit
bd0dc7c6a5
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>() { 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)
|
||||
|
|
|
|||
Loading…
Reference in New Issue