ajustes finais no controle e adicao dos itens no controle da operacao

This commit is contained in:
Diego Freitas 2026-03-24 12:36:48 -03:00
parent 903ab7f9a0
commit 09af963498
6 changed files with 37 additions and 22 deletions

View File

@ -1702,8 +1702,8 @@ namespace AgroBase.Models
var cmdRover = GeneralJoystick.DeParaComandos.FirstOrDefault(x => x.botaoJoy == controleBase.Tecla);
if (cmdRover?.Dispositivo == T_Code.Mov && Variaveis.OperacaoEmAndamento.Parametros.Controle.MovimentoAutomatico && Variaveis.OperacaoEmAndamento.Iniciado) return;
if (cmdRover?.Dispositivo == T_Code.Dir && Variaveis.OperacaoEmAndamento.Parametros.Controle.DirecionalAutomatico && Variaveis.OperacaoEmAndamento.Iniciado) return;
if (cmdRover?.Dispositivo == T_Code.Mov && (Variaveis.OperacaoEmAndamento.Parametros?.Controle?.MovimentoAutomatico ?? false) && Variaveis.OperacaoEmAndamento.Iniciado) return;
if (cmdRover?.Dispositivo == T_Code.Dir && (Variaveis.OperacaoEmAndamento.Parametros?.Controle?.DirecionalAutomatico ?? false) && Variaveis.OperacaoEmAndamento.Iniciado) return;
var _Controle = Variaveis.OperacaoEmAndamento.Controle;
if (controleBase.Controle.PercentualVelocidadeSP != null) _Controle.PercentualVelocidadeSP = (double)controleBase.Controle.PercentualVelocidadeSP;
@ -1716,10 +1716,10 @@ namespace AgroBase.Models
switch (cmdRover?.Dispositivo)
{
case T_Code.Mov:
GeneralJoystick.ProcessarDadosControle(cmdRover.botaoJoy, controleBase.Solto, valorDesejado: _Controle.PercentualVelocidadeSP);
GeneralJoystick.ProcessarDadosControle(cmdRover.botaoJoy, controleBase.Solto, valorDesejado: _Controle.PercentualVelocidadeSP, ForcarComando: true);
break;
case T_Code.Dir:
GeneralJoystick.ProcessarDadosControle(cmdRover.botaoJoy, controleBase.Solto, valorDesejado: _Controle.Angulo);
GeneralJoystick.ProcessarDadosControle(cmdRover.botaoJoy, controleBase.Solto, valorDesejado: _Controle.Angulo, ForcarComando: true);
break;
}
}

View File

@ -1214,7 +1214,7 @@ namespace AgroBase.Services
double headingDeg, // OrientacaoReal (antena/corpo)
double angMovDeg, // OrientacaoMovimento (calculada acima)
double distLinearJanela, // UltimaLeitura.Distancia (Δpos linear entre 1ª e última amostra)
double velPercent = 0.0, // se tiver velocidade filtrada, passe aqui; senão 0
double velPercent = 0.0, // se tiver velocidade filtrada, passe aqui; senão 0
bool rtkFix = true, // se tiver essa info
double angFundidoAnterior = double.NaN, // para low-pass; passe double.NaN para desabilitar
double alfaLowPass = 0.25 // 0→sem low-pass; 0.20.35 costuma ser bom

View File

@ -147,7 +147,7 @@ public sealed class ManualControlSender : IDisposable
}
private static bool IsNeutral(UdpCtrlMessage msg)
=> msg.Key == AgroBase.Models.Enums.BotoesJoystick.Vazio;
=> msg.Key == AgroBase.Models.Enums.BotoesJoystick.Vazio || msg.released;
private UdpCtrlMessage BuildStopMsg()
{
@ -156,6 +156,7 @@ public sealed class ManualControlSender : IDisposable
Device = _device,
Flags = UdpCtrlFlags.HasKey | UdpCtrlFlags.HasPayload,
Key = AgroBase.Models.Enums.BotoesJoystick.Vazio,
released = false,
P1 = 0,
P2 = 0
};
@ -169,4 +170,5 @@ public sealed class ManualControlSender : IDisposable
_cts = null;
_loop = null;
}
}

View File

@ -140,30 +140,35 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento.Diagnostico
// ATUADOR / SISTEMA DE PULVERIZAÇÃO
// =============================
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_BMBAGT", Modulo = T_Code.Atu, LabelModulo = "BMBAGT", SCode = S_Code.sBMB, TextoBase = "AGIT", Left = 315, Top = 570 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_PRSLN", Modulo = T_Code.Atu, LabelModulo = "PRSLN", SCode = S_Code.sPRS, TextoBase = "PRS", Left = 230, Top = 610 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU", Modulo = T_Code.Atu, LabelModulo = "", SCode = S_Code.sMOD, TextoBase = "ATU", Left = 315, Top = 610 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_FLXLN", Modulo = T_Code.Atu, LabelModulo = "FLXLN", SCode = S_Code.sFLX, TextoBase = "FLX", Left = 400, Top = 610 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_BOMBA", Modulo = T_Code.Atu, LabelModulo = "BOMBA", SCode = S_Code.sBMB, TextoBase = "BMB", Left = 230, Top = 650 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_BMBLN", Modulo = T_Code.Atu, LabelModulo = "BOMBA", SCode = S_Code.sBMB, TextoBase = "BMB", Left = 230, Top = 650 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MASRS", Modulo = T_Code.Atu, LabelModulo = "MASRS", SCode = S_Code.sMAS, TextoBase = "MAS", Left = 400, Top = 650 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "CAM", Modulo = T_Code.Cam, LabelModulo = "", SCode = S_Code.sVZO, TextoBase = "CAM", Left = 315, Top = 650 });
// =============================
// SENSORES BARRA PULVERIZADORA
// =============================
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGESQ", Modulo = T_Code.Atu, LabelModulo = "MAGESQ", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 165, Top = 705 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGALT", Modulo = T_Code.Atu, LabelModulo = "MAGALT", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 315, Top = 705 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGDIR", Modulo = T_Code.Atu, LabelModulo = "MAGDIR", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 465, Top = 705 });
// =============================
// BICOS
// =============================
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_SRVB1", Modulo = T_Code.Atu, LabelModulo = "SRVB1", SCode = S_Code.sSRV, TextoBase = "SVB1", Left = 110, Top = 705 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B01", Modulo = T_Code.Atu, LabelModulo = "B01", SCode = S_Code.sBIC, TextoBase = "B01", Left = 110, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGESQ", Modulo = T_Code.Atu, LabelModulo = "MAGESQ", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 215, Top = 730 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGALT", Modulo = T_Code.Atu, LabelModulo = "MAGALT", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 315, Top = 705 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_MAGDIR", Modulo = T_Code.Atu, LabelModulo = "MAGDIR", SCode = S_Code.sMAG, TextoBase = "MAG", Left = 415, Top = 730 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B02", Modulo = T_Code.Atu, LabelModulo = "B02", SCode = S_Code.sBIC, TextoBase = "B02", Left = 315, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_SRVB3", Modulo = T_Code.Atu, LabelModulo = "SRVB3", SCode = S_Code.sSRV, TextoBase = "SVB3", Left = 520, Top = 705 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B03", Modulo = T_Code.Atu, LabelModulo = "B03", SCode = S_Code.sBIC, TextoBase = "B03", Left = 520, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B01", Modulo = T_Code.Atu, LabelModulo = "B01", SCode = S_Code.sBIC, TextoBase = "B01", Left = 90, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B02", Modulo = T_Code.Atu, LabelModulo = "B02", SCode = S_Code.sBIC, TextoBase = "B02", Left = 165, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B03", Modulo = T_Code.Atu, LabelModulo = "B03", SCode = S_Code.sBIC, TextoBase = "B03", Left = 240, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B04", Modulo = T_Code.Atu, LabelModulo = "B04", SCode = S_Code.sBIC, TextoBase = "B04", Left = 315, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B05", Modulo = T_Code.Atu, LabelModulo = "B05", SCode = S_Code.sBIC, TextoBase = "B05", Left = 390, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B06", Modulo = T_Code.Atu, LabelModulo = "B06", SCode = S_Code.sBIC, TextoBase = "B06", Left = 465, Top = 745 });
DiagnosticoModulos.Add(new DiagnosticoModuloItemViewModel { IdVisual = "ATU_B07", Modulo = T_Code.Atu, LabelModulo = "B07", SCode = S_Code.sBIC, TextoBase = "B07", Left = 540, Top = 745 });
}
@ -586,6 +591,14 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento.Diagnostico
{
mod.Mandatorio = MandatorioSelecionado;
mod.Utilizar = EmUsoSelecionado;
if (mod.ComponentesEmUso != null)
{
var chaves = mod.ComponentesEmUso.Keys.ToList();
foreach (var key in chaves)
{
mod.ComponentesEmUso[key] = (MandatorioSelecionado, EmUsoSelecionado);
}
}
}
else
{

View File

@ -160,9 +160,9 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento
Task.Run(async () =>
{
await VariaveisControleOperacao.EnviarComandoParadaUDP(pausa: true);
await Task.Delay(500);
await Task.Delay(2000);
VariaveisControleOperacao.EnviarComandoRetornoBase(lat, lon);
await Task.Delay(1000);
await Task.Delay(2000);
await VariaveisControleOperacao.EnviarComandoParadaUDP(pausa: false);
});

View File

@ -342,9 +342,9 @@ namespace OperationControl.ViewModels.Views.Operacao
if ((dadosRover?.Operacao?.Status ?? StatusOperacao.NaoIniciado) == StatusOperacao.Concluido)
{
VariaveisControleOperacao.EnviarComandoIniciarOperacao(false, false);
await Task.Delay(500);
await Task.Delay(2000);
}
bool simulador = VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Gnss?.Iniciado != true;
bool simulador = AppShell.Mock || AppShell.AddRover; // || VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Gnss?.Iniciado != true;
VariaveisControleOperacao.EnviarComandoIniciarOperacao(true, simulador);
await Task.Delay(1000);
if (!(dadosRover?.Operacao?.Liberada ?? false))