agrobot_base/AgroBase/AgroBase/Forms/frmOID.cs

214 lines
8.5 KiB
C#

using AgroBase.Models;
using AgroBase.Services;
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;
namespace AgroBase.Forms
{
public partial class frmOID : Form
{
byte Addr = 0x01;
OIDModoControle ModoControle = OIDModoControle.Velocidade;
public frmOID()
{
InitializeComponent();
}
private void frmOID_Load(object sender, EventArgs e)
{
nudEndereco.Value = Convert.ToInt32(Addr);
cmbModo.Items.Clear();
cmbModo.Items.AddRange(new string[] { "ControleCorrente", "ControleVelocidade", "ControleCicloTrabalho" });
cmbModo.SelectedIndex = (int)ModoControle;
}
private async Task EnviarComando(bool get, int tamanho, string parametro, bool aguarda = true, float? val = null)
{
Addr = Convert.ToByte(nudEndereco.Value);
var Comando = new Models.OIDComandoModel()
{
Endereco = Addr,
AguardaResposta = aguarda,
TamanhoEsperado = tamanho,
Get = get,
Parametro = OIDRs485Service.Parametros.First(x => x.Chave == parametro),
};
if (val != null)
{
Comando.Valor = (float)val;
}
await OIDRs485Service.EnviarComandoControle(Comando);
txtConsole.Text += SerialService.MostrarComandoResposta(Enums.T_Code.Oid, Comando.Comando, Comando.Resposta) + Environment.NewLine;
}
private async void btnERPM_Click(object sender, EventArgs e)
{
await EnviarComando(true, 9, "VelocidadeAngular");
txtERPM.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.ERPM ?? 0).ToString();
}
private async void button3_Click(object sender, EventArgs e)
{
await EnviarComando(true, 9, "CorrenteMotor");
txtCorrente.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.CorrenteMotor ?? 0).ToString();
}
private async void button4_Click(object sender, EventArgs e)
{
await EnviarComando(true, 9, "Tensao");
txtTensao.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.Tensao ?? 0).ToString();
}
private async void button5_Click(object sender, EventArgs e)
{
await EnviarComando(true, 9, "Potencia");
txtPotencia.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.Potencia ?? 0).ToString();
}
private async void button6_Click(object sender, EventArgs e)
{
await EnviarComando(true, 9, "CicloTrabalho");
txtCicloTrabalho.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.CicloTrabalho ?? 0).ToString();
}
private async void button7_Click(object sender, EventArgs e)
{
await EnviarComando(true, 7, "Temperatura");
txtTemperatura.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.Temperatura ?? 0).ToString();
}
private async void button1_Click(object sender, EventArgs e)
{
await EnviarComando(true, 7, "CodErro");
txtCodErro.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.CodigoAlarme ?? 0).ToString();
}
private async void button2_Click(object sender, EventArgs e)
{
btnERPM_Click(sender, e);
await Task.Delay(300);
button3_Click(sender, e);
await Task.Delay(300);
button4_Click(sender, e);
await Task.Delay(300);
button5_Click(sender, e);
await Task.Delay(300);
button6_Click(sender, e);
await Task.Delay(300);
button7_Click(sender, e);
await Task.Delay(300);
button1_Click(sender, e);
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
timer1.Enabled = checkBox1.Checked;
}
private async void timer1_Tick(object sender, EventArgs e)
{
var p = OIDRs485Service.Parametros.First(x => x.Chave == "Heartbeat");
int v = OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.Heartbeat ?? 0;
int nV = v == 0 ? 1 : 0;
await EnviarComando(false, 7, "Heartbeat", false, nV);
}
private async void button8_Click(object sender, EventArgs e)
{
float vel = (float)nudVelocidade.Value;
if (chbControle.Checked)
{
//var Mod = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.MovMotor.EnderecoByte == Addr);
//Mod.MovMotor.EnviarComandoControle(Enums.Direcao.Frente);
GeneralJoystick.EnviaComandoMotor(Keys.Up, Enums.T_Code.Mov);
}
else
{
await EnviarComando(false, 8, cmbModo.Text, false, vel);
}
}
private async void button9_Click(object sender, EventArgs e)
{
float vel = (float)nudVelocidade.Value * -1;
if (chbControle.Checked)
{
//var Mod = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.MovMotor.EnderecoByte == Addr);
//Mod.MovMotor.EnviarComandoControle(Enums.Direcao.Tras);
GeneralJoystick.EnviaComandoMotor(Keys.Down, Enums.T_Code.Mov);
}
else
{
await EnviarComando(false, 8, cmbModo.Text, false, vel);
}
}
private async void button10_Click(object sender, EventArgs e)
{
if (chbControle.Checked)
{
//var Mod = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.MovMotor.EnderecoByte == Addr);
//Mod.MovMotor.EnviarComandoControle(Enums.Direcao.Parado);
GeneralJoystick.EnviaComandoMotor(Keys.Escape, Enums.T_Code.Mov);
}
else
{
await EnviarComando(false, 8, cmbModo.Text, false, 0);
}
}
private async void button11_Click(object sender, EventArgs e)
{
if (chbControle.Checked)
{
//var Mod = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.MovMotor.EnderecoByte == Addr);
//Mod.MovMotor.EnviarComandoControle(Enums.Direcao.EmFreio);
GeneralJoystick.EnviaComandoMotor(Keys.Space, Enums.T_Code.Mov);
}
else
{
if (ModoControle != OIDModoControle.Freio)
{
await EnviarComando(false, 8, "ModoControle", false, (int)OIDModoControle.Freio);
ModoControle = OIDModoControle.Freio;
}
}
}
private async void cmbModo_SelectedIndexChanged(object sender, EventArgs e)
{
ModoControle = (OIDModoControle)cmbModo.SelectedIndex;
await EnviarComando(false, 8, "ModoControle", false, (int)ModoControle);
}
private void timer2_Tick(object sender, EventArgs e)
{
txtERPM.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.ERPM ?? 0).ToString();
txtCorrente.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.CorrenteMotor ?? 0).ToString();
txtTensao.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.Tensao ?? 0).ToString();
txtPotencia.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.Potencia ?? 0).ToString();
txtCicloTrabalho.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.CicloTrabalho ?? 0).ToString();
txtTemperatura.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.Temperatura ?? 0).ToString();
txtCodErro.Text = (OIDRs485Service.DadosLeitura.FirstOrDefault(x => x.EnderecoTx == Addr)?.CodigoAlarme ?? 0).ToString();
}
private void checkBox2_CheckedChanged(object sender, EventArgs e)
{
timer2.Enabled = chbLeitura.Checked;
}
}
}