agrobot_base/AgroBase/AgroBase/Models/CameraSoloModel.cs

85 lines
2.6 KiB
C#

using AgroBase.Services;
using CefSharp.WinForms;
using System;
using System.Linq;
using System.Windows.Forms;
namespace AgroBase.Models
{
public class CameraSoloModel
{
public CameraSoloModel()
{
tmrProcesso.Tick += TmrProcesso_Tick;
tmrProcesso.Start();
}
public Timer tmrProcesso = new Timer() { Interval = 500 };
private void TmrProcesso_Tick(object sender, EventArgs e)
{
if (camera._mqttTopico != null )
{
var Mensagem = camera._mqttTopico.Mensagens.FirstOrDefault(y => y.Momento > camera.IniciadoEm && y.Mensagem == "OK");
if (Mensagem != null)
{
tmrProcesso.Stop();
camera.ProntoEm = Mensagem.Momento;
if (browser == null)
{
Iniciada = true;
browser = new ChromiumWebBrowser(camera.URLcamera);
panel.Controls.Add(browser);
browser.Dock = DockStyle.Fill;
}
}
}
}
public void DesligarCamera()
{
try
{
Iniciada = false;
Variaveis.MqttService.Topicos.Remove(camera._mqttTopico);
panel.Controls.Remove(browser);
browser = null;
Variaveis.MqttService.UnsubscribeAsync(camera._mqttTopico).ConfigureAwait(false);
if (camera.pythonProcess != null)
{
camera.pythonProcess.Kill();
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
public string Nome { get; set; }
public int Posicao { get; set; }
public bool Iniciada { get; set; } = false;
public CameraService camera { get; set; } = new CameraService();
public ChromiumWebBrowser browser { get; set; }
public Panel panel { get;set; }
public ComboBox combo { get;set; }
public string ArquivoLeitura { get; set; }
public int MaxLeituras { get; set; }
public string VideoPorta { get; set; }
public string VideoUrl { get; set; }
public string MqttTopico { get; set; } = "weed_detector";
public string CameraSelecionada { get; set; }
public CameraCoordenadasFrameModel Leitura { get; set; } = new CameraCoordenadasFrameModel();
public int ErvasNoRadar { get; set; }
}
}