agrobot_base/AgroBase/AgroBase/Forms/IHM/frmIHM.cs

153 lines
6.3 KiB
C#
Raw Normal View History

using AgroBase.Comum;
using AgroBase.Forms.Operacoes;
using AgroBase.Models;
using AgroBase.Services;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
2024-07-12 19:44:56 +00:00
using System.Diagnostics;
using System.Drawing;
using System.IO.Ports;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static AgroBase.Models.Enuns;
namespace AgroBase.Forms.IHM
{
public partial class frmIHM : Form
{
Timer tmrDispositivos = new Timer() { Interval = 5000, Enabled = false };
public frmIHM()
{
InitializeComponent();
}
private void frmIHM_Load(object sender, EventArgs e)
{
tmrDispositivos.Tick += TmrDispositivos_Tick;
tmrDispositivos.Start();
2024-07-12 19:44:56 +00:00
FuncoesGlobais.DefinirEventosPicBtn(picOperacao, async () =>
{
frmInicioOperacao frm = new frmInicioOperacao();
frm.ShowDialog();
});
FuncoesGlobais.DefinirEventosPicBtn(picDiagnosticos, async () =>
{
});
/*FuncoesGlobais.DefinirEventosPicBtn(picComunicacao, async () =>
{
if (LoRaService.Iniciado)
{
frmLoraConfig frm = new frmLoraConfig(Variaveis.ConexaoLoRa);
frm.Show();
}
else
{
MessageBox.Show("Módulo LoRa de comunicação não está conectado ou não está no modo de parametrização!", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
});*/
FuncoesGlobais.DefinirEventosPicBtn(picAjustes, async () =>
{
frmAjustes frm = new frmAjustes(Variaveis.ConexaoLoRa);
frm.ShowDialog();
});
FuncoesGlobais.DefinirEventosPicBtn(picDesligar, async () =>
{
if (MessageBox.Show("Deseja desligar o equipamento?", "Desligar", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
Process.Start("shutdown", "/s /t 0");
}
});
}
private void TmrDispositivos_Tick(object sender, EventArgs e)
{
2024-05-24 20:05:51 +00:00
SerialService.RealizarVarreduraPortasUSB().ConfigureAwait(false);
var Labels = this.Controls.OfType<Label>().Where(y => y.Name.Contains("lblD_")).ToList();
Labels.ForEach(lbl =>
{
2024-07-12 19:44:56 +00:00
T_Code Dispositivo = (T_Code)Enum.Parse(typeof(T_Code), lbl.Name.Split('_')[1]);
string Mod_ID = lbl.Name.Split('_').Length == 3 ? lbl.Name.Split('_')[2] : lbl.Name.Split('_')[1];
2024-07-12 19:44:56 +00:00
if (Dispositivo == T_Code.Cam)
{
2024-07-12 19:44:56 +00:00
var listaCameras = CameraService.AtualizaListaCameras();
2024-07-12 19:44:56 +00:00
var CameraCaminho = Variaveis.OperacaoEmAndamento.CameraCaminho;
if (CameraCaminho != null && Mod_ID == CameraCaminho.ID)
2024-05-24 20:05:51 +00:00
{
2024-07-12 19:44:56 +00:00
lbl.ForeColor = !listaCameras.Any(x => x.Value == CameraCaminho.CameraSelecionada) ? Color.DarkRed : CameraCaminho.camera.selectedCamera == 0 ? Color.Gold : Color.DarkGreen;
}
2024-07-12 19:44:56 +00:00
else
2024-05-28 13:58:25 +00:00
{
2024-07-12 19:44:56 +00:00
var CameraSolo = Variaveis.OperacaoEmAndamento.CamerasSolo.FirstOrDefault(x => x.ID == Mod_ID);
if (CameraSolo != null)
{
lbl.ForeColor = !listaCameras.Any(x => x.Value == CameraSolo.CameraSelecionada) ? Color.DarkRed : CameraSolo.camera.selectedCamera == 0 ? Color.Gold : Color.DarkGreen;
}
2024-05-28 13:58:25 +00:00
}
2024-07-12 19:44:56 +00:00
}
else
{
var Modulo = SerialService.DispositivosMapeados.FirstOrDefault(x => x.Dispositivo == Dispositivo && (x.Mod_ID == Mod_ID || x.Mod_ID == null));
if (Modulo != null)
{
2024-07-12 19:44:56 +00:00
lbl.ForeColor = Modulo.Erro ? Color.Gold : Modulo.Conectado ? Color.DarkGreen : Color.DarkRed;
}
else
{
2024-07-12 19:44:56 +00:00
lbl.ForeColor = Color.Black;
}
}
});
if (SerialService.DispositivosMapeados.Count == 0)
{
Variaveis.DispositivosConectados.Where(x => x.Dados.GetStatusConexao()).ToList().ForEach(x => x.AcaoDesconectar());
}
lblMqtt.Text = "MQTT: " + (Variaveis.MqttService.StatusConexao() ? "Conectado" : "Desconectado");
lblMqtt.ForeColor = Variaveis.MqttService.StatusConexao() ? Color.Green : Color.Red;
}
2024-07-12 19:44:56 +00:00
private void lblModulo_Click(object sender, EventArgs e)
{
2024-07-12 19:44:56 +00:00
Label lbl = (Label)sender;
T_Code Dispositivo = (T_Code)Enum.Parse(typeof(T_Code), lbl.Name.Split('_')[1]);
string Mod_ID = lbl.Name.Split('_').Length == 3 ? lbl.Name.Split('_')[2] : lbl.Name.Split('_')[1];
var Modulo = SerialService.DispositivosMapeados.FirstOrDefault(x => x.Dispositivo == Dispositivo && (x.Mod_ID == Mod_ID || x.Mod_ID == null));
string msg = "Módulo: " + Dispositivo +
"\r\nID: " + Mod_ID +
"\r\nConectado: " + (Modulo != null ? "Sim" : "Não") +
"\r\nInicializado: " + (Modulo != null && Modulo.Conectado ? "Sim" : "Não") +
"\r\nVersão: " + (Modulo != null ? Modulo.Versao : "") +
"\r\nErro: " + (Modulo != null && Modulo.Erro ? "Sim" : "Não") +
"\r\nStatus: " + (
lbl.ForeColor == Color.Black ? "Não conectado" :
lbl.ForeColor == Color.DarkRed ? "Não inicializado" :
lbl.ForeColor == Color.DarkGreen ? "Inicializado" :
lbl.ForeColor == Color.Gold ? "Não configurado" :
""
);
var res = MessageBox.Show(
msg,
"Detalhes",
Modulo != null && Modulo.Conectado ? MessageBoxButtons.OK : MessageBoxButtons.RetryCancel,
Modulo != null && Modulo.Erro ? MessageBoxIcon.Error : Modulo != null && Modulo.Conectado ? MessageBoxIcon.Information : MessageBoxIcon.Exclamation
);
}
}
}