ajustado fluxo can

This commit is contained in:
Diego Freitas 2025-12-08 14:32:23 -03:00
parent 20378a9fd1
commit 19aa3ed2e6
23 changed files with 2020 additions and 1866 deletions

Binary file not shown.

View File

@ -3125,7 +3125,7 @@ namespace AgroBase.Models.Modules
{
bool Conectado = data[2] == 1;
bool Configurado = data[3] == 1;
Console.WriteLine($"[LRA] Resposta {ID_Num} recebida. Conectado={Conectado}, Configurado={Configurado}");
//Console.WriteLine($"[LRA] Resposta {ID_Num} recebida. Conectado={Conectado}, Configurado={Configurado}");
loraService.Conectado = Conectado;
loraService.Configurado = Configurado;
break;
@ -3143,7 +3143,7 @@ namespace AgroBase.Models.Modules
byte tranModeAndWorCycle = data[6];
byte tranMode = (byte)(tranModeAndWorCycle & 0b01000000);
byte worCycle = (byte)(tranModeAndWorCycle & 0b00000111);
Console.WriteLine($"[LRA] Resposta {ID_Num} recebida. Address={address.ToString("X")}, BaudRate={baud.ToString("X")}, AirRate={airRate.ToString("X")}, PacketSize={packetSize.ToString("X")}, Power={power.ToString("X")}, Channel={channel.ToString("X")}, transMode={tranMode.ToString("X")}, WorCycle={worCycle.ToString("X")}");
//Console.WriteLine($"[LRA] Resposta {ID_Num} recebida. Address={address.ToString("X")}, BaudRate={baud.ToString("X")}, AirRate={airRate.ToString("X")}, PacketSize={packetSize.ToString("X")}, Power={power.ToString("X")}, Channel={channel.ToString("X")}, transMode={tranMode.ToString("X")}, WorCycle={worCycle.ToString("X")}");
loraService.ParametrosGet.address = address;
loraService.ParametrosGet.baudRate = baud;
loraService.ParametrosGet.airRate = airRate;

View File

@ -93,7 +93,6 @@ namespace AgroBase.Models
Variaveis.OperacaoEmAndamento.OperacaoConfigurada = RedisService.GetField(CtxKey.DadosOperacao, "configurado", false);
var tempoAguardando = RedisService.GetField<long>(CtxKey.DadosOperacao, "tempo_aguardando", 0);
Variaveis.OperacaoEmAndamento.TempoAguardando = DateTimeOffset.FromUnixTimeSeconds(tempoAguardando).UtcDateTime.AddSeconds(tempoAguardando % 1).ToLocalTime();
HealthWorkerService.ModulosSaude = RedisService.GetField<ManagerWorkerMessageResponseModulosPendentesModel[]>(CtxKey.DadosOperacao, "status_modulos").ToList();
Variaveis.OperacaoEmAndamento.ErroOperacaoLiberada = RedisService.GetField<string>(CtxKey.DadosOperacao, "motivo_nao_liberado");
GPSService.CorrecaoRTK_Ntrip = RedisService.GetField<bool>(RedisService.ModKey(T_Code.Gps), "correcao_ntrip", false);
@ -104,6 +103,29 @@ namespace AgroBase.Models
Variaveis.OperacaoEmAndamento.StatusAnterior = Variaveis.OperacaoEmAndamento.StatusAtual;
List<ManagerWorkerMessageResponseModulosPendentesModel> saudeAnterior = new List<ManagerWorkerMessageResponseModulosPendentesModel>(HealthWorkerService.ModulosSaude ?? new List<ManagerWorkerMessageResponseModulosPendentesModel>());
HealthWorkerService.ModulosSaude = RedisService.GetField<ManagerWorkerMessageResponseModulosPendentesModel[]>(CtxKey.DadosOperacao, "status_modulos").ToList();
foreach (var mod in HealthWorkerService.ModulosSaude)
{
var mod_ant = saudeAnterior.FirstOrDefault(x => x.modulo == mod.modulo);
if (mod.status != mod_ant?.status)
{
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.InserirLog(mod.modulo, mod.status, mod.saude, string.Join("; ", mod.motivos), condicoes: string.Join("; ", mod.condicoes_operacionais.Select(x => x.descricao)));
}
if (mod.saude_individual.Any())
{
foreach (var ind in mod.saude_individual)
{
var ind_ant = saudeAnterior.FirstOrDefault(x => x.saude_individual.Any(y => y.id == ind.id))?.saude_individual?.FirstOrDefault(x => x.id == ind.id);
if (ind.status != ind_ant?.status)
{
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.InserirLog(mod.modulo, ind.status, ind.saude, string.Join("; ", ind.motivos), condicoes: string.Join("; ", ind.condicoes_operacionais.Select(x => x.descricao)), id: ind.id);
}
}
}
}
double saude_geral = HealthWorkerService.ModulosSaude.DefaultIfEmpty().Average(x => x?.saude ?? 0);
Variaveis.OperacaoEmAndamento.Status =
!Variaveis.OperacaoEmAndamento.OperacaoLiberada ? StatusModulo.Falha :
@ -2252,7 +2274,24 @@ namespace AgroBase.Models
public Dictionary<T_Code, Dictionary<string, bool>> ModsCalibragem { get; set; }
public bool CanSerialAtivado { get; set; }
public Dictionary<string, bool> Iniciados { get; set; }
public List<OperacaoSensoriamentoLogErrosModel> Logs { get; set; }
public void InserirLog(T_Code dispositivo, StatusModulo status, double saude, string mensagem, string id = null, string condicoes = null)
{
if (Logs == null)
Logs = new List<OperacaoSensoriamentoLogErrosModel>();
Logs.Add(new OperacaoSensoriamentoLogErrosModel()
{
Momento = DateTime.Now,
Dispositivo = dispositivo,
ID = id,
Status = status,
Saude = saude,
Mensagem = mensagem,
Condicoes = condicoes
});
}
public void AtualizarDados()
@ -2479,7 +2518,8 @@ namespace AgroBase.Models
DispositivosMapeados = new List<DispositivoDetalhesModel>(SerialService.DispositivosMapeados),
ModsCalibragem = new Dictionary<T_Code, Dictionary<string, bool>>(Variaveis.OperacaoEmAndamento.ModsCalibragem),
Temperaturas = _DispSen?.Dados?.Sensores?.Where(x => x.Componente == S_Code.sNTC)?.ToDictionary(x => x.ID, y => (double?)(y.ValoresLeituras?.FirstOrDefault(v => v.funcao == FuncoesPinout.Temperatura)?.atual?.valor) ?? -1),
Iniciados = _DispSen?.Dados?.Servos?.Select(s => new { s.ID, s.Inicializado }).Union(_DispSen?.Dados?.Reles?.Select(r => new { r.ID, r.Inicializado })).Union(_DispSen?.Dados?.Sinaleiros?.Select(s => new { s.ID, s.Inicializado })).Union(_DispSen?.Dados?.Sensores?.Select(s => new { s.ID, s.Inicializado })).ToDictionary(s => s.ID, s => s.Inicializado)
Iniciados = _DispSen?.Dados?.Servos?.Select(s => new { s.ID, s.Inicializado }).Union(_DispSen?.Dados?.Reles?.Select(r => new { r.ID, r.Inicializado })).Union(_DispSen?.Dados?.Sinaleiros?.Select(s => new { s.ID, s.Inicializado })).Union(_DispSen?.Dados?.Sensores?.Select(s => new { s.ID, s.Inicializado })).ToDictionary(s => s.ID, s => s.Inicializado),
Logs = new List<OperacaoSensoriamentoLogErrosModel>(Logs ?? new List<OperacaoSensoriamentoLogErrosModel>())
};
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura = dadosAtualizados;
@ -2528,7 +2568,8 @@ namespace AgroBase.Models
DispositivosMapeados = new List<DispositivoDetalhesModel>(DispositivosMapeados),
ModsCalibragem = new Dictionary<T_Code, Dictionary<string, bool>>(ModsCalibragem),
Temperaturas = new Dictionary<string, double>(Temperaturas ?? new Dictionary<string, double>()),
Iniciados = new Dictionary<string, bool>(Iniciados ?? new Dictionary<string, bool>())
Iniciados = new Dictionary<string, bool>(Iniciados ?? new Dictionary<string, bool>()),
Logs = new List<OperacaoSensoriamentoLogErrosModel>(Logs ?? new List<OperacaoSensoriamentoLogErrosModel>())
};
}
@ -2929,4 +2970,15 @@ namespace AgroBase.Models
}
public class OperacaoSensoriamentoLogErrosModel
{
public DateTime Momento { get; set; }
public T_Code Dispositivo { get; set; }
public string ID { get; set; }
public StatusModulo Status { get; set; }
public double Saude { get; set; }
public string Mensagem { get; set; }
public string Condicoes { get; set; }
}
}

View File

@ -155,8 +155,9 @@ namespace AgroBase.Services
public interface ICanService : IDisposable
{
bool PortaIsCan(SerialPort Porta = null);
void RegistrarHandler(byte endereco_rx, ICanMessageHandler handler);
bool Inicializar(SerialPort Porta = null, int BitRate = 250);
bool Inicializar(int BitRate = 250);
void AdicionarMensagemNaFila(T_Code Dispositivo, byte idTx, byte idRx, byte funcCodeTx, byte funcCodeRx, byte[] payload = null, bool get = true);
void Fechar();
string _portName { get; set; }

View File

@ -17,16 +17,11 @@ namespace AgroBase.Services
public string _portName { get; set; }
private int _baudRate;
private int _bitRate;
private string _canVersion;
private object _lock = new object();
public bool IsConnected { get; private set; }
private volatile bool _precisaReabrir;
public bool Iniciado
{
get
{
return SerialService.DispositivosMapeados.Any(x => /*x.Status != StatusModulo.Desconectado &&*/ SerialService.DispositivosCan.Contains(x.Dispositivo));
}
}
public bool Iniciado { get; private set; }
private AsyncTaskTimerModel tmrEnviarCAN;
private AsyncTaskTimerModel tmrOuvirCAN;
private AsyncTaskTimerModel tmrProcessarCAN;
@ -51,36 +46,45 @@ namespace AgroBase.Services
}
}
public void RegistrarHandler(byte endereco_rx, ICanMessageHandler handler)
public bool PortaIsCan(SerialPort Porta)
{
_roteadoresRegistrados.TryGetValue(endereco_rx, out bool registrado);
if (!registrado)
if (Porta == null && _PortaCAN != null)
{
_roteadoresRegistrados.TryAdd(endereco_rx, true);
_roteadores.TryAdd(endereco_rx, handler);
MostrarLog($"Roteador registrado: {endereco_rx.ToString("X")}", endereco_rx);
}
}
public bool Inicializar(SerialPort Porta = null, int BitRate = 250)
bool portaAberta = _PortaCAN?.IsOpen ?? false;
if (!portaAberta)
{
try
{
_bitRate = BitRate;
if (Porta == null && _PortaCAN == null)
{
return false;
_PortaCAN?.Open();
}
Porta?.Close();
if ((Porta != null && _PortaCAN == null) || !IsConnected)
catch
{
lock (_lock)
Iniciado = false;
}
}
else
{
var portas = SerialPort.GetPortNames();
var portaExiste = !string.IsNullOrEmpty(_portName) && portas.Contains(_portName, StringComparer.OrdinalIgnoreCase);
if (!portaExiste)
{
Iniciado = false;
}
}
}
else if (Porta != null)
{
Iniciado = false;
try
{
Porta.Close();
_portName = Porta.PortName;
_baudRate = 115200;
lock (_lock)
{
_PortaCAN = new SerialPort(_portName, _baudRate, Parity.None, 8, StopBits.One)
{
NewLine = "\r",
@ -89,7 +93,6 @@ namespace AgroBase.Services
DtrEnable = true, // alguns adaptadores pedem
RtsEnable = true
};
_PortaCAN.Open();
_PortaCAN.ErrorReceived += (s, e) =>
{
IsConnected = false;
@ -105,6 +108,81 @@ namespace AgroBase.Services
}
};
_PortaCAN.Open();
for (int i = 0; i < 3; i++)
{
EnviarComando("V\r");
Thread.Sleep(50);
byte[] res = SerialService.LerDadosDaPortaSerial(_PortaCAN, 20);
_canVersion = Encoding.ASCII.GetString(res);
if (_canVersion.Contains("canable") || _canVersion.Contains("normaldotcom") || _canVersion.Contains("github"))
{
Iniciado = true;
SerialService.DispositivosMapeados.Add(new DispositivoDetalhesModel()
{
Dispositivo = T_Code.Vzo,
Endereco = _portName,
Mod_ID = "CAN"
});
break;
}
}
}
}
catch
{
}
}
else
{
Iniciado = false;
}
if (!Iniciado && !string.IsNullOrEmpty(_portName))
{
Fechar();
}
return Iniciado;
}
public void RegistrarHandler(byte endereco_rx, ICanMessageHandler handler)
{
_roteadoresRegistrados.TryGetValue(endereco_rx, out bool registrado);
if (!registrado)
{
_roteadoresRegistrados.TryAdd(endereco_rx, true);
_roteadores.TryAdd(endereco_rx, handler);
MostrarLog($"Roteador registrado: {endereco_rx.ToString("X")}", endereco_rx);
}
}
public bool Inicializar(int BitRate)
{
try
{
if (_PortaCAN == null)
{
return false;
}
_bitRate = BitRate;
if (!IsConnected)
{
lock (_lock)
{
if (!Iniciado)
{
if (!PortaIsCan(_PortaCAN))
{
IsConnected = false;
return false;
}
}
EnviarComando("C\r"); // fecha CAN (estado conhecido)
Thread.Sleep(50);
EnviarComando("Z0\r"); // desabilita timestamp
@ -136,14 +214,6 @@ namespace AgroBase.Services
IsConnected = true;
}
lock (_lock)
{
if (_PortaCAN != null && !_PortaCAN.IsOpen)
{
_PortaCAN.Open();
}
}
return IsConnected;
}
catch (Exception ex)
@ -151,6 +221,7 @@ namespace AgroBase.Services
lock (_lock)
{
_PortaCAN = null;
IsConnected = false;
}
return false;
}
@ -530,13 +601,21 @@ namespace AgroBase.Services
//_roteadores.Clear();
_ultimoIdEnviado = null;
if (_PortaCAN?.IsOpen == true)
lock (_lock)
{
if ((_PortaCAN?.IsOpen ?? false) == true)
{
EnviarComando("C\r");
_PortaCAN.Close();
}
_PortaCAN = null;
}
var d = SerialService.DispositivosMapeados.FirstOrDefault(x => x.Endereco == _portName);
SerialService.DispositivosMapeados.Remove(d);
_portName = null;
_canVersion = null;
IsConnected = false;
}

View File

@ -45,6 +45,11 @@ namespace AgroBase.Services
}
}
public bool PortaIsCan(SerialPort Porta = null)
{
return true;
}
public void RegistrarHandler(byte endereco_rx, ICanMessageHandler handler)
{
_roteadoresRegistrados.TryGetValue(endereco_rx, out bool registrado);
@ -56,7 +61,7 @@ namespace AgroBase.Services
}
}
public bool Inicializar(SerialPort Porta = null, int BitRate = 250)
public bool Inicializar(int BitRate)
{
_bitRate = BitRate;
bool canIniciado = Connector.IsOpen;
@ -408,7 +413,7 @@ namespace AgroBase.Services
try { Connector.Close(); } catch { }
try
{
Inicializar();
Inicializar(250);
}
catch { }
}

View File

@ -30,7 +30,7 @@ namespace AgroBase.Services
public static List<T_Code> DispositivosConexaoInicial = new List<T_Code>() { T_Code.Mvd, T_Code.Atu, T_Code.Sen };
public static List<T_Code> DispositivosProprios = new List<T_Code>() { T_Code.Atu, T_Code.Sen };
public static List<T_Code> DispositivosModbus = new List<T_Code>() { T_Code.Pzm, T_Code.Wit, T_Code.A05 };
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> DispositivosCan = new List<T_Code>() { T_Code.Vzo, 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>()
@ -234,11 +234,10 @@ namespace AgroBase.Services
if (CanManager.UseCanSerial && !CanManager.CanService.Iniciado)
{
AtualizarConsole($"{PortaCom} - Procurando dispositivos no barramento CAN");
bool dispositivoCan = await ProcurarDispositivosCAN(_Porta);
if (dispositivoCan)
{
AtualizarConsole("Barramento CAN encontrado");
AtualizarConsole("Dispositivo encontrado no barramento CAN");
continue;
}
}
@ -253,7 +252,7 @@ namespace AgroBase.Services
await ProcurarDispositivosCAN();
var DispositivosRemovidos = dispositivosMapeados.Where(x => x.Tipo == TipoConexao.PortaCOM && (!Portas.Contains(x.Endereco))).ToList(); // || x.Status == StatusModulo.Desconectado
var DispositivosRemovidos = dispositivosMapeados.Where(x => x.Tipo == TipoConexao.PortaCOM && (!Portas.Contains(x.Endereco))).ToList();
foreach (var Dispositivo in DispositivosRemovidos)
{
DispositivosMapeados.Remove(Dispositivo);
@ -388,9 +387,13 @@ namespace AgroBase.Services
private static async Task<bool> ProcurarDispositivosCAN(SerialPort Porta = null)
{
if (!CanManager.CanService.Inicializar(Porta))
AtualizarConsole($"{Porta?.PortName ?? CanManager.CanService._portName ?? "CAN"} - Procurando dispositivos no barramento CAN");
bool porta_can = CanManager.CanService.PortaIsCan(Porta);
bool inicializou = !CanManager.CanService.Inicializar(250);
if (!porta_can || inicializou)
{
AtualizarConsole($"Adaptador {CanManager.CanService._portName} não conectado!");
AtualizarConsole($"Adaptador {CanManager.CanService._portName ?? "CAN"} não conectado!");
var dispositivosRemover = DispositivosMapeados.Where(x => DispositivosCan.Contains(x.Dispositivo)).ToList();
foreach (var d in dispositivosRemover)
{
@ -439,11 +442,6 @@ namespace AgroBase.Services
}
}
if (CanManager.UseCanSerial && !CanManager.CanService.Iniciado)
{
CanManager.CanService.Fechar();
}
return CanManager.CanService.Iniciado;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -522,6 +522,12 @@
</Grid>
</TabItem>
<TabItem x:Name="tabSaude_Logs" Header="Logs">
<Canvas>
<ListBox x:Name="lstSaude_Logs" Height="174" Width="430" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="9"/>
</Canvas>
</TabItem>
</TabControl>
</Border>
</Canvas>
@ -572,7 +578,7 @@
<Border x:Name="brdMapa" BorderBrush="Black" BorderThickness="1" Margin="465,71,475,116">
<Canvas>
<controls:MapViewControl x:Name="MAP" MarkerClicked="MAP_MarkerClicked" StreetMapClicked="MAP_StreetMapClicked" MbTilesPath="Data/basemap.mbtiles" Latitude="-22.1726572492617" Longitude="-47.3952163870556" Scale="5000" Height="842" Width="978" HorizontalAlignment="Center" VerticalAlignment="Top" />
<controls:MapViewControl x:Name="MAP" MarkerClicked="MAP_MarkerClicked" StreetMapClicked="MAP_StreetMapClicked" MbTilesPath="Data/basemap.mbtiles" Latitude="-22.1726572492617" Longitude="-47.3952163870556" Scale="5000" Height="820" Width="978" HorizontalAlignment="Center" VerticalAlignment="Top" />
<controls:HeadingIndicator x:Name="HDG" Width="130" Height="130" Canvas.Left="10" Canvas.Top="10" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<controls:AttitudeIndicator x:Name="IMU" Width="160" Height="180" Canvas.Left="10" Canvas.Bottom="10" CriticalLimit="20" WarningLimit="10" HorizontalAlignment="Left" VerticalAlignment="Center"/>
</Canvas>

View File

@ -494,7 +494,7 @@ namespace OperationControl.Windows
iniciado = rover.DadosLeitura?.Movimentacao?.Dados?.FirstOrDefault(x => x.ID == mod_label)?.Iniciado ?? false;
break;
case AgroBase.Models.Enums.T_Code.Dir:
iniciado = rover.DadosLeitura?.Direcional?.Dados?.FirstOrDefault(x => x.ID == mod_label)?.Iniciado ?? false;
iniciado = rover.DadosLeitura?.Direcional?.Dados?.FirstOrDefault(x => x.Modulo_ID == mod_label)?.Inicializado ?? false;
break;
case AgroBase.Models.Enums.T_Code.Atu:
if (string.IsNullOrEmpty(mod_label))
@ -601,6 +601,7 @@ namespace OperationControl.Windows
PreencherAbaCondicoesOperacionais(saude?.condicoes_operacionais);
PreencherAbaAcompanhamento(true);
PreencherAbaOpcoes(true);
PreencherAbaLogs(rover.DadosLeitura?.Logs?.Where(x => x.Dispositivo == modulo));
}
private void PreencherAbaCondicoesOperacionais(List<ManagerWorkerMessageResponseModulosPendentesSaudeCondicoesModel> condicoes)
@ -1008,8 +1009,8 @@ namespace OperationControl.Windows
{
panelOpcoes_Direcional.Visibility = Visibility.Visible;
var mod = rover?.Direcional?.Dados?.FirstOrDefault(x => x.ID == label);
AgroBase.Models.Enums.Sentido sentido_sp = mod?.SentidoSP ?? AgroBase.Models.Enums.Sentido.Parado;
var mod = rover?.Direcional?.Dados?.FirstOrDefault(x => x.Modulo_ID == label);
AgroBase.Models.Enums.Sentido sentido_sp = mod?.Sentido_SP ?? AgroBase.Models.Enums.Sentido.Parado;
AgroBase.Models.Enums.Sentido sentido = mod?.SentidoReal ?? AgroBase.Models.Enums.Sentido.Parado;
double angulo_sp = mod?.Angulo_SP ?? 0;
double angulo = mod?.AnguloDriver ?? 0;
@ -1050,6 +1051,19 @@ namespace OperationControl.Windows
}
private void PreencherAbaLogs(IEnumerable<AgroBase.Models.OperacaoSensoriamentoLogErrosModel> logs)
{
lstSaude_Logs.Items.Clear();
if (logs != null)
{
foreach (var log in logs)
{
lstSaude_Logs.Items.Add(log.Momento.ToString("HH:mm:ss.fff") + " - " + log.Mensagem);
}
}
}
#region Atuador
private void sldBarra_Altura_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)

View File

@ -16,5 +16,5 @@ C:\ZendionInc\agrobot_base\AgroBase\OperationControl\App.xaml
269595801548
Controls\AttitudeIndicator.xaml;Controls\Bbox3DViewer.xaml;Controls\GstVideoView.xaml;Controls\HeadingIndicator.xaml;Controls\LabeledBar.xaml;Controls\ManualControlPad.xaml;Controls\MapViewControl.xaml;Controls\ProgressBarText.xaml;Controls\Pulverizador\BicoLequeIndicator.xaml;Controls\Pulverizador\PulverizadorIndicator.xaml;Controls\RiskMeter.xaml;Controls\TemperatureIndicator.xaml;Windows\MainWindow.xaml;
True
False

View File

@ -1,12 +0,0 @@
C:\ZendionInc\agrobot_base\AgroBase\OperationControl\obj\Debug\net8.0-windows7.0\GeneratedInternalTypeHelper.g.i.cs
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\AttitudeIndicator.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\GstVideoView.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\HeadingIndicator.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\LabeledBar.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\ManualControlPad.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\Pulverizador\BicoLequeIndicator.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\Pulverizador\PulverizadorIndicator.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Controls\TemperatureIndicator.xaml;;
FC:\ZendionInc\agrobot_base\AgroBase\OperationControl\Windows\MainWindow.xaml;;

View File

@ -1,4 +1,5 @@
#pragma checksum "..\..\..\..\Windows\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "F31F8713D0D897914C396FB361EC0A6E0DC2E1C1"
// Updated by XamlIntelliSenseFileGenerator 08/12/2025 12:41:27
#pragma checksum "..\..\..\..\Windows\MainWindow.xaml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "F31F8713D0D897914C396FB361EC0A6E0DC2E1C1"
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
@ -38,13 +39,15 @@ using System.Windows.Shapes;
using System.Windows.Shell;
namespace OperationControl.Windows {
namespace OperationControl.Windows
{
/// <summary>
/// MainWindow
/// </summary>
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector, System.Windows.Markup.IStyleConnector {
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector, System.Windows.Markup.IStyleConnector
{
#line 71 "..\..\..\..\Windows\MainWindow.xaml"
@ -1485,8 +1488,10 @@ namespace OperationControl.Windows {
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.0.0")]
public void InitializeComponent() {
if (_contentLoaded) {
public void InitializeComponent()
{
if (_contentLoaded)
{
return;
}
_contentLoaded = true;
@ -1502,7 +1507,8 @@ namespace OperationControl.Windows {
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "8.0.0.0")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal System.Delegate _CreateDelegate(System.Type delegateType, string handler) {
internal System.Delegate _CreateDelegate(System.Type delegateType, string handler)
{
return System.Delegate.CreateDelegate(delegateType, this, handler);
}
@ -1512,7 +1518,8 @@ namespace OperationControl.Windows {
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) {
void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target)
{
switch (connectionId)
{
case 2:
@ -2194,7 +2201,8 @@ namespace OperationControl.Windows {
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Design", "CA1033:InterfaceMethodsShouldBeCallableByChildTypes")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1800:DoNotCastUnnecessarily")]
[System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Maintainability", "CA1502:AvoidExcessiveComplexity")]
void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target) {
void System.Windows.Markup.IStyleConnector.Connect(int connectionId, object target)
{
System.Windows.EventSetter eventSetter;
switch (connectionId)
{
@ -2219,6 +2227,9 @@ namespace OperationControl.Windows {
break;
}
}
internal System.Windows.Controls.TabItem tabSaude_Logs;
internal System.Windows.Controls.ListBox lstSaude_Logs;
}
}