ajustado fluxo can
This commit is contained in:
parent
20378a9fd1
commit
19aa3ed2e6
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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; }
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
try
|
||||
{
|
||||
_bitRate = BitRate;
|
||||
if (Porta == null && _PortaCAN == null)
|
||||
bool portaAberta = _PortaCAN?.IsOpen ?? false;
|
||||
if (!portaAberta)
|
||||
{
|
||||
return false;
|
||||
try
|
||||
{
|
||||
_PortaCAN?.Open();
|
||||
}
|
||||
catch
|
||||
{
|
||||
Iniciado = false;
|
||||
}
|
||||
}
|
||||
|
||||
Porta?.Close();
|
||||
|
||||
if ((Porta != null && _PortaCAN == null) || !IsConnected)
|
||||
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)
|
||||
{
|
||||
_portName = Porta.PortName;
|
||||
_baudRate = 115200;
|
||||
|
||||
_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)
|
||||
{
|
||||
EnviarComando("C\r");
|
||||
_PortaCAN.Close();
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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 { }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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;;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue