352 lines
13 KiB
C#
352 lines
13 KiB
C#
using AgroBase.Comum;
|
|
using AgroBase.Forms;
|
|
using AgroBase.Forms.IHM;
|
|
using AgroBase.Forms.Movimentacao;
|
|
using AgroBase.Forms.Operacoes;
|
|
using AgroBase.Forms.Sensoriamento;
|
|
using AgroBase.Models;
|
|
using AgroBase.Models.Modules;
|
|
using AgroBase.Services;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.IO.Ports;
|
|
using System.Linq;
|
|
using System.Text.Json.Serialization;
|
|
using System.Threading;
|
|
using System.Windows.Forms;
|
|
using static AgroBase.Models.Enuns;
|
|
|
|
namespace AgroBase
|
|
{
|
|
public partial class frmPrincipal : Form
|
|
{
|
|
|
|
public frmPrincipal()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
{
|
|
timerDispositivos.Enabled = true;
|
|
AtualizaDadosGerais();
|
|
}
|
|
|
|
private void frmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
APIService.Parar();
|
|
foreach (var Disp in Variaveis.DispositivosConectados)
|
|
{
|
|
Disp.SalvarParametros(Disp.Dados);
|
|
}
|
|
}
|
|
|
|
public void AtualizaDadosGerais()
|
|
{
|
|
btnJoyAtt_Click(new object(), new EventArgs());
|
|
|
|
tkbVelocidade.Value = GeneralJoystick.Velocidade;
|
|
tkbAngulo.Value = Convert.ToInt32(GeneralJoystick.Angulo);
|
|
trkRPM.Value = GeneralJoystick.RPM;
|
|
|
|
cmbModoOperacao.Items.Clear();
|
|
cmbModoOperacao.Items.AddRange(Enum.GetNames(typeof(ModoOperacao)));
|
|
cmbModoOperacao.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Modo;
|
|
}
|
|
|
|
private void btnNovoDispositivo_Click(object sender, EventArgs e)
|
|
{
|
|
gpbNovoDispositivo.Enabled = true;
|
|
cmbTipos.Items.Clear();
|
|
cmbTipos.Items.AddRange(Enum.GetNames(typeof(T_Code)));
|
|
txtDescricao.Text = "";
|
|
cmbTipos.Focus();
|
|
}
|
|
|
|
private void btnSalvar_Click(object sender, EventArgs e)
|
|
{
|
|
T_Code tipoDispositivo = (T_Code)Enum.Parse(typeof(T_Code), cmbTipos.Text);
|
|
IDispositivosService dispositivoService = DispositivosServiceFactory.CreateDispositivoService(
|
|
tipoDispositivo,
|
|
cmbTipos.Text,
|
|
txtDescricao.Text,
|
|
new SerialPort()
|
|
);
|
|
|
|
Variaveis.DispositivosConectados.Add(dispositivoService);
|
|
|
|
Control controle = dispositivoService.InstanciarDispositivo(Variaveis.DispositivosConectados.Count - 1);
|
|
controle.Location = new System.Drawing.Point(controle.Location.X, controle.Location.Y + (cmbDispositivos.Items.Count * 50));
|
|
|
|
pnlLateral.Controls.Add(controle);
|
|
cmbDispositivos.Items.Add(dispositivoService._Descricao);
|
|
gpbNovoDispositivo.Enabled = false;
|
|
cmbDispositivos.SelectedIndex = Variaveis.DispositivosConectados.Count - 1;
|
|
}
|
|
|
|
private void btnRemover_Click(object sender, EventArgs e)
|
|
{
|
|
if (cmbDispositivos.Items.Count > 0)
|
|
{
|
|
pnlLateral.Controls.Remove(Variaveis.DispositivosConectados[cmbDispositivos.SelectedIndex].gpbItem);
|
|
Variaveis.DispositivosConectados.RemoveAt(cmbDispositivos.SelectedIndex);
|
|
cmbDispositivos.Items.RemoveAt(cmbDispositivos.SelectedIndex);
|
|
cmbDispositivos.SelectedIndex = Variaveis.DispositivosConectados.Count - 1;
|
|
int idx = 0;
|
|
Variaveis.DispositivosConectados.ForEach(Dispositivo =>
|
|
{
|
|
Dispositivo.AtualizaIndex(idx);
|
|
idx++;
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
|
|
private void btnJoyAtt_Click(object sender, EventArgs e)
|
|
{
|
|
GeneralJoystick.AtualizaDispositivo();
|
|
}
|
|
|
|
private void btnJoyEdt_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void btnVer_Click(object sender, EventArgs e)
|
|
{
|
|
frmInstancial.frmJoystick.Show();
|
|
}
|
|
|
|
private void timerDispositivos_Tick(object sender, EventArgs e)
|
|
{
|
|
lstDisponiveis.Items.Clear();
|
|
lstDisponiveis.Items.AddRange(
|
|
SerialService.DispositivosMapeados
|
|
.Select(x => new ListViewItem()
|
|
{
|
|
Text = x.PortaCOM + " - " + Enum.GetName(typeof(T_Code), x.Dispositivo) + " - " + (x.Dispositivo == T_Code.Gps ? (GPSService.PortaGPS != null && GPSService.PortaGPS.IsOpen ? "Conectado" : "Desconectado") : (Variaveis.DispositivosConectados.FirstOrDefault(y => y.PortaCOM() == x.PortaCOM)?.StatusPorta() ?? "Desconectado"))
|
|
}).ToArray()
|
|
);
|
|
if (SerialService.DispositivosMapeados.Count == 0)
|
|
{
|
|
Variaveis.DispositivosConectados.Where(x => x.Dados.GetStatusConexao()).ToList().ForEach(x => x.AcaoDesconectar());
|
|
}
|
|
SerialService.AtualizarDispositivos();
|
|
}
|
|
|
|
private void frmPrincipal_FormClosed(object sender, FormClosedEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
PythonService.EncerrarProcessos();
|
|
Environment.Exit(0);
|
|
}
|
|
catch
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
private void btnDiagnosticos_Click(object sender, EventArgs e)
|
|
{
|
|
frmMovDiagnosticos frm = new frmMovDiagnosticos();
|
|
frm.ShowDialog();
|
|
}
|
|
|
|
public void AtualizaRPM(int valor)
|
|
{
|
|
if (valor >= trkRPM.Minimum && valor <= trkRPM.Maximum)
|
|
{
|
|
double Velocidade = MovimentacaoModel.CalculaVelocidadeRPM(valor);
|
|
trkRPM.Value = valor;
|
|
trkKmh.Value = Convert.ToInt32(Velocidade);
|
|
|
|
GeneralJoystick.RPM = trkRPM.Value;
|
|
lblRPM.Text = "RPM: " + GeneralJoystick.RPM;
|
|
lblKmh.Text = "Velocidade: " + Velocidade.ToString("0.00") + " km/h";
|
|
}
|
|
}
|
|
|
|
|
|
private void btnMovConfig_Click(object sender, EventArgs e)
|
|
{
|
|
frmMovConfig frm = new frmMovConfig();
|
|
frm.ShowDialog();
|
|
}
|
|
|
|
|
|
private void cmbDispositivos_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
btnJoyAtt_Click(sender, e);
|
|
}
|
|
|
|
private void tkbPotencia_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
GeneralJoystick.Velocidade = tkbVelocidade.Value;
|
|
lblVelocidade.Text = "Velocidade: " + GeneralJoystick.Velocidade + "%";
|
|
}
|
|
|
|
private void tkbRampa_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
GeneralJoystick.Angulo = tkbAngulo.Value;
|
|
lblAngulo.Text = "Angulo: " + GeneralJoystick.Angulo + "º";
|
|
}
|
|
|
|
|
|
private void trkRPM_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
int RPM = ((TrackBar)sender).Value;
|
|
AtualizaRPM(RPM);
|
|
}
|
|
|
|
private void trkKmh_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
int RPM = Convert.ToInt32(MovimentacaoModel.CalculaRPMVelocidade(((TrackBar)sender).Value));
|
|
AtualizaRPM(RPM);
|
|
}
|
|
|
|
|
|
private void btnAcompanhamento_Click(object sender, EventArgs e)
|
|
{
|
|
frmInstancial.frmAcompanhamento.Show();
|
|
}
|
|
|
|
private void btnCamera_Click(object sender, EventArgs e)
|
|
{
|
|
frmAtuCamera frmCamera = new frmAtuCamera();
|
|
frmCamera.Show();
|
|
}
|
|
|
|
private void btnMapas_Click(object sender, EventArgs e)
|
|
{
|
|
frmMapa frmMapa = new frmMapa();
|
|
frmMapa.Show();
|
|
}
|
|
|
|
private void btnGPS_Click(object sender, EventArgs e)
|
|
{
|
|
frmGPS frmGps = new frmGPS();
|
|
frmGps.Show();
|
|
}
|
|
|
|
private void btnSenCamera_Click(object sender, EventArgs e)
|
|
{
|
|
frmSenCamera frmCamera = new frmSenCamera();
|
|
frmCamera.Show();
|
|
}
|
|
|
|
private void cmbModoOperacao_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
Variaveis.OperacaoEmAndamento.Modo = (ModoOperacao)cmbModoOperacao.SelectedIndex;
|
|
}
|
|
|
|
private void btnIniciarOperacao_Click(object sender, EventArgs e)
|
|
{
|
|
bool DebugMode = chbDebugMode.Checked;
|
|
string MensagemErro = "";
|
|
|
|
bool MovConectado = Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Mov && (x._Porta.IsOpen || DebugMode));
|
|
bool DirConectado = Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Dir && (x._Porta.IsOpen || DebugMode));
|
|
bool AtuConectado = Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Atu && (x._Porta.IsOpen || DebugMode));
|
|
bool GpsConectado = GPSService.PortaGPS != null || DebugMode;
|
|
|
|
if (Variaveis.OperacaoEmAndamento.Iniciado)
|
|
{
|
|
Variaveis.OperacaoEmAndamento.FinalizarOperacao();
|
|
|
|
btnIniciarOperacao.Text = "Iniciar Operação";
|
|
cmbModoOperacao.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.Manual)
|
|
{
|
|
if (MovConectado || DirConectado || AtuConectado)
|
|
{
|
|
Variaveis.OperacaoEmAndamento.IniciarOperacao(null, false);
|
|
|
|
cmbModoOperacao.Enabled = false;
|
|
}
|
|
else
|
|
{
|
|
MensagemErro = "Para iniciar a operação " + Enum.GetName(typeof(ModoOperacao), Variaveis.OperacaoEmAndamento.Modo) +
|
|
", é necessário que ao menos um dos seguintes módulos estejam devidamente conectados ao equipamento:\r\n" +
|
|
"Movimentação: ( " + (MovConectado ? "OK" : " ") + " )\r\n" +
|
|
"Direcional: ( " + (DirConectado ? "OK" : " ") + " )\r\n" +
|
|
"Atuador: ( " + (AtuConectado ? "OK" : " ") + " )";
|
|
}
|
|
}
|
|
else if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.MapaGPS)
|
|
{
|
|
if (MovConectado && DirConectado && AtuConectado && GpsConectado)
|
|
{
|
|
frmOperacaoMapaGPS frmMapaGPS = new frmOperacaoMapaGPS();
|
|
frmMapaGPS.Show();
|
|
}
|
|
else
|
|
{
|
|
MensagemErro = "Para iniciar a operação " + Enum.GetName(typeof(ModoOperacao), Variaveis.OperacaoEmAndamento.Modo) +
|
|
", é necessário que os seguintes módulos estejam devidamente conectados ao equipamento:\r\n" +
|
|
"Movimentação: ( " + (MovConectado ? "OK" : " ") + " )\r\n" +
|
|
"Direcional: ( " + (DirConectado ? "OK" : " ") + " )\r\n" +
|
|
"Atuador: ( " + (AtuConectado ? "OK" : " ") + " )";
|
|
}
|
|
|
|
}
|
|
else if (Variaveis.OperacaoEmAndamento.Modo == ModoOperacao.SeguidorDeLinha)
|
|
{
|
|
if (GpsConectado)
|
|
{
|
|
frmMovCamera frmCamera = new frmMovCamera();
|
|
frmCamera.Show();
|
|
}
|
|
else
|
|
{
|
|
MensagemErro = "Para iniciar a operação " + Enum.GetName(typeof(ModoOperacao), Variaveis.OperacaoEmAndamento.Modo) +
|
|
", é necessário que os seguintes módulos estejam devidamente conectados ao equipamento:\r\n" +
|
|
"GPS: ( " + (GpsConectado ? "OK" : " ") + " )";
|
|
}
|
|
}
|
|
|
|
if (MensagemErro != "")
|
|
{
|
|
MessageBox.Show(MensagemErro, "Conexão de módulos pendentes", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
}
|
|
|
|
|
|
btnIniciarOperacao.Text = "Finalizar Operação";
|
|
}
|
|
|
|
lblStripOperacao.Text = "Operação: " + Enum.GetName(typeof(ModoOperacao), Variaveis.OperacaoEmAndamento.Modo);
|
|
lblStripOperacaoStatus.Text = Variaveis.OperacaoEmAndamento.Iniciado ? "Iniciado" : "Não iniciado";
|
|
|
|
}
|
|
|
|
private void btnConfigurarOperacao_Click(object sender, EventArgs e)
|
|
{
|
|
frmParametrizacaoOperacao frmParametrizacaoOperacao = new frmParametrizacaoOperacao();
|
|
frmParametrizacaoOperacao.ShowDialog();
|
|
}
|
|
|
|
private void btnIHM_Click(object sender, EventArgs e)
|
|
{
|
|
frmIHM frmIHM = new frmIHM();
|
|
frmIHM.ShowDialog();
|
|
}
|
|
|
|
private void btnContornos_Click(object sender, EventArgs e)
|
|
{
|
|
frmMovCamera frmMovCamera = new frmMovCamera();
|
|
frmMovCamera.Show();
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|