agrobot_base/AgroBase/AgroBase/Forms/frmInstancial.cs

148 lines
3.9 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);
2025-11-06 16:18:32 +00:00
Variaveis.IniciarMQTT();
2026-03-05 15:40:10 +00:00
//Variaveis.IniciarUDP();
2026-03-05 02:03:31 +00:00
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();
2025-07-11 16:38:08 +00:00
RedisService.LimparDadosIniciais();
2025-06-30 10:43:54 +00:00
2025-11-05 20:03:46 +00:00
LivoxManagerProcess.Start();
Task.Run(async () =>
{
2025-07-31 10:16:57 +00:00
await VariaveisOperacao.Operadores.IniciarProcessamento(false);
});
AudioAlertaService.SelecionarVoz(VariaveisEquipamento.VozAlerta);
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()
{
2025-11-06 16:18:32 +00:00
await Variaveis.MqttServiceLocal.ConnectAsync();
2024-07-05 18:59:05 +00:00
}
public static async Task EncerrarProcessos()
{
Variaveis.Fechando = true;
2024-07-05 18:59:05 +00:00
2025-11-05 20:03:46 +00:00
LivoxManagerProcess.Dispose();
2025-12-18 18:11:30 +00:00
PythonService.EncerrarProcessos();
2026-03-05 16:53:30 +00:00
Variaveis.StopUdpChannel();
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);
}
2025-12-18 18:11:30 +00:00
var timeout = DateTime.Now.AddSeconds(10);
while (!CanManager.CanService.FilaLiberada && DateTime.Now < timeout)
2024-07-05 18:59:05 +00:00
{
2025-12-18 18:11:30 +00:00
await Task.Delay(200);
2024-07-05 18:59:05 +00:00
}
2025-12-18 18:11:30 +00:00
AsyncTaskTimerModel.PararTimers();
2024-09-24 19:02:54 +00:00
2025-07-25 19:14:52 +00:00
try { Environment.Exit(0); } catch { }
2024-07-05 18:59:05 +00:00
}
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
}
}