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; public event EventHandler<StreetMapClickedEventArgs>? StreetMapClicked;
private bool ParametrizandoOperacao => private bool ParametrizandoOperacao =>
(VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Modo ?? ModoOperacao.NaoDefinido) == ModoOperacao.MapaGPS &&
!(VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Iniciada ?? false) && !(VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Iniciada ?? false) &&
(VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Operacao?.Status ?? StatusOperacao.NaoIniciado) == StatusOperacao.Parametrizando && (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; ((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); var obj = JsonConvert.DeserializeObject<OperacaoParametrosModel>(json);
lock (_RoversLock) lock (_RoversLock)
{ {
var rover = RoversNaRede.FirstOrDefault(x => x.RoverId == device_id); var index = RoversNaRede.FindIndex(x => x.RoverId == device_id);
if (rover != null) if (index >= 0)
{ {
rover = obj; var logs = RoversNaRede[index].DadosLeitura?.Logs ?? new List<OperacaoSensoriamentoLogErrosModel>();
rover.UltimoContato = DateTime.Now; obj.UltimoContato = DateTime.Now;
obj.DadosLeitura.Logs.AddRange(logs);
RoversNaRede[index] = obj;
} }
} }
((App)Application.Current).Shell.Main?.AtualizarDadosTela_ParametrosOperacao(obj.Controle); ((App)Application.Current).Shell.Main?.AtualizarDadosTela_ParametrosOperacao(obj.Controle);

View File

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

View File

@ -291,7 +291,7 @@ namespace OperationControl.ViewModels.Views.Operacao
} }
else 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); 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; return;

View File

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

View File

@ -943,7 +943,6 @@ namespace OperationControl.ViewModels
_viewOperacaoCenter?.Monitoramento?.PararStreamCameraErvas(); _viewOperacaoCenter?.Monitoramento?.PararStreamCameraErvas();
VariaveisControleOperacao.EnviarComandoIniciarUDP(VariaveisControleOperacao.RoverEmFoco?.IP, false); VariaveisControleOperacao.EnviarComandoIniciarUDP(VariaveisControleOperacao.RoverEmFoco?.IP, false);
} }
VariaveisControleOperacao.RoverEmFoco?.RuasPercorrer?.Clear();
AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco); AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco);
VariaveisControleOperacao.SelectedRoverId = VariaveisControleOperacao.BaseMarkerID; VariaveisControleOperacao.SelectedRoverId = VariaveisControleOperacao.BaseMarkerID;
_viewOperacaoCenter?.Mapa?.markers?.SetMarkerFocused(VariaveisControleOperacao.SelectedRoverId, true); _viewOperacaoCenter?.Mapa?.markers?.SetMarkerFocused(VariaveisControleOperacao.SelectedRoverId, true);
@ -959,7 +958,6 @@ namespace OperationControl.ViewModels
_viewOperacaoCenter?.Mapa?.markers?.SetMarkerFocused(VariaveisControleOperacao.SelectedRoverId, true); _viewOperacaoCenter?.Mapa?.markers?.SetMarkerFocused(VariaveisControleOperacao.SelectedRoverId, true);
AtualizarDadosTela(VariaveisControleOperacao.RoverEmFoco); AtualizarDadosTela(VariaveisControleOperacao.RoverEmFoco);
VariaveisControleOperacao.RequisitarParametrosOperacao();
_viewOperacaoCenter?.Monitoramento?.IniciarStreamCameraFrontal(); _viewOperacaoCenter?.Monitoramento?.IniciarStreamCameraFrontal();
_viewOperacaoCenter?.Monitoramento?.IniciarStreamCameraErvas(); _viewOperacaoCenter?.Monitoramento?.IniciarStreamCameraErvas();
VariaveisControleOperacao.EnviarComandoIniciarUDP(VariaveisControleOperacao.RoverEmFoco?.IP, true); VariaveisControleOperacao.EnviarComandoIniciarUDP(VariaveisControleOperacao.RoverEmFoco?.IP, true);
@ -969,12 +967,14 @@ namespace OperationControl.ViewModels
AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco); AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco);
AtualizarBarraSuperior(VariaveisControleOperacao.RoverEmFoco); AtualizarBarraSuperior(VariaveisControleOperacao.RoverEmFoco);
VariaveisControleOperacao.RequisitarParametrosOperacao();
} }
} }
private void OnSecaoSelecionadaChanged(SecaoRightBar secao) private void OnSecaoSelecionadaChanged(SecaoRightBar secao)
{ {
if (secao == SecaoRightBar.Parametrizacao) if (secao == SecaoRightBar.Parametrizacao)
_viewOperacaoRight?.areaParametrizacao?._vm?.AtualizarParametros(VariaveisControleOperacao.RoverEmFoco); VariaveisControleOperacao.RequisitarParametrosOperacao();
_viewOperacaoCenter?._vm?.DefinirSecao(secao); _viewOperacaoCenter?._vm?.DefinirSecao(secao);
AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco); AtualizarDadosMapa(VariaveisControleOperacao.RoverEmFoco);
} }
@ -991,7 +991,7 @@ namespace OperationControl.ViewModels
var dadosMapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa(); var dadosMapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa();
var ruasPercorrer = _viewOperacaoCenter?.Mapa?.RuasMapaCarregado?.Where(x => x.Selected)?.Select(x => x.Id)?.ToList() ?? new List<string>(); 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); System.Windows.MessageBox.Show("Selecione as ruas no mapa onde o equipamento irá operar", "Ruas não selecionadas", MessageBoxButton.OK, MessageBoxImage.Warning);
return; return;
@ -1015,33 +1015,28 @@ namespace OperationControl.ViewModels
ModulosMandatorios = parametros?.ModulosMandatorios, ModulosMandatorios = parametros?.ModulosMandatorios,
ParametrosMandatorios = parametros?.ParametrosMandatorios, ParametrosMandatorios = parametros?.ParametrosMandatorios,
RuasPercorrer = _viewOperacaoCenter?.Mapa?.RuasMapaCarregado?.Where(x => x.Selected)?.Select(x => x.Id)?.ToList(), RuasPercorrer = ruasPercorrer,
Mapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa() Mapa = dadosMapa
}; };
VariaveisControleOperacao.EnviarParametrosOperacao(novosParametros); VariaveisControleOperacao.EnviarParametrosOperacao(novosParametros);
VariaveisControleOperacao.RoverEmFoco.Modo = novosParametros.Modo; //VariaveisControleOperacao.RoverEmFoco.Modo = novosParametros.Modo;
VariaveisControleOperacao.RoverEmFoco.Descricao = novosParametros.Descricao; //VariaveisControleOperacao.RoverEmFoco.Descricao = novosParametros.Descricao;
VariaveisControleOperacao.RoverEmFoco.QtdCamerasSolo = novosParametros.QtdCamerasSolo; //VariaveisControleOperacao.RoverEmFoco.QtdCamerasSolo = novosParametros.QtdCamerasSolo;
VariaveisControleOperacao.RoverEmFoco.QtdBicos = novosParametros.QtdBicos; //VariaveisControleOperacao.RoverEmFoco.QtdBicos = novosParametros.QtdBicos;
VariaveisControleOperacao.RoverEmFoco.CapacidadeReservatorio = novosParametros.CapacidadeReservatorio; //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; //Task.Run(async () =>
//{
VariaveisControleOperacao.RoverEmFoco.ModulosMandatorios = novosParametros.ModulosMandatorios; // await Task.Delay(1000);
VariaveisControleOperacao.RoverEmFoco.ParametrosMandatorios = novosParametros.ParametrosMandatorios; // _viewOperacaoRight?._vm?.SelecionarSecao(SecaoRightBar.Diagnostico);
//});
VariaveisControleOperacao.RoverEmFoco.RuasPercorrer = novosParametros.RuasPercorrer;
VariaveisControleOperacao.RoverEmFoco.Mapa = novosParametros.Mapa;
VariaveisControleOperacao.RequisitarParametrosOperacao();
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:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:OperationControl.Views.Operacao" xmlns:local="clr-namespace:OperationControl.Views.Operacao"
mc:Ignorable="d" > mc:Ignorable="d" >
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
</UserControl.Resources>
<Grid> <Grid>
<Grid.Resources> <Grid.Resources>
<Style x:Key="ParamLabelStyle" TargetType="TextBlock"> <Style x:Key="ParamLabelStyle" TargetType="TextBlock">
@ -69,6 +72,7 @@
<ComboBox ItemsSource="{Binding ModosOperacaoDisponiveis}" SelectedItem="{Binding Parametros.Modo, Mode=TwoWay}" SelectionChanged="cmbModoOperacao_SelectionChanged" /> <ComboBox ItemsSource="{Binding ModosOperacaoDisponiveis}" SelectedItem="{Binding Parametros.Modo, Mode=TwoWay}" SelectionChanged="cmbModoOperacao_SelectionChanged" />
<TextBlock Text="Descrição" Style="{StaticResource ParamLabelStyle}"/> <TextBlock Text="Descrição" Style="{StaticResource ParamLabelStyle}"/>
<TextBox Text="{Binding Parametros.Descricao}" Style="{StaticResource ParamTextBoxStyle}" Margin="0,0,0,0"/> <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> </StackPanel>
</Border> </Border>