Ajustes mods mandatorios
This commit is contained in:
parent
1ee323cace
commit
d79eb55179
|
|
@ -743,7 +743,7 @@ namespace AgroBase
|
|||
if (!Forcar)
|
||||
{
|
||||
if (!Variaveis.OperacaoEmAndamento.Iniciado) return;
|
||||
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Atu && x.ComponentesEmUso[ID]);
|
||||
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Atu && x.ComponentesEmUso[ID].Item2);
|
||||
if (!componente_em_uso && (Status ?? false)) return; // Impede execucao de comandos que liguem componentes quando estiver marcado para nao utilizar
|
||||
}
|
||||
|
||||
|
|
@ -790,7 +790,7 @@ namespace AgroBase
|
|||
{
|
||||
if (!Forcar)
|
||||
{
|
||||
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Sen && x.ComponentesEmUso[ID]);
|
||||
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Sen && x.ComponentesEmUso[ID].Item2);
|
||||
if (!componente_em_uso)
|
||||
{
|
||||
// Impede execucao de comandos que liguem componentes quando estiver marcado para nao utilizar
|
||||
|
|
|
|||
|
|
@ -2578,7 +2578,7 @@ namespace AgroBase.Models.Modules
|
|||
}
|
||||
}
|
||||
public int _AnguloControle { get; set; }
|
||||
public int _AnguloLeiutra => ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.LeituraAngulo)?.atual?.valor ?? -1;
|
||||
public int _AnguloLeiutra => ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.ServoAnguloLeitura)?.atual?.valor ?? -1;
|
||||
public bool Inicializado { get; set; }
|
||||
public DateTime UltimaLeitura
|
||||
{
|
||||
|
|
|
|||
|
|
@ -866,39 +866,39 @@ namespace AgroBase.Models
|
|||
Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados();
|
||||
}
|
||||
|
||||
private Dictionary<string, bool> PreencherComponentesEmUso(T_Code Modulo)
|
||||
private Dictionary<string, (bool, bool)> PreencherComponentesEmUso(T_Code Modulo)
|
||||
{
|
||||
Dictionary<string, bool> d = new Dictionary<string, bool>();
|
||||
Dictionary<string, (bool, bool)> d = new Dictionary<string, (bool, bool)>();
|
||||
switch (Modulo)
|
||||
{
|
||||
case T_Code.Mov:
|
||||
if (Variaveis.OperacaoEmAndamento.DispMvd != null)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(m => d.Add(m.MovMotor.Mod_ID, m.MovMotor.Comandar));
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(m => d.Add(m.MovMotor.Mod_ID, (true, m.MovMotor.Comandar)));
|
||||
}
|
||||
break;
|
||||
case T_Code.Dir:
|
||||
if (Variaveis.OperacaoEmAndamento.DispMvd != null)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(m => d.Add(m.DirMotor.Mod_ID, m.DirMotor.Comandar));
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(m => d.Add(m.DirMotor.Mod_ID, (true, m.DirMotor.Comandar)));
|
||||
}
|
||||
break;
|
||||
case T_Code.Atu:
|
||||
if (Variaveis.OperacaoEmAndamento.DispAtu != null)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.Sensores.ForEach(s => d.Add(s.ID, s.Aferir));
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.ForEach(b => d.Add(b.ID, b.Comandar));
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.ForEach(b => d.Add(b.ID, b.Comandar));
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.Servos.ForEach(s => d.Add(s.ID, s.Controlar));
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.Sensores.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.ForEach(b => d.Add(b.ID, (b.Mandatorio, b.Comandar)));
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.Dados.Servos.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||
}
|
||||
break;
|
||||
case T_Code.Sen:
|
||||
if (Variaveis.OperacaoEmAndamento.DispSen != null)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.ForEach(s => d.Add(s.ID, s.Aferir));
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros.ForEach(s => d.Add(s.ID, true));
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.ForEach(s => d.Add(s.ID, s.Controlar));
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.Reles.ForEach(r => d.Add(r.ID, r.Controlar));
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Aferir)));
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros.ForEach(s => d.Add(s.ID, (true, true)));
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.ForEach(s => d.Add(s.ID, (s.Mandatorio, s.Controlar)));
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.Reles.ForEach(r => d.Add(r.ID, (r.Mandatorio, r.Controlar)));
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -914,13 +914,15 @@ namespace AgroBase.Models
|
|||
case T_Code.Mov:
|
||||
foreach (var c in m.ComponentesEmUso)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.MovMotor.Mod_ID == c.Key).MovMotor.Comandar = c.Value;
|
||||
var d = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.MovMotor.Mod_ID == c.Key).MovMotor;
|
||||
d.Comandar = c.Value.Item2;
|
||||
}
|
||||
break;
|
||||
case T_Code.Dir:
|
||||
foreach (var c in m.ComponentesEmUso)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.DirMotor.Mod_ID == c.Key).DirMotor.Comandar = c.Value;
|
||||
var d = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.DirMotor.Mod_ID == c.Key).DirMotor;
|
||||
d.Comandar = c.Value.Item2;
|
||||
}
|
||||
break;
|
||||
case T_Code.Atu:
|
||||
|
|
@ -929,19 +931,22 @@ namespace AgroBase.Models
|
|||
var s = Variaveis.OperacaoEmAndamento.DispAtu.Dados.Sensores.FirstOrDefault(x => x.ID == c.Key);
|
||||
if (s != null)
|
||||
{
|
||||
s.Aferir = c.Value;
|
||||
s.Mandatorio = c.Value.Item1;
|
||||
s.Aferir = c.Value.Item2;
|
||||
continue;
|
||||
}
|
||||
var bc = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.FirstOrDefault(x => x.ID == c.Key);
|
||||
if (bc != null)
|
||||
{
|
||||
bc.Comandar = c.Value;
|
||||
bc.Mandatorio = c.Value.Item1;
|
||||
bc.Comandar = c.Value.Item2;
|
||||
continue;
|
||||
}
|
||||
var bo = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(x => x.ID == c.Key);
|
||||
if (bo != null)
|
||||
{
|
||||
bo.Comandar = c.Value;
|
||||
bo.Mandatorio = c.Value.Item1;
|
||||
bo.Comandar = c.Value.Item2;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
@ -952,19 +957,22 @@ namespace AgroBase.Models
|
|||
var s = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == c.Key);
|
||||
if (s != null)
|
||||
{
|
||||
s.Aferir = c.Value;
|
||||
s.Mandatorio = c.Value.Item1;
|
||||
s.Aferir = c.Value.Item2;
|
||||
continue;
|
||||
}
|
||||
var sv = Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.FirstOrDefault(x => x.ID == c.Key);
|
||||
if (sv != null)
|
||||
{
|
||||
sv.Controlar = c.Value;
|
||||
sv.Mandatorio = c.Value.Item1;
|
||||
sv.Controlar = c.Value.Item2;
|
||||
continue;
|
||||
}
|
||||
var rl = Variaveis.OperacaoEmAndamento.DispSen.Dados.Reles.FirstOrDefault(x => x.ID == c.Key);
|
||||
if (rl != null)
|
||||
{
|
||||
rl.Controlar = c.Value;
|
||||
rl.Mandatorio = c.Value.Item1;
|
||||
rl.Controlar = c.Value.Item2;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
|
@ -2192,7 +2200,7 @@ namespace AgroBase.Models
|
|||
public bool Mandatorio { get; set; }
|
||||
public bool Utilizar { get; set; }
|
||||
public bool Conectado { get; set; }
|
||||
public Dictionary<string, bool> ComponentesEmUso { get; set; }
|
||||
public Dictionary<string, (bool, bool)> ComponentesEmUso { get; set; }
|
||||
}
|
||||
|
||||
public class OperacaoParametrosMandatoriosModel
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ namespace OperationControl.Windows
|
|||
{
|
||||
var simulacao = dados_leitura.Controle?.SimulacaoMPC?.Select(x => new double[] { x.longitude, x.latitude })?.ToList();
|
||||
MAP.markers.UpdateMarkerPosition(rover_id, lat: dados_leitura.Gnss?.Latitude, lon: dados_leitura.Gnss?.Longitude, heading: dados_leitura.Gnss?.OrientacaoReal, predict: simulacao);
|
||||
MAP.markers.UpdateMarkerInfo(rover_id, status: dados_leitura.Operacao.Status);
|
||||
MAP.markers.UpdateMarkerInfo(rover_id, status: dados_leitura.Operacao?.Status ?? AgroBase.Models.Enums.StatusOperacao.NaoIniciado);
|
||||
}
|
||||
|
||||
if (rover != null && dados_leitura?.ModulosSaude != null)
|
||||
|
|
@ -421,7 +421,7 @@ namespace OperationControl.Windows
|
|||
|
||||
var individual = _saude?.saude_individual?.FirstOrDefault(x => x.label == mod_label);
|
||||
|
||||
bool em_uso = mod_label != "" ? dados.DadosLeitura.Operacao.ModulosMandatorios?.FirstOrDefault(x => x.Dispositivo == modulo)?.ComponentesEmUso?.Any(x => x.Key == mod_label && x.Value) ?? false : dados.ModulosMandatorios?.Any(x => x.Dispositivo == modulo && x.Utilizar) ?? false;
|
||||
bool em_uso = mod_label != "" ? dados.DadosLeitura.Operacao.ModulosMandatorios?.FirstOrDefault(x => x.Dispositivo == modulo)?.ComponentesEmUso?.Any(x => x.Key == mod_label && x.Value.Item2) ?? false : dados.ModulosMandatorios?.Any(x => x.Dispositivo == modulo && x.Utilizar) ?? false;
|
||||
|
||||
// Aplica cor de acordo com o status
|
||||
AplicarStatusModuloNaLabel(lbl, individual?.status ?? _saude?.status ?? AgroBase.Models.Enums.StatusModulo.Desconectado, em_uso);
|
||||
|
|
@ -683,7 +683,7 @@ namespace OperationControl.Windows
|
|||
//var cu = rover?.ModulosMandatorios?.FirstOrDefault(x => x.Dispositivo == modulo)?.ComponentesEmUso.FirstOrDefault(x => x.Key == label);
|
||||
//bool em_uso = individual?.em_uso ?? (cu?.Key != null ? cu?.Value : null) ?? rover?.ModulosMandatorios?.Any(x => x.Dispositivo == modulo && x.Utilizar) ?? false;
|
||||
//bool em_uso = rover?.ModulosMandatorios?.FirstOrDefault(x => x.Dispositivo == modulo)?.ComponentesEmUso?.Any(x => x.Key == label) ?? false;
|
||||
bool em_uso = label != "" ? rover?.ModulosMandatorios?.FirstOrDefault(x => x.Dispositivo == modulo)?.ComponentesEmUso?.Any(x => x.Key == label && x.Value) ?? false : rover?.ModulosMandatorios?.Any(x => x.Dispositivo == modulo && x.Utilizar) ?? false;
|
||||
bool em_uso = label != "" ? rover?.ModulosMandatorios?.FirstOrDefault(x => x.Dispositivo == modulo)?.ComponentesEmUso?.Any(x => x.Key == label && x.Value.Item2) ?? false : rover?.ModulosMandatorios?.Any(x => x.Dispositivo == modulo && x.Utilizar) ?? false;
|
||||
|
||||
chbSaude_Mandatorio.IsChecked = mandatorio;
|
||||
chbSaude_EmUso.IsChecked = em_uso;
|
||||
|
|
@ -1493,7 +1493,7 @@ namespace OperationControl.Windows
|
|||
private void btnServo_Enviar_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
(var modulo, var label, var s_code, var iniciado) = GetModuleData(_labelModuloSelecionado);
|
||||
if (s_code != AgroBase.Models.Enums.S_Code.sFRO)
|
||||
if (s_code != AgroBase.Models.Enums.S_Code.sSRV)
|
||||
return;
|
||||
|
||||
if (modulo == AgroBase.Models.Enums.T_Code.Sen)
|
||||
|
|
@ -1581,7 +1581,7 @@ namespace OperationControl.Windows
|
|||
mod = new AgroBase.Models.OperacaoModulosMandatoriosModel()
|
||||
{
|
||||
Dispositivo = modulo,
|
||||
ComponentesEmUso = new Dictionary<string, bool>()
|
||||
ComponentesEmUso = new Dictionary<string, (bool, bool)>()
|
||||
};
|
||||
rover.ModulosMandatorios.Add(mod);
|
||||
}
|
||||
|
|
@ -1592,7 +1592,7 @@ namespace OperationControl.Windows
|
|||
}
|
||||
else
|
||||
{
|
||||
mod.ComponentesEmUso[label] = chbSaude_EmUso.IsChecked ?? false;
|
||||
mod.ComponentesEmUso[label] = (chbSaude_Mandatorio.IsChecked ?? false, chbSaude_EmUso.IsChecked ?? false);
|
||||
}
|
||||
|
||||
VariaveisControleOperacao.EnviarParametrosOperacao(new AgroBase.Models.Operacoes.OperacaoParametrosModel()
|
||||
|
|
|
|||
Loading…
Reference in New Issue