iniciado controle dos bicos por diagnostico

This commit is contained in:
Diego Freitas 2025-11-25 17:14:31 -03:00
parent 5e23a79fa3
commit 02ae378b92
251 changed files with 3782 additions and 704 deletions

Binary file not shown.

View File

@ -72,6 +72,8 @@
Oid = 116,
Snr = 117,
Lvx = 118,
Bat = 119,
Npc = 120
}
public enum F_Code

View File

@ -734,11 +734,10 @@ namespace AgroBase
public static void EnviarComandoAtuador(S_Code Componente, bool Status, string ID, bool Forcar = false)
{
if (!Forcar && !Variaveis.OperacaoEmAndamento.Iniciado && !Forms.IHM.frmDiagnosticos.Diagnosticando)
{
return;
}
if (!Variaveis.OperacaoEmAndamento.Iniciado) return;
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Atu && x.ComponentesEmUso[ID]);
if (!componente_em_uso && Status) return; // Impede execucao de comandos que liguem componentes quando estiver marcado para nao utilizar
var DispAtu = Variaveis.OperacaoEmAndamento.DispAtu;
int id_num = -1;
CanMessagePosicaoDados posicao = CanMessagePosicaoDados.Command1;
@ -771,6 +770,9 @@ namespace AgroBase
public static void EnviarComandoSensoriamento(S_Code Componente, string ID, dynamic Status)
{
bool componente_em_uso = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Sen && x.ComponentesEmUso[ID]);
if (!componente_em_uso && Status) return; // Impede execucao de comandos que liguem componentes quando estiver marcado para nao utilizar
var DispSen = Variaveis.OperacaoEmAndamento.DispSen;
int id_num = -1;

View File

@ -778,6 +778,11 @@ namespace AgroBase.Models
break;
}
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Npc, Mandatorio = true, Utilizar = true });
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.Add(new OperacaoModulosMandatoriosModel() { Dispositivo = T_Code.Bat, Mandatorio = true, Utilizar = true });
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.ForEach(m => m.ComponentesEmUso = Variaveis.OperacaoEmAndamento.PreencherComponentesEmUso(m.Dispositivo));
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura = new OperacaoSensoriamentoLogModel();
if (Variaveis.OperacaoEmAndamento.DispSen != null)
{
if (Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom == null)
@ -800,11 +805,121 @@ namespace AgroBase.Models
}
}
if (Variaveis.OperacaoEmAndamento.DispAtu != null)
{
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores?.Select(x => x.Clone())?.ToList() ?? new List<AtuadorBicoModel>();
}
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.AtualizarDados();
}
private Dictionary<string, bool> PreencherComponentesEmUso(T_Code Modulo)
{
Dictionary<string, bool> d = new Dictionary<string, 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));
}
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));
}
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));
}
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));
}
break;
}
return d;
}
private void DefinirComponentesEmUso()
{
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios.ForEach(m =>
{
switch (m.Dispositivo)
{
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;
}
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;
}
break;
case T_Code.Atu:
foreach (var c in m.ComponentesEmUso)
{
var s = Variaveis.OperacaoEmAndamento.DispAtu.Dados.Sensores.FirstOrDefault(x => x.ID == c.Key);
if (s != null)
{
s.Aferir = c.Value;
continue;
}
var bc = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.FirstOrDefault(x => x.ID == c.Key);
if (bc != null)
{
bc.Comandar = c.Value;
continue;
}
var bo = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault(x => x.ID == c.Key);
if (bo != null)
{
bo.Comandar = c.Value;
continue;
}
}
break;
case T_Code.Sen:
foreach (var c in m.ComponentesEmUso)
{
var s = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == c.Key);
if (s != null)
{
s.Aferir = c.Value;
continue;
}
var sv = Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.FirstOrDefault(x => x.ID == c.Key);
if (sv != null)
{
sv.Controlar = c.Value;
continue;
}
var rl = Variaveis.OperacaoEmAndamento.DispSen.Dados.Reles.FirstOrDefault(x => x.ID == c.Key);
if (rl != null)
{
rl.Controlar = c.Value;
continue;
}
}
break;
}
});
}
public (bool, List<string>) CarregarParamerosOperacaoBase(OperacaoParametrosModel Parametros)
{
@ -813,6 +928,8 @@ namespace AgroBase.Models
CarregarParametrosOperacaoPadrao((ModoOperacao)Parametros.Modo);
Variaveis.OperacaoEmAndamento.Parametros = Parametros;
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura = new OperacaoSensoriamentoLogModel();
Variaveis.OperacaoEmAndamento.DefinirComponentesEmUso();
Variaveis.OperacaoEmAndamento.Descricao = Parametros.Descricao;
Variaveis.OperacaoEmAndamento.OprPath = $"Base ({VariaveisEquipamento.Parametros.base_ip})";
@ -1119,14 +1236,17 @@ namespace AgroBase.Models
var pControle = Variaveis.OperacaoEmAndamento.Parametros.Controle;
var _Controle = Variaveis.OperacaoEmAndamento.Controle;
var mm = Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios;
foreach (var Ctrl in _Controle.TiposControle.Where(x => Dispositivos.Contains(x.Tipo)))
{
if (!ForcarEnvio)
{
if (!pControle.PulverizadorAutomatico && Ctrl.Tipo == T_Code.Atu)
if (mm.Any(x => x.Dispositivo == Ctrl.Tipo && !x.Utilizar))
continue;
else if (!pControle.MovimentoAutomatico && (Ctrl.Tipo == T_Code.Mov || Ctrl.Tipo == T_Code.Dir))
if (Ctrl.Tipo == T_Code.Atu && !pControle.PulverizadorAutomatico)
continue;
if ((Ctrl.Tipo == T_Code.Mov || Ctrl.Tipo == T_Code.Dir) && !pControle.MovimentoAutomatico)
continue;
}
@ -1339,9 +1459,13 @@ namespace AgroBase.Models
if (_Parametros.CapacidadeReservatorio != null) Variaveis.OperacaoEmAndamento.Parametros.CapacidadeReservatorio = _Parametros.CapacidadeReservatorio;
if (_Parametros.Controle != null) Variaveis.OperacaoEmAndamento.Parametros.Controle = _Parametros.Controle;
if (_Parametros.ModulosMandatorios != null) Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios = _Parametros.ModulosMandatorios;
if (_Parametros.ParametrosMandatorios != null) Variaveis.OperacaoEmAndamento.Parametros.ParametrosMandatorios = _Parametros.ParametrosMandatorios;
if (_Parametros.ModulosMandatorios != null)
{
Variaveis.OperacaoEmAndamento.Parametros.ModulosMandatorios = _Parametros.ModulosMandatorios;
Variaveis.OperacaoEmAndamento.DefinirComponentesEmUso();
}
HealthWorkerService.AtualizarDadosOperacao();
break;
case BotoesJoystick.L1: // Inicia o modo simulador
@ -1386,6 +1510,51 @@ namespace AgroBase.Models
return;
}
if (controleBase.Dispositivo == T_Code.Atu && Variaveis.OperacaoEmAndamento.DispAtu != null)
{
bool status = (bool)controleBase._comp_value;
S_Code get_comp(string id)
{
var d_atu = Variaveis.OperacaoEmAndamento.DispAtu.Dados;
if (d_atu.BicosPulverizadores.Any(x => x.ID == id)) return S_Code.sBIC;
if (d_atu.BombasPressurizadoras.Any(x => x.ID == id)) return S_Code.sBMB;
if (d_atu.Sensores.Any(x => x.ID == id)) return d_atu.Sensores.First(x => x.ID == id).Componente;
return S_Code.sVZO;
}
S_Code comp = get_comp(controleBase._comp_id);
switch (comp)
{
case S_Code.sBIC:
var bico = Variaveis.OperacaoEmAndamento.Controle.BicosAtuados.FirstOrDefault(x => x.ID == controleBase._comp_id);
if (bico != null)
{
bico.ComandoAtuar = status;
}
break;
}
GeneralJoystick.EnviarComandoAtuador(comp, status, controleBase._comp_id);
return;
}
if (controleBase.Dispositivo == T_Code.Sen && Variaveis.OperacaoEmAndamento.DispSen != null)
{
S_Code get_comp(string id)
{
var d_sen = Variaveis.OperacaoEmAndamento.DispSen.Dados;
if (d_sen.Reles.Any(x => x.ID == id)) return S_Code.sRLE;
if (d_sen.Servos.Any(x => x.ID == id)) return S_Code.sFRO;
if (d_sen.Sinaleiros.Any(x => x.ID == id)) return S_Code.sLED;
if (d_sen.Sensores.Any(x => x.ID == id)) return d_sen.Sensores.First(x => x.ID == id).Componente;
return S_Code.sVZO;
}
S_Code comp = get_comp(controleBase._comp_id);
GeneralJoystick.EnviarComandoSensoriamento(comp, controleBase._comp_id, controleBase._comp_value);
return;
}
Variaveis.OperacaoEmAndamento.Emergencia = controleBase.Emergencia;
if (Variaveis.OperacaoEmAndamento.Emergencia) return;
@ -1979,6 +2148,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 class OperacaoParametrosMandatoriosModel
@ -1995,6 +2165,8 @@ namespace AgroBase.Models
public T_Code Dispositivo { get; set; }
public bool Emergencia { get; set; }
public bool Pausa { get; set; }
public string _comp_id { get; set; }
public dynamic _comp_value { get; set; }
public double LeverArmFrontal { get; set; }
public double LeverArmLateral { get; set; }
public OperacaoParametrosModel Parametros { get; set; }

View File

@ -117,7 +117,6 @@ namespace AgroBase.Services
ValorMinimo = ValorMinimo
};
}
}
public enum CanMessagePosicaoDados

View File

@ -392,6 +392,17 @@ public class EthernetService
// Obtém o IP atual do PC na rede ativa
public static string ObterIpAtual(string _interface)
{
if (string.IsNullOrEmpty(_interface))
{
var interfaces = ObterNomesInterfaces();
string _Interface = interfaces.FirstOrDefault(x => x.ToLower().Contains("wi-fi") && x.ToLower().Contains("ativa"));
if (!string.IsNullOrEmpty(_Interface))
{
_interface = _Interface.Split('(')[0].Trim();
}
}
foreach (NetworkInterface networkInterface in NetworkInterface.GetAllNetworkInterfaces().Where(x => x.Name == _interface))
{
if (networkInterface.OperationalStatus == OperationalStatus.Up)

View File

@ -247,10 +247,10 @@ namespace AgroBase.Services.Operadores
tempo_atuacao = pControle.AtuDuracaoAtuacao,
capacidade_reservatorio = _Parametros.CapacidadeReservatorio,
pressao_linha = pControle.AtuPressaoLinha,
percent_vertical_deteccao = pControle.AtuPercentualInicioPulverizacao,
height_area_deteccao = pControle.AtuAlturaAreaPulverizacao,
pct_erva_bico_on = pControle.AtuPercentualErvasBicoOn,
pct_erva_bico_off = pControle.AtuPercentualErvasBicoOff
percent_vertical_deteccao = pControle.AtuPercentualInicioPulverizacao / 100.0,
height_area_deteccao = pControle.AtuAlturaAreaPulverizacao / 100.0,
pct_erva_bico_on = pControle.AtuPercentualErvasBicoOn / 100.0,
pct_erva_bico_off = pControle.AtuPercentualErvasBicoOff / 100.0
}
),
("Snr", new
@ -567,7 +567,7 @@ namespace AgroBase.Services.Operadores
);
var DadosMod = _Sensoriamento.DadosPerformance;
RedisService.AtualizarCampos(RedisService.ModKey(Enums.T_Code.Mod),
RedisService.AtualizarCampos(RedisService.ModKey(Enums.T_Code.Npc),
("timestamp", agora),
("freq_base", 1.0 / Variaveis.OperacaoEmAndamento.tmrLeiturasInterval),
("cpu_load", DadosMod.CPU_load ?? 0),

View File

@ -33,7 +33,16 @@ namespace AgroBase.Services
public static List<T_Code> DispositivosCan = new List<T_Code>() { T_Code.Mov, T_Code.Oid, T_Code.Dir, T_Code.Mks, T_Code.Sen, T_Code.Atu };
public static List<T_Code> DispositivosMultiplos = new List<T_Code>() { T_Code.Bld, T_Code.Mks, T_Code.Mvd, T_Code.Oid, T_Code.Mov, T_Code.Dir };
public static List<DispositivoDetalhesModel> DispositivosMapeados = new List<DispositivoDetalhesModel>();
public static List<DispositivoDetalhesModel> DispositivosMapeados = new List<DispositivoDetalhesModel>()
{
new DispositivoDetalhesModel()
{
Dispositivo = T_Code.Npc,
Endereco = EthernetService.ObterIpAtual(null),
Versao = Variaveis.Versao,
Mod_ID = ""
}
};
private static bool VarreduraEmAndamento = false;

View File

@ -27,7 +27,7 @@ def main():
T_Code.Atu: ModuloAtuador(),
T_Code.Lra: ModuloLoRa(),
T_Code.Imu: IMUCamera(),
T_Code.Mod: ModuloPC(),
T_Code.Npc: ModuloPC(),
T_Code.Lvx: ModuloLivox(),
}

View File

@ -31,7 +31,7 @@ class ModuloPC(ModuloDiagnosticoBase):
- Mantém EMA por métrica em chave auxiliar 'pc_ema'
"""
def __init__(self):
self.t_code = T_Code.Mod
self.t_code = T_Code.Npc
self.nome = "PC"
# Rodamos por padrão a cada ~1s no scheduler; este timeout é semáforo lógico do módulo
self.timeout = 5

View File

@ -70,6 +70,8 @@ class T_Code(IntEnum):
Mod = 115
Snr = 117
Lvx = 118
Bat = 119
Npc = 120
class ParametrosOperacao(IntEnum):
CameraSolo = 1

View File

@ -92,7 +92,7 @@ def enviar_mensagem_health_worker(comando: HealthWorkerCommandType, payload = {}
#mostrar_log(f"Enviando dados MQTT para o dispositivo {dispositivo}...")
mensagem = {
"momento": time.time(),
"dispositivo": T_Code.Mod,
"dispositivo": T_Code.Npc,
"comando": comando.value,
"payload": payload
}

View File

@ -916,7 +916,7 @@ namespace OperationControl.Controls
public void AddMarker(string id, bool isBase, double? lat = null, double? lon = null, double? heading = null, System.Windows.Media.Color? color = null, string? label = null, StatusOperacao? status = null, bool? pulv = null, bool center = false)
{
if (string.IsNullOrWhiteSpace(id)) throw new ArgumentException("id inválido", nameof(id));
if (string.IsNullOrWhiteSpace(id)) return;
string lbl = label ?? id;
@ -954,7 +954,7 @@ namespace OperationControl.Controls
public void UpdateMarkerPosition(string id, double? lat = null, double? lon = null, double? heading = null, List<double[]>? predict = null)
{
if (string.IsNullOrWhiteSpace(id)) throw new ArgumentException("id inválido", nameof(id));
if (string.IsNullOrWhiteSpace(id)) return;
var marker = _features.FirstOrDefault(x => x.Id == id);
if (marker == null) return;
@ -966,7 +966,7 @@ namespace OperationControl.Controls
public void UpdateMarkerInfo(string id, StatusOperacao? status = null, bool? pulv = null)
{
if (string.IsNullOrWhiteSpace(id)) throw new ArgumentException("id inválido", nameof(id));
if (string.IsNullOrWhiteSpace(id)) return;
var marker = _features.FirstOrDefault(x => x.Id == id);
if (marker == null) return;

View File

@ -5,7 +5,6 @@ using OperationControl.Services;
using AgroMonitor;
using Application = System.Windows.Application;
using AgroBase.Models.Operacoes;
using Mapsui;
namespace OperationControl.Models
{
@ -114,6 +113,7 @@ namespace OperationControl.Models
string json = message.Mensagem;
if (string.IsNullOrEmpty(json)) return;
var obj = JsonConvert.DeserializeObject<OperacaoSensoriamentoLogModel>(json);
if (obj == null) return;
lock (_RoversLock)
{
var rover = RoversNaRede.FirstOrDefault(x => x.RoverId == device_id);
@ -290,12 +290,15 @@ namespace OperationControl.Models
public static void EnviarParametrosOperacao(OperacaoParametrosModel parametros)
{
bool operacao_iniciada = (RoverEmFoco?.DadosLeitura?.OperacaoIniciada ?? false);
bool parametros_parciais = parametros.Modo == null;
EnviarDadosControle(SelectedRoverId, new OperacaoComandoBaseModel()
{
Momento = DateTime.Now,
Dispositivo = AgroBase.Models.Enums.T_Code.Mod,
Parametros = parametros,
Tecla = (!(RoverEmFoco?.DadosLeitura?.OperacaoIniciada ?? false) ? AgroBase.Models.Enums.BotoesJoystick.Options : AgroBase.Models.Enums.BotoesJoystick.Touchpad)
Tecla = (operacao_iniciada || parametros_parciais ? AgroBase.Models.Enums.BotoesJoystick.Touchpad : AgroBase.Models.Enums.BotoesJoystick.Options)
});
}
@ -309,6 +312,28 @@ namespace OperationControl.Models
});
}
public static void EnviarComandoAtuador(string componente_id, bool status)
{
EnviarDadosControle(SelectedRoverId, new OperacaoComandoBaseModel()
{
Momento = DateTime.Now,
Dispositivo = AgroBase.Models.Enums.T_Code.Atu,
_comp_id = componente_id,
_comp_value = status
});
}
public static void EnviarComandoSensoriamento(string componente_id, dynamic status)
{
EnviarDadosControle(SelectedRoverId, new OperacaoComandoBaseModel()
{
Momento = DateTime.Now,
Dispositivo = AgroBase.Models.Enums.T_Code.Sen,
_comp_id = componente_id,
_comp_value = status
});
}
#endregion
}

View File

@ -12,7 +12,7 @@
<Window.Resources>
<Style x:Key="RoundedLabel" TargetType="Label">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="Green"/>
<Setter Property="Background" Value="Gray"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="FontSize" Value="9"/>
@ -53,117 +53,196 @@
<Canvas>
<Label Content="Resumo Operacional" FontWeight="Bold" FontSize="10" HorizontalAlignment="Left" Canvas.Top="-4" VerticalAlignment="Center" Canvas.Left="-2"/>
<Label Content="Rua Atual" FontSize="10" HorizontalAlignment="Center" Canvas.Top="12" VerticalAlignment="Top" RenderTransformOrigin="0.756,0.502"/>
<controls:ProgressBarText x:Name="pgbResumo_RuaAtual" Height="10" Canvas.Left="57" Canvas.Top="19" Width="92" HorizontalAlignment="Left" VerticalAlignment="Center" Value="63"/>
<Label x:Name="lblResumo_RuaAtual" Content="74,17 m / 135,84 m (1)" FontSize="10" Canvas.Top="12" HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Left="154"/>
<controls:ProgressBarText x:Name="pgbResumo_RuaAtual" Height="10" Canvas.Left="57" Canvas.Top="19" Width="92" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblResumo_RuaAtual" Content="0,00 m / 0,00 m (0)" FontSize="10" Canvas.Top="12" HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Left="154"/>
<Label Content="Área Total" FontSize="10" HorizontalAlignment="Center" Canvas.Top="28" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_AreaTotal" Height="10" Canvas.Left="57" Canvas.Top="34" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top" Value="78"/>
<Label x:Name="lblResumo_AreaTotal" Content="365,32 m / 1.366,10 m" FontSize="10" Canvas.Top="28" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="154"/>
<controls:ProgressBarText x:Name="pgbResumo_AreaTotal" Height="10" Canvas.Left="57" Canvas.Top="34" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_AreaTotal" Content="0,00 m / 0,00 m" FontSize="10" Canvas.Top="28" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="154"/>
<Label Content="Bateria" FontSize="10" HorizontalAlignment="Center" Canvas.Top="44" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_Bateria" Height="10" Canvas.Left="57" Canvas.Top="51" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top" Value="84"/>
<Label x:Name="lblResumo_Bateria" Content="40,85 V (01:36:45)" FontSize="9" HorizontalAlignment="Center" Canvas.Top="44" VerticalAlignment="Center" Canvas.Left="154"/>
<controls:ProgressBarText x:Name="pgbResumo_Bateria" Height="10" Canvas.Left="57" Canvas.Top="51" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_Bateria" Content="0,00 V (00:00:00)" FontSize="9" HorizontalAlignment="Center" Canvas.Top="44" VerticalAlignment="Center" Canvas.Left="154"/>
<Label Content="Herbicida" FontSize="10" HorizontalAlignment="Center" Canvas.Top="60" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_Herbicida" Height="10" Canvas.Left="57" Canvas.Top="67" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top" Value="73"/>
<Label x:Name="lblResumo_Herbicida" Content="21,90 L (584,32 m)" FontSize="9" HorizontalAlignment="Left" Canvas.Top="60" VerticalAlignment="Center" Canvas.Left="154"/>
<controls:ProgressBarText x:Name="pgbResumo_Herbicida" Height="10" Canvas.Left="57" Canvas.Top="67" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_Herbicida" Content="0,00 L (0,00 m)" FontSize="9" HorizontalAlignment="Left" Canvas.Top="60" VerticalAlignment="Center" Canvas.Left="154"/>
<Label Content="Infestação" FontSize="10" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_Infestacao" Height="10" Canvas.Left="57" Canvas.Top="83" Width="92" HorizontalAlignment="Center" VerticalAlignment="Top" Value="23"/>
<Label x:Name="lblResumo_Infestacao" Content="234,51 mL/erva" FontSize="9" HorizontalAlignment="Center" Canvas.Top="76" VerticalAlignment="Top" Canvas.Left="154"/>
<controls:ProgressBarText x:Name="pgbResumo_Infestacao" Height="10" Canvas.Left="57" Canvas.Top="83" Width="92" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_Infestacao" Content="0,00 mL/erva" FontSize="9" HorizontalAlignment="Center" Canvas.Top="76" VerticalAlignment="Top" Canvas.Left="154"/>
<Label Content="Conexão" FontSize="10" Canvas.Top="92" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_Conexao" Height="10" Canvas.Left="57" Canvas.Top="99" Width="92" HorizontalAlignment="Center" VerticalAlignment="Top" Value="97"/>
<Label x:Name="lblResumo_Conexao" Content="4,9 dBi (574,65 m)" FontSize="9" HorizontalAlignment="Center" Canvas.Top="92" VerticalAlignment="Top" Canvas.Left="154"/>
<controls:ProgressBarText x:Name="pgbResumo_Conexao" Height="10" Canvas.Left="57" Canvas.Top="99" Width="92" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_Conexao" Content="0,0 dBi (0,00 m)" FontSize="9" HorizontalAlignment="Center" Canvas.Top="92" VerticalAlignment="Top" Canvas.Left="154"/>
<Label x:Name="lblResumo_OperacaoLiberada" Content="Operação Liberado" FontFamily="Segoe UI Emoji" FontSize="10" Canvas.Top="12" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoModo" Content="Modo Automático" FontSize="10" Canvas.Top="28" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoStatus" Content="Status EmAndamento" FontSize="10" Canvas.Top="44" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_StatusCarro" Content="Carro CaminhandoRua" FontSize="10" Canvas.Top="60" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_TemperaturaGeral" Content="Temperatura 45,32°C" FontSize="10" Canvas.Top="76" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoDuracao" Content="Duração 00:23:15 / 00:54:15" FontSize="10" Canvas.Top="92" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoLiberada" Content="Operação Bloqueada" FontFamily="Segoe UI Emoji" FontSize="10" Canvas.Top="12" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoModo" Content="Modo Manual" FontSize="10" Canvas.Top="28" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoStatus" Content="Status NaoIniciado" FontSize="10" Canvas.Top="44" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_StatusCarro" Content="Carro Parado" FontSize="10" Canvas.Top="60" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_TemperaturaGeral" Content="Temperatura 0,00 °C" FontSize="10" Canvas.Top="76" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoDuracao" Content="Duração 00:00:00 / 00:00:00" FontSize="10" Canvas.Top="92" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
</Canvas>
</Border>
<Border x:Name="brdDiagnostico" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="10,196,1460,409">
<Border x:Name="brdDiagnostico" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="10,196,1460,373">
<Canvas>
<Label Content="Diagnóstios" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="10" Canvas.Top="-5" FontWeight="Bold"/>
<Label x:Name="lblDiagnosticos_Impedimento" Content="Impedimento: Nenhum" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="9" Canvas.Top="13" Height="28" Width="448"/>
<Image HorizontalAlignment="Center" Height="359" VerticalAlignment="Top" Width="308" Source="/Resources/robo_superior.jpg" Stretch="UniformToFill" Canvas.Left="70" Canvas.Top="41"/>
<Label x:Name="lblDiagnosticos_BAT" Content="BAT" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="37" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_AB3v" Content="B3V3" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="84" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_AB5V" Content="B5V0" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="131" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_AB7V2" Content="B7V2" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="178" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_AB12V" Content="B12V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="225" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_AB19V" Content="B19V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="272" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_AB24V" Content="B24V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="319" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_AB36V" Content="B36V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="366" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_DIR_DF" Content="DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="72" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_DF" Content="MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="98" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FRODF" Content="FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="98" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_TMVDF" Content="TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="124" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_EF" Content="DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="72" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_EF" Content="MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="98" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FROEF" Content="FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="98" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_TMVEF" Content="TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="124" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_ET" Content="DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="250" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_ET" Content="MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="276" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FROET" Content="FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="276" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_TMVET" Content="TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="302" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_DT" Content="DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="250" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_DT" Content="MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="276" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FRODT" Content="FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="276" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_SEN_TMVDT" Content="TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="302" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SNR" Content="SNR" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="72" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_LVX" Content="LDR" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="98" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_IMU" Content="IMU" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="124" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_GPS" Content="GPS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="162" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN" Content="SEN" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="188" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOD" Content="NCP" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="214" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_BOMBA" Content="BMB" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="279" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU" Content="ATU" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="319" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_PRSLN" Content="PRS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="356" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_FLXLN" Content="FLX" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="155" Canvas.Top="356" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_MASRS" Content="MAS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="249" Canvas.Top="356" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_B01" Content="B01" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="75" Canvas.Top="381" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_B02" Content="B02" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="143" Canvas.Top="382" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_B03" Content="B03" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="254" Canvas.Top="382" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_B04" Content="B04" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="322" Canvas.Top="381" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_CAM" Content="CAM" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="204" Canvas.Top="381" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock x:Name="lblDiagnosticos_Impedimento" Text="Impedimento: Nenhum" HorizontalAlignment="Left" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="9" Canvas.Top="15" Width="428" Canvas.Left="10"/>
<Image HorizontalAlignment="Center" Height="359" VerticalAlignment="Top" Width="308" Source="/Resources/robo_superior.jpg" Stretch="UniformToFill" Canvas.Left="70" Canvas.Top="71"/>
<Label x:Name="lblDiagnosticos_BAT" Content="🔒BAT" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="37" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB3v" Content="🔒B3V3" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="84" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB5V" Content="🔒B5V0" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="131" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB7V2" Content="🔒B7V2" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="178" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB12V" Content="🔒B12V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="225" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB19V" Content="🔒B19V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="272" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB24V" Content="🔒B24V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="319" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB36V" Content="🔒B36V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="366" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_DF" Content="🔒DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="102" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_DF" Content="🔒MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FRODF" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_TMVDF" Content="🔒TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_EF" Content="🔒DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="102" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_EF" Content="🔒MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FROEF" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_TMVEF" Content="🔒TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_ET" Content="🔒DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="280" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_ET" Content="🔒MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FROET" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_TMVET" Content="🔒TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="332" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_DT" Content="🔒DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="280" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_DT" Content="🔒MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FRODT" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_TMVDT" Content="🔒TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="332" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SNR" Content="🔒SNR" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="102" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_LVX" Content="🔒LDR" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_IMU" Content="🔒IMU" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_GPS" Content="🔒GPS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="192" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN" Content="🔒SEN" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="218" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_NPC" Content="🔒NCP" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="244" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_BOMBA" Content="🔒BMB" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="309" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU" Content="🔒ATU" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="349" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_PRSLN" Content="🔒PRS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="386" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_FLXLN" Content="🔒FLX" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="155" Canvas.Top="386" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_MASRS" Content="🔒MAS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="249" Canvas.Top="386" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_B01" Content="🔒B01" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="75" Canvas.Top="411" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_B02" Content="🔒B02" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="143" Canvas.Top="412" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_B03" Content="🔒B03" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="254" Canvas.Top="412" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_B04" Content="🔒B04" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="322" Canvas.Top="411" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_CAM" Content="🔒CAM" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="204" Canvas.Top="411" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_LEDOP" Content="🔒OP" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="10" Canvas.Top="192" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_LEDMN" Content="🔒MN" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="10" Canvas.Top="218" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_LEDAT" Content="🔒AT" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="10" Canvas.Top="244" HorizontalAlignment="Center" VerticalAlignment="Top"/>
</Canvas>
</Border>
<Border x:Name="brdStatusModulo" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="10,605,1460,32">
<Border x:Name="brdStatusModulo" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="10,641,1460,32">
<Canvas>
<Label Content="Saúde" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="10" Canvas.Top="-5" FontWeight="Bold"/>
<Label x:Name="lblSaude_Descricao" Content="Módulo MOV ET" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="9" Canvas.Left="35" Canvas.Top="4"/>
<Label x:Name="lblSaude_Versao" Content="Versão 20.1.0.6" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="124" FontSize="9" Canvas.Top="4"/>
<Label x:Name="lblSaude_Status" Content="Operante (Saúde: 93%)" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="194" FontSize="9" Canvas.Top="4"/>
<Label x:Name="lblSaude_CAN" Content="CAN 121 ms" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="313" FontSize="9" Canvas.Top="3"/>
<Label x:Name="lblSaude_Latencia" Content="Latência 504 ms" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="372" FontSize="9" Canvas.Top="4"/>
<Label x:Name="lblSaude_Impedimento" Content="Impedimento: Nenhum" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="9" Canvas.Top="18" Height="35" Width="443"/>
<Label x:Name="lblSaude_Descricao" Content="Módulo" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="9" Canvas.Left="35" Canvas.Top="4"/>
<Label x:Name="lblSaude_Versao" Content="Versão x.x.x.x" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="124" FontSize="9" Canvas.Top="4"/>
<Label x:Name="lblSaude_Status" Content="-" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="194" FontSize="9" Canvas.Top="4"/>
<Label x:Name="lblSaude_CAN" Content="CAN 0 ms" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="313" FontSize="9" Canvas.Top="3"/>
<Label x:Name="lblSaude_Latencia" Content="Latência 0 ms" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="372" FontSize="9" Canvas.Top="4"/>
<TextBlock x:Name="lblSaude_Impedimento" Text="Impedimento: Nenhum" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="9" Canvas.Top="24" TextWrapping="Wrap" Width="428" Canvas.Left="10"/>
<CheckBox x:Name="chbSaude_Mandatorio" Content="Mandatório" Canvas.Left="5" Canvas.Top="46" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" ToolTip="Define se o módulo é obrigatório para que a operação em andamento seja liberada"/>
<CheckBox x:Name="chbSaude_EmUso" Content="Em Uso" Canvas.Left="82" Canvas.Top="46" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="10" ToolTip="Define se o módulo deve ser usado durante a operação em andamento"/>
<Button x:Name="btnSaude_Salvar" Content="Salvar" Canvas.Left="155" Canvas.Top="45" FontSize="10" HorizontalAlignment="Left" VerticalAlignment="Top" Width="38" ToolTip="Salva os ajustes realizados nos parametros do módulo" Click="btnSaude_Salvar_Click"/>
<CheckBox x:Name="chbSaude_Mandatorio" Content="Mandatório" Canvas.Left="5" Canvas.Top="75" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" ToolTip="Define se o módulo é obrigatório para que a operação em andamento seja liberada"/>
<CheckBox x:Name="chbSaude_EmUso" Content="Em Uso" Canvas.Left="82" Canvas.Top="75" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="10" ToolTip="Define se o módulo deve ser usado durante a operação em andamento"/>
<Button x:Name="btnSaude_Salvar" Content="Salvar" Canvas.Left="155" Canvas.Top="74" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" Width="38" ToolTip="Salva os ajustes realizados nos parametros do módulo" Click="btnSaude_Salvar_Click"/>
<Border HorizontalAlignment="Center" BorderBrush="Black" BorderThickness="1" Height="299" Width="438" VerticalAlignment="Top" Canvas.Left="5" Canvas.Top="66">
<TabControl>
<TabItem Header="Condições Operacionais">
<Border HorizontalAlignment="Center" BorderBrush="Black" BorderThickness="1" Height="230" Width="438" VerticalAlignment="Top" Canvas.Left="5" Canvas.Top="94">
<TabControl x:Name="tab_Saude">
<TabItem x:Name="tabSaude_CondicoesOperacionais" Header="Condições Operacionais">
<Canvas>
<ListBox Height="269" Width="430" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="9">
<ListViewItem Content="Temperatura no motor alta, penalidade 3%"/>
<ListViewItem Content="Corrente fora do padrão, penalidade 2%"/>
<ListViewItem Content="RPM anormal, penalidade 2%"/>
</ListBox>
<ListBox x:Name="lstSaude_CondicoesOperacionais" Height="228" Width="430" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="9"/>
</Canvas>
</TabItem>
<TabItem Header="Acompanhamento">
<TabItem x:Name="tabSaude_Acompanhamento" Header="Acompanhamento">
<Canvas>
<scott:WpfPlot x:Name="Plot"/>
</Canvas>
</TabItem>
<TabItem Header="Opções">
<Canvas>
<TabItem x:Name="tabSaude_Opcoes" Header="Opções">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Canvas>
<!-- Mensagem quando não há opções para o módulo selecionado -->
<TextBlock x:Name="txtOpcoes_SemDados" Text="Nenhum teste disponível para este módulo." FontSize="10" VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="Wrap"/>
<!-- Painel específico de Bico (ATU + B01..B04) -->
<StackPanel x:Name="panelOpcoes_Bico" Grid.Row="0" Visibility="Collapsed">
<!-- Título / identificação -->
<StackPanel Orientation="Horizontal">
<Button x:Name="btnBico_Ligar" Content="Ligar" Width="80" Margin="0,0,5,0" Click="btnBico_Ligar_Click"/>
<Button x:Name="btnBico_Desligar" Content="Desligar" Width="80" Margin="0,0,5,0" Click="btnBico_Desligar_Click"/>
<Slider x:Name="sldBico_Angular" Width="161" Margin="0,0,5,0" Minimum="-90" Maximum="90" ValueChanged="sldBico_Angular_ValueChanged"/>
<Label x:Name="lblBico_Angulo" Content="0°"/>
</StackPanel>
<!-- Título / identificação -->
<TextBlock x:Name="txtBico_Titulo" FontWeight="Bold" FontSize="11" Text="Bico X - Testes" Margin="0,0,0,5"/>
<!-- “Cartõezinhos” de status -->
<UniformGrid Grid.Row="2" Rows="2" Columns="3" Margin="0,0,0,0">
<!-- Comando enviado -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_Comando" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Status real -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Status real" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_StatusReal" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Tempo ligado -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Tempo ligado" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_TempoLigado" FontSize="10" Text="00:00:00"/>
</StackPanel>
</Border>
<!-- Vazão -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Vazão" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_Vazao" FontSize="10" Text="0,0 L/min"/>
</StackPanel>
</Border>
<!-- Pressão da bomba -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Pressão bomba" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_Pressao" FontSize="10" Text="0,0 bar"/>
</StackPanel>
</Border>
<!-- Espaço livre pra futuro (temperatura, etc.) -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Extra" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_Extra" FontSize="10" Text="—"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
</Grid>
</TabItem>
</TabControl>
</Border>
@ -194,8 +273,8 @@
<Label Content="Vel. com Ervas" FontSize="9" Canvas.Top="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Label Content="Vel. sem Ervas" FontSize="9" Canvas.Top="30" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label Content="Angulo Máx" FontSize="9" Canvas.Top="45" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBox x:Name="txtParametros_VelCErvas" Canvas.Left="64" TextWrapping="Wrap" Text="1,5" Canvas.Top="19" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Velocidade que o equipamento se move quando há presença de ervas no radar, em km/h"/>
<TextBox x:Name="txtParametros_VelSErvas" Canvas.Left="64" TextWrapping="Wrap" Text="3,5" Canvas.Top="34" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Velocidade que o equipamento se move quando não há presença de ervas no radar, em km/h"/>
<TextBox x:Name="txtParametros_VelCErvas" Canvas.Left="64" TextWrapping="Wrap" Text="20" Canvas.Top="19" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Velocidade que o equipamento se move quando há presença de ervas no radar, em km/h"/>
<TextBox x:Name="txtParametros_VelSErvas" Canvas.Left="64" TextWrapping="Wrap" Text="50" Canvas.Top="34" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Velocidade que o equipamento se move quando não há presença de ervas no radar, em km/h"/>
<TextBox x:Name="txtParametros_AngMax" Canvas.Left="64" TextWrapping="Wrap" Text="30" Canvas.Top="49" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Angulo máximo de controle direcional, em graus"/>
<Label Content="Início Atuação" FontSize="9" Canvas.Top="15" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="93"/>
<Label Content="Area Atuação" FontSize="9" Canvas.Top="30" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="93"/>
@ -233,7 +312,7 @@
<Border Name="brdMapaInfo" BorderBrush="Black" BorderThickness="1" Height="26" Width="980" Canvas.Top="878" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="465,951,0,0">
<Canvas>
<Label x:Name="lblMapaInfo_Debug" Content="Próximo Ponto: 15 | Aproximando | Distância próximo ponto: 1,32 m | Distância ponto anterior: 0,74 m | Corredor: Dentro | Margem: Não | Disância Esquerda: 34 cm | Distância Direita: 36 cm | Status: CaminhandoRua" FontSize="9" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="1"/>
<Label x:Name="lblMapaInfo_Debug" Content="Próximo Ponto: 0 | Parado | Distância próximo ponto: 0,00 m | Distância ponto anterior: 0,00 m | Corredor: Fora | Margem: Não | Disância Esquerda: 0 cm | Distância Direita: 0 cm | Status: Parado" FontSize="9" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="1"/>
</Canvas>
</Border>

View File

@ -26,6 +26,7 @@ using MessageBox = System.Windows.MessageBox;
using Brush = System.Windows.Media.Brush;
using Brushes = System.Windows.Media.Brushes;
using Label = System.Windows.Controls.Label;
using AgroBase.Models.Operadores;
namespace OperationControl.Windows
{
@ -405,7 +406,7 @@ namespace OperationControl.Windows
private void AtualizarDadosTela_Diagnosticos(AgroBase.Models.Operacoes.OperacaoParametrosModel dados)
{
lblDiagnosticos_Impedimento.Content = "Impedimento: " + (string.IsNullOrEmpty(dados.DadosLeitura.ErroOperacaoLiberada) ? "Nenhum" : dados.DadosLeitura.ErroOperacaoLiberada);
lblDiagnosticos_Impedimento.Text = "Impedimento: " + (string.IsNullOrEmpty(dados.DadosLeitura.ErroOperacaoLiberada) ? "Nenhum" : dados.DadosLeitura.ErroOperacaoLiberada.Replace("\n\n", "; "));
// Canvas que está dentro do Border
var canvas = brdDiagnostico.Child as Canvas;
@ -421,16 +422,18 @@ namespace OperationControl.Windows
// Procura a saúde desse módulo
var saude = dados.DadosLeitura.ModulosSaude.FirstOrDefault(x => x.modulo == modulo);
if (saude == null)
if (saude == null && false)
continue;
var individual = saude.saude_individual.FirstOrDefault(x => x.label == mod_label);
bool mandatorio = dados.DadosLeitura.ModulosMandatorios.Any(x => x.Dispositivo == modulo && x.Mandatorio);
var individual = saude?.saude_individual?.FirstOrDefault(x => x.label == mod_label);
bool em_uso = mod_label != "" ? dados.DadosLeitura.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;
// Aplica cor de acordo com o status
AplicarStatusModuloNaLabel(lbl, individual?.status ?? saude.status, mandatorio);
AplicarStatusModuloNaLabel(lbl, individual?.status ?? saude?.status ?? AgroBase.Models.Enums.StatusModulo.Desconectado, em_uso);
}
PreencherAbaOpcoes();
}
private void AplicarStatusModuloNaLabel(Label lbl, AgroBase.Models.Enums.StatusModulo status, bool mandatorio)
@ -468,10 +471,15 @@ namespace OperationControl.Windows
lbl.Background = back;
lbl.Foreground = fore;
string text = lbl.Content?.ToString() ?? "";
text = text.Remove(0, 2);
lbl.Content = (mandatorio ? "🔒" : "🔓") + text;
}
private (AgroBase.Models.Enums.T_Code, string) GetModuleData(Label lbl)
{
if (lbl == null) return (AgroBase.Models.Enums.T_Code.Vzo, "");
string lbl_name = lbl.Name.Replace("lblDiagnosticos_", "");
string[] pts = lbl_name.Split('_');
string mod_name = pts[0];
@ -510,10 +518,10 @@ namespace OperationControl.Windows
Opacity = 0.9
};
AbrirDetalhesModulo();
AtualizarDetalhesModulo();
}
private void AbrirDetalhesModulo()
private void AtualizarDetalhesModulo()
{
(var modulo, var label) = GetModuleData(_labelModuloSelecionado);
if (modulo == AgroBase.Models.Enums.T_Code.Vzo)
@ -523,7 +531,7 @@ namespace OperationControl.Windows
var saude = rover?.DadosLeitura?.ModulosSaude?.FirstOrDefault(x => x.modulo == modulo);
var dispositivo = rover?.DadosLeitura?.DispositivosMapeados?.FirstOrDefault(x => x.Dispositivo == modulo && x.Mod_ID == label);
if (dispositivo == null && saude == null)
if (dispositivo == null && saude == null && false)
{
MessageBox.Show($"Sem dados para o módulo {modulo} ({label})");
return;
@ -531,21 +539,87 @@ namespace OperationControl.Windows
var individual = saude?.saude_individual?.FirstOrDefault(x => x.label == label);
var status = individual?.status ?? saude.status;
var motivos = string.Join(", ", (individual?.motivos ?? saude.motivos) ?? new List<string>());
var status = individual?.status ?? saude?.status ?? AgroBase.Models.Enums.StatusModulo.Desconectado;
var motivos = string.Join(", ", (individual?.motivos ?? saude?.motivos) ?? new List<string>());
lblSaude_Descricao.Content = $"Módulo {modulo} {label}";
lblSaude_Versao.Content = $"Versão {dispositivo?.Versao ?? "-"}";
lblSaude_Status.Content = $"{individual?.status ?? saude?.status ?? AgroBase.Models.Enums.StatusModulo.Desconectado} (Saúde {individual?.saude ?? saude?.saude ?? 0}%)";
lblSaude_CAN.Content = $"CAN {dispositivo?.VelocidadeBarramento ?? 0} ms";
lblSaude_Latencia.Content = $"Latência {dispositivo?.Latencia ?? 0} ms";
lblSaude_Impedimento.Content = $"Impedimento: {motivos ?? "Nenhum"}";
lblSaude_Impedimento.Text = $"Impedimento: {motivos ?? "Nenhum"}";
bool mandatorio = rover?.ModulosMandatorios?.Any(x => x.Dispositivo == modulo && x.Mandatorio) ?? false;
bool em_uso = individual?.em_uso ?? rover?.ModulosMandatorios?.Any(x => x.Dispositivo == modulo && x.Utilizar) ?? false;
//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;
chbSaude_Mandatorio.IsChecked = mandatorio;
chbSaude_EmUso.IsChecked = em_uso;
lstSaude_CondicoesOperacionais.Items.Clear();
if (saude?.condicoes_operacionais != null)
{
foreach (var cond in saude.condicoes_operacionais)
{
lstSaude_CondicoesOperacionais.Items.Add($"{cond.descricao} (Valor: {cond.valor}, Severidade: {cond.severidade:0}%)");
}
}
PreencherAbaOpcoes();
}
private void PreencherAbaOpcoes()
{
(var modulo, var label) = GetModuleData(_labelModuloSelecionado);
if (modulo == AgroBase.Models.Enums.T_Code.Vzo)
return;
bool isModuloAtu = modulo == AgroBase.Models.Enums.T_Code.Atu;
bool isBico = isModuloAtu && !string.IsNullOrEmpty(label) && label.StartsWith("B0");
bool mostrarPainelBico = isModuloAtu && isBico;
panelOpcoes_Bico.Visibility = mostrarPainelBico ? Visibility.Visible : Visibility.Collapsed;
txtOpcoes_SemDados.Visibility = mostrarPainelBico ? Visibility.Collapsed : Visibility.Visible;
if (mostrarPainelBico)
{
var bico = VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Controle?.BicosAtuados?.FirstOrDefault(x => x.ID == label);
bool comando = bico?.ComandoAtuar ?? false;
var leitura = bico?.ValoresLeituras?.FirstOrDefault(x => x.funcao == AgroBase.Models.Modules.FuncoesPinout.EstadoLeitura)?.atual?.valor;
txtBico_Titulo.Text = $"Bico {label} - Testes";
txtBico_Comando.Text = comando ? "Ligado" : "Desligado";
txtBico_StatusReal.Text = leitura != null && (AgroBase.Models.Enums.Estado)Enum.Parse(typeof(AgroBase.Models.Enums.Estado), leitura.ToString(), true) == AgroBase.Models.Enums.Estado.Ligado ? "Ligado" : "Desligado";
txtBico_TempoLigado.Text = (bico?.TempoAtuado ?? 0).ToString("0.00") + " ms";
txtBico_Vazao.Text = (bico?.MediaNivelFluxo ?? 0).ToString("0.00") + " L/min";
txtBico_Pressao.Text = (VariaveisControleOperacao.RoverEmFoco?.DadosLeitura?.Atuador?.PressaoLinha ?? 0).ToString("0.00") + " psi";
}
}
private void sldBico_Angular_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
lblBico_Angulo.Content = $"{Convert.ToInt32(sldBico_Angular.Value)}°";
}
private void btnBico_Ligar_Click(object sender, RoutedEventArgs e)
{
(var modulo, var label) = GetModuleData(_labelModuloSelecionado);
if (modulo == AgroBase.Models.Enums.T_Code.Vzo)
return;
VariaveisControleOperacao.EnviarComandoAtuador(label, true);
}
private void btnBico_Desligar_Click(object sender, RoutedEventArgs e)
{
(var modulo, var label) = GetModuleData(_labelModuloSelecionado);
if (modulo == AgroBase.Models.Enums.T_Code.Vzo)
return;
VariaveisControleOperacao.EnviarComandoAtuador(label, false);
}
private void btnSaude_Salvar_Click(object sender, RoutedEventArgs e)
@ -555,21 +629,33 @@ namespace OperationControl.Windows
return;
var rover = VariaveisControleOperacao.RoverEmFoco;
var saude = rover?.DadosLeitura?.ModulosSaude?.FirstOrDefault(x => x.modulo == modulo);
if (rover == null || saude == null)
if (rover == null)
{
MessageBox.Show($"Sem dados para o módulo {modulo} ({label})");
return;
}
rover.ModulosMandatorios.First(x => x.Dispositivo == modulo).Mandatorio = chbSaude_Mandatorio.IsChecked ?? false;
var individual = saude?.saude_individual?.FirstOrDefault(x => x.label == label);
if (individual != null)
var mod = rover.ModulosMandatorios.FirstOrDefault(x => x.Dispositivo == modulo);
if (mod == null)
{
individual.em_uso = chbSaude_EmUso.IsChecked ?? false;
mod = new AgroBase.Models.OperacaoModulosMandatoriosModel()
{
Dispositivo = modulo,
ComponentesEmUso = new Dictionary<string, bool>()
};
rover.ModulosMandatorios.Add(mod);
}
mod.Mandatorio = chbSaude_Mandatorio.IsChecked ?? false;
if (string.IsNullOrEmpty(label))
{
mod.Utilizar = chbSaude_EmUso.IsChecked ?? false;
}
else
{
mod.ComponentesEmUso[label] = chbSaude_EmUso.IsChecked ?? false;
}
VariaveisControleOperacao.EnviarParametrosOperacao(new AgroBase.Models.Operacoes.OperacaoParametrosModel()
{
ModulosMandatorios = rover.ModulosMandatorios,
@ -984,6 +1070,7 @@ namespace OperationControl.Windows
}
#endregion

View File

@ -14,7 +14,7 @@ using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+abbd3386f3ab2cd63eb9bec4bb9fce188d3ce542")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]

View File

@ -1 +1 @@
b95ee033888956fbf835d45c4eaa6ef3d07e336ce4e1556c901b0348e81b8049
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_01j5k5ey_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_0gomyck0_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_0ko350cs_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_1fr4k52u_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_3h2e2l2w_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_42ccf5kw_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -1,4 +1,4 @@
C:\ZendionInc\agrobot_base\AgroBase\OperationControl\obj\Debug\net8.0-windows7.0\GeneratedInternalTypeHelper.g.cs

FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\AttitudeIndicator.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\GstVideoView.xaml;;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_awwsglgz_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_azxp3wlp_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_c5cjlbkv_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_dcu0idyb_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

View File

@ -0,0 +1,8 @@
// <auto-generated/>
global using global::System;
global using global::System.Collections.Generic;
global using global::System.Drawing;
global using global::System.Linq;
global using global::System.Threading;
global using global::System.Threading.Tasks;
global using global::System.Windows.Forms;

View File

@ -0,0 +1,25 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
using System;
using System.Reflection;
[assembly: System.Reflection.AssemblyCompanyAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+5e23a79fa34a30845d02b3489666483eaacac5a5")]
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
[assembly: System.Runtime.Versioning.TargetPlatformAttribute("Windows7.0")]
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("Windows7.0")]
// Generated by the MSBuild WriteCodeFragment class.

View File

@ -0,0 +1 @@
9c7328ea6d82bbbbee549d472b8b2b45bf14f9e41fb27a4ff0c4a36bcc02e3ae

View File

@ -0,0 +1,19 @@
is_global = true
build_property.ApplicationManifest =
build_property.StartupObject =
build_property.ApplicationDefaultFont =
build_property.ApplicationHighDpiMode =
build_property.ApplicationUseCompatibleTextRendering =
build_property.ApplicationVisualStyles =
build_property.TargetFramework = net8.0-windows7.0
build_property.TargetPlatformMinVersion = 7.0
build_property.UsingMicrosoftNETSdkWeb =
build_property.ProjectTypeGuids =
build_property.InvariantGlobalization =
build_property.PlatformNeutralAssembly =
build_property.EnforceExtendedAnalyzerRules =
build_property._SupportedPlatformList = Linux,macOS,Windows
build_property.RootNamespace = OperationControl_edvgvsi3_wpftmp
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
build_property.EnableComHosting =
build_property.EnableGeneratedComInterfaceComImportInterop =

Some files were not shown because too many files have changed in this diff Show More