165 lines
7.0 KiB
C#
165 lines
7.0 KiB
C#
using AgroBase.Models;
|
|
using AgroBase.Services;
|
|
using OperationControl.ViewModels;
|
|
using OperationControl.Windows;
|
|
using static AgroBase.Models.Enums;
|
|
|
|
namespace OperationControl.Models
|
|
{
|
|
public class AppShell
|
|
{
|
|
public static readonly bool Mock = true;
|
|
|
|
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; }
|
|
|
|
public void Inicializar()
|
|
{
|
|
Show();
|
|
|
|
APIService.IniciarRotinas();
|
|
Variaveis.IniciarMQTT();
|
|
Variaveis.IniciarUDP();
|
|
|
|
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();
|
|
|
|
if (Mock)
|
|
{
|
|
Task.Run(async () =>
|
|
{
|
|
await Task.Delay(1000);
|
|
VariaveisControleOperacao.AdicionarNovoRoverNaRede("01", "192.168.1.100");
|
|
VariaveisControleOperacao.RoversNaRede.FirstOrDefault().DadosLeitura = new AgroBase.Models.Operacoes.OperacaoParametrosDadosModel()
|
|
{
|
|
StatusRover = StatusModulo.Operante,
|
|
Operacao = new AgroBase.Models.Operacoes.OperacaoParametrosDadosOperacaoModel()
|
|
{
|
|
Status = StatusOperacao.Parametrizando
|
|
},
|
|
Atuador = new AgroBase.Models.Operacoes.OperacaoParametrosDadosAtuadorModel()
|
|
{
|
|
Bombas = new List<AgroBase.Models.Operacoes.OperacaoParametrosDadosBombaModel>()
|
|
{
|
|
new AgroBase.Models.Operacoes.OperacaoParametrosDadosBombaModel()
|
|
{
|
|
ComandoEstado = true,
|
|
LeituraEstado = true,
|
|
ID = "BOMBA",
|
|
ID_Num = 10,
|
|
Inicializado = true,
|
|
Potencia = 50,
|
|
TempoAtuado = 3000
|
|
}
|
|
},
|
|
Bicos = new List<AgroBase.Models.Operacoes.OperacaoParametrosDadosBicoModel>()
|
|
{
|
|
new AgroBase.Models.Operacoes.OperacaoParametrosDadosBicoModel()
|
|
{
|
|
AnguloAbertura = 30,
|
|
ComandoAngulo = 0,
|
|
ComandoEstado = true,
|
|
ID = "B01",
|
|
ID_Num = 1,
|
|
Inicializado = true,
|
|
LeituraAngulo = 0,
|
|
LeituraEstado = true,
|
|
Posicao = 1,
|
|
QtdAtuacoes = 5,
|
|
TempoAtuado = 300,
|
|
VazaoInstantaneaMLs = 15,
|
|
VazaoMediaMLs = 30,
|
|
VolumeVazadoML = 325
|
|
},
|
|
new AgroBase.Models.Operacoes.OperacaoParametrosDadosBicoModel()
|
|
{
|
|
AnguloAbertura = 30,
|
|
ComandoAngulo = 0,
|
|
ComandoEstado = true,
|
|
ID = "B02",
|
|
ID_Num = 2,
|
|
Inicializado = true,
|
|
LeituraAngulo = 0,
|
|
LeituraEstado = false,
|
|
Posicao = 1,
|
|
QtdAtuacoes = 5,
|
|
TempoAtuado = 300,
|
|
VazaoInstantaneaMLs = 15,
|
|
VazaoMediaMLs = 30,
|
|
VolumeVazadoML = 325
|
|
},
|
|
new AgroBase.Models.Operacoes.OperacaoParametrosDadosBicoModel()
|
|
{
|
|
AnguloAbertura = 30,
|
|
ComandoAngulo = 0,
|
|
ComandoEstado = false,
|
|
ID = "B03",
|
|
ID_Num = 3,
|
|
Inicializado = true,
|
|
LeituraAngulo = 0,
|
|
LeituraEstado = true,
|
|
Posicao = 2,
|
|
QtdAtuacoes = 5,
|
|
TempoAtuado = 300,
|
|
VazaoInstantaneaMLs = 15,
|
|
VazaoMediaMLs = 30,
|
|
VolumeVazadoML = 325
|
|
},
|
|
}
|
|
}
|
|
};
|
|
});
|
|
}
|
|
}
|
|
|
|
private void tmrComunicacao_Elapsed()
|
|
{
|
|
if (tmrComunicacaoTicking) return;
|
|
tmrComunicacaoTicking = true;
|
|
try
|
|
{
|
|
if (tmrComunicacaoTicks % (VariaveisEquipamento.TempoEntrePingsConexao / 1000) == 0 && Variaveis.GpsService != null)
|
|
{
|
|
VariaveisControleOperacao.EnviarDadosPosicao(Variaveis.GpsService.UltimaLeitura);
|
|
}
|
|
VariaveisControleOperacao.EnviarDadosHeartbeat();
|
|
VariaveisControleOperacao.AtualizarListaRoversNaRede();
|
|
}
|
|
finally
|
|
{
|
|
tmrComunicacaoTicks++;
|
|
tmrComunicacaoTicking = false;
|
|
}
|
|
}
|
|
|
|
public void AdicionarAlertaDock(string roverId, T_Code modulo, SeveridadeAlerta severidade, string mensagem, string modId = null)
|
|
{
|
|
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
|
|
{
|
|
(Dock?.DataContext as DockWindowViewModel)?.AdicionarAlerta(roverId, modulo, severidade, mensagem, modId);
|
|
}));
|
|
}
|
|
|
|
public void RemoverAlertaDock(string roverId, T_Code modulo, SeveridadeAlerta? severidade = null, string modId = null)
|
|
{
|
|
System.Windows.Application.Current.Dispatcher.BeginInvoke(new Action(() =>
|
|
{
|
|
(Dock?.DataContext as DockWindowViewModel)?.RemoverAlerta(roverId, modulo, severidade, modId);
|
|
}));
|
|
}
|
|
|
|
}
|
|
}
|