ajustes para receber parametros do rover

This commit is contained in:
Diego Freitas 2026-03-17 16:45:43 -03:00
parent 8ee9368c8b
commit 6f2a5181fc
7 changed files with 54 additions and 41 deletions

View File

@ -127,6 +127,7 @@ namespace OperationControl.Controls
public event EventHandler<StreetMapClickedEventArgs>? StreetMapClicked;
private bool ParametrizandoOperacao =>
(VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Modo ?? ModoOperacao.NaoDefinido) == ModoOperacao.MapaGPS &&
!(VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Iniciada ?? false) &&
(VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Status ?? StatusOperacao.NaoIniciado) == StatusOperacao.Parametrizando &&
((App)System.Windows.Application.Current).Shell.Dock?._vm?._viewOperacaoRight?._vm?.SecaoAtual == ViewModels.Views.Operacao.SecaoRightBar.Parametrizacao;

View File

@ -186,11 +186,13 @@ namespace OperationControl.Models
var obj = JsonConvert.DeserializeObject<OperacaoParametrosModel>(json);
lock (_RoversLock)
{
var rover = RoversNaRede.FirstOrDefault(x => x.RoverId == device_id);
if (rover != null)
var index = RoversNaRede.FindIndex(x => x.RoverId == device_id);
if (index >= 0)
{
rover = obj;
rover.UltimoContato = DateTime.Now;
var logs = RoversNaRede[index].DadosLeitura?.Logs ?? new List<OperacaoSensoriamentoLogErrosModel>();
obj.UltimoContato = DateTime.Now;
obj.DadosLeitura.Logs.AddRange(logs);
RoversNaRede[index] = obj;
}
}
((App)Application.Current).Shell.Main?.AtualizarDadosTela_ParametrosOperacao(obj.Controle);

View File

@ -2,6 +2,7 @@
using AgroBase.Models.Operacoes;
using OperationControl.Controls;
using OperationControl.Helpers;
using OperationControl.Models;
using System.ComponentModel;
using System.Windows.Input;
@ -23,11 +24,23 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento
}
}
private bool _operacaoConcluida;
public bool OperacaoConcluida
{
get => _operacaoConcluida;
set
{
_operacaoConcluida = value;
OnPropertyChanged(nameof(OperacaoConcluida));
}
}
public ParametrizacaoViewModel()
{
CarregarParametrosPadraoCommand = new RelayCommand(p => CarregarParametrosPadrao((AgroBase.Models.Enums.ModoOperacao)p));
LerParametrosCommand = new RelayCommand(_ => LerParametrosSolicitado?.Invoke());
SalvarParametrosCommand = new RelayCommand(_ => SalvarParametrosSolicitado?.Invoke(Parametros));
ReiniciarOperacaoCommand = new RelayCommand(_ => ReiniciarOperacao());
}
@ -36,6 +49,7 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento
public ICommand LerParametrosCommand { get; }
public ICommand SalvarParametrosCommand { get; }
public ICommand CarregarParametrosPadraoCommand { get; }
public ICommand ReiniciarOperacaoCommand { get; }
public Array ModosOperacaoDisponiveis { get; } = Enum.GetValues(typeof(AgroBase.Models.Enums.ModoOperacao));
@ -46,10 +60,16 @@ namespace OperationControl.ViewModels.Views.Operacao.Monitoramento
Parametros = p;
}
private void ReiniciarOperacao()
{
VariaveisControleOperacao.EnviarComandoIniciarOperacao(false, false);
}
public void AtualizarParametros(OperacaoParametrosModel origem)
{
if (origem == null) return;
Parametros = origem;
OperacaoConcluida = (VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Status ?? AgroBase.Models.Enums.StatusOperacao.NaoIniciado) == AgroBase.Models.Enums.StatusOperacao.Concluido;
}
public void ProcessarStreetMapClicked(MapViewControl.StreetMapClickedEventArgs e)

View File

@ -291,7 +291,7 @@ namespace OperationControl.ViewModels.Views.Operacao
}
else
{
if (!((VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Modo ?? AgroBase.Models.Enums.ModoOperacao.NaoDefinido) == AgroBase.Models.Enums.ModoOperacao.Manual) && !(VariaveisControleOperacao.RoverEmFoco?.RuasPercorrer?.Any() ?? false))
if (((VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Modo ?? AgroBase.Models.Enums.ModoOperacao.NaoDefinido) == AgroBase.Models.Enums.ModoOperacao.MapaGPS) && !(VariaveisControleOperacao.RoverEmFoco?.RuasPercorrer?.Any() ?? false))
{
System.Windows.MessageBox.Show("Para iniciar a operação automática, é necessário carregar um mapa e selecionar as ruas onde o equipamento irá operar!", "Parametrização", MessageBoxButton.OK, MessageBoxImage.Warning);
return;

View File

@ -130,16 +130,7 @@ namespace OperationControl.ViewModels.Views.Operacao
{
var rover = Rovers.FirstOrDefault(x => x.NumeroSerie == roverId);
RoverSelecionado = rover;
if (RoverSelecionado != null)
{
VariaveisControleOperacao.RequisitarParametrosOperacao();
SelecionarSecao(SecaoRightBar.Menu);
}
else
{
SelecionarSecao(SecaoRightBar.SemRoverSelecionado);
}
SelecionarSecao(RoverSelecionado != null ? SecaoRightBar.Menu : SecaoRightBar.SemRoverSelecionado);
RoverSelecionadoChanged?.Invoke(rover);
}

View File

@ -943,7 +943,6 @@ namespace OperationControl.ViewModels
_viewOperacaoCenter?.Monitoramento?.PararStreamCameraErvas();
VariaveisControleOperacao.EnviarComandoIniciarUDP(VariaveisControleOperacao.RoverEmFoco?.IP, false);
}
VariaveisControleOperacao.RoverEmFoco?.RuasPercorrer?.Clear();
AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco);
VariaveisControleOperacao.SelectedRoverId = VariaveisControleOperacao.BaseMarkerID;
_viewOperacaoCenter?.Mapa?.markers?.SetMarkerFocused(VariaveisControleOperacao.SelectedRoverId, true);
@ -959,7 +958,6 @@ namespace OperationControl.ViewModels
_viewOperacaoCenter?.Mapa?.markers?.SetMarkerFocused(VariaveisControleOperacao.SelectedRoverId, true);
AtualizarDadosTela(VariaveisControleOperacao.RoverEmFoco);
VariaveisControleOperacao.RequisitarParametrosOperacao();
_viewOperacaoCenter?.Monitoramento?.IniciarStreamCameraFrontal();
_viewOperacaoCenter?.Monitoramento?.IniciarStreamCameraErvas();
VariaveisControleOperacao.EnviarComandoIniciarUDP(VariaveisControleOperacao.RoverEmFoco?.IP, true);
@ -969,12 +967,14 @@ namespace OperationControl.ViewModels
AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco);
AtualizarBarraSuperior(VariaveisControleOperacao.RoverEmFoco);
VariaveisControleOperacao.RequisitarParametrosOperacao();
}
}
private void OnSecaoSelecionadaChanged(SecaoRightBar secao)
{
if (secao == SecaoRightBar.Parametrizacao)
_viewOperacaoRight?.areaParametrizacao?._vm?.AtualizarParametros(VariaveisControleOperacao.RoverEmFoco);
VariaveisControleOperacao.RequisitarParametrosOperacao();
_viewOperacaoCenter?._vm?.DefinirSecao(secao);
AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco);
}
@ -991,7 +991,7 @@ namespace OperationControl.ViewModels
var dadosMapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa();
var ruasPercorrer = _viewOperacaoCenter?.Mapa?.RuasMapaCarregado?.Where(x => x.Selected)?.Select(x => x.Id)?.ToList() ?? new List<string>();
if ((dadosMapa?.features?.Count ?? 0) == 0 || !ruasPercorrer.Any())
if (parametros.Modo == AgroBase.Models.Enums.ModoOperacao.MapaGPS && ((dadosMapa?.features?.Count ?? 0) == 0 || !ruasPercorrer.Any()))
{
System.Windows.MessageBox.Show("Selecione as ruas no mapa onde o equipamento irá operar", "Ruas não selecionadas", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
@ -1015,33 +1015,28 @@ namespace OperationControl.ViewModels
ModulosMandatorios = parametros?.ModulosMandatorios,
ParametrosMandatorios = parametros?.ParametrosMandatorios,
RuasPercorrer = _viewOperacaoCenter?.Mapa?.RuasMapaCarregado?.Where(x => x.Selected)?.Select(x => x.Id)?.ToList(),
Mapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa()
RuasPercorrer = ruasPercorrer,
Mapa = dadosMapa
};
VariaveisControleOperacao.EnviarParametrosOperacao(novosParametros);
VariaveisControleOperacao.RoverEmFoco.Modo = novosParametros.Modo;
VariaveisControleOperacao.RoverEmFoco.Descricao = novosParametros.Descricao;
VariaveisControleOperacao.RoverEmFoco.QtdCamerasSolo = novosParametros.QtdCamerasSolo;
VariaveisControleOperacao.RoverEmFoco.QtdBicos = novosParametros.QtdBicos;
VariaveisControleOperacao.RoverEmFoco.CapacidadeReservatorio = novosParametros.CapacidadeReservatorio;
//VariaveisControleOperacao.RoverEmFoco.Modo = novosParametros.Modo;
//VariaveisControleOperacao.RoverEmFoco.Descricao = novosParametros.Descricao;
//VariaveisControleOperacao.RoverEmFoco.QtdCamerasSolo = novosParametros.QtdCamerasSolo;
//VariaveisControleOperacao.RoverEmFoco.QtdBicos = novosParametros.QtdBicos;
//VariaveisControleOperacao.RoverEmFoco.CapacidadeReservatorio = novosParametros.CapacidadeReservatorio;
//VariaveisControleOperacao.RoverEmFoco.Controle = novosParametros.Controle;
//VariaveisControleOperacao.RoverEmFoco.ModulosMandatorios = novosParametros.ModulosMandatorios;
//VariaveisControleOperacao.RoverEmFoco.ParametrosMandatorios = novosParametros.ParametrosMandatorios;
//VariaveisControleOperacao.RoverEmFoco.RuasPercorrer = novosParametros.RuasPercorrer;
//VariaveisControleOperacao.RoverEmFoco.Mapa = novosParametros.Mapa;
VariaveisControleOperacao.RoverEmFoco.Controle = novosParametros.Controle;
VariaveisControleOperacao.RoverEmFoco.ModulosMandatorios = novosParametros.ModulosMandatorios;
VariaveisControleOperacao.RoverEmFoco.ParametrosMandatorios = novosParametros.ParametrosMandatorios;
VariaveisControleOperacao.RoverEmFoco.RuasPercorrer = novosParametros.RuasPercorrer;
VariaveisControleOperacao.RoverEmFoco.Mapa = novosParametros.Mapa;
VariaveisControleOperacao.RequisitarParametrosOperacao();
Task.Run(async () =>
{
await Task.Delay(1000);
_viewOperacaoRight?._vm?.SelecionarSecao(SecaoRightBar.Diagnostico);
});
//Task.Run(async () =>
//{
// await Task.Delay(1000);
// _viewOperacaoRight?._vm?.SelecionarSecao(SecaoRightBar.Diagnostico);
//});
}

View File

@ -5,6 +5,9 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:OperationControl.Views.Operacao"
mc:Ignorable="d" >
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
</UserControl.Resources>
<Grid>
<Grid.Resources>
<Style x:Key="ParamLabelStyle" TargetType="TextBlock">
@ -69,6 +72,7 @@
<ComboBox ItemsSource="{Binding ModosOperacaoDisponiveis}" SelectedItem="{Binding Parametros.Modo, Mode=TwoWay}" SelectionChanged="cmbModoOperacao_SelectionChanged" />
<TextBlock Text="Descrição" Style="{StaticResource ParamLabelStyle}"/>
<TextBox Text="{Binding Parametros.Descricao}" Style="{StaticResource ParamTextBoxStyle}" Margin="0,0,0,0"/>
<Button Content="Reiniciar Operação" Command="{Binding ReiniciarOperacaoCommand}" Visibility="{Binding OperacaoConcluida, Converter={StaticResource BoolToVisibilityConverter}}" Margin="0,10,0,0" Height="36"/>
</StackPanel>
</Border>