agrobot_base/AgroBase/AgroBase/Forms/frmInstancial.cs

134 lines
3.5 KiB
C#
Raw Normal View History

2024-07-05 18:59:05 +00:00
using AgroBase.Forms.IHM;
using AgroBase.Models;
using AgroBase.Services;
2023-10-09 16:06:23 +00:00
using System;
using System.Threading;
2023-08-31 11:50:53 +00:00
using System.Threading.Tasks;
using System.Windows.Forms;
namespace AgroBase.Forms
{
public partial class frmInstancial : Form
{
public static AsyncTaskTimerModel tmrVarreduraDispositivos;
2023-08-31 11:50:53 +00:00
public static frmPrincipal frmPrincipal = new frmPrincipal();
public static frmJoystick frmJoystick = new frmJoystick();
2024-07-05 18:59:05 +00:00
public static frmIHM frmIHM = new frmIHM()
{
FormBorderStyle = FormBorderStyle.None,
//WindowState = FormWindowState.Maximized,
//TopMost = true
2024-07-05 18:59:05 +00:00
};
2023-08-31 11:50:53 +00:00
public frmInstancial()
{
InitializeComponent();
ThreadPool.SetMinThreads(workerThreads: 50, completionPortThreads: 50);
2024-12-05 12:52:28 +00:00
APIService.IniciarRotinas();
2025-02-21 19:50:54 +00:00
2024-11-25 12:14:59 +00:00
GeneralJoystick.IniciarRotinas();
VersionamentoService.IniciarRotinas();
2024-09-24 19:02:54 +00:00
2025-04-02 20:37:56 +00:00
PythonService.EncerrarProcessos();
2025-06-30 10:43:54 +00:00
RedisService.Iniciar();
Task.Run(async () =>
{
await VariaveisOperacao.Operadores.IniciarProcessamento(false);
});
2023-08-31 11:50:53 +00:00
}
private void frmInstancial_Shown(object sender, EventArgs e)
{
if (!Variaveis.Producao)
2024-07-05 18:59:05 +00:00
{
2024-10-04 13:11:23 +00:00
frmIHM.FormClosing += FrmIHM_FormClosing;
2024-07-05 18:59:05 +00:00
frmPrincipal.FormClosing += frmPrincipal_FormClosing;
frmPrincipal.Show();
}
else
{
frmIHM.FormClosing += frmPrincipal_FormClosing;
frmIHM.Show();
}
2023-08-31 11:50:53 +00:00
this.Hide();
}
2024-03-01 19:49:20 +00:00
2024-10-04 13:11:23 +00:00
2024-07-05 18:59:05 +00:00
private void frmInstancial_Load(object sender, EventArgs e)
{
FuncoesGlobais.AddApplicationToStartup();
IniciarConexaoMqtt();
Control control = new Control();
if (!Variaveis.Producao)
{
control = frmPrincipal;
}
else
{
control = frmIHM;
}
tmrVarreduraDispositivos = new AsyncTaskTimerModel("tmrVarreduraDispositivos", tmrVarreduraDispositivos_Tick, SerialService.InteraloVerificacao, null, 15000);
tmrVarreduraDispositivos.Start();
}
private static async Task tmrVarreduraDispositivos_Tick()
{
await SerialService.RealizarVarreduraPortasUSB();
2024-07-05 18:59:05 +00:00
}
private async void IniciarConexaoMqtt()
{
await Variaveis.MqttService.ConnectAsync();
}
public static async Task EncerrarProcessos()
{
Variaveis.Fechando = true;
2024-07-05 18:59:05 +00:00
AsyncTaskTimerModel.PararTimers();
2024-07-05 18:59:05 +00:00
foreach (var Disp in Variaveis.DispositivosConectados)
{
Disp.EnviarProtocolosConfiguracao(false);
2024-07-05 18:59:05 +00:00
Disp.SalvarParametros(Disp.Dados);
}
while (!FilaService.Liberado)
{
await Task.Delay(500);
}
2025-04-02 20:37:56 +00:00
PythonService.EncerrarProcessos();
2024-09-24 19:02:54 +00:00
2024-07-05 18:59:05 +00:00
Environment.Exit(0);
}
2025-04-02 20:37:56 +00:00
2024-09-24 19:02:54 +00:00
2024-07-05 18:59:05 +00:00
private async void frmPrincipal_FormClosing(object sender, FormClosingEventArgs e)
2024-07-05 18:59:05 +00:00
{
await EncerrarProcessos();
2024-07-05 18:59:05 +00:00
e.Cancel = true;
}
2024-10-04 13:11:23 +00:00
private void FrmIHM_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
frmIHM.Hide();
}
2023-08-31 11:50:53 +00:00
}
}