167 lines
8.2 KiB
C#
167 lines
8.2 KiB
C#
using AgroBase.Comum;
|
|
using AgroBase.Models;
|
|
using AgroBase.Models.Modules;
|
|
using System;
|
|
using System.Linq;
|
|
using System.Windows.Forms;
|
|
using static AgroBase.Models.Enums;
|
|
|
|
namespace AgroBase.Forms.Movimentacao
|
|
{
|
|
public partial class frmMovConfig : Form
|
|
{
|
|
DispositivosService<MovimentacaoUnificadaModel> Disp = (DispositivosService<MovimentacaoUnificadaModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd);
|
|
|
|
public frmMovConfig()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void frmMovConfig_Load(object sender, EventArgs e)
|
|
{
|
|
if (Disp == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
cmbTipoMovimento.Items.Clear();
|
|
cmbTipoMovimento.Items.AddRange(Enum.GetNames(typeof(TipoMovimentoDirecional)));
|
|
cmbTipoMovimento.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Controle.TipoMovimento;
|
|
|
|
AtualizarConfiguracaoSentido();
|
|
}
|
|
|
|
private void AtualizarConfiguracaoSentido()
|
|
{
|
|
var cmbsSentido = gpbET.Controls.OfType<ComboBox>().ToList().Union(gpbEF.Controls.OfType<ComboBox>().ToList()).Union(gpbDT.Controls.OfType<ComboBox>().ToList()).Union(gpbDF.Controls.OfType<ComboBox>().ToList()).ToList();
|
|
foreach (var cmb in cmbsSentido)
|
|
{
|
|
cmb.Items.Clear();
|
|
cmb.Items.AddRange(Enum.GetNames(typeof(Sentido)).ToArray());
|
|
cmb.SelectedIndex = 0;
|
|
|
|
string Mod_ID = cmb.Name.Substring(3, 2);
|
|
|
|
var Modulo = Disp.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
|
|
if (Modulo != null)
|
|
{
|
|
Sentido sentido = Sentido.Parado;
|
|
if (cmb.Name.Contains("Frente"))
|
|
{
|
|
sentido = Modulo.MovMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Frente;
|
|
}
|
|
else if (cmb.Name.Contains("Tras"))
|
|
{
|
|
sentido = Modulo.MovMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Tras;
|
|
}
|
|
else if (cmb.Name.Contains("Esquerda"))
|
|
{
|
|
sentido = Modulo.MovMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Esquerda;
|
|
}
|
|
else if (cmb.Name.Contains("Direita"))
|
|
{
|
|
sentido = Modulo.MovMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Direita;
|
|
}
|
|
|
|
cmb.SelectedItem = Enum.GetName(typeof(Sentido), sentido);
|
|
|
|
nudNumPolos.Value = Modulo.MovMotor.NumeroPolos;
|
|
nudRampa.Value = Modulo.MovMotor.Rampa;
|
|
txtTorqueMaximo.Text = Modulo.MovMotor.CorrenteTorqueMaximo.ToString();
|
|
|
|
TextBox txtEndereco = FuncoesGlobais.FindControlRecursive<TextBox>(gpbSentido, "txt" + Modulo.Modulo_ID + "Endereco");
|
|
txtEndereco.Text = FuncoesGlobais.HexByteToString(Modulo.MovMotor._EnderecoCAN_Tx);
|
|
|
|
GroupBox gpbFreio = FuncoesGlobais.FindControlRecursive<GroupBox>(gpbSentido, "gpb" + Mod_ID + "_Freio");
|
|
if (gpbFreio != null)
|
|
{
|
|
RadioButton rdbInc = gpbFreio.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Name == "rdb" + Mod_ID + "_Inc");
|
|
RadioButton rdbDec = gpbFreio.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Name == "rdb" + Mod_ID + "_Dec");
|
|
NumericUpDown nudAngulo = gpbFreio.Controls.OfType<NumericUpDown>().FirstOrDefault(x => x.Name == "nud" + Mod_ID + "_Angulo");
|
|
|
|
rdbInc.Checked = Modulo.MovMotor.ConfigFreio.Incremental;
|
|
rdbDec.Checked = !Modulo.MovMotor.ConfigFreio.Incremental;
|
|
nudAngulo.Value = Modulo.MovMotor.ConfigFreio.AnguloInicial;
|
|
}
|
|
}
|
|
}
|
|
|
|
nudRPMMax.Value = (int)Disp.Dados.RPM_Max_MotorBLDC;
|
|
nudReducao.Value = (int)Disp.Dados.ReducaoMotorBLDC;
|
|
nudDiametroRoda.Value = (int)(Disp.Dados.DiametroRoda * 1000);
|
|
}
|
|
|
|
private void frmMovConfig_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
e.Cancel = true;
|
|
this.Visible = false;
|
|
}
|
|
|
|
private void btnSalvar_Click(object sender, EventArgs e)
|
|
{
|
|
var cmbsSentido = gpbET.Controls.OfType<ComboBox>().ToList().Union(gpbEF.Controls.OfType<ComboBox>().ToList()).Union(gpbDT.Controls.OfType<ComboBox>().ToList()).Union(gpbDF.Controls.OfType<ComboBox>().ToList()).ToList();
|
|
foreach (var cmb in cmbsSentido)
|
|
{
|
|
var Modulo = Disp.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == cmb.Name.Substring(3, 2));
|
|
if (Modulo != null)
|
|
{
|
|
Sentido sentido = (Sentido)cmb.SelectedIndex;
|
|
if (cmb.Name.Contains("Frente"))
|
|
{
|
|
Modulo.MovMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Frente = sentido;
|
|
}
|
|
else if (cmb.Name.Contains("Tras"))
|
|
{
|
|
Modulo.MovMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Tras = sentido;
|
|
}
|
|
else if (cmb.Name.Contains("Esquerda"))
|
|
{
|
|
Modulo.MovMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Esquerda = sentido;
|
|
}
|
|
else if (cmb.Name.Contains("Direita"))
|
|
{
|
|
Modulo.MovMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Direita = sentido;
|
|
}
|
|
|
|
Modulo.MovMotor.NumeroPolos = Convert.ToInt32(nudNumPolos.Value);
|
|
Modulo.MovMotor.Rampa = Convert.ToInt32(nudRampa.Value);
|
|
Modulo.MovMotor.CorrenteTorqueMaximo = Convert.ToInt32(txtTorqueMaximo.Text);
|
|
|
|
TextBox txtEndereco = FuncoesGlobais.FindControlRecursive<TextBox>(gpbSentido, "txt" + Modulo.Modulo_ID + "Endereco");
|
|
Modulo.MovMotor._EnderecoCAN_Tx = FuncoesGlobais.StringToHexByte(txtEndereco.Text);
|
|
|
|
GroupBox gpbFreio = FuncoesGlobais.FindControlRecursive<GroupBox>(gpbSentido, "gpb" + Modulo.Modulo_ID + "_Freio");
|
|
if (gpbFreio != null)
|
|
{
|
|
RadioButton rdbInc = gpbFreio.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Name == "rdb" + Modulo.Modulo_ID + "_Inc");
|
|
RadioButton rdbDec = gpbFreio.Controls.OfType<RadioButton>().FirstOrDefault(x => x.Name == "rdb" + Modulo.Modulo_ID + "_Dec");
|
|
NumericUpDown nudAngulo = gpbFreio.Controls.OfType<NumericUpDown>().FirstOrDefault(x => x.Name == "nud" + Modulo.Modulo_ID + "_Angulo");
|
|
|
|
Modulo.MovMotor.ConfigFreio.Incremental = rdbInc.Checked;
|
|
Modulo.MovMotor.ConfigFreio.AnguloInicial = (int)nudAngulo.Value;
|
|
|
|
var servo = Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.FirstOrDefault(x => x.ID.Contains(Modulo.Modulo_ID));
|
|
if (servo != null)
|
|
{
|
|
servo.Incremental = rdbInc.Checked;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Disp.Dados.RPM_Max_MotorBLDC = Convert.ToInt32(nudRPMMax.Value);
|
|
Disp.Dados.ReducaoMotorBLDC = Convert.ToInt32(nudReducao.Value);
|
|
Disp.Dados.DiametroRoda = Convert.ToDouble(nudDiametroRoda.Value / 1000);
|
|
|
|
Disp.SalvarParametros(Disp.Dados);
|
|
}
|
|
|
|
private void cmbTipoMovimento_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
Variaveis.OperacaoEmAndamento.DefinirTipoMovimentoControle((TipoMovimentoDirecional)cmbTipoMovimento.SelectedIndex);
|
|
AtualizarConfiguracaoSentido();
|
|
}
|
|
|
|
}
|
|
}
|