Ajustes camera e carregamento de parametros operacao padrao

This commit is contained in:
Diego Freitas 2026-03-16 16:22:06 -03:00
parent 88d5ac701e
commit 286e5a62c4
10 changed files with 529 additions and 520 deletions

View File

@ -44,7 +44,7 @@ namespace AgroBase.Forms.IHM
}); });
FuncoesGlobais.DefinirEventosPicBtn(picManual, "Erro ao carregar modo de controle manual!", async () => FuncoesGlobais.DefinirEventosPicBtn(picManual, "Erro ao carregar modo de controle manual!", async () =>
{ {
OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.Manual); OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.Manual, true);
if (Variaveis.OperacaoEmAndamento.OperacaoLiberada) if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
{ {
frmDialogoMapa frm = new frmDialogoMapa(); frmDialogoMapa frm = new frmDialogoMapa();

View File

@ -206,7 +206,7 @@ namespace AgroBase
private void cmbModoOperacao_SelectedIndexChanged(object sender, EventArgs e) private void cmbModoOperacao_SelectedIndexChanged(object sender, EventArgs e)
{ {
OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModoOperacao.SelectedIndex); OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModoOperacao.SelectedIndex, true);
} }
private void btnIniciarOperacao_Click(object sender, EventArgs e) private void btnIniciarOperacao_Click(object sender, EventArgs e)

View File

@ -291,7 +291,7 @@ namespace AgroBase.Models
if (Parametros.Modo == null) return (false, new List<string>()); if (Parametros.Modo == null) return (false, new List<string>());
CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo); CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo, true);
Variaveis.OperacaoEmAndamento.Parametros = Parametros; Variaveis.OperacaoEmAndamento.Parametros = Parametros;
@ -333,14 +333,26 @@ namespace AgroBase.Models
} }
public static void CarregarParametrosOperacaoPadrao(ModoOperacao Modo) public static OperacaoParametrosModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo, bool isagrobase)
{
OperacaoParametrosModel p = new OperacaoParametrosModel()
{
Modo = Modo,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
DadosLeitura = new OperacaoParametrosDadosModel(),
};
if (isagrobase)
{ {
var SenConectado = (DispositivosService<SensoriamentoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Sen); var SenConectado = (DispositivosService<SensoriamentoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Sen);
var AtuConectado = (DispositivosService<AtuadorModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Atu); var AtuConectado = (DispositivosService<AtuadorModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Atu);
var MvdConectado = (DispositivosService<MovimentacaoUnificadaModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd); var MvdConectado = (DispositivosService<MovimentacaoUnificadaModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd);
tmrLogs?.Stop(); tmrLogs?.Stop();
Variaveis.OperacaoEmAndamento = new OperacaoModel(Modo) Variaveis.OperacaoEmAndamento = new OperacaoModel(Modo)
{ {
Iniciado = false, Iniciado = false,
@ -350,30 +362,31 @@ namespace AgroBase.Models
DispSen = SenConectado, DispSen = SenConectado,
DispMvd = MvdConectado, DispMvd = MvdConectado,
}; };
}
switch (Modo) switch (Modo)
{ {
case ModoOperacao.Manual: case ModoOperacao.Manual:
Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() p.Controle = new OperacaoParametrosControleModel()
{
Modo = Modo,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
Controle = new OperacaoParametrosControleModel()
{ {
RegistrarDadosPosProcessamento = false,
MovimentoAutomatico = false, MovimentoAutomatico = false,
DirecionalAutomatico = false, DirecionalAutomatico = false,
PulverizadorAutomatico = false, PulverizadorAutomatico = false,
FrenagemAutomaticaAoParar = true,
SonarAtivado = false,
FrenagemAutomaticaAoParar = false,
ImuParadaPorInclinacao = false,
OakParadaPorObstaculo = false,
MpcMatrizCusto = false,
MpcHorizonte = 4.0,
MovVelocidadeSErvasPercent = 100, MovVelocidadeSErvasPercent = 100,
MovVelocidadeCErvasPercent = 15, MovVelocidadeCErvasPercent = 15,
DirAnguloMaximo = 25, DirAnguloMaximo = 25,
DirVelocidadeMovimento = 40, DirVelocidadeMovimento = 40,
SonarAtivado = false,
DirTipoMovimento = TiposControladorDirecional.Manual, DirTipoMovimento = TiposControladorDirecional.Manual,
AtuAlturaAreaPulverizacao = 10, AtuAlturaAreaPulverizacao = 10,
@ -382,8 +395,8 @@ namespace AgroBase.Models
AtuPercentualErvasBicoOn = 1, AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70, AtuPercentualInicioPulverizacao = 70,
AtuPressaoLinha = 85, AtuPressaoLinha = 85,
}, };
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>() p.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
{ {
new OperacaoModulosMandatoriosModel() new OperacaoModulosMandatoriosModel()
{ {
@ -403,8 +416,8 @@ namespace AgroBase.Models
Mandatorio = false, Mandatorio = false,
Utilizar = true, Utilizar = true,
} }
}, };
ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>() p.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{ {
new OperacaoParametrosMandatoriosModel() new OperacaoParametrosMandatoriosModel()
{ {
@ -412,14 +425,9 @@ namespace AgroBase.Models
Mandatorio = false, Mandatorio = false,
Utilizar = true, Utilizar = true,
}, },
//new OperacaoParametrosMandatoriosModel()
//{
// Parametro = ParametrosOperacao.LoRa,
// Mandatorio = false,
// Utilizar = true,
//},
}
}; };
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoManual(); Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoManual();
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
@ -461,28 +469,29 @@ namespace AgroBase.Models
}, },
}, },
}; };
}
break; break;
case ModoOperacao.MapaGPS: case ModoOperacao.MapaGPS:
Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() p.Controle = new OperacaoParametrosControleModel()
{
Modo = Modo,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
Controle = new OperacaoParametrosControleModel()
{ {
RegistrarDadosPosProcessamento = false,
MovimentoAutomatico = true, MovimentoAutomatico = true,
DirecionalAutomatico = true, DirecionalAutomatico = true,
PulverizadorAutomatico = true, PulverizadorAutomatico = true,
SonarAtivado = false,
FrenagemAutomaticaAoParar = true, FrenagemAutomaticaAoParar = true,
ImuParadaPorInclinacao = true,
OakParadaPorObstaculo = true,
MpcMatrizCusto = false,
MpcHorizonte = 4.0,
MovVelocidadeSErvasPercent = 50, MovVelocidadeSErvasPercent = 50,
MovVelocidadeCErvasPercent = 20, MovVelocidadeCErvasPercent = 20,
DirAnguloMaximo = 30, DirAnguloMaximo = 30,
DirVelocidadeMovimento = 50, DirVelocidadeMovimento = 50,
SonarAtivado = true,
DirTipoMovimento = TiposControladorDirecional.MPC, DirTipoMovimento = TiposControladorDirecional.MPC,
AtuAlturaAreaPulverizacao = 10, AtuAlturaAreaPulverizacao = 10,
@ -491,8 +500,8 @@ namespace AgroBase.Models
AtuPercentualErvasBicoOn = 1, AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70, AtuPercentualInicioPulverizacao = 70,
AtuPressaoLinha = 85, AtuPressaoLinha = 85,
}, };
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>() p.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
{ {
new OperacaoModulosMandatoriosModel() new OperacaoModulosMandatoriosModel()
{ {
@ -533,44 +542,21 @@ namespace AgroBase.Models
new OperacaoModulosMandatoriosModel() new OperacaoModulosMandatoriosModel()
{ {
Dispositivo = T_Code.Snr, Dispositivo = T_Code.Snr,
Mandatorio = false, Mandatorio = true,
Utilizar = true, Utilizar = true,
}, },
new OperacaoModulosMandatoriosModel() };
p.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{ {
Dispositivo = T_Code.Lvx,
Mandatorio = false,
Utilizar = true,
}
},
ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{
//new OperacaoParametrosMandatoriosModel()
//{
// Parametro = ParametrosOperacao.CameraSolo,
// Mandatorio = true,
// Utilizar = true,
//},
//new OperacaoParametrosMandatoriosModel()
//{
// Parametro = ParametrosOperacao.Sonar,
// Mandatorio = false,
// Utilizar = true,
//},
new OperacaoParametrosMandatoriosModel() new OperacaoParametrosMandatoriosModel()
{ {
Parametro = ParametrosOperacao.Mapa, Parametro = ParametrosOperacao.Mapa,
Mandatorio = true, Mandatorio = true,
Utilizar = true, Utilizar = true,
}, },
//new OperacaoParametrosMandatoriosModel()
//{
// Parametro = ParametrosOperacao.LoRa,
// Mandatorio = true,
// Utilizar = true,
//}
}
}; };
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoMapaGPS(); Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoMapaGPS();
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
@ -612,28 +598,28 @@ namespace AgroBase.Models
}, },
}, },
}; };
}
break; break;
case ModoOperacao.TreinamentoIA: case ModoOperacao.TreinamentoIA:
Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() p.Controle = new OperacaoParametrosControleModel()
{
Modo = Modo,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
Controle = new OperacaoParametrosControleModel()
{ {
RegistrarDadosPosProcessamento = false,
MovimentoAutomatico = true, MovimentoAutomatico = true,
DirecionalAutomatico = true, DirecionalAutomatico = true,
PulverizadorAutomatico = false, PulverizadorAutomatico = false,
SonarAtivado = false,
FrenagemAutomaticaAoParar = false, FrenagemAutomaticaAoParar = false,
ImuParadaPorInclinacao = false,
OakParadaPorObstaculo = false,
MpcMatrizCusto = false,
MpcHorizonte = 4.0,
MovVelocidadeSErvasPercent = 50, MovVelocidadeSErvasPercent = 50,
MovVelocidadeCErvasPercent = 20, MovVelocidadeCErvasPercent = 20,
DirAnguloMaximo = 30, DirAnguloMaximo = 30,
DirVelocidadeMovimento = 50, DirVelocidadeMovimento = 50,
SonarAtivado = false,
DirTipoMovimento = TiposControladorDirecional.IA, DirTipoMovimento = TiposControladorDirecional.IA,
AtuAlturaAreaPulverizacao = 10, AtuAlturaAreaPulverizacao = 10,
@ -642,8 +628,8 @@ namespace AgroBase.Models
AtuPercentualErvasBicoOn = 1, AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70, AtuPercentualInicioPulverizacao = 70,
AtuPressaoLinha = 85, AtuPressaoLinha = 85,
}, };
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>() p.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
{ {
new OperacaoModulosMandatoriosModel() new OperacaoModulosMandatoriosModel()
{ {
@ -685,8 +671,8 @@ namespace AgroBase.Models
Dispositivo = T_Code.Lra, Dispositivo = T_Code.Lra,
Mandatorio = true, Mandatorio = true,
} }
}, };
ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>() p.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{ {
new OperacaoParametrosMandatoriosModel() new OperacaoParametrosMandatoriosModel()
{ {
@ -703,8 +689,9 @@ namespace AgroBase.Models
Parametro = ParametrosOperacao.Mapa, Parametro = ParametrosOperacao.Mapa,
Mandatorio = true, Mandatorio = true,
} }
}
}; };
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{ {
@ -744,28 +731,29 @@ namespace AgroBase.Models
}, },
}, },
}; };
}
break; break;
case ModoOperacao.MapeamentoVisual: case ModoOperacao.MapeamentoVisual:
Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() p.Controle = new OperacaoParametrosControleModel()
{
Modo = Modo,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
Controle = new OperacaoParametrosControleModel()
{ {
RegistrarDadosPosProcessamento = false,
MovimentoAutomatico = true, MovimentoAutomatico = true,
DirecionalAutomatico = true, DirecionalAutomatico = true,
PulverizadorAutomatico = false, PulverizadorAutomatico = false,
SonarAtivado = false,
FrenagemAutomaticaAoParar = true, FrenagemAutomaticaAoParar = true,
ImuParadaPorInclinacao = true,
OakParadaPorObstaculo = true,
MpcMatrizCusto = false,
MpcHorizonte = 4.0,
MovVelocidadeSErvasPercent = 40, MovVelocidadeSErvasPercent = 40,
MovVelocidadeCErvasPercent = 20, MovVelocidadeCErvasPercent = 20,
DirAnguloMaximo = 30, DirAnguloMaximo = 30,
DirVelocidadeMovimento = 50, DirVelocidadeMovimento = 50,
SonarAtivado = true,
DirTipoMovimento = TiposControladorDirecional.PID, DirTipoMovimento = TiposControladorDirecional.PID,
AtuAlturaAreaPulverizacao = 10, AtuAlturaAreaPulverizacao = 10,
@ -774,8 +762,8 @@ namespace AgroBase.Models
AtuPercentualErvasBicoOn = 1, AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70, AtuPercentualInicioPulverizacao = 70,
AtuPressaoLinha = 85, AtuPressaoLinha = 85,
}, };
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>() p.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
{ {
new OperacaoModulosMandatoriosModel() new OperacaoModulosMandatoriosModel()
{ {
@ -789,8 +777,8 @@ namespace AgroBase.Models
Mandatorio = true, Mandatorio = true,
Utilizar = true, Utilizar = true,
} }
}, };
ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>() p.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{ {
new OperacaoParametrosMandatoriosModel() new OperacaoParametrosMandatoriosModel()
{ {
@ -798,8 +786,9 @@ namespace AgroBase.Models
Mandatorio = true, Mandatorio = true,
Utilizar = true, Utilizar = true,
} }
}
}; };
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel() Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{ {
@ -830,26 +819,28 @@ namespace AgroBase.Models
} }
}, },
}; };
}
break; break;
} }
Variaveis.OperacaoEmAndamento.Parametros.RoverId = VariaveisEquipamento.Parametros.serial_number; p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true });
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true }); p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Can, Mandatorio = true, Utilizar = true });
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Can, Mandatorio = true, Utilizar = true }); p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Ipb, Mandatorio = true, Utilizar = true });
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Ipb, Mandatorio = true, Utilizar = true }); p.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true });
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true }); p.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = Variaveis.OperacaoEmAndamento.PreencherComponentesEmUso(m.Dispositivo));
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = Variaveis.OperacaoEmAndamento.PreencherComponentesEmUso(m.Dispositivo));
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.Parametros = p;
Variaveis.OperacaoEmAndamento.Trajetoria = new TrajetoriaMapaOperacaoModel(new List<List<GPSModel>>()); Variaveis.OperacaoEmAndamento.Trajetoria = new TrajetoriaMapaOperacaoModel(new List<List<GPSModel>>());
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura = new OperacaoParametrosDadosModel();
Variaveis.OperacaoEmAndamento.Sensoriamento = new OperacaoSensoriamentoLogModel(); Variaveis.OperacaoEmAndamento.Sensoriamento = new OperacaoSensoriamentoLogModel();
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false)); RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados(); Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados();
} }
return p;
}
private Dictionary<string, (bool, bool)> PreencherComponentesEmUso(T_Code Modulo) private Dictionary<string, (bool, bool)> PreencherComponentesEmUso(T_Code Modulo)
{ {
Dictionary<string, (bool, bool)> d = new Dictionary<string, (bool, bool)>(); Dictionary<string, (bool, bool)> d = new Dictionary<string, (bool, bool)>();
@ -980,7 +971,7 @@ namespace AgroBase.Models
{ {
if (Parametros.Modo == null) return (false, new List<string>()); if (Parametros.Modo == null) return (false, new List<string>());
CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo); CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo, true);
Variaveis.OperacaoEmAndamento.Parametros = Parametros; Variaveis.OperacaoEmAndamento.Parametros = Parametros;
Variaveis.OperacaoEmAndamento.Parametros.RoverId = VariaveisEquipamento.Parametros.serial_number; Variaveis.OperacaoEmAndamento.Parametros.RoverId = VariaveisEquipamento.Parametros.serial_number;

View File

@ -379,7 +379,7 @@ namespace AgroBase.Services
}); });
if (PrimeiraExecucao) if (PrimeiraExecucao)
{ {
OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.MapaGPS); OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.MapaGPS, true);
} }
//DispositivosMapeados.ForEach(d => d.AtualizarDados()); //DispositivosMapeados.ForEach(d => d.AtualizarDados());

View File

@ -16,6 +16,7 @@ class CameraManager:
def __init__(self, mostrar_log): def __init__(self, mostrar_log):
self.mostrar_log = mostrar_log self.mostrar_log = mostrar_log
self.mx_id = None self.mx_id = None
self.model_svc = None
self.reiniciar_status() self.reiniciar_status()
def reiniciar_status(self): def reiniciar_status(self):
@ -151,6 +152,7 @@ class CameraManager:
def get_selected_frame(self, _frame_type: TipoFrameCamera): def get_selected_frame(self, _frame_type: TipoFrameCamera):
_frame = None _frame = None
if (_frame_type in [TipoFrameCamera.Rgb, TipoFrameCamera.Segmentacao, TipoFrameCamera.Overlay, TipoFrameCamera.Debug]): if (_frame_type in [TipoFrameCamera.Rgb, TipoFrameCamera.Segmentacao, TipoFrameCamera.Overlay, TipoFrameCamera.Debug]):
if self.model_svc is not None:
rgb_frame, seg_frame, overlay_frame, _, _ = self.model_svc.preview_infer_cached(self._ultimo_raw_input, self._ultimo_predictions, alpha=0.5) rgb_frame, seg_frame, overlay_frame, _, _ = self.model_svc.preview_infer_cached(self._ultimo_raw_input, self._ultimo_predictions, alpha=0.5)
if _frame_type == TipoFrameCamera.Rgb: if _frame_type == TipoFrameCamera.Rgb:
_frame = rgb_frame _frame = rgb_frame

View File

@ -198,7 +198,7 @@ namespace OperationControl.Models
} }
((App)Application.Current).Shell.Main?.AtualizarDadosTela_ParametrosOperacao(obj.Controle); ((App)Application.Current).Shell.Main?.AtualizarDadosTela_ParametrosOperacao(obj.Controle);
((App)Application.Current).Shell.Main?.MAP?.CarregarDadosMapa(obj.Mapa, obj.RuasPercorrer); ((App)Application.Current).Shell.Main?.MAP?.CarregarDadosMapa(obj.Mapa, obj.RuasPercorrer);
((App)Application.Current).Shell.Dock?._vm?.AtualizarDadosMapa(obj); ((App)Application.Current).Shell.Dock?._vm?.AtualizarParametrosRover(obj);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -1,4 +1,5 @@
using AgroBase.Models.Operacoes; using AgroBase.Models;
using AgroBase.Models.Operacoes;
using OperationControl.Helpers; using OperationControl.Helpers;
using OperationControl.Models; using OperationControl.Models;
using OperationControl.Models.Operacao; using OperationControl.Models.Operacao;
@ -17,7 +18,20 @@ namespace OperationControl.ViewModels.Views.Operacao
private bool _isCollapsed; private bool _isCollapsed;
private RoverCardModel _roverSelecionado; private RoverCardModel _roverSelecionado;
public ResumoOperacionalModel Resumo { get; } = new ResumoOperacionalModel(); public ResumoOperacionalModel Resumo { get; } = new ResumoOperacionalModel();
public OperacaoParametrosModel Parametros { get; } = new OperacaoParametrosModel();
private OperacaoParametrosModel _parametros = new OperacaoParametrosModel();
public OperacaoParametrosModel Parametros
{
get => _parametros;
set
{
if (_parametros != value)
{
_parametros = value;
OnPropertyChanged(nameof(Parametros));
}
}
}
public OperacaoRightViewModel() public OperacaoRightViewModel()
{ {
@ -33,6 +47,7 @@ namespace OperationControl.ViewModels.Views.Operacao
SelecionarSecao(secaoParseada); SelecionarSecao(secaoParseada);
}); });
AcaoBotaoTopoCommand = new RelayCommand(_ => ExecutarAcaoBotaoTopo()); AcaoBotaoTopoCommand = new RelayCommand(_ => ExecutarAcaoBotaoTopo());
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));
} }
@ -51,6 +66,7 @@ namespace OperationControl.ViewModels.Views.Operacao
public ICommand AcaoBotaoTopoCommand { get; } public ICommand AcaoBotaoTopoCommand { get; }
public ICommand LerParametrosCommand { get; } public ICommand LerParametrosCommand { get; }
public ICommand SalvarParametrosCommand { get; } public ICommand SalvarParametrosCommand { get; }
public ICommand CarregarParametrosPadraoCommand { get; }
public bool IsCollapsed public bool IsCollapsed
{ {
@ -115,6 +131,8 @@ namespace OperationControl.ViewModels.Views.Operacao
public string TextoBotaoTopo => BotaoTopoEhVoltar ? "◀ Voltar" : "Trocar Rover"; public string TextoBotaoTopo => BotaoTopoEhVoltar ? "◀ Voltar" : "Trocar Rover";
public Array ModosOperacaoDisponiveis { get; } = Enum.GetValues(typeof(AgroBase.Models.Enums.ModoOperacao));
private void ExecutarAcaoBotaoTopo() private void ExecutarAcaoBotaoTopo()
{ {
if (BotaoTopoEhVoltar) if (BotaoTopoEhVoltar)
@ -127,6 +145,12 @@ namespace OperationControl.ViewModels.Views.Operacao
} }
} }
private void CarregarParametrosPadrao(AgroBase.Models.Enums.ModoOperacao modo)
{
var p = OperacaoModel.CarregarParametrosOperacaoPadrao(modo, false);
p.Descricao = $"{p.Modo} - Padrão";
Parametros = p;
}
public void ToggleCollapse() public void ToggleCollapse()
{ {
@ -226,45 +250,7 @@ namespace OperationControl.ViewModels.Views.Operacao
public void AtualizarParametros(OperacaoParametrosModel origem) public void AtualizarParametros(OperacaoParametrosModel origem)
{ {
if (origem == null) return; if (origem == null) return;
Parametros = origem;
Parametros.Modo = origem.Modo;
Parametros.Descricao = origem.Descricao;
Parametros.QtdBicos = origem.QtdBicos;
Parametros.QtdCamerasSolo = origem.QtdCamerasSolo;
Parametros.CapacidadeReservatorio = origem.CapacidadeReservatorio;
var controle_o = origem.Controle;
if (controle_o == null) return;
if (Parametros.Controle == null) Parametros.Controle = new OperacaoParametrosControleModel();
var controle_p = Parametros.Controle;
controle_p.MovimentoAutomatico = controle_o.MovimentoAutomatico;
controle_p.DirecionalAutomatico = controle_o.DirecionalAutomatico;
controle_p.PulverizadorAutomatico = controle_o.PulverizadorAutomatico;
controle_p.SonarAtivado = controle_o.SonarAtivado;
controle_p.OakParadaPorObstaculo = controle_o.OakParadaPorObstaculo;
controle_p.ImuParadaPorInclinacao = controle_o.ImuParadaPorInclinacao;
controle_p.FrenagemAutomaticaAoParar = controle_o.FrenagemAutomaticaAoParar;
controle_p.RegistrarDadosPosProcessamento = controle_o.RegistrarDadosPosProcessamento;
controle_p.MovVelocidadeSErvasPercent = controle_o.MovVelocidadeSErvasPercent;
controle_p.MovVelocidadeCErvasPercent = controle_o.MovVelocidadeCErvasPercent;
controle_p.DirAnguloMaximo = controle_o.DirAnguloMaximo;
controle_p.DirVelocidadeMovimento = controle_o.DirVelocidadeMovimento;
controle_p.DirTipoMovimento = controle_o.DirTipoMovimento;
controle_p.AtuPressaoLinha = controle_o.AtuPressaoLinha;
controle_p.AtuDuracaoAtuacao = controle_o.AtuDuracaoAtuacao;
controle_p.AtuPercentualInicioPulverizacao = controle_o.AtuPercentualInicioPulverizacao;
controle_p.AtuAlturaAreaPulverizacao = controle_o.AtuAlturaAreaPulverizacao;
controle_p.AtuPercentualErvasBicoOn = controle_o.AtuPercentualErvasBicoOn;
controle_p.AtuPercentualErvasBicoOff = controle_o.AtuPercentualErvasBicoOff;
controle_p.MpcMatrizCusto = controle_o.MpcMatrizCusto;
controle_p.MpcHorizonte = controle_o.MpcHorizonte;
OnPropertyChanged(nameof(Parametros));
} }
private void OnPropertyChanged(string nome) private void OnPropertyChanged(string nome)

View File

@ -614,6 +614,12 @@ namespace OperationControl.ViewModels
Mapa?.markers?.UpdateMarkerPosition(VariaveisControleOperacao.BaseMarkerID, lat: dados?.Latitude, lon: dados?.Longitude, heading: dados?.OrientacaoReal); Mapa?.markers?.UpdateMarkerPosition(VariaveisControleOperacao.BaseMarkerID, lat: dados?.Latitude, lon: dados?.Longitude, heading: dados?.OrientacaoReal);
} }
public void AtualizarParametrosRover(OperacaoParametrosModel? rover)
{
_viewOperacaoRight?._vm?.AtualizarParametros(rover);
AtualizarDadosMapa(rover);
}
public void AtualizarDadosMapa(OperacaoParametrosModel? dados) public void AtualizarDadosMapa(OperacaoParametrosModel? dados)
{ {
_viewOperacaoCenter?.Mapa?.LoadMapFile(_ultimoMapaCarregado); _viewOperacaoCenter?.Mapa?.LoadMapFile(_ultimoMapaCarregado);
@ -956,8 +962,6 @@ namespace OperationControl.ViewModels
return; return;
VariaveisControleOperacao.RequisitarParametrosOperacao(); VariaveisControleOperacao.RequisitarParametrosOperacao();
_viewOperacaoRight?._vm?.AtualizarParametros(VariaveisControleOperacao.RoverEmFoco);
} }
private void OnSalvarParametrosSolicitado(OperacaoParametrosModel parametros) private void OnSalvarParametrosSolicitado(OperacaoParametrosModel parametros)
{ {
@ -968,7 +972,7 @@ namespace OperationControl.ViewModels
var novosParametros = new OperacaoParametrosModel() var novosParametros = new OperacaoParametrosModel()
{ {
Modo = parametros.Modo ?? AgroBase.Models.Enums.ModoOperacao.NaoDefinido, Modo = parametros.Modo,
Descricao = parametros.Descricao, Descricao = parametros.Descricao,
QtdCamerasSolo = parametros.QtdCamerasSolo, QtdCamerasSolo = parametros.QtdCamerasSolo,
QtdBicos = parametros.QtdBicos, QtdBicos = parametros.QtdBicos,
@ -976,8 +980,8 @@ namespace OperationControl.ViewModels
Controle = parametros.Controle, Controle = parametros.Controle,
ModulosMandatorios = rover?.ModulosMandatorios, ModulosMandatorios = parametros?.ModulosMandatorios,
ParametrosMandatorios = rover?.ParametrosMandatorios, ParametrosMandatorios = parametros?.ParametrosMandatorios,
RuasPercorrer = _viewOperacaoCenter?.Mapa?.RuasMapaCarregado?.Where(x => x.Selected)?.Select(x => x.Id)?.ToList(), RuasPercorrer = _viewOperacaoCenter?.Mapa?.RuasMapaCarregado?.Where(x => x.Selected)?.Select(x => x.Id)?.ToList(),
Mapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa() Mapa = _viewOperacaoCenter?.Mapa?.CriarDadosMapa()
@ -990,9 +994,22 @@ namespace OperationControl.ViewModels
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.Controle = novosParametros.Controle;
VariaveisControleOperacao.RoverEmFoco.ModulosMandatorios = novosParametros.ModulosMandatorios;
VariaveisControleOperacao.RoverEmFoco.ParametrosMandatorios = novosParametros.ParametrosMandatorios;
VariaveisControleOperacao.RoverEmFoco.RuasPercorrer = novosParametros.RuasPercorrer; VariaveisControleOperacao.RoverEmFoco.RuasPercorrer = novosParametros.RuasPercorrer;
VariaveisControleOperacao.RoverEmFoco.Mapa = novosParametros.Mapa; VariaveisControleOperacao.RoverEmFoco.Mapa = novosParametros.Mapa;
VariaveisControleOperacao.RequisitarParametrosOperacao();
Task.Run(async () =>
{
await Task.Delay(1000);
_viewOperacaoRight?._vm?.SelecionarSecao(SecaoRightBar.Diagnostico);
});
} }

View File

@ -3,7 +3,9 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:local="clr-namespace:OperationControl.Views.Operacao" xmlns:local="clr-namespace:OperationControl.Views.Operacao"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
mc:Ignorable="d"> mc:Ignorable="d">
<UserControl.Resources> <UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/> <BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
@ -360,6 +362,8 @@
<StackPanel> <StackPanel>
<TextBlock Text="Operação" Foreground="White" FontSize="15" FontWeight="SemiBold" Margin="0,0,0,12"/> <TextBlock Text="Operação" Foreground="White" FontSize="15" FontWeight="SemiBold" Margin="0,0,0,12"/>
<TextBlock Text="Modo" Style="{StaticResource ParamLabelStyle}"/>
<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"/>
</StackPanel> </StackPanel>

View File

@ -36,5 +36,14 @@ namespace OperationControl.Views.Operacao
_vm = vm; _vm = vm;
DataContext = _vm; DataContext = _vm;
} }
private void cmbModoOperacao_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (DataContext is OperacaoRightViewModel vm && sender is System.Windows.Controls.ComboBox combo && combo.SelectedItem is AgroBase.Models.Enums.ModoOperacao modo)
{
if (vm.CarregarParametrosPadraoCommand?.CanExecute(modo) == true)
vm.CarregarParametrosPadraoCommand.Execute(modo);
}
}
} }
} }