Ajustes no controle
This commit is contained in:
parent
48fc2ad6b8
commit
3f55ed4fca
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue