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 Disp = (DispositivosService)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().ToList().Union(gpbEF.Controls.OfType().ToList()).Union(gpbDT.Controls.OfType().ToList()).Union(gpbDF.Controls.OfType().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(gpbSentido, "txt" + Modulo.Modulo_ID + "Endereco"); txtEndereco.Text = FuncoesGlobais.HexByteToString(Modulo.DirMotor._EnderecoCAN_Tx); NumericUpDown nudOffset = FuncoesGlobais.FindControlRecursive(gpbSentido, "nud" + Modulo.Modulo_ID + "Offset"); nudOffset.Value = Convert.ToInt32(Modulo.DirMotor.FolgaMecanica); TextBox txtOffsetAngulo = FuncoesGlobais.FindControlRecursive(gpbSentido, "txt" + Modulo.Modulo_ID + "OffsetAngulo"); txtOffsetAngulo.Text = Modulo.DirMotor.OffsetAnguloReal.ToString(); TextBox txtOffsetRef = FuncoesGlobais.FindControlRecursive(gpbSentido, "txt" + Modulo.Modulo_ID + "OffsetRef"); txtOffsetRef.Text = Modulo.DirMotor.OffsetReferenciamento.ToString(); CheckBox chbUsar = FuncoesGlobais.FindControlRecursive(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().ToList().Union(gpbEF.Controls.OfType().ToList()).Union(gpbDT.Controls.OfType().ToList()).Union(gpbDF.Controls.OfType().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(gpbSentido, "txt" + Modulo.Modulo_ID + "Endereco"); Modulo.DirMotor._EnderecoCAN_Tx = FuncoesGlobais.StringToHexByte(txtEndereco.Text); NumericUpDown nudOffset = FuncoesGlobais.FindControlRecursive(gpbSentido, "nud" + Modulo.Modulo_ID + "Offset"); Modulo.DirMotor.FolgaMecanica = Convert.ToDouble(nudOffset.Value); TextBox txtOffsetAngulo = FuncoesGlobais.FindControlRecursive(gpbSentido, "txt" + Modulo.Modulo_ID + "OffsetAngulo"); Modulo.DirMotor.OffsetAnguloReal = Convert.ToDouble(txtOffsetAngulo.Text); TextBox txtOffsetRef = FuncoesGlobais.FindControlRecursive(gpbSentido, "txt" + Modulo.Modulo_ID + "OffsetRef"); Modulo.DirMotor.OffsetReferenciamento = Convert.ToDouble(txtOffsetRef.Text); CheckBox chbUsar = FuncoesGlobais.FindControlRecursive(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(); } } }