From 3f55ed4fca9db9f6750d3ebbd750495213de03ee Mon Sep 17 00:00:00 2001 From: Diego Freitas Date: Wed, 18 Mar 2026 17:00:16 -0300 Subject: [PATCH] Ajustes no controle --- AgroBase/AgroBase/Models/GeneralJoystick.cs | 36 ++++++++++++++----- .../Models/Operacoes/OperacaoModel.cs | 6 ++-- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/AgroBase/AgroBase/Models/GeneralJoystick.cs b/AgroBase/AgroBase/Models/GeneralJoystick.cs index 8dade58dd..1b8ddc949 100644 --- a/AgroBase/AgroBase/Models/GeneralJoystick.cs +++ b/AgroBase/AgroBase/Models/GeneralJoystick.cs @@ -542,6 +542,7 @@ namespace AgroBase private static void EnviarComandoMotorAnalogico(BotoesJoystick botao, double valor, bool solto) { T_Code dispositivo = T_Code.Vzo; + Direcao direcao = Direcao.Parado; double percent = 0; double centro = 32767; double deadzone = 3000; @@ -551,6 +552,7 @@ namespace AgroBase { case BotoesJoystick.AEEsquerda: dispositivo = T_Code.Dir; + direcao = Direcao.Esquerda; if (valor < centro - deadzone) percent = (centro - valor) / centro; else @@ -558,6 +560,7 @@ namespace AgroBase break; case BotoesJoystick.AEDireita: + direcao = Direcao.Direita; dispositivo = T_Code.Dir; if (valor > centro + deadzone) percent = (valor - centro) / (maximo - centro); @@ -579,27 +582,42 @@ namespace AgroBase percent = 0; break; + case BotoesJoystick.SEsquerda: + direcao = Direcao.Esquerda; + dispositivo = T_Code.Dir; + percent = 1.0; + break; + + case BotoesJoystick.SDireita: + direcao = Direcao.Direita; + dispositivo = T_Code.Dir; + percent = 1.0; + break; + case BotoesJoystick.L2A: + direcao = Direcao.Tras; dispositivo = T_Code.Mov; percent = valor / maximo; break; case BotoesJoystick.R2A: + direcao = Direcao.Frente; dispositivo = T_Code.Mov; percent = valor / maximo; break; case BotoesJoystick.Xis: - case BotoesJoystick.Quadrado: + direcao = Direcao.Frente; dispositivo = T_Code.Mov; percent = 1.0; - break - ; - case BotoesJoystick.SEsquerda: - case BotoesJoystick.SDireita: - dispositivo = T_Code.Dir; + break; + + case BotoesJoystick.Quadrado: + direcao = Direcao.Tras; + dispositivo = T_Code.Mov; percent = 1.0; break; + } percent = FuncoesMatematicas.Clamp(percent, 0, 100); @@ -608,13 +626,15 @@ namespace AgroBase var pControle = Variaveis.OperacaoEmAndamento.Parametros.Controle; var _Controle = Variaveis.OperacaoEmAndamento.Controle; + _Controle.Direcao = direcao; + int mx = direcao == Direcao.Esquerda || direcao == Direcao.Tras ? -1 : 1; switch (dispositivo) { case T_Code.Dir: - _Controle.Angulo = solto ? 0 : pControle.DirAnguloMaximo * percent; + _Controle.Angulo = solto ? 0 : pControle.DirAnguloMaximo * percent * mx; break; case T_Code.Mov: - _Controle.PercentualVelocidadeSP = solto ? 0 : Math.Max(pControle.MovVelocidadeCErvasPercent, pControle.MovVelocidadeSErvasPercent * percent); + _Controle.PercentualVelocidadeSP = solto ? 0 : Math.Max(pControle.MovVelocidadeCErvasPercent, pControle.MovVelocidadeSErvasPercent * percent) * mx; break; } } diff --git a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs index 2317bb9d5..f99818f48 100644 --- a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs +++ b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs @@ -451,7 +451,7 @@ namespace AgroBase.Models { Tipo = T_Code.Mov, DelayEnvioComandoBase = 10, - DelayEnvioComando = 10, + DelayEnvioComando = 250, DelayEnvioComandoExtra = 0, Comandos = new List(), UltimoComando = DateTime.Now @@ -460,7 +460,7 @@ namespace AgroBase.Models { Tipo = T_Code.Dir, DelayEnvioComandoBase = 10, - DelayEnvioComando = 10, + DelayEnvioComando = 250, DelayEnvioComandoExtra = 0, Comandos = new List(), UltimoComando = DateTime.Now @@ -1371,7 +1371,6 @@ namespace AgroBase.Models bool envioNecessario = ForcarEnvio || _Controle.RPM_SP != _ControleAnterior.RPM_SP; if (envioNecessario || modsAtualizar.Any()) { - Console.WriteLine($"Vai enviar comando MOV"); foreach (var Mod in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(x => envioNecessario ? true : modsAtualizar.Contains(x.Modulo_ID))) { Mod.MovMotor.EnviarComandoControle(_Controle.Direcao); @@ -1414,7 +1413,6 @@ namespace AgroBase.Models var modsAtualizar = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(Mod => !Mod.DirMotor.AtingiuAnguloSP).Select(x => x.Modulo_ID).ToList(); if (!MKS057DCanService.Referenciando && (envioNecessario || modsAtualizar.Any())) { - Console.WriteLine($"Vai enviar comando DIR"); foreach (var Mod in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(x => envioNecessario ? true : modsAtualizar.Contains(x.Modulo_ID))) { Mod.DirMotor.EnviarComandoControle(_Controle.Direcao);