Ajustes no controle

This commit is contained in:
Diego Freitas 2026-03-18 17:00:16 -03:00
parent 48fc2ad6b8
commit 3f55ed4fca
2 changed files with 30 additions and 12 deletions

View File

@ -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;
}
}

View File

@ -451,7 +451,7 @@ namespace AgroBase.Models
{
Tipo = T_Code.Mov,
DelayEnvioComandoBase = 10,
DelayEnvioComando = 10,
DelayEnvioComando = 250,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
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<string>(),
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);