127 lines
4.4 KiB
C#
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
|
|
|
|
|
|
}
|
|
}
|