using OperationControl.Controls; using OperationControl.Models; using OperationControl.ViewModels.Views.Operacao.Monitoramento; namespace OperationControl.Views.Operacao.Monitoramento { /// /// Interaction logic for MonitoramentoView.xaml /// 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 } }