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) private static void EnviarComandoMotorAnalogico(BotoesJoystick botao, double valor, bool solto)
{ {
T_Code dispositivo = T_Code.Vzo; T_Code dispositivo = T_Code.Vzo;
Direcao direcao = Direcao.Parado;
double percent = 0; double percent = 0;
double centro = 32767; double centro = 32767;
double deadzone = 3000; double deadzone = 3000;
@ -551,6 +552,7 @@ namespace AgroBase
{ {
case BotoesJoystick.AEEsquerda: case BotoesJoystick.AEEsquerda:
dispositivo = T_Code.Dir; dispositivo = T_Code.Dir;
direcao = Direcao.Esquerda;
if (valor < centro - deadzone) if (valor < centro - deadzone)
percent = (centro - valor) / centro; percent = (centro - valor) / centro;
else else
@ -558,6 +560,7 @@ namespace AgroBase
break; break;
case BotoesJoystick.AEDireita: case BotoesJoystick.AEDireita:
direcao = Direcao.Direita;
dispositivo = T_Code.Dir; dispositivo = T_Code.Dir;
if (valor > centro + deadzone) if (valor > centro + deadzone)
percent = (valor - centro) / (maximo - centro); percent = (valor - centro) / (maximo - centro);
@ -579,27 +582,42 @@ namespace AgroBase
percent = 0; percent = 0;
break; 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: case BotoesJoystick.L2A:
direcao = Direcao.Tras;
dispositivo = T_Code.Mov; dispositivo = T_Code.Mov;
percent = valor / maximo; percent = valor / maximo;
break; break;
case BotoesJoystick.R2A: case BotoesJoystick.R2A:
direcao = Direcao.Frente;
dispositivo = T_Code.Mov; dispositivo = T_Code.Mov;
percent = valor / maximo; percent = valor / maximo;
break; break;
case BotoesJoystick.Xis: case BotoesJoystick.Xis:
case BotoesJoystick.Quadrado: direcao = Direcao.Frente;
dispositivo = T_Code.Mov; dispositivo = T_Code.Mov;
percent = 1.0; percent = 1.0;
break break;
;
case BotoesJoystick.SEsquerda: case BotoesJoystick.Quadrado:
case BotoesJoystick.SDireita: direcao = Direcao.Tras;
dispositivo = T_Code.Dir; dispositivo = T_Code.Mov;
percent = 1.0; percent = 1.0;
break; break;
} }
percent = FuncoesMatematicas.Clamp(percent, 0, 100); percent = FuncoesMatematicas.Clamp(percent, 0, 100);
@ -608,13 +626,15 @@ namespace AgroBase
var pControle = Variaveis.OperacaoEmAndamento.Parametros.Controle; var pControle = Variaveis.OperacaoEmAndamento.Parametros.Controle;
var _Controle = Variaveis.OperacaoEmAndamento.Controle; var _Controle = Variaveis.OperacaoEmAndamento.Controle;
_Controle.Direcao = direcao;
int mx = direcao == Direcao.Esquerda || direcao == Direcao.Tras ? -1 : 1;
switch (dispositivo) switch (dispositivo)
{ {
case T_Code.Dir: case T_Code.Dir:
_Controle.Angulo = solto ? 0 : pControle.DirAnguloMaximo * percent; _Controle.Angulo = solto ? 0 : pControle.DirAnguloMaximo * percent * mx;
break; break;
case T_Code.Mov: 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; break;
} }
} }

View File

@ -451,7 +451,7 @@ namespace AgroBase.Models
{ {
Tipo = T_Code.Mov, Tipo = T_Code.Mov,
DelayEnvioComandoBase = 10, DelayEnvioComandoBase = 10,
DelayEnvioComando = 10, DelayEnvioComando = 250,
DelayEnvioComandoExtra = 0, DelayEnvioComandoExtra = 0,
Comandos = new List<string>(), Comandos = new List<string>(),
UltimoComando = DateTime.Now UltimoComando = DateTime.Now
@ -460,7 +460,7 @@ namespace AgroBase.Models
{ {
Tipo = T_Code.Dir, Tipo = T_Code.Dir,
DelayEnvioComandoBase = 10, DelayEnvioComandoBase = 10,
DelayEnvioComando = 10, DelayEnvioComando = 250,
DelayEnvioComandoExtra = 0, DelayEnvioComandoExtra = 0,
Comandos = new List<string>(), Comandos = new List<string>(),
UltimoComando = DateTime.Now UltimoComando = DateTime.Now
@ -1371,7 +1371,6 @@ namespace AgroBase.Models
bool envioNecessario = ForcarEnvio || _Controle.RPM_SP != _ControleAnterior.RPM_SP; bool envioNecessario = ForcarEnvio || _Controle.RPM_SP != _ControleAnterior.RPM_SP;
if (envioNecessario || modsAtualizar.Any()) 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))) foreach (var Mod in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(x => envioNecessario ? true : modsAtualizar.Contains(x.Modulo_ID)))
{ {
Mod.MovMotor.EnviarComandoControle(_Controle.Direcao); 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(); var modsAtualizar = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(Mod => !Mod.DirMotor.AtingiuAnguloSP).Select(x => x.Modulo_ID).ToList();
if (!MKS057DCanService.Referenciando && (envioNecessario || modsAtualizar.Any())) 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))) foreach (var Mod in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Where(x => envioNecessario ? true : modsAtualizar.Contains(x.Modulo_ID)))
{ {
Mod.DirMotor.EnviarComandoControle(_Controle.Direcao); Mod.DirMotor.EnviarComandoControle(_Controle.Direcao);