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,521 +333,512 @@ namespace AgroBase.Models
} }
public static void CarregarParametrosOperacaoPadrao(ModoOperacao Modo) public static OperacaoParametrosModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo, bool isagrobase)
{ {
var SenConectado = (DispositivosService<SensoriamentoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Sen); OperacaoParametrosModel p = new OperacaoParametrosModel()
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);
tmrLogs?.Stop();
Variaveis.OperacaoEmAndamento = new OperacaoModel(Modo)
{ {
Iniciado = false, Modo = Modo,
DataInicio = DateTime.MinValue, QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
DataFim = DateTime.MinValue, QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
DispAtu = AtuConectado, CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
DispSen = SenConectado, RoverId = VariaveisEquipamento.Parametros.serial_number,
DispMvd = MvdConectado, RuasPercorrer = null,
Mapa = null,
DadosLeitura = new OperacaoParametrosDadosModel(),
}; };
if (isagrobase)
{
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 MvdConectado = (DispositivosService<MovimentacaoUnificadaModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd);
tmrLogs?.Stop();
Variaveis.OperacaoEmAndamento = new OperacaoModel(Modo)
{
Iniciado = false,
DataInicio = DateTime.MinValue,
DataFim = DateTime.MinValue,
DispAtu = AtuConectado,
DispSen = SenConectado,
DispMvd = MvdConectado,
};
}
switch (Modo) switch (Modo)
{ {
case ModoOperacao.Manual: case ModoOperacao.Manual:
Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() p.Controle = new OperacaoParametrosControleModel()
{ {
Modo = Modo, RegistrarDadosPosProcessamento = false,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
Controle = new OperacaoParametrosControleModel()
{
MovimentoAutomatico = false,
DirecionalAutomatico = false,
PulverizadorAutomatico = false,
FrenagemAutomaticaAoParar = true,
MovVelocidadeSErvasPercent = 100,
MovVelocidadeCErvasPercent = 15,
DirAnguloMaximo = 25,
DirVelocidadeMovimento = 40,
SonarAtivado = false,
DirTipoMovimento = TiposControladorDirecional.Manual,
AtuAlturaAreaPulverizacao = 10, MovimentoAutomatico = false,
AtuDuracaoAtuacao = 200, DirecionalAutomatico = false,
AtuPercentualErvasBicoOff = 2, PulverizadorAutomatico = false,
AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70, SonarAtivado = false,
AtuPressaoLinha = 85, FrenagemAutomaticaAoParar = false,
}, ImuParadaPorInclinacao = false,
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>() OakParadaPorObstaculo = false,
MpcMatrizCusto = false,
MpcHorizonte = 4.0,
MovVelocidadeSErvasPercent = 100,
MovVelocidadeCErvasPercent = 15,
DirAnguloMaximo = 25,
DirVelocidadeMovimento = 40,
DirTipoMovimento = TiposControladorDirecional.Manual,
AtuAlturaAreaPulverizacao = 10,
AtuDuracaoAtuacao = 200,
AtuPercentualErvasBicoOff = 2,
AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70,
AtuPressaoLinha = 85,
};
p.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel()
{ {
new OperacaoModulosMandatoriosModel() Dispositivo = T_Code.Mov,
{ Mandatorio = false,
Dispositivo = T_Code.Mov, Utilizar = true,
Mandatorio = false,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Dir,
Mandatorio = false,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Atu,
Mandatorio = false,
Utilizar = true,
}
}, },
ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>() new OperacaoModulosMandatoriosModel()
{ {
new OperacaoParametrosMandatoriosModel() Dispositivo = T_Code.Dir,
{ Mandatorio = false,
Parametro = ParametrosOperacao.Joystick, Utilizar = true,
Mandatorio = false, },
Utilizar = true, new OperacaoModulosMandatoriosModel()
}, {
//new OperacaoParametrosMandatoriosModel() Dispositivo = T_Code.Atu,
//{ Mandatorio = false,
// Parametro = ParametrosOperacao.LoRa, Utilizar = true,
// Mandatorio = false,
// Utilizar = true,
//},
} }
}; };
Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoManual(); p.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{ {
TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, new OperacaoParametrosMandatoriosModel()
Angulo = 25,
Direcao = Direcao.Parado,
EmFreio = false,
PercentualVelocidadeSP = 20,
AlturaBarra = 50,
TiposControle = new List<OperacaoControleTipoModel>()
{ {
new OperacaoControleTipoModel() Parametro = ParametrosOperacao.Joystick,
{ Mandatorio = false,
Tipo = T_Code.Mov, Utilizar = true,
DelayEnvioComandoBase = 10,
DelayEnvioComando = 10,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Dir,
DelayEnvioComandoBase = 10,
DelayEnvioComando = 10,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Atu,
DelayEnvioComandoBase = 10,
DelayEnvioComando = 10,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
}, },
}; };
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoManual();
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{
TipoMovimento = TipoMovimentoDirecional.RodasDianteiras,
Angulo = 25,
Direcao = Direcao.Parado,
EmFreio = false,
PercentualVelocidadeSP = 20,
AlturaBarra = 50,
TiposControle = new List<OperacaoControleTipoModel>()
{
new OperacaoControleTipoModel()
{
Tipo = T_Code.Mov,
DelayEnvioComandoBase = 10,
DelayEnvioComando = 10,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Dir,
DelayEnvioComandoBase = 10,
DelayEnvioComando = 10,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Atu,
DelayEnvioComandoBase = 10,
DelayEnvioComando = 10,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
},
};
}
break; break;
case ModoOperacao.MapaGPS: case ModoOperacao.MapaGPS:
Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() p.Controle = new OperacaoParametrosControleModel()
{ {
Modo = Modo, RegistrarDadosPosProcessamento = false,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
Controle = new OperacaoParametrosControleModel()
{
MovimentoAutomatico = true,
DirecionalAutomatico = true,
PulverizadorAutomatico = true,
FrenagemAutomaticaAoParar = true,
MovVelocidadeSErvasPercent = 50,
MovVelocidadeCErvasPercent = 20,
DirAnguloMaximo = 30,
DirVelocidadeMovimento = 50,
SonarAtivado = true,
DirTipoMovimento = TiposControladorDirecional.MPC,
AtuAlturaAreaPulverizacao = 10, MovimentoAutomatico = true,
AtuDuracaoAtuacao = 200, DirecionalAutomatico = true,
AtuPercentualErvasBicoOff = 2, PulverizadorAutomatico = true,
AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70, SonarAtivado = false,
AtuPressaoLinha = 85, FrenagemAutomaticaAoParar = true,
}, ImuParadaPorInclinacao = true,
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>() OakParadaPorObstaculo = true,
{ MpcMatrizCusto = false,
new OperacaoModulosMandatoriosModel() MpcHorizonte = 4.0,
{
Dispositivo = T_Code.Mov, MovVelocidadeSErvasPercent = 50,
Mandatorio = true, MovVelocidadeCErvasPercent = 20,
Utilizar = true, DirAnguloMaximo = 30,
}, DirVelocidadeMovimento = 50,
new OperacaoModulosMandatoriosModel()
{ DirTipoMovimento = TiposControladorDirecional.MPC,
Dispositivo = T_Code.Dir,
Mandatorio = true, AtuAlturaAreaPulverizacao = 10,
Utilizar = true, AtuDuracaoAtuacao = 200,
}, AtuPercentualErvasBicoOff = 2,
new OperacaoModulosMandatoriosModel() AtuPercentualErvasBicoOn = 1,
{ AtuPercentualInicioPulverizacao = 70,
Dispositivo = T_Code.Sen, AtuPressaoLinha = 85,
Mandatorio = true,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Atu,
Mandatorio = true,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Gps,
Mandatorio = true,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Cam,
Mandatorio = true,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Snr,
Mandatorio = false,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
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()
{
Parametro = ParametrosOperacao.Mapa,
Mandatorio = true,
Utilizar = true,
},
//new OperacaoParametrosMandatoriosModel()
//{
// Parametro = ParametrosOperacao.LoRa,
// Mandatorio = true,
// Utilizar = true,
//}
}
}; };
Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoMapaGPS(); p.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{ {
TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, new OperacaoModulosMandatoriosModel()
Angulo = 0,
Direcao = Direcao.Parado,
EmFreio = false,
PercentualVelocidadeSP = 0,
AlturaBarra = 50,
TiposControle = new List<OperacaoControleTipoModel>()
{ {
new OperacaoControleTipoModel() Dispositivo = T_Code.Mov,
{ Mandatorio = true,
Tipo = T_Code.Mov, Utilizar = true,
DelayEnvioComandoBase = 500, },
DelayEnvioComando = 500, new OperacaoModulosMandatoriosModel()
DelayEnvioComandoExtra = 0, {
Comandos = new List<string>(), Dispositivo = T_Code.Dir,
UltimoComando = DateTime.Now Mandatorio = true,
}, Utilizar = true,
new OperacaoControleTipoModel() },
{ new OperacaoModulosMandatoriosModel()
Tipo = T_Code.Dir, {
DelayEnvioComandoBase = 300, Dispositivo = T_Code.Sen,
DelayEnvioComando = 300, Mandatorio = true,
DelayEnvioComandoExtra = 0, Utilizar = true,
Comandos = new List<string>(), },
UltimoComando = DateTime.Now new OperacaoModulosMandatoriosModel()
}, {
new OperacaoControleTipoModel() Dispositivo = T_Code.Atu,
{ Mandatorio = true,
Tipo = T_Code.Atu, Utilizar = true,
DelayEnvioComandoBase = 200, },
DelayEnvioComando = 200, new OperacaoModulosMandatoriosModel()
DelayEnvioComandoExtra = 0, {
Comandos = new List<string>(), Dispositivo = T_Code.Gps,
UltimoComando = DateTime.Now Mandatorio = true,
}, Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Cam,
Mandatorio = true,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Snr,
Mandatorio = true,
Utilizar = true,
}, },
}; };
p.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
{
new OperacaoParametrosMandatoriosModel()
{
Parametro = ParametrosOperacao.Mapa,
Mandatorio = true,
Utilizar = true,
},
};
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoMapaGPS();
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{
TipoMovimento = TipoMovimentoDirecional.RodasDianteiras,
Angulo = 0,
Direcao = Direcao.Parado,
EmFreio = false,
PercentualVelocidadeSP = 0,
AlturaBarra = 50,
TiposControle = new List<OperacaoControleTipoModel>()
{
new OperacaoControleTipoModel()
{
Tipo = T_Code.Mov,
DelayEnvioComandoBase = 500,
DelayEnvioComando = 500,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Dir,
DelayEnvioComandoBase = 300,
DelayEnvioComando = 300,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Atu,
DelayEnvioComandoBase = 200,
DelayEnvioComando = 200,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
},
};
}
break; break;
case ModoOperacao.TreinamentoIA: case ModoOperacao.TreinamentoIA:
Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() p.Controle = new OperacaoParametrosControleModel()
{ {
Modo = Modo, RegistrarDadosPosProcessamento = false,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
Controle = new OperacaoParametrosControleModel()
{
MovimentoAutomatico = true,
DirecionalAutomatico = true,
PulverizadorAutomatico = false,
FrenagemAutomaticaAoParar = false,
MovVelocidadeSErvasPercent = 50,
MovVelocidadeCErvasPercent = 20,
DirAnguloMaximo = 30,
DirVelocidadeMovimento = 50,
SonarAtivado = false,
DirTipoMovimento = TiposControladorDirecional.IA,
AtuAlturaAreaPulverizacao = 10, MovimentoAutomatico = true,
AtuDuracaoAtuacao = 200, DirecionalAutomatico = true,
AtuPercentualErvasBicoOff = 2, PulverizadorAutomatico = false,
AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70, SonarAtivado = false,
AtuPressaoLinha = 85, FrenagemAutomaticaAoParar = false,
}, ImuParadaPorInclinacao = false,
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>() OakParadaPorObstaculo = false,
MpcMatrizCusto = false,
MpcHorizonte = 4.0,
MovVelocidadeSErvasPercent = 50,
MovVelocidadeCErvasPercent = 20,
DirAnguloMaximo = 30,
DirVelocidadeMovimento = 50,
DirTipoMovimento = TiposControladorDirecional.IA,
AtuAlturaAreaPulverizacao = 10,
AtuDuracaoAtuacao = 200,
AtuPercentualErvasBicoOff = 2,
AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70,
AtuPressaoLinha = 85,
};
p.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel()
{ {
new OperacaoModulosMandatoriosModel() Dispositivo = T_Code.Mov,
{ Mandatorio = true,
Dispositivo = T_Code.Mov,
Mandatorio = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Dir,
Mandatorio = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Atu,
Mandatorio = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Gps,
Mandatorio = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Sen,
Mandatorio = false,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Wit,
Mandatorio = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Pzm,
Mandatorio = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Lra,
Mandatorio = true,
}
}, },
ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>() new OperacaoModulosMandatoriosModel()
{ {
new OperacaoParametrosMandatoriosModel() Dispositivo = T_Code.Dir,
{ Mandatorio = true,
Parametro = ParametrosOperacao.CameraSolo, },
Mandatorio = true, new OperacaoModulosMandatoriosModel()
}, {
new OperacaoParametrosMandatoriosModel() Dispositivo = T_Code.Atu,
{ Mandatorio = true,
Parametro = ParametrosOperacao.Sonar, },
Mandatorio = true, new OperacaoModulosMandatoriosModel()
}, {
new OperacaoParametrosMandatoriosModel() Dispositivo = T_Code.Gps,
{ Mandatorio = true,
Parametro = ParametrosOperacao.Mapa, },
Mandatorio = true, new OperacaoModulosMandatoriosModel()
} {
Dispositivo = T_Code.Sen,
Mandatorio = false,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Wit,
Mandatorio = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Pzm,
Mandatorio = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Lra,
Mandatorio = true,
} }
}; };
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); p.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{ {
TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, new OperacaoParametrosMandatoriosModel()
Angulo = 0,
Direcao = Direcao.Parado,
EmFreio = false,
PercentualVelocidadeSP = 0,
TiposControle = new List<OperacaoControleTipoModel>()
{ {
new OperacaoControleTipoModel() Parametro = ParametrosOperacao.CameraSolo,
{ Mandatorio = true,
Tipo = T_Code.Mov,
DelayEnvioComandoBase = 500,
DelayEnvioComando = 500,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Dir,
DelayEnvioComandoBase = 1000,
DelayEnvioComando = 1000,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Atu,
DelayEnvioComandoBase = 500,
DelayEnvioComando = 500,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
}, },
new OperacaoParametrosMandatoriosModel()
{
Parametro = ParametrosOperacao.Sonar,
Mandatorio = true,
},
new OperacaoParametrosMandatoriosModel()
{
Parametro = ParametrosOperacao.Mapa,
Mandatorio = true,
}
}; };
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{
TipoMovimento = TipoMovimentoDirecional.RodasDianteiras,
Angulo = 0,
Direcao = Direcao.Parado,
EmFreio = false,
PercentualVelocidadeSP = 0,
TiposControle = new List<OperacaoControleTipoModel>()
{
new OperacaoControleTipoModel()
{
Tipo = T_Code.Mov,
DelayEnvioComandoBase = 500,
DelayEnvioComando = 500,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Dir,
DelayEnvioComandoBase = 1000,
DelayEnvioComando = 1000,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Atu,
DelayEnvioComandoBase = 500,
DelayEnvioComando = 500,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
},
};
}
break; break;
case ModoOperacao.MapeamentoVisual: case ModoOperacao.MapeamentoVisual:
Variaveis.OperacaoEmAndamento.Parametros = new OperacaoParametrosModel() p.Controle = new OperacaoParametrosControleModel()
{ {
Modo = Modo, RegistrarDadosPosProcessamento = false,
QtdCamerasSolo = VariaveisEquipamento.QuantidadeCamerasSolo,
QtdBicos = VariaveisEquipamento.QuantidadeBicosPulverizadores,
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
RoverId = VariaveisEquipamento.Parametros.serial_number,
RuasPercorrer = null,
Mapa = null,
Controle = new OperacaoParametrosControleModel()
{
MovimentoAutomatico = true,
DirecionalAutomatico = true,
PulverizadorAutomatico = false,
FrenagemAutomaticaAoParar = true,
MovVelocidadeSErvasPercent = 40,
MovVelocidadeCErvasPercent = 20,
DirAnguloMaximo = 30,
DirVelocidadeMovimento = 50,
SonarAtivado = true,
DirTipoMovimento = TiposControladorDirecional.PID,
AtuAlturaAreaPulverizacao = 10, MovimentoAutomatico = true,
AtuDuracaoAtuacao = 200, DirecionalAutomatico = true,
AtuPercentualErvasBicoOff = 2, PulverizadorAutomatico = false,
AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70, SonarAtivado = false,
AtuPressaoLinha = 85, FrenagemAutomaticaAoParar = true,
}, ImuParadaPorInclinacao = true,
ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>() OakParadaPorObstaculo = true,
MpcMatrizCusto = false,
MpcHorizonte = 4.0,
MovVelocidadeSErvasPercent = 40,
MovVelocidadeCErvasPercent = 20,
DirAnguloMaximo = 30,
DirVelocidadeMovimento = 50,
DirTipoMovimento = TiposControladorDirecional.PID,
AtuAlturaAreaPulverizacao = 10,
AtuDuracaoAtuacao = 200,
AtuPercentualErvasBicoOff = 2,
AtuPercentualErvasBicoOn = 1,
AtuPercentualInicioPulverizacao = 70,
AtuPressaoLinha = 85,
};
p.ModulosMandatorios = new List<OperacaoModulosMandatoriosModel>()
{
new OperacaoModulosMandatoriosModel()
{ {
new OperacaoModulosMandatoriosModel() Dispositivo = T_Code.Mov,
{ Mandatorio = true,
Dispositivo = T_Code.Mov, Utilizar = true,
Mandatorio = true,
Utilizar = true,
},
new OperacaoModulosMandatoriosModel()
{
Dispositivo = T_Code.Dir,
Mandatorio = true,
Utilizar = true,
}
}, },
ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>() new OperacaoModulosMandatoriosModel()
{ {
new OperacaoParametrosMandatoriosModel() Dispositivo = T_Code.Dir,
{ Mandatorio = true,
Parametro = ParametrosOperacao.Sonar, Utilizar = true,
Mandatorio = true,
Utilizar = true,
}
} }
}; };
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel(); p.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{ {
TipoMovimento = TipoMovimentoDirecional.RodasDianteiras, new OperacaoParametrosMandatoriosModel()
Angulo = 0,
Direcao = Direcao.Parado,
EmFreio = false,
PercentualVelocidadeSP = 0,
TiposControle = new List<OperacaoControleTipoModel>()
{ {
new OperacaoControleTipoModel() Parametro = ParametrosOperacao.Sonar,
{ Mandatorio = true,
Tipo = T_Code.Mov, Utilizar = true,
DelayEnvioComandoBase = 500, }
DelayEnvioComando = 500,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Dir,
DelayEnvioComandoBase = 200,
DelayEnvioComando = 200,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
}
},
}; };
if (isagrobase)
{
Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{
TipoMovimento = TipoMovimentoDirecional.RodasDianteiras,
Angulo = 0,
Direcao = Direcao.Parado,
EmFreio = false,
PercentualVelocidadeSP = 0,
TiposControle = new List<OperacaoControleTipoModel>()
{
new OperacaoControleTipoModel()
{
Tipo = T_Code.Mov,
DelayEnvioComandoBase = 500,
DelayEnvioComando = 500,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
},
new OperacaoControleTipoModel()
{
Tipo = T_Code.Dir,
DelayEnvioComandoBase = 200,
DelayEnvioComando = 200,
DelayEnvioComandoExtra = 0,
Comandos = new List<string>(),
UltimoComando = DateTime.Now
}
},
};
}
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.Sensoriamento = new OperacaoSensoriamentoLogModel();
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados();
}
Variaveis.OperacaoEmAndamento.Trajetoria = new TrajetoriaMapaOperacaoModel(new List<List<GPSModel>>()); return p;
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura = new OperacaoParametrosDadosModel();
Variaveis.OperacaoEmAndamento.Sensoriamento = new OperacaoSensoriamentoLogModel();
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados();
} }
private Dictionary<string, (bool, bool)> PreencherComponentesEmUso(T_Code Modulo) private Dictionary<string, (bool, bool)> PreencherComponentesEmUso(T_Code Modulo)
@ -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,16 +152,17 @@ 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]):
rgb_frame, seg_frame, overlay_frame, _, _ = self.model_svc.preview_infer_cached(self._ultimo_raw_input, self._ultimo_predictions, alpha=0.5) if self.model_svc is not None:
if _frame_type == TipoFrameCamera.Rgb: rgb_frame, seg_frame, overlay_frame, _, _ = self.model_svc.preview_infer_cached(self._ultimo_raw_input, self._ultimo_predictions, alpha=0.5)
_frame = rgb_frame if _frame_type == TipoFrameCamera.Rgb:
elif _frame_type == TipoFrameCamera.Segmentacao: _frame = rgb_frame
_frame = seg_frame elif _frame_type == TipoFrameCamera.Segmentacao:
elif _frame_type == TipoFrameCamera.Overlay: _frame = seg_frame
_frame = overlay_frame elif _frame_type == TipoFrameCamera.Overlay:
elif _frame_type == TipoFrameCamera.Debug: _frame = overlay_frame
self.weed_detector._mostrar_debug_bicos_overlay(overlay_frame, [], self._ultimo_controle, show=False) elif _frame_type == TipoFrameCamera.Debug:
_frame = self.weed_detector._dbg_img self.weed_detector._mostrar_debug_bicos_overlay(overlay_frame, [], self._ultimo_controle, show=False)
_frame = self.weed_detector._dbg_img
elif _frame_type == TipoFrameCamera.Raw4: elif _frame_type == TipoFrameCamera.Raw4:
_frame = self._ultimo_raw_base _frame = self._ultimo_raw_base
return _frame return _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);
}
}
} }
} }