agrobot_base/AgroBase/AgroBase/Forms/Direcional/frmDirConfig.cs

143 lines
7.0 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.Direcional
{
public partial class frmDirConfig : Form
{
DispositivosService<MovimentacaoUnificadaModel> Disp = (DispositivosService<MovimentacaoUnificadaModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd);
public frmDirConfig()
{
InitializeComponent();
}
private void frmDirConfig_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;
var Modulo = Disp.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == cmb.Name.Substring(3, 2));
if (Modulo != null)
{
Sentido sentido = Sentido.Parado;
if (cmb.Name.Contains("Frente"))
{
sentido = Modulo.DirMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Frente;
}
else if (cmb.Name.Contains("Tras"))
{
sentido = Modulo.DirMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Tras;
}
else if (cmb.Name.Contains("Esquerda"))
{
sentido = Modulo.DirMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Esquerda;
}
else if (cmb.Name.Contains("Direita"))
{
sentido = Modulo.DirMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Direita;
}
cmb.SelectedItem = Enum.GetName(typeof(Sentido), sentido);
TextBox txtEndereco = FuncoesGlobais.FindControlRecursive<TextBox>(gpbSentido, "txt" + Modulo.Modulo_ID + "Endereco");
txtEndereco.Text = FuncoesGlobais.HexByteToString(Modulo.DirMotor._EnderecoCAN_Tx);
NumericUpDown nudOffset = FuncoesGlobais.FindControlRecursive<NumericUpDown>(gpbSentido, "nud" + Modulo.Modulo_ID + "Offset");
nudOffset.Value = Convert.ToInt32(Modulo.DirMotor.FolgaMecanica);
TextBox txtOffsetAngulo = FuncoesGlobais.FindControlRecursive<TextBox>(gpbSentido, "txt" + Modulo.Modulo_ID + "OffsetAngulo");
txtOffsetAngulo.Text = Modulo.DirMotor.OffsetAnguloReal.ToString();
TextBox txtOffsetRef = FuncoesGlobais.FindControlRecursive<TextBox>(gpbSentido, "txt" + Modulo.Modulo_ID + "OffsetRef");
txtOffsetRef.Text = Modulo.DirMotor.OffsetReferenciamento.ToString();
CheckBox chbUsar = FuncoesGlobais.FindControlRecursive<CheckBox>(gpbSentido, "chb" + Modulo.Modulo_ID + "Usar");
chbUsar.Checked = Modulo.DirMotor.UsarAnguloSensor;
}
}
}
private void frmDirConfig_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
this.Visible = false;
}
private void btnSalvarSentido_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.DirMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Frente = sentido;
}
else if (cmb.Name.Contains("Tras"))
{
Modulo.DirMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Tras = sentido;
}
else if (cmb.Name.Contains("Esquerda"))
{
Modulo.DirMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Esquerda = sentido;
}
else if (cmb.Name.Contains("Direita"))
{
Modulo.DirMotor.ConfigSentidos[Variaveis.OperacaoEmAndamento.Controle.TipoMovimento].Direita = sentido;
}
TextBox txtEndereco = FuncoesGlobais.FindControlRecursive<TextBox>(gpbSentido, "txt" + Modulo.Modulo_ID + "Endereco");
Modulo.DirMotor._EnderecoCAN_Tx = FuncoesGlobais.StringToHexByte(txtEndereco.Text);
NumericUpDown nudOffset = FuncoesGlobais.FindControlRecursive<NumericUpDown>(gpbSentido, "nud" + Modulo.Modulo_ID + "Offset");
Modulo.DirMotor.FolgaMecanica = Convert.ToDouble(nudOffset.Value);
TextBox txtOffsetAngulo = FuncoesGlobais.FindControlRecursive<TextBox>(gpbSentido, "txt" + Modulo.Modulo_ID + "OffsetAngulo");
Modulo.DirMotor.OffsetAnguloReal = Convert.ToDouble(txtOffsetAngulo.Text);
TextBox txtOffsetRef = FuncoesGlobais.FindControlRecursive<TextBox>(gpbSentido, "txt" + Modulo.Modulo_ID + "OffsetRef");
Modulo.DirMotor.OffsetReferenciamento = Convert.ToDouble(txtOffsetRef.Text);
CheckBox chbUsar = FuncoesGlobais.FindControlRecursive<CheckBox>(gpbSentido, "chb" + Modulo.Modulo_ID + "Usar");
Modulo.DirMotor.UsarAnguloSensor = chbUsar.Checked;
}
}
Disp.SalvarParametros(Disp.Dados);
}
private void cmbTipoMovimento_SelectedIndexChanged(object sender, EventArgs e)
{
Variaveis.OperacaoEmAndamento.DefinirTipoMovimentoControle((TipoMovimentoDirecional)cmbTipoMovimento.SelectedIndex);
AtualizarConfiguracaoSentido();
}
}
}