ajustes no fluxo principal
This commit is contained in:
parent
3cfb100c86
commit
ec7239b9ab
Binary file not shown.
Binary file not shown.
|
|
@ -1316,9 +1316,13 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
int dado = (cmbMOV_Temperatura_Componente.SelectedIndex) / 4;
|
int dado = (cmbMOV_Temperatura_Componente.SelectedIndex) / 4;
|
||||||
|
|
||||||
txtMOV_Temperatura_Media.Text = LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && (chbMOV_Temperatura_Media.Checked ? x.Modulo_ID == ID : true)).Average(x => dado == 0 ? x.Temperatura : x.TemperaturaDriver).ToString("0.00");
|
double RetornaDadoTemperatura(MovSensoriamentoLogModel x) => dado == 0 ? x?.Temperatura ?? 0 : x?.TemperaturaDriver ?? 0;
|
||||||
txtMOV_Temperatura_Mediana.Text = FuncoesMatematicas.CalcularMediana(LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && (chbMOV_Temperatura_Moda.Checked ? x.Modulo_ID == ID : true)).Select(x => dado == 0 ? x.Temperatura : x.TemperaturaDriver).ToList()).ToString("0.00");
|
|
||||||
txtMOV_Temperatura_Moda.Text = FuncoesMatematicas.CalcularModa(LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && (chbMOV_Temperatura_Mediana.Checked ? x.Modulo_ID == ID : true)).Select(x => dado == 0 ? x.Temperatura : x.TemperaturaDriver).ToList()).ToString("0.00");
|
double valMin = 0;
|
||||||
|
|
||||||
|
txtMOV_Temperatura_Media.Text = LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && RetornaDadoTemperatura(x) > valMin && (chbMOV_Temperatura_Media.Checked ? x.Modulo_ID == ID : true)).DefaultIfEmpty().Average(x => RetornaDadoTemperatura(x)).ToString("0.00");
|
||||||
|
txtMOV_Temperatura_Mediana.Text = FuncoesMatematicas.CalcularMediana(LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && RetornaDadoTemperatura(x) > valMin && (chbMOV_Temperatura_Moda.Checked ? x.Modulo_ID == ID : true)).DefaultIfEmpty().Select(x => RetornaDadoTemperatura(x)).ToList()).ToString("0.00");
|
||||||
|
txtMOV_Temperatura_Moda.Text = FuncoesMatematicas.CalcularModa(LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && RetornaDadoTemperatura(x) > valMin && (chbMOV_Temperatura_Mediana.Checked ? x.Modulo_ID == ID : true)).DefaultIfEmpty().Select(x => RetornaDadoTemperatura(x)).ToList()).ToString("0.00");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cmbMOV_AlImentacao_Componente.SelectedIndex > -1)
|
if (cmbMOV_AlImentacao_Componente.SelectedIndex > -1)
|
||||||
|
|
@ -1335,9 +1339,13 @@ namespace AgroBase.Forms.Operacoes
|
||||||
|
|
||||||
int dado = (cmbMOV_AlImentacao_Componente.SelectedIndex) / 4;
|
int dado = (cmbMOV_AlImentacao_Componente.SelectedIndex) / 4;
|
||||||
|
|
||||||
txtMOV_Alimentacao_Media.Text = LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && (chbMOV_Alimentacao_Media.Checked ? x.Modulo_ID == ID : true)).Average(x => dado == 0 ? x.Tensao : dado == 1 ? x.Corrente_Motor : dado == 2 ? x.Corrente_Barramento : dado == 3 ? x.Potencia : x.CicloTrabalho).ToString("0.00");
|
double RetornaDadoAlimentacao(MovSensoriamentoLogModel x) => dado == 0 ? x?.Tensao ?? 0 : dado == 1 ? x?.Corrente_Motor ?? 0 : dado == 2 ? x?.Corrente_Barramento ?? 0 : dado == 3 ? x?.Potencia ?? 0 : x?.CicloTrabalho ?? 0;
|
||||||
txtMOV_Alimentacao_Mediana.Text = FuncoesMatematicas.CalcularMediana(LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && (chbMOV_Alimentacao_Moda.Checked ? x.Modulo_ID == ID : true)).Select(x => dado == 0 ? x.Tensao : dado == 1 ? x.Corrente_Motor : dado == 2 ? x.Corrente_Barramento : dado == 3 ? x.Potencia : x.CicloTrabalho).ToList()).ToString("0.00");
|
|
||||||
txtMOV_Alimentacao_Moda.Text = FuncoesMatematicas.CalcularModa(LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && (chbMOV_Alimentacao_Mediana.Checked ? x.Modulo_ID == ID : true)).Select(x => dado == 0 ? x.Tensao : dado == 1 ? x.Corrente_Motor : dado == 2 ? x.Corrente_Barramento : dado == 3 ? x.Potencia : x.CicloTrabalho).ToList()).ToString("0.00");
|
double valMin = 0;
|
||||||
|
|
||||||
|
txtMOV_Alimentacao_Media.Text = LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && RetornaDadoAlimentacao(x) > valMin && (chbMOV_Alimentacao_Media.Checked ? x.Modulo_ID == ID : true)).DefaultIfEmpty().Average(x => RetornaDadoAlimentacao(x)).ToString("0.00");
|
||||||
|
txtMOV_Alimentacao_Mediana.Text = FuncoesMatematicas.CalcularMediana(LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && RetornaDadoAlimentacao(x) > valMin && (chbMOV_Alimentacao_Moda.Checked ? x.Modulo_ID == ID : true)).DefaultIfEmpty().Select(x => RetornaDadoAlimentacao(x)).ToList()).ToString("0.00");
|
||||||
|
txtMOV_Alimentacao_Moda.Text = FuncoesMatematicas.CalcularModa(LogsMovimentacao.Where(x => x.Momento <= MomentoAtual && RetornaDadoAlimentacao(x) > valMin && (chbMOV_Alimentacao_Mediana.Checked ? x.Modulo_ID == ID : true)).DefaultIfEmpty().Select(x => RetornaDadoAlimentacao(x)).ToList()).ToString("0.00");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,14 @@
|
||||||
using AgroBase.Forms.Operacoes;
|
using AgroBase.Models.Modules;
|
||||||
using AgroBase.Models.Modules;
|
|
||||||
using AgroBase.Services;
|
using AgroBase.Services;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
|
||||||
using static AgroBase.Models.Enums;
|
using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
namespace AgroBase.Models.Operacoes
|
namespace AgroBase.Models.Operacoes
|
||||||
{
|
{
|
||||||
public class OperacaoMapaGPSModel
|
public class OperacaoMapaGPSModel
|
||||||
{
|
{
|
||||||
public Form frmOperacao { get; set; } = new frmOperacaoMapaGPS();
|
|
||||||
public string frmOperacaoNome { get; set; } = "frmOperacaoMapaGPS";
|
|
||||||
public OperacaoMapaGPSSensoriamentoModel Sensoriamento { get; set; } = new OperacaoMapaGPSSensoriamentoModel();
|
public OperacaoMapaGPSSensoriamentoModel Sensoriamento { get; set; } = new OperacaoMapaGPSSensoriamentoModel();
|
||||||
|
|
||||||
#region DIRECIONAL
|
#region DIRECIONAL
|
||||||
|
|
@ -24,7 +20,15 @@ namespace AgroBase.Models.Operacoes
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (Variaveis.OperacaoEmAndamento.Controle.TipoControleDirecional)
|
var Controle = Variaveis.OperacaoEmAndamento.Controle;
|
||||||
|
|
||||||
|
if (Variaveis.OperacaoEmAndamento.StatusAtual != StatusOperacao.EmAndamento)
|
||||||
|
{
|
||||||
|
Controle.Angulo = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (Controle.TipoControleDirecional)
|
||||||
{
|
{
|
||||||
case TiposControladorDirecional.PID:
|
case TiposControladorDirecional.PID:
|
||||||
{
|
{
|
||||||
|
|
@ -33,15 +37,13 @@ namespace AgroBase.Models.Operacoes
|
||||||
}
|
}
|
||||||
case TiposControladorDirecional.MPC:
|
case TiposControladorDirecional.MPC:
|
||||||
{
|
{
|
||||||
var MPC = Variaveis.OperacaoEmAndamento.Controle.ControladorMPC;
|
var MPC = Controle.ControladorMPC;
|
||||||
var Trajetoria = Variaveis.OperacaoEmAndamento.Trajetoria;
|
var Trajetoria = Variaveis.OperacaoEmAndamento.Trajetoria;
|
||||||
|
|
||||||
(double steeringAngle, Enums.TipoMovimentoDirecional mode) = MPC.ComputeControl(
|
(double steeringAngle, Enums.TipoMovimentoDirecional mode) = MPC.ComputeControl(
|
||||||
GPSService.UltimaLeitura.Latitude, GPSService.UltimaLeitura.Longitude, Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.AnguloCarroDefinido,
|
GPSService.UltimaLeitura.Latitude, GPSService.UltimaLeitura.Longitude, Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.AnguloCarroDefinido,
|
||||||
Trajetoria.ProximoPonto.Posicao.Latitude, Trajetoria.ProximoPonto.Posicao.Longitude, Trajetoria.ProximoPonto.Orientacao,
|
Trajetoria.ProximoPonto.Posicao.Latitude, Trajetoria.ProximoPonto.Posicao.Longitude, Trajetoria.ProximoPonto.Orientacao,
|
||||||
Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP, Trajetoria.DistanciaEsquerda, Trajetoria.DistanciaDireita, new List<Obstaculo>());
|
Controle.PercentualVelocidadeSP, Trajetoria.DistanciaEsquerda, Trajetoria.DistanciaDireita, new List<Obstaculo>());
|
||||||
|
|
||||||
var Controle = Variaveis.OperacaoEmAndamento.Controle;
|
|
||||||
|
|
||||||
Controle.Angulo = steeringAngle;
|
Controle.Angulo = steeringAngle;
|
||||||
Controle.TipoMovimento = mode;
|
Controle.TipoMovimento = mode;
|
||||||
|
|
@ -208,19 +210,20 @@ namespace AgroBase.Models.Operacoes
|
||||||
}
|
}
|
||||||
|
|
||||||
var Controle = Variaveis.OperacaoEmAndamento.Controle;
|
var Controle = Variaveis.OperacaoEmAndamento.Controle;
|
||||||
var statusAtual = Variaveis.OperacaoEmAndamento.Trajetoria.StatusAtual;
|
|
||||||
|
if (Variaveis.OperacaoEmAndamento.StatusAtual != StatusOperacao.EmAndamento)
|
||||||
|
{
|
||||||
|
Controle.PercentualVelocidadeSP = 0;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Controle.PercentualVelocidadeSP = CalcularVelocidadeRelativa(Controle);
|
Controle.PercentualVelocidadeSP = CalcularVelocidadeRelativa(Controle);
|
||||||
|
|
||||||
switch (statusAtual)
|
switch (Variaveis.OperacaoEmAndamento.Trajetoria.StatusAtual)
|
||||||
{
|
{
|
||||||
case StatusCarroMapa.Parado:
|
case StatusCarroMapa.Parado:
|
||||||
{
|
{
|
||||||
var BicosNaoAtuados = new List<AtuadorBicoModel>(Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores);
|
|
||||||
BicosNaoAtuados.ForEach(x => x.ComandoAtuar = false);
|
|
||||||
Controle.BicosAtuados = new List<AtuadorBicoModel>(BicosNaoAtuados.ToList());
|
|
||||||
Controle.PercentualVelocidadeSP = 0;
|
Controle.PercentualVelocidadeSP = 0;
|
||||||
Controle.Angulo = 0;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case StatusCarroMapa.Direcionando:
|
case StatusCarroMapa.Direcionando:
|
||||||
|
|
@ -295,13 +298,25 @@ namespace AgroBase.Models.Operacoes
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public void CalculaDadosMovimentacaoAutonoma()
|
#region ATUADOR
|
||||||
{
|
|
||||||
DefinirDadosControleMov();
|
|
||||||
|
|
||||||
DefinirDadosControleDir();
|
public void DefinirDadosControleAtu()
|
||||||
|
{
|
||||||
|
var Controle = Variaveis.OperacaoEmAndamento.Controle;
|
||||||
|
|
||||||
|
if (Variaveis.OperacaoEmAndamento.StatusAtual != StatusOperacao.EmAndamento)
|
||||||
|
{
|
||||||
|
var BicosNaoAtuados = new List<AtuadorBicoModel>(Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores ?? new List<AtuadorBicoModel>());
|
||||||
|
BicosNaoAtuados.ForEach(x => x.ComandoAtuar = false);
|
||||||
|
Controle.BicosAtuados = new List<AtuadorBicoModel>(BicosNaoAtuados.ToList());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Controle.BicosAtuados = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores?.Select(x => x?.Clone() ?? new AtuadorBicoModel()).DefaultIfEmpty().ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class OperacaoMapaGPSSensoriamentoModel
|
public class OperacaoMapaGPSSensoriamentoModel
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,14 @@ namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
case ModoOperacao.Manual:
|
case ModoOperacao.Manual:
|
||||||
{
|
{
|
||||||
etapaAtual = StatusOperacao.EmAndamento;
|
if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
|
||||||
|
{
|
||||||
|
etapaAtual = StatusOperacao.EmAndamento;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
etapaAtual = StatusOperacao.Parado;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ModoOperacao.MapaGPS:
|
case ModoOperacao.MapaGPS:
|
||||||
|
|
@ -225,6 +232,7 @@ namespace AgroBase.Models
|
||||||
if (parametrosMandatorios.Any(x => x.Mandatorio && x.Parametro == ParametrosOperacao.Mapa) && !Variaveis.OperacaoEmAndamento.Mapa.mapaService.Carregado) _operacaoLiberada = false;
|
if (parametrosMandatorios.Any(x => x.Mandatorio && x.Parametro == ParametrosOperacao.Mapa) && !Variaveis.OperacaoEmAndamento.Mapa.mapaService.Carregado) _operacaoLiberada = false;
|
||||||
if (parametrosMandatorios.Any(x => x.Mandatorio && x.Parametro == ParametrosOperacao.Joystick) && GeneralJoystick.JoystickConectado == null) _operacaoLiberada = false;
|
if (parametrosMandatorios.Any(x => x.Mandatorio && x.Parametro == ParametrosOperacao.Joystick) && GeneralJoystick.JoystickConectado == null) _operacaoLiberada = false;
|
||||||
if (!Variaveis.OperacaoEmAndamento.DispositivosIndividuaisConectados) _operacaoLiberada = false;
|
if (!Variaveis.OperacaoEmAndamento.DispositivosIndividuaisConectados) _operacaoLiberada = false;
|
||||||
|
if (Variaveis.OperacaoEmAndamento.ModulosMandatorios.Any(x => x.Dispositivo == T_Code.Gps && x.Mandatorio && (!x.Conectado || Variaveis.OperacaoEmAndamento.Sensoriamento.Gps.PrecisaoCm < GPSService.PrecisaoMinimaCm))) _operacaoLiberada = false; // Precisao baixa do GPS
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Variaveis.DebugMode) _operacaoLiberada = true;
|
if (Variaveis.DebugMode) _operacaoLiberada = true;
|
||||||
|
|
@ -1247,7 +1255,7 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
bool MovimentoLiberado = Variaveis.OperacaoEmAndamento.StatusAtual != StatusOperacao.Aguardando && Variaveis.OperacaoEmAndamento.StatusAtual != StatusOperacao.Parado && !MKS057DService.Referenciando;
|
bool MovimentoLiberado = Variaveis.OperacaoEmAndamento.StatusAtual != StatusOperacao.Aguardando && Variaveis.OperacaoEmAndamento.StatusAtual != StatusOperacao.Parado && !MKS057DService.Referenciando;
|
||||||
|
|
||||||
if (MovimentoLiberado)
|
if (MovimentoLiberado || ForcarEnvio)
|
||||||
{
|
{
|
||||||
foreach (var Ctrl in _Controle.TiposControle)
|
foreach (var Ctrl in _Controle.TiposControle)
|
||||||
{
|
{
|
||||||
|
|
@ -1262,7 +1270,7 @@ namespace AgroBase.Models
|
||||||
(IDispositivosService)Variaveis.OperacaoEmAndamento.DispAtu :
|
(IDispositivosService)Variaveis.OperacaoEmAndamento.DispAtu :
|
||||||
(IDispositivosService)Variaveis.OperacaoEmAndamento.DispMvd;
|
(IDispositivosService)Variaveis.OperacaoEmAndamento.DispMvd;
|
||||||
|
|
||||||
var Protocolos = EnviarProtocoloComando(disp, Ctrl.Tipo, ForcarEnvio);
|
var Protocolos = EnviarProtocoloComando(disp, Ctrl.Tipo);
|
||||||
Ctrl.UltimoComando = Agora;
|
Ctrl.UltimoComando = Agora;
|
||||||
Ctrl.Comandos.AddRange(Protocolos);
|
Ctrl.Comandos.AddRange(Protocolos);
|
||||||
}
|
}
|
||||||
|
|
@ -1270,9 +1278,9 @@ namespace AgroBase.Models
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<string> EnviarProtocoloComando(IDispositivosService Dispositivo, T_Code Tipo, bool ForcarEnvio)
|
public List<string> EnviarProtocoloComando(IDispositivosService Dispositivo, T_Code Tipo)
|
||||||
{
|
{
|
||||||
if (Dispositivo == null || !Iniciado)
|
if (Dispositivo == null || !Variaveis.OperacaoEmAndamento.Iniciado)
|
||||||
{
|
{
|
||||||
return new List<string>();
|
return new List<string>();
|
||||||
}
|
}
|
||||||
|
|
@ -1318,33 +1326,6 @@ namespace AgroBase.Models
|
||||||
{
|
{
|
||||||
Variaveis.OperacaoEmAndamento.OpMapaGPS.DefinirDadosControleDir();
|
Variaveis.OperacaoEmAndamento.OpMapaGPS.DefinirDadosControleDir();
|
||||||
|
|
||||||
/*if (_Controle.Angulo == 0)
|
|
||||||
{
|
|
||||||
_Controle.Direcao = Direcao.Parado;
|
|
||||||
}
|
|
||||||
else if (_Controle.Angulo < 0) // Ângulo negativo
|
|
||||||
{
|
|
||||||
if (_ControleAnterior.Angulo < _Controle.Angulo) // Movendo-se para menos negativo (ex: -30 → -10)
|
|
||||||
{
|
|
||||||
_Controle.Direcao = Direcao.Direita;
|
|
||||||
}
|
|
||||||
else if (_ControleAnterior.Angulo > _Controle.Angulo) // Movendo-se para mais negativo (ex: -10 → -30)
|
|
||||||
{
|
|
||||||
_Controle.Direcao = Direcao.Esquerda;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (_Controle.Angulo > 0) // Ângulo positivo
|
|
||||||
{
|
|
||||||
if (_ControleAnterior.Angulo > _Controle.Angulo) // Movendo-se para menos positivo (ex: 30 → 10)
|
|
||||||
{
|
|
||||||
_Controle.Direcao = Direcao.Esquerda;
|
|
||||||
}
|
|
||||||
else if (_ControleAnterior.Angulo < _Controle.Angulo) // Movendo-se para mais positivo (ex: 10 → 30)
|
|
||||||
{
|
|
||||||
_Controle.Direcao = Direcao.Direita;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if (_Controle.Angulo > 0)
|
if (_Controle.Angulo > 0)
|
||||||
{
|
{
|
||||||
_Controle.Direcao = Direcao.Direita;
|
_Controle.Direcao = Direcao.Direita;
|
||||||
|
|
@ -1379,7 +1360,7 @@ namespace AgroBase.Models
|
||||||
}
|
}
|
||||||
else if (Dispositivo.Dados is AtuadorModel)
|
else if (Dispositivo.Dados is AtuadorModel)
|
||||||
{
|
{
|
||||||
_Controle.BicosAtuados = ((AtuadorModel)Dispositivo.Dados).BicosPulverizadores.Select(x => x.Clone()).ToList();
|
Variaveis.OperacaoEmAndamento.OpMapaGPS.DefinirDadosControleAtu();
|
||||||
|
|
||||||
if (_ControleAnterior.BicosAtuados.Count() >= _Controle.BicosAtuados.Count())
|
if (_ControleAnterior.BicosAtuados.Count() >= _Controle.BicosAtuados.Count())
|
||||||
{
|
{
|
||||||
|
|
@ -1444,33 +1425,6 @@ namespace AgroBase.Models
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*public void AtualizarDadosControlePulverizador(bool ForcarEnvio)
|
|
||||||
{
|
|
||||||
if (Variaveis.OperacaoEmAndamento.Controle.PulverizadorAutomatico)
|
|
||||||
{
|
|
||||||
Variaveis.OperacaoEmAndamento.AtualizarControleAtuadores();
|
|
||||||
DateTime Agora = DateTime.Now;
|
|
||||||
|
|
||||||
var _Controle = Variaveis.OperacaoEmAndamento.Controle;
|
|
||||||
|
|
||||||
OperacaoControleTipoModel ControleAtu = _Controle.TiposControle != null ? _Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Atu) : null;
|
|
||||||
if (ControleAtu != null && (Agora - ControleAtu.UltimoComando).TotalMilliseconds > ControleAtu.DelayEnvioComando)
|
|
||||||
{
|
|
||||||
// Enviar comando ATU
|
|
||||||
var Protocolos = EnviarProtocoloComando(Variaveis.OperacaoEmAndamento.DispAtu, T_Code.Atu, ForcarEnvio);
|
|
||||||
ControleAtu.UltimoComando = Agora;
|
|
||||||
ControleAtu.Comandos.AddRange(Protocolos);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public void AtualizarControleAtuadores()
|
|
||||||
{
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.Select(x => x.Clone()).ToList();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
private async Task tmrLeituras_Tick()
|
private async Task tmrLeituras_Tick()
|
||||||
{
|
{
|
||||||
if (Variaveis.IsAgroMonitor)
|
if (Variaveis.IsAgroMonitor)
|
||||||
|
|
@ -1828,18 +1782,8 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
private void PararCarroOperacaoInterrompida(bool finalizar)
|
private void PararCarroOperacaoInterrompida(bool finalizar)
|
||||||
{
|
{
|
||||||
Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = 0; // Velocidade Zero (parado)
|
|
||||||
if (finalizar)
|
|
||||||
{
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.Angulo = 0; // Angulo Zero (direcional reto)
|
|
||||||
}
|
|
||||||
Variaveis.OperacaoEmAndamento.Controle.BicosAtuados.ForEach(x => x.ComandoAtuar = false); // Bicos desatuados
|
|
||||||
|
|
||||||
AtualizarDadosControle(true);
|
AtualizarDadosControle(true);
|
||||||
|
|
||||||
|
|
||||||
//AtualizarDadosControlePulverizador(true);
|
|
||||||
|
|
||||||
if (finalizar)
|
if (finalizar)
|
||||||
{
|
{
|
||||||
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
var Bomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora;
|
||||||
|
|
|
||||||
|
|
@ -43,6 +43,8 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
public static bool CorrecaoRTK = true;
|
public static bool CorrecaoRTK = true;
|
||||||
|
|
||||||
|
public static double PrecisaoMinimaCm { get; set; } = 100.0;
|
||||||
|
|
||||||
public static void AtualizarPortaCOM(SerialPort Porta)
|
public static void AtualizarPortaCOM(SerialPort Porta)
|
||||||
{
|
{
|
||||||
if (PortaGPS == null)
|
if (PortaGPS == null)
|
||||||
|
|
@ -453,7 +455,7 @@ namespace AgroBase.Services
|
||||||
PenultimaLeitura.TipoOrientacao = UltimaLeitura.TipoOrientacao;
|
PenultimaLeitura.TipoOrientacao = UltimaLeitura.TipoOrientacao;
|
||||||
|
|
||||||
UltimaLeitura.Momento = DateTime.Now;
|
UltimaLeitura.Momento = DateTime.Now;
|
||||||
UltimaLeitura.OrientacaoReal = headingTrue;
|
UltimaLeitura.OrientacaoReal = (headingTrue + 180) % 360; // Inverter o angulo lido para normalizar com o angulo calculado entre leituras
|
||||||
UltimaLeitura.TipoOrientacao = status;
|
UltimaLeitura.TipoOrientacao = status;
|
||||||
|
|
||||||
// ✅ Atualiza o ângulo unificado no GPSService
|
// ✅ Atualiza o ângulo unificado no GPSService
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -1 +1 @@
|
||||||
{"tmrRegistrador":{"_uiControl":null,"State":2,"IsRunning":false,"IsStopped":true,"IsCreated":false,"Interval":500,"StackTrace":"AtuadorModel.IniciarRegistrador","Id":"tmrRegistrador_Atu","TimeTick":"00:00:00"},"Modulo_ID":"Atu","IP":"192.168.100.13","RequisitarDados":true,"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B02","Posicao":2,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B03","Posicao":3,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B04","Posicao":4,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0}],"BombasPressurizadoras":[{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","LimiteMaximo":120.0,"LimiteMinimo":60.0}],"BombaPressurizadora":{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false},"ScriptDeteccaoErvas":"weed_detector_oak-1_0.py","DadosLeitura":{"Momento":"0001-01-01T00:00:00","Conectado":false,"Mod_ID":null,"QualidadeWifi":0,"LatenciaLoop":0,"BicosPulverizadores":[],"BombasPressurizadoras":[],"SensoresFluxo":[],"SensoresMassa":[],"SensoresPressao":[]},"_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"MassaReservatorio":0.0,"VolumeReservatorio":0.0,"PercentualReservatorio":0.0,"VolumeVazaoAferido":0.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"VazaoFluxoMLpSInstantanea":0.0,"VazaoFluxoMLpSMedia":0.0,"VolumeVazaoML":0.0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"PressaoLinha":0.0,"PressaoLinhaCalc":0.0,"PercentualErvasTerreno":0.0}
|
{"tmrRegistrador":{"_uiControl":null,"State":2,"IsRunning":false,"IsStopped":true,"IsCreated":false,"Interval":500,"StackTrace":"AtuadorModel.IniciarRegistrador","Id":"tmrRegistrador_Atu","TimeTick":"00:00:00"},"Modulo_ID":"Atu","IP":"192.168.100.13","RequisitarDados":true,"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B02","Posicao":2,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B03","Posicao":3,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B04","Posicao":4,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.02674584437758935,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0}],"BombasPressurizadoras":[{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","LimiteMaximo":120.0,"LimiteMinimo":60.0}],"BombaPressurizadora":{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false},"ScriptDeteccaoErvas":"weed_detector_oak-1_0.py","DadosLeitura":{"Momento":"0001-01-01T00:00:00","Conectado":false,"Mod_ID":null,"QualidadeWifi":0,"LatenciaLoop":0,"BicosPulverizadores":[],"BombasPressurizadoras":[],"SensoresFluxo":[],"SensoresMassa":[],"SensoresPressao":[]},"_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"MassaReservatorio":0.0,"VolumeReservatorio":0.0,"PercentualReservatorio":0.0,"VolumeVazaoAferido":0.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"VazaoFluxoMLpSInstantanea":0.0,"VazaoFluxoMLpSMedia":0.0,"VolumeVazaoML":0.0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"PressaoLinha":0.0,"PressaoLinhaCalc":0.0,"PercentualErvasTerreno":0.0}
|
||||||
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
|
|
@ -25,7 +25,7 @@
|
||||||
<meta name="viewport" content="width=device-width,
|
<meta name="viewport" content="width=device-width,
|
||||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||||
<style>
|
<style>
|
||||||
#map_0c3554ee11c5591d304c0c6d4d52e50e {
|
#map_c17ce78bff49a7401eff2508c6dcc0c3 {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100.0%;
|
width: 100.0%;
|
||||||
height: 100.0%;
|
height: 100.0%;
|
||||||
|
|
@ -39,14 +39,14 @@
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
|
||||||
<div class="folium-map" id="map_0c3554ee11c5591d304c0c6d4d52e50e" ></div>
|
<div class="folium-map" id="map_c17ce78bff49a7401eff2508c6dcc0c3" ></div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
|
|
||||||
var map_0c3554ee11c5591d304c0c6d4d52e50e = L.map(
|
var map_c17ce78bff49a7401eff2508c6dcc0c3 = L.map(
|
||||||
"map_0c3554ee11c5591d304c0c6d4d52e50e",
|
"map_c17ce78bff49a7401eff2508c6dcc0c3",
|
||||||
{
|
{
|
||||||
center: [0.0, 0.0],
|
center: [0.0, 0.0],
|
||||||
crs: L.CRS.EPSG3857,
|
crs: L.CRS.EPSG3857,
|
||||||
|
|
@ -59,6 +59,15 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var tile_layer_b68aee685770afdb7f454cf948fb9b33 = L.tileLayer(
|
||||||
|
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||||
|
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
tile_layer_b68aee685770afdb7f454cf948fb9b33.addTo(map_c17ce78bff49a7401eff2508c6dcc0c3);
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -78,7 +87,7 @@
|
||||||
}
|
}
|
||||||
trajeto_json_add({"features": []});
|
trajeto_json_add({"features": []});
|
||||||
|
|
||||||
trajeto_json.addTo(map_0c3554ee11c5591d304c0c6d4d52e50e);
|
trajeto_json.addTo(map_c17ce78bff49a7401eff2508c6dcc0c3);
|
||||||
|
|
||||||
function adicionarGeometria(novaGeometria) {
|
function adicionarGeometria(novaGeometria) {
|
||||||
trajeto_json.addData(novaGeometria);
|
trajeto_json.addData(novaGeometria);
|
||||||
|
|
@ -136,7 +145,7 @@
|
||||||
|
|
||||||
var marcadorDinamico = L.marker([0, 0], {
|
var marcadorDinamico = L.marker([0, 0], {
|
||||||
icon: customIcon
|
icon: customIcon
|
||||||
}).addTo(map_0c3554ee11c5591d304c0c6d4d52e50e);
|
}).addTo(map_c17ce78bff49a7401eff2508c6dcc0c3);
|
||||||
|
|
||||||
// Conectar ao broker MQTT
|
// Conectar ao broker MQTT
|
||||||
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
|
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
|
||||||
|
|
@ -174,7 +183,7 @@
|
||||||
marcadorDinamico.setRotationAngle(angulo);
|
marcadorDinamico.setRotationAngle(angulo);
|
||||||
|
|
||||||
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
||||||
map_0c3554ee11c5591d304c0c6d4d52e50e.setView(novaPosicao, map_0c3554ee11c5591d304c0c6d4d52e50e.getZoom());
|
map_c17ce78bff49a7401eff2508c6dcc0c3.setView(novaPosicao, map_c17ce78bff49a7401eff2508c6dcc0c3.getZoom());
|
||||||
});
|
});
|
||||||
|
|
||||||
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
|
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue