agrobot_base/AgroBase/OperationControl/Views/Operacao/Monitoramento/MonitoramentoView.xaml.cs

127 lines
4.4 KiB
C#

using OperationControl.Controls;
using OperationControl.Models;
using OperationControl.ViewModels.Views.Operacao.Monitoramento;
namespace OperationControl.Views.Operacao.Monitoramento
{
/// <summary>
/// Interaction logic for MonitoramentoView.xaml
/// </summary>
public partial class MonitoramentoView : System.Windows.Controls.UserControl
{
public MonitoramentoViewModel _vm;
private TcpVideoReceiver videoFront;
public TcpVideoReceiver videoWeed;
public PulverizadorIndicator Pulverizador => areaPulverizador;
public HeadingIndicator Heading => areaHeading;
public AttitudeIndicator Attitude => areaAttitude;
public MonitoramentoView()
{
InitializeComponent();
_vm = new MonitoramentoViewModel();
DataContext = _vm;
videoFront = new TcpVideoReceiver(5000, imgVideoFront);
videoWeed = new TcpVideoReceiver(5002, imgVideoWeed);
_vm.CameraFrontalFrameTipoAlterado += _vm_CameraFrontalFrameTipoAlterado;
_vm.CameraErvasFrameTipoAlterado += _vm_CameraErvasFrameTipoAlterado;
}
#region CAMERA FRONTAL
private void _vm_CameraFrontalFrameTipoAlterado(AgroBase.Models.Enums.TipoFrameCamera tipo)
{
if (!IsLoaded) return;
if (VariaveisControleOperacao.SelectedRoverId == VariaveisControleOperacao.BaseMarkerID) return;
PararStreamCameraFrontal();
IniciarStreamCameraFrontal();
}
public void IniciarStreamCameraFrontal()
{
videoFront.Iniciar();
var tipo = _vm.CameraFrontalFrameTipoSelecionado?.Valor ?? AgroBase.Models.Enums.TipoFrameCamera.Rgb;
VariaveisControleOperacao.EnviarComandoTransmissaoVideo(AgroBase.Models.Enums.T_Code.Snr, true, tipo);
}
public void PararStreamCameraFrontal(bool finalizar = false)
{
videoFront.Parar();
var tipo = _vm.CameraFrontalFrameTipoSelecionado?.Valor ?? AgroBase.Models.Enums.TipoFrameCamera.Rgb;
VariaveisControleOperacao.EnviarComandoTransmissaoVideo(AgroBase.Models.Enums.T_Code.Snr, false, tipo);
}
private double? _leverArmLateralSolicitadoCm = null;
private void AtualizarLeverArm(double valorCm)
{
if (!_leverArmLateralSolicitadoCm.HasValue)
{
_leverArmLateralSolicitadoCm =
VariaveisControleOperacao.RoverEmFoco?
.DadosLeitura?
.Gnss?
.LeverArmLateralOp ?? 0.0;
}
_leverArmLateralSolicitadoCm += valorCm;
double novoLateralOp =
_leverArmLateralSolicitadoCm.Value;
VariaveisControleOperacao.EnviarComandoLeverArm(
lateral: novoLateralOp,
frontal: null
);
lblLeverArmLateral.Text =
$"Correção Lateral: {novoLateralOp:+0;-0;0} cm";
}
private void btnLeverArmEsquerda_Click(object sender, System.Windows.RoutedEventArgs e)
{
AtualizarLeverArm(+5);
}
private void btnLeverArmDireita_Click(object sender, System.Windows.RoutedEventArgs e)
{
AtualizarLeverArm(-5);
}
#endregion
#region CAMERA ERVAS
private void _vm_CameraErvasFrameTipoAlterado(AgroBase.Models.Enums.TipoFrameCamera tipo)
{
if (!IsLoaded) return;
if (VariaveisControleOperacao.SelectedRoverId == VariaveisControleOperacao.BaseMarkerID) return;
PararStreamCameraErvas();
IniciarStreamCameraErvas();
}
public void IniciarStreamCameraErvas()
{
videoWeed.Iniciar();
var tipo = _vm.CameraErvasFrameTipoSelecionado?.Valor ?? AgroBase.Models.Enums.TipoFrameCamera.Rgb;
VariaveisControleOperacao.EnviarComandoTransmissaoVideo(AgroBase.Models.Enums.T_Code.Cam, true, tipo);
}
public void PararStreamCameraErvas(bool finalizar = false)
{
videoWeed.Parar();
var tipo = _vm.CameraErvasFrameTipoSelecionado?.Valor ?? AgroBase.Models.Enums.TipoFrameCamera.Rgb;
VariaveisControleOperacao.EnviarComandoTransmissaoVideo(AgroBase.Models.Enums.T_Code.Cam, false, tipo);
}
#endregion
}
}