agrobot_base/AgroBase/AgroBase/Forms/Movimentacao/frmMovConfig.cs

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();
}
}
}