agrobot_base/AgroBase/OperationControl/Models/AppShell.cs

59 lines
1.7 KiB
C#
Raw Normal View History

2025-11-14 17:11:58 +00:00
using AgroBase.Models;
using AgroBase.Services;
using OperationControl.Services;
using OperationControl.Windows;
using System.Diagnostics;
namespace OperationControl.Models
{
public class AppShell
{
private readonly System.Timers.Timer tmrComunicacao = new(1000) { AutoReset = true };
private int tmrComunicacaoTicks = 0;
private bool tmrComunicacaoTicking = false;
public MainWindow Main { get; private set; }
public DockWindow Dock { get; private set; }
2025-11-14 17:11:58 +00:00
public void Inicializar()
{
2025-11-24 16:05:50 +00:00
Show();
2025-11-14 17:11:58 +00:00
APIService.IniciarRotinas();
Variaveis.IniciarMQTT();
tmrComunicacao.Elapsed += (_, __) => tmrComunicacao_Elapsed();
tmrComunicacao.Start();
}
private void Show()
{
// Aqui você decide qual janela é a inicial de fato
Main = new MainWindow();
Dock = new DockWindow();
Dock.Show();
2025-11-14 17:11:58 +00:00
}
private void tmrComunicacao_Elapsed()
{
if (tmrComunicacaoTicking) return;
tmrComunicacaoTicking = true;
2025-11-24 16:05:50 +00:00
try
{
if (tmrComunicacaoTicks % (VariaveisEquipamento.TempoEntrePingsConexao / 1000) == 0 && Variaveis.GpsService != null)
{
VariaveisControleOperacao.EnviarDadosPosicao(Variaveis.GpsService.UltimaLeitura);
}
VariaveisControleOperacao.EnviarDadosHeartbeat();
VariaveisControleOperacao.AtualizarListaRoversNaRede();
}
finally
2025-11-14 17:11:58 +00:00
{
2025-11-24 16:05:50 +00:00
tmrComunicacaoTicks++;
tmrComunicacaoTicking = false;
2025-11-14 17:11:58 +00:00
}
}
}
}