225 lines
10 KiB
C#
225 lines
10 KiB
C#
using AgroBase.Comum;
|
|
using AgroBase.Models;
|
|
using AgroBase.Models.Modules;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using static AgroBase.Models.Enuns;
|
|
|
|
namespace AgroBase.Forms.Direcional
|
|
{
|
|
public partial class frmDirConfig : Form
|
|
{
|
|
DispositivosService<DirecionalModel> Disp = (DispositivosService<DirecionalModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Dir);
|
|
|
|
public frmDirConfig()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void frmDirConfig_Load(object sender, EventArgs e)
|
|
{
|
|
if (Disp == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
List<string> Pinos = new List<string>()
|
|
{
|
|
Enum.GetName(typeof(FuncoesPinout), FuncoesPinout.NaoConectado),
|
|
};
|
|
|
|
DirecionalModel.Funcoes.ForEach(x => Pinos.Add(Enum.GetName(typeof(FuncoesPinout), x)));
|
|
|
|
foreach (var Motor in ((DirecionalModel)(Disp.Dados)).Motores)
|
|
{
|
|
Motor.Funcoes.ForEach(x => Pinos.Add(Motor.ID + " " + Enum.GetName(typeof(FuncoesPinout), x)));
|
|
}
|
|
|
|
List<ComboBox> cmbs = this.Controls.OfType<ComboBox>().Where(x => x.Name.Contains("cmbGPIO") && x.Enabled).ToList();
|
|
foreach (var cmb in cmbs)
|
|
{
|
|
cmb.SelectedIndexChanged += Cmb_SelectedIndexChanged;
|
|
cmb.Items.Clear();
|
|
Pinos.ForEach(x => cmb.Items.Add(x));
|
|
int pino = int.Parse(cmb.Name.Replace("cmbGPIO", ""));
|
|
cmb.SelectedIndex = 0;
|
|
|
|
var Selecionado = DirecionalModel.Pinout.FirstOrDefault(x => x.Pino == pino);
|
|
if (Selecionado != null) cmb.SelectedItem = (Selecionado.Funcao != FuncoesPinout.Geral ? Selecionado.ComponenteID + " " : "") + Enum.GetName(typeof(FuncoesPinout), Selecionado.Funcao);
|
|
}
|
|
|
|
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 Motor = ((DirecionalModel)Disp.Dados).Motores.FirstOrDefault(x => x.ID == cmb.Name.Substring(3, 2));
|
|
if (Motor != null)
|
|
{
|
|
Sentido sentido = Sentido.Parado;
|
|
if (cmb.Name.Contains("Frente"))
|
|
{
|
|
sentido = Motor.ConfigSentidos.Frente;
|
|
}
|
|
else if (cmb.Name.Contains("Tras"))
|
|
{
|
|
sentido = Motor.ConfigSentidos.Tras;
|
|
}
|
|
else if (cmb.Name.Contains("Esquerda"))
|
|
{
|
|
sentido = Motor.ConfigSentidos.Esquerda;
|
|
}
|
|
else if (cmb.Name.Contains("Direita"))
|
|
{
|
|
sentido = Motor.ConfigSentidos.Direita;
|
|
}
|
|
|
|
cmb.SelectedItem = Enum.GetName(typeof(Sentido), sentido);
|
|
}
|
|
|
|
}
|
|
|
|
var nudsOffsets = gpbET.Controls.OfType<NumericUpDown>().ToList().Union(gpbEF.Controls.OfType<NumericUpDown>().ToList()).Union(gpbDT.Controls.OfType<NumericUpDown>().ToList()).Union(gpbDF.Controls.OfType<NumericUpDown>().ToList()).ToList();
|
|
foreach (var nud in nudsOffsets)
|
|
{
|
|
var Motor = ((DirecionalModel)Disp.Dados).Motores.FirstOrDefault(x => x.ID == nud.Name.Substring(3, 2));
|
|
if (Motor != null)
|
|
{
|
|
nud.Value = Convert.ToInt32(Motor.Angulo_Offset);
|
|
}
|
|
}
|
|
|
|
|
|
var chbs = gpbET.Controls.OfType<CheckBox>().ToList().Union(gpbEF.Controls.OfType<CheckBox>().ToList()).Union(gpbDT.Controls.OfType<CheckBox>().ToList()).Union(gpbDF.Controls.OfType<CheckBox>().ToList()).ToList();
|
|
foreach (var chb in chbs)
|
|
{
|
|
var Motor = ((DirecionalModel)Disp.Dados).Motores.FirstOrDefault(x => x.ID == chb.Name.Substring(3, 2));
|
|
if (Motor != null)
|
|
{
|
|
var chbEstabilizar = chbs.FirstOrDefault(x => x.Name.Contains(Motor.ID + "Estabilizar"));
|
|
chbEstabilizar.Checked = Motor.Estabilizar;
|
|
var chbControlar = chbs.FirstOrDefault(x => x.Name.Contains(Motor.ID + "Controlar"));
|
|
chbControlar.Checked = Motor.Controlar;
|
|
var chbReferenciar = chbs.FirstOrDefault(x => x.Name.Contains(Motor.ID + "Referenciar"));
|
|
chbReferenciar.Checked = Motor.Referenciar;
|
|
var chbLivre = chbs.FirstOrDefault(x => x.Name.Contains(Motor.ID + "Livre"));
|
|
chbDFLivre.Checked = Motor.Livre;
|
|
}
|
|
}
|
|
|
|
chbAA_Ref0.Checked = ((DirecionalModel)Disp.Dados).AA_Ref000;
|
|
chbAA_Ref90.Checked = ((DirecionalModel)Disp.Dados).AA_Ref090;
|
|
chbAA_Ref270.Checked = ((DirecionalModel)Disp.Dados).AA_Ref270;
|
|
}
|
|
|
|
private void Cmb_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
var cmb = (ComboBox)sender;
|
|
this.Controls.OfType<ComboBox>().Where(x => x.Name != cmb.Name && x.SelectedItem != null && x.SelectedItem.ToString() == cmb.SelectedItem.ToString()).ToList().ForEach(x => x.SelectedIndex = 0);
|
|
}
|
|
|
|
private void btnSalvar_Click(object sender, EventArgs e)
|
|
{
|
|
if (Disp == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
DirecionalModel.Pinout.ForEach(x =>
|
|
{
|
|
x.ComponenteID = "";
|
|
x.Funcao = FuncoesPinout.NaoConectado;
|
|
});
|
|
|
|
List<ComboBox> cmbs = this.Controls.OfType<ComboBox>().Where(x => x.Enabled).ToList();
|
|
foreach (var cmb in cmbs)
|
|
{
|
|
int pino = int.Parse(cmb.Name.Replace("cmbGPIO", ""));
|
|
string ComponenteID = cmb.SelectedItem.ToString().Split(' ').Length > 1 ? cmb.SelectedItem.ToString().Split(' ')[0] : "";
|
|
FuncoesPinout Funcao = (FuncoesPinout)Enum.Parse(typeof(FuncoesPinout), ComponenteID != "" ? (cmb.SelectedItem.ToString().Split(' ')[1]) : cmb.SelectedItem.ToString());
|
|
DirecionalModel.Pinout.FirstOrDefault(x => x.Pino == pino).Funcao = Funcao;
|
|
DirecionalModel.Pinout.FirstOrDefault(x => x.Pino == pino).ComponenteID = ComponenteID;
|
|
}
|
|
|
|
((DirecionalModel)(Disp.Dados)).SalvarPinout(DirecionalModel.Pinout, "pinout" + Enum.GetName(typeof(T_Code), Disp.Dispositivo) + ".pin");
|
|
}
|
|
|
|
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 Motor = ((DirecionalModel)Disp.Dados).Motores.FirstOrDefault(x => x.ID == cmb.Name.Substring(3, 2));
|
|
if (Motor != null)
|
|
{
|
|
Sentido sentido = (Sentido)cmb.SelectedIndex;
|
|
if (cmb.Name.Contains("Frente"))
|
|
{
|
|
Motor.ConfigSentidos.Frente = sentido;
|
|
}
|
|
else if (cmb.Name.Contains("Tras"))
|
|
{
|
|
Motor.ConfigSentidos.Tras = sentido;
|
|
}
|
|
else if (cmb.Name.Contains("Esquerda"))
|
|
{
|
|
Motor.ConfigSentidos.Esquerda = sentido;
|
|
}
|
|
else if (cmb.Name.Contains("Direita"))
|
|
{
|
|
Motor.ConfigSentidos.Direita = sentido;
|
|
}
|
|
}
|
|
}
|
|
|
|
var nudsOffsets = gpbET.Controls.OfType<NumericUpDown>().ToList().Union(gpbEF.Controls.OfType<NumericUpDown>().ToList()).Union(gpbDT.Controls.OfType<NumericUpDown>().ToList()).Union(gpbDF.Controls.OfType<NumericUpDown>().ToList()).ToList();
|
|
foreach (var nud in nudsOffsets)
|
|
{
|
|
var Motor = ((DirecionalModel)Disp.Dados).Motores.FirstOrDefault(x => x.ID == nud.Name.Substring(3, 2));
|
|
if (Motor != null)
|
|
{
|
|
Motor.Angulo_Offset = Convert.ToDouble(nud.Value);
|
|
}
|
|
}
|
|
|
|
var chbs = gpbET.Controls.OfType<CheckBox>().ToList().Union(gpbEF.Controls.OfType<CheckBox>().ToList()).Union(gpbDT.Controls.OfType<CheckBox>().ToList()).Union(gpbDF.Controls.OfType<CheckBox>().ToList()).ToList();
|
|
foreach (var chb in chbs)
|
|
{
|
|
var Motor = ((DirecionalModel)Disp.Dados).Motores.FirstOrDefault(x => x.ID == chb.Name.Substring(3, 2));
|
|
if (Motor != null)
|
|
{
|
|
var chbEstabilizar = chbs.FirstOrDefault(x => x.Name.Contains(Motor.ID + "Estabilizar"));
|
|
Motor.Estabilizar = chbEstabilizar.Checked;
|
|
var chbControlar = chbs.FirstOrDefault(x => x.Name.Contains(Motor.ID + "Controlar"));
|
|
Motor.Controlar = chbControlar.Checked;
|
|
var chbReferenciar = chbs.FirstOrDefault(x => x.Name.Contains(Motor.ID + "Referenciar"));
|
|
Motor.Referenciar = chbReferenciar.Checked;
|
|
var chbLivre = chbs.FirstOrDefault(x => x.Name.Contains(Motor.ID + "Livre"));
|
|
Motor.Livre = chbLivre.Checked;
|
|
}
|
|
}
|
|
|
|
((DirecionalModel)Disp.Dados).AA_Ref000 = chbAA_Ref0.Checked;
|
|
((DirecionalModel)Disp.Dados).AA_Ref090 = chbAA_Ref90.Checked;
|
|
((DirecionalModel)Disp.Dados).AA_Ref270 = chbAA_Ref270.Checked;
|
|
|
|
Disp.SalvarParametros((DirecionalModel)Disp.Dados);
|
|
}
|
|
|
|
private void frmDirConfig_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
e.Cancel = true;
|
|
this.Visible = false;
|
|
}
|
|
}
|
|
}
|