459 lines
15 KiB
C#
459 lines
15 KiB
C#
using AgroBase.Forms;
|
|
using AgroBase.Forms.Atuador;
|
|
using AgroBase.Forms.Movimentacao;
|
|
using AgroBase.Forms.Operacoes;
|
|
using AgroBase.Forms.Sensoriamento;
|
|
using AgroBase.Models;
|
|
using AgroBase.Services;
|
|
using System;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.IO.Ports;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using static AgroBase.Models.Enums;
|
|
|
|
namespace AgroBase
|
|
{
|
|
public partial class frmPrincipal : Form
|
|
{
|
|
AsyncTaskTimerModel tmrLoopDispositivos;
|
|
|
|
public frmPrincipal()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void Form1_Load(object sender, EventArgs e)
|
|
{
|
|
tmrLoopDispositivos = new AsyncTaskTimerModel("tmrLoopDispositivos", tmrLoopDispositivos_Tick, 5000, this);
|
|
tmrLoopDispositivos.Start();
|
|
|
|
btnJoyAtt_Click(new object(), new EventArgs());
|
|
|
|
cmbModoOperacao.Items.Clear();
|
|
cmbModoOperacao.Items.AddRange(Enum.GetNames(typeof(ModoOperacao)));
|
|
cmbModoOperacao.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Modo;
|
|
}
|
|
|
|
private async void frmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
// Executa o encerramento dos processos de forma segura
|
|
await FuncoesGlobais.SafeExecuteAsync(async () => await frmInstancial.EncerrarProcessos());
|
|
e.Cancel = true;
|
|
}
|
|
|
|
|
|
private void btnAtualizarRotinas_Click(object sender, EventArgs e)
|
|
{
|
|
AtualizarListaRotinas();
|
|
}
|
|
|
|
private void AtualizarListaRotinas()
|
|
{
|
|
string[] timers = new string[] { };
|
|
lock (AsyncTaskTimerModel._timersLock)
|
|
{
|
|
timers = AsyncTaskTimerModel.Timers.Select(x => $"{x.StackTrace} -> {x.Id} - Interval: {x.Interval} - Tick: {x.TimeTick.TotalSeconds} s - State: {x.State.ToString()}").ToArray();
|
|
}
|
|
|
|
clbRotinas.Items.Clear();
|
|
clbRotinas.Items.AddRange(timers);
|
|
}
|
|
|
|
#region DISPOSITIVOS
|
|
|
|
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 cmbDispositivos_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
btnJoyAtt_Click(sender, e);
|
|
}
|
|
|
|
private async Task tmrLoopDispositivos_Tick()
|
|
{
|
|
AtualizaDadosGerais();
|
|
|
|
lblStripMqtt.Text = "MQTT: " + (Variaveis.MqttService.StatusConexao() ? "Conectado" : "Desconectado");
|
|
lblStripWifi.Text = "Wi-Fi: " + (WifiService.WifiConectado ? "Conectado" : WifiService.Conectando ? "Conectando..." : WifiService.WifiDisponivel ? "Disponivel" : "Desconectado");
|
|
|
|
bool opLiberada = Variaveis.OperacaoEmAndamento.OperacaoLiberada;
|
|
lblStripOperacaoLiberada.Text = "Operação Liberada: " + (opLiberada ? "Sim" : "Não");
|
|
lblStripOperacaoLiberada.ForeColor = opLiberada ? Color.Green : Color.Red;
|
|
}
|
|
|
|
public void AtualizaDadosGerais()
|
|
{
|
|
if (Variaveis.DispositivosConectados.Any() && pnlLateral.Controls.Count == 9)
|
|
{
|
|
SerialService.DispositivosConexaoInicial.ForEach(Dispositivo =>
|
|
{
|
|
IDispositivosService dispositivoService = Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
|
|
if (dispositivoService != null)
|
|
{
|
|
int idx = SerialService.DispositivosConexaoInicial.IndexOf(dispositivoService.Dispositivo);
|
|
Control controle = dispositivoService.InstanciarDispositivo(idx);
|
|
controle.Location = new Point(controle.Location.X, controle.Location.Y + (idx * 50));
|
|
pnlLateral.Controls.Add(controle);
|
|
cmbDispositivos.Items.Add(dispositivoService._Descricao);
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
lstDisponiveis.Items.Clear();
|
|
lstDisponiveis.Items.AddRange(
|
|
SerialService.DispositivosMapeados
|
|
.GroupBy(x => x.Dispositivo)
|
|
.Select(x => new ListViewItem()
|
|
{
|
|
Text =
|
|
x.FirstOrDefault().Endereco + " - " + Enum.GetName(typeof(T_Code), x.Key) + " v" + x.FirstOrDefault().Versao +
|
|
|
|
(SerialService.DispositivosMultiplos.Contains(x.FirstOrDefault().Dispositivo) ? (" (" + string.Join(", ", x.Where(y => y.Conectado).Select(y => y.Mod_ID)) + ")") :
|
|
|
|
"") + " - " +
|
|
(x.Any(y => y.Conectado) ? "Conectado" : "Desconectado")
|
|
}).ToArray()
|
|
);
|
|
|
|
tkbVelocidade.Minimum = 0;
|
|
tkbVelocidade.Maximum = 100;
|
|
FuncoesGlobais.PreencheValorTrackBar(tkbVelocidade, Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP);
|
|
|
|
tkbAngulo.Minimum = 0;
|
|
tkbAngulo.Maximum = 90;
|
|
FuncoesGlobais.PreencheValorTrackBar(tkbAngulo, Variaveis.OperacaoEmAndamento.Controle.Angulo);
|
|
|
|
trkKmh.Minimum = 0;
|
|
trkKmh.Maximum = 100;
|
|
|
|
trkRPM.Minimum = Variaveis.OperacaoEmAndamento.Controle.RPM_Min;
|
|
trkRPM.Maximum = VariaveisEquipamento.RPM_Max_Roda;
|
|
FuncoesGlobais.PreencheValorTrackBar(trkRPM, Variaveis.OperacaoEmAndamento.Controle.RPM_SP);
|
|
int percentual = Convert.ToInt32((trkRPM.Value / (double)VariaveisEquipamento.RPM_Max_Roda) * 100.0);
|
|
AtualizaRPM(percentual);
|
|
|
|
AtualizarListaRotinas();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region VERSIONAMENTO DE ARQUIVOS
|
|
|
|
private void btnForcarAtualizacao_Click(object sender, EventArgs e)
|
|
{
|
|
VersionamentoService.ForcarDownloadArquivos = true;
|
|
VersionamentoService.AtualizarArquivoVersionamento(true).ConfigureAwait(false);
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region OPERACAO
|
|
|
|
private void cmbModoOperacao_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModoOperacao.SelectedIndex);
|
|
}
|
|
|
|
private void btnIniciarOperacao_Click(object sender, EventArgs e)
|
|
{
|
|
if (Variaveis.OperacaoEmAndamento.Iniciado)
|
|
{
|
|
Variaveis.OperacaoEmAndamento.FinalizarOperacao();
|
|
|
|
btnIniciarOperacao.Text = "Abrir Operação";
|
|
cmbModoOperacao.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
Variaveis.OperacaoEmAndamento.AbrirForm();
|
|
}
|
|
|
|
lblStripOperacaoStatus.Text = Variaveis.OperacaoEmAndamento.Iniciado ? "Iniciado" : "Não iniciado";
|
|
}
|
|
|
|
private void btnConfigurarOperacao_Click(object sender, EventArgs e)
|
|
{
|
|
frmParametrizacaoOperacao frmParametrizacaoOperacao = new frmParametrizacaoOperacao();
|
|
frmParametrizacaoOperacao.ShowDialog();
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region CONTROLE
|
|
|
|
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();
|
|
}
|
|
|
|
public void AtualizaRPM(int Percentual)
|
|
{
|
|
int RPM = Convert.ToInt32((Percentual / 100.0) * VariaveisEquipamento.RPM_Max_Roda);
|
|
double Velocidade = FuncoesMatematicas.CalculaVelocidadeRPM(RPM);
|
|
|
|
FuncoesGlobais.PreencheValorTrackBar(trkRPM, RPM);
|
|
FuncoesGlobais.PreencheValorTrackBar(trkKmh, Percentual);
|
|
|
|
Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = Percentual;
|
|
lblRPM.Text = $"RPM: {RPM}";
|
|
lblKmh.Text = $"Velocidade: {Percentual.ToString("0")}% {Velocidade.ToString("0.00")} km/h";
|
|
}
|
|
|
|
private void tkbVelocidadeMP_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP = tkbVelocidade.Value;
|
|
lblVelocidade.Text = "Velocidade: " + Variaveis.OperacaoEmAndamento.Controle.VelocidadeMP + "%";
|
|
}
|
|
|
|
private void tkbAngulo_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
Variaveis.OperacaoEmAndamento.Controle.Angulo = tkbAngulo.Value;
|
|
lblAngulo.Text = "Angulo: " + Variaveis.OperacaoEmAndamento.Controle.Angulo + "º";
|
|
}
|
|
|
|
private void trkRPM_Scroll(object sender, EventArgs e)
|
|
{
|
|
/*try
|
|
{
|
|
int RPM = ((TrackBar)sender).Value;
|
|
AtualizaRPM(RPM);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}*/
|
|
}
|
|
|
|
private void trkKmh_ValueChanged(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
int Percentual = trkKmh.Value;
|
|
AtualizaRPM(Percentual);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region ATALHOS
|
|
|
|
private void btnDiagnosticos_Click(object sender, EventArgs e)
|
|
{
|
|
frmMovDiagnosticos frm = new frmMovDiagnosticos();
|
|
frm.ShowDialog();
|
|
}
|
|
|
|
private void btnAcompanhamento_Click(object sender, EventArgs e)
|
|
{
|
|
frmAcompanhamento frm = new frmAcompanhamento();
|
|
frm.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 btnIHM_Click(object sender, EventArgs e)
|
|
{
|
|
this.WindowState = FormWindowState.Minimized;
|
|
|
|
frmInstancial.frmIHM.ShowDialog();
|
|
}
|
|
|
|
private void btnContornos_Click(object sender, EventArgs e)
|
|
{
|
|
frmMovCamera frmMovCamera = new frmMovCamera();
|
|
frmMovCamera.Show();
|
|
}
|
|
|
|
private void btnAtuCalibragem_Click(object sender, EventArgs e)
|
|
{
|
|
frmAtuCalibragem frm = new frmAtuCalibragem();
|
|
frm.Show();
|
|
}
|
|
|
|
private void btnSonar_Click(object sender, EventArgs e)
|
|
{
|
|
frmSonar frm = new frmSonar();
|
|
frm.Show();
|
|
}
|
|
|
|
private void btnSimulador_Click(object sender, EventArgs e)
|
|
{
|
|
frmSimulacaoMapaGPS frm = new frmSimulacaoMapaGPS();
|
|
frm.Show();
|
|
}
|
|
|
|
private void btnKinect_Click(object sender, EventArgs e)
|
|
{
|
|
if (KinectService.Iniciado)
|
|
{
|
|
frmKinect frmKinect = new frmKinect();
|
|
frmKinect.Show();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Módulo Kinect não está conectado!");
|
|
}
|
|
}
|
|
|
|
private void btnResultados_Click(object sender, EventArgs e)
|
|
{
|
|
frmResultadosOperacao frmResultadosOperacao = new frmResultadosOperacao();
|
|
frmResultadosOperacao.Show();
|
|
}
|
|
|
|
private void btnLoRaConfig_Click(object sender, EventArgs e)
|
|
{
|
|
if (LoRaService.Iniciado)
|
|
{
|
|
frmLoraConfig frm = new frmLoraConfig();
|
|
frm.Show();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Módulo LoRa de comunicação não está conectado ou não está no modo de parametrização!");
|
|
}
|
|
}
|
|
|
|
private void btnWT901C_Click(object sender, EventArgs e)
|
|
{
|
|
if (WT901CService.Iniciado)
|
|
{
|
|
frmWT901C frm = new frmWT901C();
|
|
frm.Show();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Módulo WT901C485 não está conectado!");
|
|
}
|
|
}
|
|
|
|
private void btnBLD300R_Click(object sender, EventArgs e)
|
|
{
|
|
if (BLD300RService.Iniciado)
|
|
{
|
|
frmBLD frm = new frmBLD();
|
|
frm.Show();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show("Driver BLD-300R não está conectado!");
|
|
}
|
|
}
|
|
|
|
private void btnMKS_Click(object sender, EventArgs e)
|
|
{
|
|
frmMKS frm = new frmMKS();
|
|
frm.Show();
|
|
}
|
|
|
|
private void btnEthernet_Click(object sender, EventArgs e)
|
|
{
|
|
frmEthernet frm = new frmEthernet();
|
|
frm.Show();
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
private void txtCodErro_KeyDown(object sender, KeyEventArgs e)
|
|
{
|
|
if (e.KeyCode == Keys.Enter && string.IsNullOrEmpty(txtCodErro.Text))
|
|
{
|
|
ulong cod = ulong.Parse(txtCodErro.Text);
|
|
string desc = OperacaoModel.DescricaoCodigoFalha(cod);
|
|
MessageBox.Show(desc);
|
|
}
|
|
}
|
|
}
|
|
}
|