Compare commits
2 Commits
cdbcb8f1d7
...
f00ca573b8
| Author | SHA1 | Date |
|---|---|---|
|
|
f00ca573b8 | |
|
|
bd8069c545 |
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.
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.
|
|
@ -588,6 +588,7 @@
|
|||
<Compile Include="Services\EthernetService.cs" />
|
||||
<Compile Include="Services\FilaService.cs" />
|
||||
<Compile Include="Services\GPSService.cs" />
|
||||
<Compile Include="Services\HerbicideCounterService.cs" />
|
||||
<Compile Include="Services\IDispositivosService.cs" />
|
||||
<Compile Include="Services\IFirmwareSensorBase.cs" />
|
||||
<Compile Include="Services\KinectService.cs" />
|
||||
|
|
|
|||
|
|
@ -28,8 +28,6 @@ namespace AgroBase.Forms.Atuador
|
|||
PopularBicos();
|
||||
|
||||
nudPressaoSP.Value = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha);
|
||||
txtMMassaRef.Text = DispAtu.Dados._MassaRef.ToString();
|
||||
txtMLeituraRef.Text = DispAtu.Dados._MassaLeituraRef.ToString();
|
||||
txtPressaoVmin.Text = DispAtu.Dados._PressaoVmin.ToString();
|
||||
txtPressaoVmax.Text = DispAtu.Dados._PressaoVmax.ToString();
|
||||
txtMLRef.Text = DispAtu.Dados._FluxoMlRef.ToString();
|
||||
|
|
@ -145,9 +143,9 @@ namespace AgroBase.Forms.Atuador
|
|||
grdSensoriamento.Rows[4].Cells[1].Value = DispAtu.Dados.PressaoLinha.ToString("0.00000");
|
||||
grdSensoriamento.Rows[5].Cells[1].Value = DispAtu.Dados.PressaoLinhaCalc.ToString("0.00000");
|
||||
grdSensoriamento.Rows[6].Cells[1].Value = DispAtu.Dados.VazaoFluxoMLpSMedia.ToString("0.00000");
|
||||
grdSensoriamento.Rows[7].Cells[1].Value = DispAtu.Dados.MassaReservatorio.ToString("0.00000");
|
||||
grdSensoriamento.Rows[8].Cells[1].Value = DispAtu.Dados.VolumeReservatorio.ToString("0.00000");
|
||||
grdSensoriamento.Rows[9].Cells[1].Value = DispAtu.Dados.PercentualReservatorio.ToString("0.00");
|
||||
grdSensoriamento.Rows[7].Cells[1].Value = DispAtu.Dados.ContadorCarga.MassaAtual_Kg.ToString("0.00000");
|
||||
grdSensoriamento.Rows[8].Cells[1].Value = DispAtu.Dados.ContadorCarga.VolumeAtual_L.ToString("0.00000");
|
||||
grdSensoriamento.Rows[9].Cells[1].Value = DispAtu.Dados.ContadorCarga.PercentualAtual.ToString("0.00");
|
||||
}
|
||||
|
||||
private void nudPressaoSP_ValueChanged(object sender, EventArgs e)
|
||||
|
|
@ -207,8 +205,6 @@ namespace AgroBase.Forms.Atuador
|
|||
private void btnSalvar_Click(object sender, EventArgs e)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha = Convert.ToDouble(nudPressaoSP.Value);
|
||||
DispAtu.Dados._MassaRef = Convert.ToDouble(txtMMassaRef.Text);
|
||||
DispAtu.Dados._MassaLeituraRef = Convert.ToDouble(txtMLeituraRef.Text);
|
||||
DispAtu.Dados._PressaoVmin = Convert.ToDouble(txtPressaoVmin.Text);
|
||||
DispAtu.Dados._PressaoVmax = Convert.ToDouble(txtPressaoVmax.Text);
|
||||
DispAtu.Dados._FluxoMlRef = Convert.ToDouble(txtMLRef.Text);
|
||||
|
|
@ -278,7 +274,7 @@ namespace AgroBase.Forms.Atuador
|
|||
_CalibragemVazao = new CalibragemVazao()
|
||||
{
|
||||
Calibrando = true,
|
||||
MassaInicial = DispAtu.Dados.MassaReservatorio,
|
||||
MassaInicial = DispAtu.Dados.ContadorCarga.MassaAtual_Kg,
|
||||
PressoesAferidas = new List<double>()
|
||||
{
|
||||
DispAtu.Dados.PressaoLinha,
|
||||
|
|
|
|||
|
|
@ -468,7 +468,7 @@ namespace AgroBase.Forms.IHM
|
|||
double Pressao = PressaoInicializado ? Dispositivo.Dados.PressaoLinha : -1;
|
||||
idx = PreencheDadosLinha(grid, Testes, idx, Pressao);
|
||||
|
||||
double Massa = MassaInicializado ? Dispositivo.Dados.MassaReservatorio : -1;
|
||||
double Massa = MassaInicializado ? Dispositivo.Dados.ContadorCarga.MassaAtual_Kg : -1;
|
||||
idx = PreencheDadosLinha(grid, Testes, idx, Massa);
|
||||
|
||||
idx = PreencheDadosLinha(grid, Testes, idx, Pressao);
|
||||
|
|
|
|||
|
|
@ -180,13 +180,13 @@ namespace AgroBase.Forms.IHM
|
|||
txtTempoOperacao.Text = _Sensoriamento.TempoDecorrido.ToString("HH:mm:ss");
|
||||
txtLatenciaControle.Text = _Sensoriamento.Controle.Latencia.ToString();
|
||||
txtHerbicidaAplicado.Text = _Sensoriamento.Atuador.HerbicidaConsumido.ToString("0.000") + " L";
|
||||
txtBateriaConsumida.Text = _Sensoriamento.Bateria.BateriaConsumida.ToString("0.00") + " %";
|
||||
txtBateriaConsumida.Text = _Sensoriamento.Bateria.PercentualBateriaConsumida.ToString("0.00") + " %";
|
||||
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbReservatorio, _Sensoriamento.Atuador.PercentualReservatorio);
|
||||
lblReservatorio.Text = "Reservatório: " + _Sensoriamento.Atuador.VolumeReservatorio.ToString("0.00") + " l " + _Sensoriamento.Atuador.PercentualReservatorio.ToString("0.00") + "%";
|
||||
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbBateria, _Sensoriamento.Bateria.PorcentagemBateria);
|
||||
lblBateria.Text = "Bateria: " + _Sensoriamento.Bateria.TensaoInstantanea.ToString("0.00") + "v " + _Sensoriamento.Bateria.PorcentagemBateria.ToString("0.00") + "%";
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbBateria, _Sensoriamento.Bateria.PercentualBateria);
|
||||
lblBateria.Text = "Bateria: " + _Sensoriamento.Bateria.TensaoInstantanea.ToString("0.00") + "v " + _Sensoriamento.Bateria.PercentualBateria.ToString("0.00") + "%";
|
||||
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbOperacao, _Sensoriamento.Trajetoria.ProgressoTrajeto);
|
||||
lblOperacao.Text = "Operação: " + _Sensoriamento.Trajetoria.ProgressoTrajeto.ToString("0.00") + "%";
|
||||
|
|
|
|||
|
|
@ -466,7 +466,8 @@ namespace AgroBase.Forms.Operacoes
|
|||
gridDados.Rows.Add("Nível de Bateria", "", "%");
|
||||
gridDados.Rows.Add("Tensão da Bateria", "", "v");
|
||||
gridDados.Rows.Add("Corrente da Bateria", "", "A");
|
||||
gridDados.Rows.Add("Tempo Estimado Restante", "", "Min");
|
||||
gridDados.Rows.Add("Tempo Estimado Restante", "", "Hrs");
|
||||
gridDados.Rows.Add("Distancia Estimada Restante", "", "m");
|
||||
gridDados.Rows.Add("Barramento 3V", "", "V");
|
||||
gridDados.Rows.Add("Barramento 3V", "", "mA");
|
||||
gridDados.Rows.Add("Barramento 5V", "", "V");
|
||||
|
|
@ -481,6 +482,10 @@ namespace AgroBase.Forms.Operacoes
|
|||
gridDados.Rows.Add("Barramento 24V", "", "mA");
|
||||
gridDados.Rows.Add("Nível do Reservatório", "", "%");
|
||||
gridDados.Rows.Add("Volume do Reservatório", "", "L");
|
||||
gridDados.Rows.Add("Litro por Metro", "", "L");
|
||||
gridDados.Rows.Add("Litro por Minuto", "", "L");
|
||||
gridDados.Rows.Add("Tempo Estimado Restante", "", "Hrs");
|
||||
gridDados.Rows.Add("Distancia Estimada Restante", "", "m");
|
||||
gridDados.Rows.Add("Pressão da Linha", "", "psi");
|
||||
gridDados.Rows.Add("Potência na Bomba", "", "%");
|
||||
gridDados.Rows.Add("Vazão Instantanea", "", "mL/s");
|
||||
|
|
@ -509,52 +514,51 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
private void AtualizarInformacoesGerais()
|
||||
{
|
||||
var _SensoresCorrente = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.Where(x => x.Componente == S_Code.sCOR);
|
||||
var AB3V = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB3V");
|
||||
var AB5V = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB5V");
|
||||
var AB7V2 = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB7V2");
|
||||
var AB12V = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB12V");
|
||||
var AB19V = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB19V");
|
||||
var AB24V = _SensoresCorrente.FirstOrDefault(x => x.ID == "AB24V");
|
||||
var _Sensoriamento = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura;
|
||||
var _Barramentos = _Sensoriamento.Bateria.Barramentos;
|
||||
|
||||
gridDados.Rows[0].Cells[1].Value = _Sensoriamento.TempoDecorrido.ToString("HH:mm:ss");
|
||||
gridDados.Rows[1].Cells[1].Value = _Sensoriamento.Movimentacao.TempoMovimento.ToString("HH:mm:ss");
|
||||
gridDados.Rows[2].Cells[1].Value = (_Sensoriamento.Movimentacao.VelocidadeMedia * 3.6).ToString("0.00");
|
||||
gridDados.Rows[3].Cells[1].Value = _Sensoriamento.Trajetoria.DistanciaPercorrida.ToString("0.00");
|
||||
gridDados.Rows[4].Cells[1].Value = (_Sensoriamento.Bateria.PorcentagemBateria.ToString("00.00"));
|
||||
gridDados.Rows[4].Cells[1].Value = (_Sensoriamento.Bateria.PercentualBateria.ToString("0.00"));
|
||||
gridDados.Rows[5].Cells[1].Value = (_Sensoriamento.Bateria.TensaoInstantanea.ToString("0.00"));
|
||||
gridDados.Rows[6].Cells[1].Value = (_Sensoriamento.Bateria.CorrenteInstantanea.ToString("0.00"));
|
||||
gridDados.Rows[7].Cells[1].Value = (_Sensoriamento.Bateria.TempoEstimadoRestanteMinutos.ToString("0.00"));
|
||||
gridDados.Rows[8].Cells[1].Value = (AB3V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[9].Cells[1].Value = (AB3V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[10].Cells[1].Value = (AB5V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[11].Cells[1].Value = (AB5V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[12].Cells[1].Value = (AB7V2.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[13].Cells[1].Value = (AB7V2.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[14].Cells[1].Value = (AB12V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[15].Cells[1].Value = (AB12V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[16].Cells[1].Value = (AB19V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[17].Cells[1].Value = (AB19V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[18].Cells[1].Value = (AB24V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[19].Cells[1].Value = (AB24V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente).atual.valor ?? 0).ToString("0.00");
|
||||
gridDados.Rows[20].Cells[1].Value = _Sensoriamento.Atuador.PercentualReservatorio.ToString("00.00");
|
||||
gridDados.Rows[21].Cells[1].Value = _Sensoriamento.Atuador.VolumeReservatorio.ToString("0.000");
|
||||
gridDados.Rows[22].Cells[1].Value = _Sensoriamento.Atuador.PressaoLinha.ToString("0.00");
|
||||
gridDados.Rows[23].Cells[1].Value = _Sensoriamento.Atuador.LeituraPotenciaBomba.ToString("0.00");
|
||||
gridDados.Rows[24].Cells[1].Value = _Sensoriamento.Atuador.VazaoInstantanea.ToString("0.00");
|
||||
gridDados.Rows[25].Cells[1].Value = _Sensoriamento.Atuador.VazaoMedia.ToString("0.00");
|
||||
gridDados.Rows[26].Cells[1].Value = _Sensoriamento.Atuador.VolumeVazaoMl.ToString("0.00");
|
||||
gridDados.Rows[27].Cells[1].Value = _Sensoriamento.Atuador.AnguloBarraEsquerda.ToString("0.00");
|
||||
gridDados.Rows[28].Cells[1].Value = _Sensoriamento.Atuador.AnguloBarraDireita.ToString("0.00");
|
||||
gridDados.Rows[29].Cells[1].Value = _Sensoriamento.Atuador.AnguloBarraAltura.ToString("0.00");
|
||||
gridDados.Rows[30].Cells[1].Value = "";
|
||||
gridDados.Rows[31].Cells[1].Value = (_Sensoriamento.IMU.InclinacaoLateral).ToString("0.00");
|
||||
gridDados.Rows[32].Cells[1].Value = (_Sensoriamento.IMU.InclinacaoFrontal).ToString("0.00");
|
||||
gridDados.Rows[33].Cells[1].Value = (_Sensoriamento.IMU.Rotacao).ToString("0.00");
|
||||
gridDados.Rows[34].Cells[1].Value = (_Sensoriamento.IMU.Temperatura).ToString("0.00");
|
||||
gridDados.Rows[35].Cells[1].Value = (_Sensoriamento.IMU.Pressao).ToString("0.00");
|
||||
gridDados.Rows[36].Cells[1].Value = (_Sensoriamento.IMU.Altitude).ToString("0.00");
|
||||
gridDados.Rows[7].Cells[1].Value = TimeSpan.FromMinutes(_Sensoriamento.Bateria.TempoEstimadoRestanteMinutos).ToString(@"hh\:mm\:ss");
|
||||
gridDados.Rows[8].Cells[1].Value = (_Sensoriamento.Bateria.DistanciaEstimadaRestanteMetros.ToString("0.00"));
|
||||
gridDados.Rows[9].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB3V").Tensao).ToString("0.00");
|
||||
gridDados.Rows[10].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB3V").Corrente).ToString("0.00");
|
||||
gridDados.Rows[11].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB5V").Tensao).ToString("0.00");
|
||||
gridDados.Rows[12].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB5V").Corrente).ToString("0.00");
|
||||
gridDados.Rows[13].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB7V2").Tensao).ToString("0.00");
|
||||
gridDados.Rows[14].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB7V2").Corrente).ToString("0.00");
|
||||
gridDados.Rows[15].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB12V").Tensao).ToString("0.00");
|
||||
gridDados.Rows[16].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB12V").Corrente).ToString("0.00");
|
||||
gridDados.Rows[17].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB19V").Tensao).ToString("0.00");
|
||||
gridDados.Rows[18].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB19V").Corrente).ToString("0.00");
|
||||
gridDados.Rows[19].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB24V").Tensao).ToString("0.00");
|
||||
gridDados.Rows[20].Cells[1].Value = (_Barramentos.FirstOrDefault(x => x.ID == "AB24V").Corrente).ToString("0.00");
|
||||
gridDados.Rows[21].Cells[1].Value = _Sensoriamento.Atuador.PercentualReservatorio.ToString("0.00");
|
||||
gridDados.Rows[22].Cells[1].Value = _Sensoriamento.Atuador.VolumeReservatorio.ToString("0.000");
|
||||
gridDados.Rows[23].Cells[1].Value = _Sensoriamento.Atuador.LPorMetro.ToString("0.000");
|
||||
gridDados.Rows[24].Cells[1].Value = _Sensoriamento.Atuador.LPorMinuto.ToString("0.000");
|
||||
gridDados.Rows[25].Cells[1].Value = TimeSpan.FromMinutes(_Sensoriamento.Atuador.TempoEstimadoRestanteMinutos).ToString(@"hh\:mm\:ss");
|
||||
gridDados.Rows[26].Cells[1].Value = _Sensoriamento.Atuador.DistanciaEstimadaRestanteMetros.ToString("0.00");
|
||||
gridDados.Rows[27].Cells[1].Value = _Sensoriamento.Atuador.PressaoLinha.ToString("0.00");
|
||||
gridDados.Rows[28].Cells[1].Value = _Sensoriamento.Atuador.LeituraPotenciaBomba.ToString("0.00");
|
||||
gridDados.Rows[29].Cells[1].Value = _Sensoriamento.Atuador.VazaoInstantanea.ToString("0.00");
|
||||
gridDados.Rows[30].Cells[1].Value = _Sensoriamento.Atuador.VazaoMedia.ToString("0.00");
|
||||
gridDados.Rows[31].Cells[1].Value = _Sensoriamento.Atuador.VolumeVazaoMl.ToString("0.00");
|
||||
gridDados.Rows[32].Cells[1].Value = _Sensoriamento.Atuador.AnguloBarraEsquerda.ToString("0.00");
|
||||
gridDados.Rows[33].Cells[1].Value = _Sensoriamento.Atuador.AnguloBarraDireita.ToString("0.00");
|
||||
gridDados.Rows[34].Cells[1].Value = _Sensoriamento.Atuador.AnguloBarraAltura.ToString("0.00");
|
||||
gridDados.Rows[35].Cells[1].Value = "";
|
||||
gridDados.Rows[36].Cells[1].Value = (_Sensoriamento.IMU.InclinacaoLateral).ToString("0.00");
|
||||
gridDados.Rows[37].Cells[1].Value = (_Sensoriamento.IMU.InclinacaoFrontal).ToString("0.00");
|
||||
gridDados.Rows[38].Cells[1].Value = (_Sensoriamento.IMU.Rotacao).ToString("0.00");
|
||||
gridDados.Rows[39].Cells[1].Value = (_Sensoriamento.IMU.Temperatura).ToString("0.00");
|
||||
gridDados.Rows[40].Cells[1].Value = (_Sensoriamento.IMU.Pressao).ToString("0.00");
|
||||
gridDados.Rows[41].Cells[1].Value = (_Sensoriamento.IMU.Altitude).ToString("0.00");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -91,13 +91,13 @@ namespace AgroBase.Forms.Operacoes
|
|||
//lblErvasIdentificadas.Text = "Ervas Identificadas: " + _Sensoriamento.Atuador.QtdErvasIdentificadas.ToString("000");
|
||||
lblHerbicidaAplicado.Text = "Herbicida Aplicado: " + _Sensoriamento.Atuador.HerbicidaConsumido.ToString("0.000") + " L";
|
||||
lblHerbicidaPorErva.Text = "Herbicida por Erva: " + _Sensoriamento.Atuador.HerbicidaPorErva.ToString("0.000") + " mL";
|
||||
lblBateriaConsumida.Text = "Bateria Consumida: " + _Sensoriamento.Bateria.BateriaConsumida.ToString("0.00") + "%";
|
||||
lblBateriaConsumida.Text = "Bateria Consumida: " + _Sensoriamento.Bateria.PercentualBateriaConsumida.ToString("0.00") + "%";
|
||||
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbReservatorio, _Sensoriamento.Atuador.PercentualReservatorio);
|
||||
lblPorcentagemReservatorio.Text = _Sensoriamento.Atuador.VolumeReservatorio.ToString("0.000") + " L " + _Sensoriamento.Atuador.PercentualReservatorio.ToString("00.00") + "%";
|
||||
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbBateria, _Sensoriamento.Bateria.PorcentagemBateria);
|
||||
lblPorcentagemBateria.Text = _Sensoriamento.Bateria.TensaoInstantanea.ToString("0.00") + "v " + _Sensoriamento.Bateria.CorrenteInstantanea.ToString("0.00") + "A " + _Sensoriamento.Bateria.PorcentagemBateria.ToString("00.00") + "%";
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbBateria, _Sensoriamento.Bateria.PercentualBateria);
|
||||
lblPorcentagemBateria.Text = _Sensoriamento.Bateria.TensaoInstantanea.ToString("0.00") + "v " + _Sensoriamento.Bateria.CorrenteInstantanea.ToString("0.00") + "A " + _Sensoriamento.Bateria.PercentualBateria.ToString("00.00") + "%";
|
||||
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbProgresso, _Sensoriamento.Trajetoria.ProgressoTrajeto);
|
||||
lblPorcentagemProgresso.Text = _Sensoriamento.Trajetoria.ProgressoTrajeto.ToString("00.00") + "%";
|
||||
|
|
|
|||
|
|
@ -1125,14 +1125,14 @@ namespace AgroBase.Forms.Operacoes
|
|||
int totalAtuacoes = 0; // Log.Atuador.ErvasIdentificadas.Sum(dict => dict.Values.Sum());
|
||||
double herbicidaPorErva = Log.Atuador.HerbicidaPorErva != 0 ? Log.Atuador.HerbicidaPorErva : (herbicidaConsumido / (totalAtuacoes > 0 ? totalAtuacoes : 1));
|
||||
|
||||
lblPercentualBateria.Text = $"Bateria {Log.Bateria.PorcentagemBateria.ToString("0.00")}%";
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbPercentualBateria, Log.Bateria.PorcentagemBateria);
|
||||
lblBateriaConsumida.Text = $"Consumido {Log.Bateria.BateriaConsumida.ToString("0.00")}%";
|
||||
lblPercentualBateria.Text = $"Bateria {Log.Bateria.PercentualBateria.ToString("0.00")}%";
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbPercentualBateria, Log.Bateria.PercentualBateria);
|
||||
lblBateriaConsumida.Text = $"Consumido {Log.Bateria.PercentualBateriaConsumida.ToString("0.00")}%";
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbPercentualReservatorio, LogAtu.PercentualReservatorio);
|
||||
lblPercentualReservatorio.Text = $"Reservatório {LogAtu.PercentualReservatorio.ToString("0.00")}%";
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbHerbicidaConsumido, percentualHerbicidaConsumido);
|
||||
lblHerbicidaConsumido.Text = $"Consumido {herbicidaConsumido.ToString("0.00")} ml";
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbBateriaConsumida, Log.Bateria.BateriaConsumida);
|
||||
FuncoesGlobais.PreencheValorProgressBar(pgbBateriaConsumida, Log.Bateria.PercentualBateriaConsumida);
|
||||
txtTempoMovimento.Text = FuncoesGlobais.ConverterSegundosParaHHmmss((int)Log.Movimentacao.TempoMovimentoSegs);
|
||||
txtStatusOperacao.Text = Log.StatusOperacao.ToString();
|
||||
txtStatusCarro.Text = Log.Trajetoria.StatusCarro.ToString();
|
||||
|
|
|
|||
|
|
@ -25,19 +25,12 @@ namespace AgroBase.Models.Modules
|
|||
}
|
||||
}
|
||||
public bool RequisitarDados { get; set; } = true;
|
||||
public static int PingsConsiderarConexao { get; set; } = 5;
|
||||
public static int TempoLimiteConexao
|
||||
{
|
||||
get
|
||||
{
|
||||
return PingsConsiderarConexao * (Variaveis.OperacaoEmAndamento?.DispSen?._TaxaAmostragem ?? 1000);
|
||||
}
|
||||
}
|
||||
public static int TempoLimiteConexao { get; set; } = 8000;
|
||||
public bool Conectado
|
||||
{
|
||||
get
|
||||
{
|
||||
return DadosLeitura.UltimoComandoRespondido.AddMilliseconds(PingsConsiderarConexao * _TaxaAmostragem) > DateTime.Now;
|
||||
return DadosLeitura.Conectado;
|
||||
}
|
||||
}
|
||||
public bool ConexaoAtiva
|
||||
|
|
@ -97,32 +90,7 @@ namespace AgroBase.Models.Modules
|
|||
}
|
||||
}
|
||||
|
||||
#region MASSA
|
||||
public double _MassaRef { get; set; } = 0.8;
|
||||
public double _MassaLeituraRef { get; set; } = 40876.37;
|
||||
public double _MassaLeituraExtra { get; set; } = 1895800; // 2015000.0;
|
||||
public double MassaReservatorio
|
||||
{
|
||||
get
|
||||
{
|
||||
return Sensores.FirstOrDefault(x => x.Componente == S_Code.sMAS)?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Massa)?.atual?.valor ?? 0;
|
||||
}
|
||||
}
|
||||
public double VolumeReservatorio
|
||||
{
|
||||
get
|
||||
{
|
||||
return MassaReservatorio / DensidadeHerbicida;
|
||||
}
|
||||
}
|
||||
public double PercentualReservatorio
|
||||
{
|
||||
get
|
||||
{
|
||||
return VolumeReservatorio / (Variaveis.OperacaoEmAndamento.Parametros.CapacidadeReservatorio ?? VariaveisEquipamento.CapacidadeReservatorio) * 100.0;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
public HerbicideCounterService ContadorCarga = new HerbicideCounterService(VariaveisEquipamento.CapacidadeReservatorio, VariaveisEquipamento.DensidadeHerbicida);
|
||||
|
||||
#region VAZAO
|
||||
public double VolumeVazaoAferido { get; set; } = 0;
|
||||
|
|
@ -976,12 +944,12 @@ namespace AgroBase.Models.Modules
|
|||
bool leituraEstado = (bomba.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Potencia)?.atual?.valor ?? 0) > 0;
|
||||
|
||||
// Desliga a bomba caso esteja ligada e o nivel de herbicida caiu
|
||||
if (PercentualReservatorio < VariaveisEquipamento.PercentualReservatorioMin && leituraEstado == true)
|
||||
if (ContadorCarga.PercentualAtual < VariaveisEquipamento.PercentualReservatorioMin && leituraEstado == true)
|
||||
{
|
||||
bomba.ComandoAtuar = false;
|
||||
}
|
||||
// Religa a bomba caso esteja desligada, o nivel de herbicida esta estavel e o pulverizador automatico esta ligado
|
||||
else if (PercentualReservatorio >= VariaveisEquipamento.PercentualReservatorioMin && leituraEstado == false && Variaveis.OperacaoEmAndamento.Parametros.Controle.PulverizadorAutomatico)
|
||||
else if (ContadorCarga.PercentualAtual >= VariaveisEquipamento.PercentualReservatorioMin && leituraEstado == false && Variaveis.OperacaoEmAndamento.Parametros.Controle.PulverizadorAutomatico)
|
||||
{
|
||||
bomba.ComandoAtuar = true;
|
||||
}
|
||||
|
|
@ -1030,7 +998,7 @@ namespace AgroBase.Models.Modules
|
|||
calAtu[Bomba.ID] = false;
|
||||
|
||||
// Sem herbicida no reservatorio, bomba nao precisa ligar
|
||||
if (!Bomba.Inicializado || PercentualReservatorio < VariaveisEquipamento.PercentualReservatorioMin)
|
||||
if (!Bomba.Inicializado || ContadorCarga.PercentualAtual < VariaveisEquipamento.PercentualReservatorioMin)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,20 +28,12 @@ namespace AgroBase.Models.Modules
|
|||
}
|
||||
}
|
||||
public bool RequisitarDados { get; set; } = true;
|
||||
public static int PingsConsiderarConexao { get; set; } = 5;
|
||||
public static int TempoLimiteConexao
|
||||
{
|
||||
get
|
||||
{
|
||||
return PingsConsiderarConexao * (Variaveis.OperacaoEmAndamento?.DispSen?._TaxaAmostragem ?? 1000);
|
||||
}
|
||||
}
|
||||
public static int TempoLimiteConexao { get; set; } = 8000;
|
||||
public bool Conectado
|
||||
{
|
||||
get
|
||||
{
|
||||
//return DadosLeitura.UltimoComandoRespondido.AddMilliseconds(PingsConsiderarConexao * _TaxaAmostragem) > DateTime.Now;
|
||||
return DadosLeitura.UltimoComandoRespondido.AddMilliseconds(5000) > DateTime.Now;
|
||||
return DadosLeitura.Conectado;
|
||||
}
|
||||
}
|
||||
public bool ConexaoAtiva
|
||||
|
|
@ -2284,9 +2276,6 @@ namespace AgroBase.Models.Modules
|
|||
|
||||
private void AtualizaComponentesIniciados()
|
||||
{
|
||||
//AtualizarStatusComponentes();
|
||||
//return;
|
||||
|
||||
DateTime Agora = DateTime.Now;
|
||||
bool modConectado = DadosLeitura.UltimoComandoRespondido.AddMilliseconds(TempoLimiteConexao) > Agora;
|
||||
if (!modConectado && DadosLeitura.Conectado)
|
||||
|
|
|
|||
|
|
@ -111,7 +111,9 @@ namespace AgroBase.Models
|
|||
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)));
|
||||
string msg = mod.motivos.Any() ? string.Join("; ", mod.motivos) : $"{mod.status} ({mod.saude:0}%)";
|
||||
string msg2 = mod.condicoes_operacionais.Any() ? string.Join("; ", mod.condicoes_operacionais.Select(x => x.descricao)) : null;
|
||||
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.InserirLog(mod.modulo, mod.status, mod.saude, msg, condicoes: msg2);
|
||||
}
|
||||
if (mod.saude_individual.Any())
|
||||
{
|
||||
|
|
@ -120,7 +122,9 @@ namespace AgroBase.Models
|
|||
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);
|
||||
string msg = ind.motivos.Any() ? string.Join("; ", ind.motivos) : $"{ind.status} ({ind.saude:0}%)";
|
||||
string msg2 = ind.condicoes_operacionais.Any() ? string.Join("; ", ind.condicoes_operacionais.Select(x => x.descricao)) : null;
|
||||
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.InserirLog(mod.modulo, ind.status, ind.saude, msg, condicoes: msg2, id: ind.label);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1785,9 +1789,9 @@ namespace AgroBase.Models
|
|||
Inicializado = Variaveis.OperacaoEmAndamento.DispAtu.Dados.ConexaoAtiva,
|
||||
QualidadeWifi = Variaveis.OperacaoEmAndamento.DispAtu.Dados.DadosLeitura.QualidadeWifi,
|
||||
LatenciaLoop = Variaveis.OperacaoEmAndamento.DispAtu.Dados.DadosLeitura.LatenciaLoop,
|
||||
MassaReservatorio = Variaveis.OperacaoEmAndamento.DispAtu.Dados.MassaReservatorio,
|
||||
PercentualReservatorio = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio,
|
||||
VolumeReservatorio = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeReservatorio,
|
||||
MassaReservatorio = Variaveis.OperacaoEmAndamento.DispAtu.Dados.ContadorCarga.MassaAtual_Kg,
|
||||
PercentualReservatorio = Variaveis.OperacaoEmAndamento.DispAtu.Dados.ContadorCarga.PercentualAtual,
|
||||
VolumeReservatorio = Variaveis.OperacaoEmAndamento.DispAtu.Dados.ContadorCarga.VolumeAtual_L,
|
||||
PressaoLinha_SP = Variaveis.OperacaoEmAndamento.Parametros.Controle.AtuPressaoLinha,
|
||||
PressaoLinha = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha,
|
||||
PotenciaBomba = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombasPressurizadoras.FirstOrDefault()?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Potencia)?.atual?.valor ?? 0,
|
||||
|
|
@ -2310,19 +2314,15 @@ namespace AgroBase.Models
|
|||
var _DispAtu = Variaveis.OperacaoEmAndamento.DispAtu;
|
||||
var _DispSen = Variaveis.OperacaoEmAndamento.DispSen;
|
||||
var _Controle = Variaveis.OperacaoEmAndamento.Controle;
|
||||
var _Bateria = _DispSen?.Dados?.ContadorCarga;
|
||||
var _Reservatorio = _DispAtu?.Dados?.ContadorCarga;
|
||||
|
||||
Variaveis.OperacaoEmAndamento.DadosPerformance.AtualizarDadosPerformance();
|
||||
|
||||
MovimentacaoMovimentoCompensadoModel.AtualizarDados();
|
||||
Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.AtualizarDadosFreio();
|
||||
|
||||
// Soma total de atuações para todas as ervas de todos os bicos
|
||||
int totalAtuacoes = 0;
|
||||
|
||||
// Evitar divisão por zero
|
||||
double HerbicidaPorErva = totalAtuacoes > 0
|
||||
? _DispAtu.Dados.VolumeVazaoML / totalAtuacoes
|
||||
: 0.0;
|
||||
_DispMvd?.Dados?.AtualizarDadosFreio();
|
||||
_Bateria?.AtualizarConsumo(_DispMvd?.Dados?.DistanciaPercorridaTotal ?? 0);
|
||||
_Reservatorio?.AtualizarConsumo(_DispMvd?.Dados?.DistanciaPercorridaTotal ?? 0, Variaveis.OperacaoEmAndamento.TempoDecorridoSegs);
|
||||
|
||||
var sIMU = LivoxManagerProcess.DadosLeitura.imu;
|
||||
var dadosIMU = sIMU != null ? new OperacaoSensoriamentoLogImuModel()
|
||||
|
|
@ -2340,11 +2340,11 @@ namespace AgroBase.Models
|
|||
CapacidadeReservatorio = VariaveisEquipamento.CapacidadeReservatorio,
|
||||
HerbicidaConsumido = _DispAtu.Dados.VolumeVazaoML,
|
||||
PercentualErvasTerreno = _DispAtu.Dados.PercentualErvasTerreno,
|
||||
HerbicidaPorErva = HerbicidaPorErva,
|
||||
HerbicidaPorErva = _Reservatorio.HerbicidaPorAtuacao,
|
||||
ErvasNoRadar = WeedWorkerService.DadosLeitura?.Analise?.ervas_no_radar ?? false,
|
||||
PercentualErvasNoRadar = WeedWorkerService.DadosLeitura?.Analise?.estatisticas?.erva?.ema_global ?? 0,
|
||||
PercentualReservatorio = FuncoesMatematicas.Clamp(_DispAtu.Dados.PercentualReservatorio, 0, 100),
|
||||
VolumeReservatorio = _DispAtu.Dados.VolumeReservatorio,
|
||||
PercentualReservatorio = _Reservatorio.PercentualAtual,
|
||||
VolumeReservatorio = _Reservatorio.VolumeAtual_L,
|
||||
PressaoLinha = _DispAtu.Dados.PressaoLinha,
|
||||
VazaoInstantanea = _DispAtu.Dados.VazaoFluxoMLpSInstantanea,
|
||||
VazaoMedia = _DispAtu.Dados.VazaoFluxoMLpSMedia,
|
||||
|
|
@ -2357,7 +2357,11 @@ namespace AgroBase.Models
|
|||
AnguloBarraEsquerda = _DispAtu.Dados.AnguloBarraEsquerda,
|
||||
AnguloBarraDireita = _DispAtu.Dados.AnguloBarraDireita,
|
||||
AnguloBarraAltura = _DispAtu.Dados.AnguloBarraAltura,
|
||||
UltimoComandoRespondido = _DispAtu.Dados.DadosLeitura?.UltimoComandoRespondido ?? DateTime.MinValue
|
||||
UltimoComandoRespondido = _DispAtu.Dados.DadosLeitura?.UltimoComandoRespondido ?? DateTime.MinValue,
|
||||
LPorMetro = _Reservatorio.LPorMetro,
|
||||
LPorMinuto = _Reservatorio.LPorMinuto,
|
||||
TempoEstimadoRestanteMinutos = _Reservatorio.TempoEstimadoMinutosPulverizando,
|
||||
DistanciaEstimadaRestanteMetros = _Reservatorio.DistanciaEstimadaRestantePulverizando_m,
|
||||
} : new OperacaoSensoriamentoLogAtuModel();
|
||||
|
||||
var dadosMovimentacao = _DispMvd != null ? new OperacaoSensoriamentoLogMovModel()
|
||||
|
|
@ -2410,18 +2414,19 @@ namespace AgroBase.Models
|
|||
}).ToList()
|
||||
} : new OperacaoSensoriamentoLogDirModel();
|
||||
|
||||
var S36V = _DispSen?.Dados?.Sensores?.FirstOrDefault(x => x.ID == "AB36V");
|
||||
var dadosBateria = S36V != null ? new OperacaoSensoriamentoLogBateriaModel()
|
||||
var dadosBateria = _Bateria != null ? new OperacaoSensoriamentoLogBateriaModel()
|
||||
{
|
||||
Iniciado = S36V.Inicializado,
|
||||
_dt = S36V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.dt ?? 0,
|
||||
PorcentagemBateria = FuncoesMatematicas.Clamp(_DispSen.Dados.ContadorCarga.PercentualBateria, 0, 100),
|
||||
BateriaConsumida = FuncoesMatematicas.Clamp(_DispSen.Dados.ContadorCarga.PercentualConsumido, 0, 100),
|
||||
TempoEstimadoRestanteMinutos = _DispSen.Dados.ContadorCarga.TempoEstimadoMinutos,
|
||||
CorrenteInstantanea = (S36V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.valor ?? 0) / 1000.0,
|
||||
TensaoInstantanea = S36V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao)?.atual?.valor ?? 0,
|
||||
PotenciaInstantanea = S36V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Potencia)?.atual?.valor ?? 0,
|
||||
PotenciaAcumulada = S36V.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Temperatura)?.atual?.valor ?? 0,
|
||||
Iniciado = _Bateria.Iniciado,
|
||||
_dt = _Bateria._dt,
|
||||
PercentualBateria = _Bateria.PercentualBateria,
|
||||
PercentualBateriaConsumida = _Bateria.PercentualConsumido,
|
||||
TempoEstimadoRestanteMinutos = _Bateria.TempoEstimadoMinutos,
|
||||
CorrenteInstantanea = _Bateria.CorrenteInstantanea,
|
||||
TensaoInstantanea = _Bateria.TensaoInstantanea,
|
||||
PotenciaInstantanea = _Bateria.PotenciaInstantanea,
|
||||
EnergiaConsumida_Wh = _Bateria.EnergiaConsumida_Wh,
|
||||
WhPorMetro = _Bateria.WhPorMetro,
|
||||
DistanciaEstimadaRestanteMetros = _Bateria.DistanciaEstimadaRestante_m,
|
||||
Barramentos = _DispSen?.Dados?.Sensores?.Where(x => x.Componente == S_Code.sCOR)?.Select(x => new OperacaoSensoriamentoLogBateriaBarramentoModel()
|
||||
{
|
||||
ID = x.ID,
|
||||
|
|
@ -2529,7 +2534,6 @@ namespace AgroBase.Models
|
|||
};
|
||||
|
||||
Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura = dadosAtualizados;
|
||||
Variaveis.OperacaoEmAndamento.DispSen?.Dados?.ContadorCarga?.AtualizarConsumo();
|
||||
}
|
||||
|
||||
public OperacaoSensoriamentoLogModel Clone(bool comSonar = false)
|
||||
|
|
@ -2631,6 +2635,10 @@ namespace AgroBase.Models
|
|||
public double AnguloBarraEsquerda { get; set; }
|
||||
public double AnguloBarraDireita { get; set; }
|
||||
public double AnguloBarraAltura { get; set; }
|
||||
public double LPorMetro { get; set; }
|
||||
public double LPorMinuto { get; set; }
|
||||
public double TempoEstimadoRestanteMinutos { get; set; }
|
||||
public double DistanciaEstimadaRestanteMetros { get; set; }
|
||||
public Dictionary<string, bool> Iniciados { get; set; }
|
||||
public DateTime UltimoComandoRespondido { get; set; }
|
||||
|
||||
|
|
@ -2659,7 +2667,11 @@ namespace AgroBase.Models
|
|||
AnguloBarraDireita = AnguloBarraDireita,
|
||||
AnguloBarraAltura = AnguloBarraAltura,
|
||||
Iniciados = new Dictionary<string, bool>(Iniciados ?? new Dictionary<string, bool>()),
|
||||
UltimoComandoRespondido = UltimoComandoRespondido
|
||||
UltimoComandoRespondido = UltimoComandoRespondido,
|
||||
LPorMetro = LPorMetro,
|
||||
LPorMinuto = LPorMinuto,
|
||||
TempoEstimadoRestanteMinutos = TempoEstimadoRestanteMinutos,
|
||||
DistanciaEstimadaRestanteMetros = DistanciaEstimadaRestanteMetros
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
@ -2737,27 +2749,32 @@ namespace AgroBase.Models
|
|||
{
|
||||
public bool Iniciado { get; set; }
|
||||
public double _dt { get; set; }
|
||||
public double PorcentagemBateria { get; set; }
|
||||
public double BateriaConsumida { get; set; }
|
||||
public double PercentualBateria { get; set; }
|
||||
public double PercentualBateriaConsumida { get; set; }
|
||||
public double CorrenteInstantanea { get; set; }
|
||||
public double TensaoInstantanea { get; set; }
|
||||
public double PotenciaInstantanea { get; set; }
|
||||
public double PotenciaAcumulada { get; set; }
|
||||
public double EnergiaConsumida_Wh { get; set; }
|
||||
public double WhPorMetro { get; set; }
|
||||
public double TempoEstimadoRestanteMinutos { get; set; }
|
||||
public double DistanciaEstimadaRestanteMetros { get; set; }
|
||||
public List<OperacaoSensoriamentoLogBateriaBarramentoModel> Barramentos { get; set; }
|
||||
|
||||
public OperacaoSensoriamentoLogBateriaModel Clone()
|
||||
{
|
||||
return new OperacaoSensoriamentoLogBateriaModel()
|
||||
{
|
||||
Iniciado = Iniciado,
|
||||
_dt = _dt,
|
||||
BateriaConsumida = BateriaConsumida,
|
||||
PorcentagemBateria = PorcentagemBateria,
|
||||
PercentualBateriaConsumida = PercentualBateriaConsumida,
|
||||
PercentualBateria = PercentualBateria,
|
||||
CorrenteInstantanea = CorrenteInstantanea,
|
||||
TensaoInstantanea = TensaoInstantanea,
|
||||
PotenciaInstantanea = PotenciaInstantanea,
|
||||
PotenciaAcumulada = PotenciaAcumulada,
|
||||
EnergiaConsumida_Wh = EnergiaConsumida_Wh,
|
||||
WhPorMetro = WhPorMetro,
|
||||
TempoEstimadoRestanteMinutos = TempoEstimadoRestanteMinutos,
|
||||
DistanciaEstimadaRestanteMetros = DistanciaEstimadaRestanteMetros,
|
||||
Barramentos = new List<OperacaoSensoriamentoLogBateriaBarramentoModel>(Barramentos ?? new List<OperacaoSensoriamentoLogBateriaBarramentoModel>())
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -232,6 +232,7 @@ namespace AgroBase.Models
|
|||
public static double AlturaBarraPulverizadoraCm { get; set; } = 80;
|
||||
public static double ComprimentoBarraPulverizadoraCm { get; set; } = 103.7;
|
||||
public static double DistanciaEntreBicosCm { get; set; } = 50;
|
||||
public static double DensidadeHerbicida { get; set; } = 1.0;
|
||||
public static double CapacidadeReservatorio { get; set; } = 30;
|
||||
public static double ReducaoDirecional { get; set; } = 20.0;
|
||||
public static int RPM_Min_Roda { get; set; } = 15;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using AgroBase.Models;
|
||||
using Emgu.CV.Structure;
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
|
|
@ -591,7 +590,7 @@ namespace AgroBase.Services
|
|||
return;
|
||||
}
|
||||
|
||||
if (IsConnected && (((Agora - _ultimoTx).TotalSeconds > 2 && (Agora - _ultimoRx).TotalSeconds > 2) || _precisaReabrir))
|
||||
if (IsConnected && ((((Agora - _ultimoTx).TotalSeconds > 1 && (Agora - _ultimoRx).TotalSeconds > 1) || (Agora - _ultimoRx).TotalSeconds > 5) || _precisaReabrir))
|
||||
{
|
||||
ErrosCriticos++;
|
||||
_ultimoErroCritico = Agora;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using AgroBase.Models;
|
||||
using AgroBase.Models.Modules;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
|
@ -17,12 +18,19 @@ namespace AgroBase.Services
|
|||
CargaAtual = CargaMaxima - Consumido;
|
||||
//double consumoW = (Variaveis.OperacaoEmAndamento.DispSen?.Dados?.BateriaCargaConsumidaWatts ?? 0);
|
||||
//ConsumidoWatts = consumoW;
|
||||
|
||||
// Autonomia
|
||||
MargemSegurancaAutonomia = 0.30; // 30% de margem padrão
|
||||
EnergiaConsumida_Wh = 0;
|
||||
_energiaConsumidaAnterior_Wh = 0;
|
||||
_distanciaTotalMetrosAnterior = 0;
|
||||
}
|
||||
|
||||
public double TempoEstimadoMinutos { get; private set; }
|
||||
private const int BufferSize = 30; // últimos 3 segundos se chamada a cada 100ms
|
||||
private readonly Queue<double> _historicoCorrente = new Queue<double>();
|
||||
|
||||
public bool Iniciado { get; private set; }
|
||||
private double CargaMaxima { get; set; }
|
||||
private double CargaAtual { get; set; }
|
||||
public double CargaAtualAmp
|
||||
|
|
@ -58,49 +66,88 @@ namespace AgroBase.Services
|
|||
{
|
||||
get
|
||||
{
|
||||
return (Consumido / CargaMaxima) * 100;
|
||||
double calc = (Consumido / CargaMaxima) * 100;
|
||||
calc = FuncoesMatematicas.Clamp(calc, 0, 100);
|
||||
return calc;
|
||||
}
|
||||
}
|
||||
public double PercentualBateria { get; private set; }
|
||||
public double ConsumidoWatts { get; set; }
|
||||
|
||||
public void AtualizarConsumo()
|
||||
public double EnergiaConsumida_Wh { get; set; }
|
||||
public double _dt { get; private set; }
|
||||
public double CorrenteInstantanea { get; private set; }
|
||||
public double TensaoInstantanea { get; private set; }
|
||||
public double PotenciaInstantanea { get; private set; }
|
||||
public double WhRestante
|
||||
{
|
||||
var Bateria = Variaveis.OperacaoEmAndamento.Parametros.DadosLeitura.Bateria;
|
||||
|
||||
if (!Bateria.Iniciado)
|
||||
get
|
||||
{
|
||||
return;
|
||||
// Exemplo: usar uma tensão nominal do pack
|
||||
double tensaoNominal = VariaveisEquipamento.TensaoMaximaBateria;
|
||||
return CargaAtualAmp * tensaoNominal; // Ah * V = Wh
|
||||
}
|
||||
}
|
||||
|
||||
PercentualBateria = Math.Round(FuncoesMatematicas.Map(Bateria.TensaoInstantanea, VariaveisEquipamento.TensaoMinimaBateria, VariaveisEquipamento.TensaoMaximaBateria, 0.0, 100.0), 2);
|
||||
public double WhPorMetro { get; private set; }
|
||||
public double DistanciaMaximaTeorica_m { get; private set; }
|
||||
public double DistanciaMaximaSegura_m { get; private set; }
|
||||
public double DistanciaEstimadaRestante_m { get; private set; }
|
||||
public double MargemSegurancaAutonomia { get; set; }
|
||||
private const double JanelaAutonomia_m = 50.0; // metros analisados na média
|
||||
private readonly Queue<double> _historicoDeltaDist_m = new Queue<double>();
|
||||
private readonly Queue<double> _historicoDeltaWh = new Queue<double>();
|
||||
private double _somaDistanciaJanela_m;
|
||||
private double _somaEnergiaJanela_Wh;
|
||||
private double _distanciaTotalMetrosAnterior;
|
||||
private double _energiaConsumidaAnterior_Wh;
|
||||
|
||||
|
||||
public void AtualizarConsumo(double distanciaTotalMetrosAtual)
|
||||
{
|
||||
var Sensor = Variaveis.OperacaoEmAndamento.DispSen?.Dados?.Sensores?.FirstOrDefault(x => x.ID == "AB36V");
|
||||
|
||||
Iniciado = Sensor?.Inicializado ?? false;
|
||||
|
||||
if (!Iniciado)
|
||||
return;
|
||||
|
||||
_dt = Sensor.ValoresLeituras.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.dt ?? 0;
|
||||
TensaoInstantanea = Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Tensao)?.atual?.valor ?? 0;
|
||||
CorrenteInstantanea = (Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Corrente)?.atual?.valor ?? 0) / 1000.0;
|
||||
PotenciaInstantanea = Sensor.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Potencia)?.atual?.valor ?? 0;
|
||||
|
||||
PercentualBateria = Math.Round(FuncoesMatematicas.Map(TensaoInstantanea, VariaveisEquipamento.TensaoMinimaBateria, VariaveisEquipamento.TensaoMaximaBateria, 0.0, 100.0), 2);
|
||||
PercentualBateria = FuncoesMatematicas.Clamp(PercentualBateria, 0, 100);
|
||||
|
||||
// Verifique se as datas são válidas (não MinValue, MaxValue ou valores anômalos)
|
||||
if (Bateria._dt == 0 || Bateria._dt > 10)
|
||||
if (_dt == 0 || _dt > 10)
|
||||
{
|
||||
Console.WriteLine("Erro: Leitura inválida detectada.");
|
||||
Console.WriteLine("[COULOMB COUNTER] Leitura inválida detectada.");
|
||||
return;
|
||||
}
|
||||
|
||||
// Calcule os coulombs e atualize os valores
|
||||
double coulombsLeitura = Bateria.CorrenteInstantanea * Bateria._dt;
|
||||
// --- COULOMB COUNTING (igual ao que já tinha, só com pequenos cuidados) ---
|
||||
double deltaCoulombs = CorrenteInstantanea * _dt; // A * s
|
||||
|
||||
Consumido += coulombsLeitura;
|
||||
CargaAtual -= coulombsLeitura;
|
||||
Consumido += deltaCoulombs;
|
||||
if (Consumido < 0) Consumido = 0;
|
||||
if (Consumido > CargaMaxima) Consumido = CargaMaxima;
|
||||
|
||||
ConsumidoWatts += Bateria.PotenciaAcumulada - ConsumidoWatts;
|
||||
CargaAtual = CargaMaxima - Consumido;
|
||||
|
||||
// Armazena a corrente instantânea
|
||||
_historicoCorrente.Enqueue(Bateria.CorrenteInstantanea);
|
||||
// --- ENERGIA ACUMULADA (Wh) ---
|
||||
double potenciaInst_W = TensaoInstantanea * CorrenteInstantanea; // W
|
||||
double deltaEnergia_Wh = potenciaInst_W * _dt / 3600.0; // Wh
|
||||
|
||||
EnergiaConsumida_Wh += deltaEnergia_Wh;
|
||||
|
||||
// --- HISTÓRICO P/ TEMPO ESTIMADO ---
|
||||
_historicoCorrente.Enqueue(CorrenteInstantanea);
|
||||
if (_historicoCorrente.Count > BufferSize)
|
||||
_historicoCorrente.Dequeue();
|
||||
|
||||
// Calcular corrente média (em A)
|
||||
double correnteMedia = _historicoCorrente.Average();
|
||||
|
||||
// Verifica se a tensão está acima da mínima
|
||||
if (Bateria.TensaoInstantanea > VariaveisEquipamento.TensaoMinimaBateria && correnteMedia > 0)
|
||||
if (TensaoInstantanea > VariaveisEquipamento.TensaoMinimaBateria && correnteMedia > 0)
|
||||
{
|
||||
TempoEstimadoMinutos = (CargaAtualAmp / correnteMedia) * 60;
|
||||
}
|
||||
|
|
@ -108,12 +155,104 @@ namespace AgroBase.Services
|
|||
{
|
||||
TempoEstimadoMinutos = 0;
|
||||
}
|
||||
|
||||
AtualizarAutonomia(distanciaTotalMetrosAtual);
|
||||
}
|
||||
|
||||
public void AtualizarValorConsumido(double _consumo_Amp)
|
||||
/// <summary>
|
||||
/// Atualiza os cálculos de autonomia em função da distância total percorrida.
|
||||
///
|
||||
/// IMPORTANTE:
|
||||
/// - distanciaTotalMetrosAtual deve ser o "total rodado" acumulado em metros (odometria / MPC / motores).
|
||||
/// - Aqui dentro calculamos o delta de distância e o delta de energia desde a última chamada.
|
||||
/// </summary>
|
||||
/// <param name="distanciaTotalMetrosAtual">Distância total percorrida até o momento (em metros).</param>
|
||||
private void AtualizarAutonomia(double distanciaTotalMetrosAtual)
|
||||
{
|
||||
double coulombsConsumidos = _consumo_Amp * 3600;
|
||||
Consumido = coulombsConsumidos;
|
||||
if (!Iniciado)
|
||||
return;
|
||||
|
||||
// Cálculo dos deltas
|
||||
double deltaDist_m = distanciaTotalMetrosAtual - _distanciaTotalMetrosAnterior;
|
||||
double deltaWh = EnergiaConsumida_Wh - _energiaConsumidaAnterior_Wh;
|
||||
|
||||
// Atualiza referências para próxima chamada
|
||||
_distanciaTotalMetrosAnterior = distanciaTotalMetrosAtual;
|
||||
_energiaConsumidaAnterior_Wh = EnergiaConsumida_Wh;
|
||||
|
||||
// Ignora leituras inválidas ou regressões
|
||||
if (deltaDist_m <= 0 || deltaWh < 0)
|
||||
return;
|
||||
|
||||
// Alimenta a janela móvel
|
||||
_historicoDeltaDist_m.Enqueue(deltaDist_m);
|
||||
_historicoDeltaWh.Enqueue(deltaWh);
|
||||
|
||||
_somaDistanciaJanela_m += deltaDist_m;
|
||||
_somaEnergiaJanela_Wh += deltaWh;
|
||||
|
||||
// Mantém a janela com no máximo JanelaAutonomia_m metros
|
||||
while (_somaDistanciaJanela_m > JanelaAutonomia_m && _historicoDeltaDist_m.Count > 0)
|
||||
{
|
||||
double dOld = _historicoDeltaDist_m.Dequeue();
|
||||
double whOld = _historicoDeltaWh.Dequeue();
|
||||
|
||||
_somaDistanciaJanela_m -= dOld;
|
||||
_somaEnergiaJanela_Wh -= whOld;
|
||||
}
|
||||
|
||||
// Calcula Wh/m médio da janela
|
||||
if (_somaDistanciaJanela_m > 0 && _somaEnergiaJanela_Wh > 0)
|
||||
{
|
||||
WhPorMetro = _somaEnergiaJanela_Wh / _somaDistanciaJanela_m;
|
||||
}
|
||||
else
|
||||
{
|
||||
WhPorMetro = 0;
|
||||
}
|
||||
|
||||
// Calcula distâncias máxima teórica e segura
|
||||
if (WhPorMetro > 0 && WhRestante > 0)
|
||||
{
|
||||
DistanciaMaximaTeorica_m = WhRestante / WhPorMetro;
|
||||
|
||||
double margem = FuncoesMatematicas.Clamp(MargemSegurancaAutonomia, 0.0, 0.9);
|
||||
DistanciaMaximaSegura_m = DistanciaMaximaTeorica_m * (1.0 - margem);
|
||||
if (DistanciaMaximaSegura_m < 0)
|
||||
DistanciaMaximaSegura_m = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
DistanciaMaximaTeorica_m = 0;
|
||||
DistanciaMaximaSegura_m = 0;
|
||||
}
|
||||
|
||||
// Distância estimada restante = distância segura
|
||||
DistanciaEstimadaRestante_m = DistanciaMaximaSegura_m;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Permite restaurar o valor consumido (em Ah) de um log salvo, por exemplo.
|
||||
/// Atualiza também CargaAtual.
|
||||
/// </summary>
|
||||
public void AtualizarValorConsumido(double _consumo_Ah)
|
||||
{
|
||||
double coulombsConsumidos = _consumo_Ah * 3600;
|
||||
Consumido = FuncoesMatematicas.Clamp(coulombsConsumidos, 0, CargaMaxima);
|
||||
CargaAtual = CargaMaxima - Consumido;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper para o Manager/Health: indica se, com a situação atual,
|
||||
/// o robô consegue percorrer uma certa distância em metros.
|
||||
/// </summary>
|
||||
public bool ConseguePercorrer(double distanciaRequerida_m)
|
||||
{
|
||||
if (distanciaRequerida_m <= 0)
|
||||
return true;
|
||||
|
||||
return DistanciaMaximaSegura_m >= distanciaRequerida_m;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,325 @@
|
|||
using AgroBase.Models;
|
||||
using AgroBase.Models.Modules;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using static AgroBase.Models.Enums;
|
||||
|
||||
namespace AgroBase.Services
|
||||
{
|
||||
public class HerbicideCounterService
|
||||
{
|
||||
public HerbicideCounterService(double capacidadeLitros, double densidadeProduto)
|
||||
{
|
||||
CapacidadeLitros = capacidadeLitros;
|
||||
VolumeAtual_L = 0;
|
||||
VolumeConsumido_L = 0;
|
||||
DensidadeProduto = densidadeProduto;
|
||||
|
||||
MargemSegurancaAutonomia = 0.30; // 30% por padrão
|
||||
}
|
||||
|
||||
public bool Iniciado { get; private set; }
|
||||
|
||||
// ---------- CONFIGURAÇÕES / ESTADO BÁSICO ----------
|
||||
|
||||
/// <summary>
|
||||
/// Capacidade máxima do reservatório em litros.
|
||||
/// </summary>
|
||||
public double CapacidadeLitros { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Densidade do produto.
|
||||
/// </summary>
|
||||
public double DensidadeProduto { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Massa atual lida no reservatório (Kg).
|
||||
/// </summary>
|
||||
public double MassaAtual_Kg { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Volume atual estimado no reservatório (L).
|
||||
/// </summary>
|
||||
public double VolumeAtual_L { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Volume total consumido desde o início (L).
|
||||
/// </summary>
|
||||
public double VolumeConsumido_L { get; private set; }
|
||||
|
||||
public double PercentualAtual
|
||||
{
|
||||
get
|
||||
{
|
||||
if (CapacidadeLitros <= 0) return 0;
|
||||
var p = (VolumeAtual_L / CapacidadeLitros) * 100.0;
|
||||
return FuncoesMatematicas.Clamp(p, 0, 100);
|
||||
}
|
||||
}
|
||||
|
||||
public double PercentualConsumido
|
||||
{
|
||||
get
|
||||
{
|
||||
return 100.0 - PercentualAtual;
|
||||
}
|
||||
}
|
||||
|
||||
public double HerbicidaPorAtuacao { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Margem de segurança para estimativa (0.30 = 30%).
|
||||
/// </summary>
|
||||
public double MargemSegurancaAutonomia { get; set; }
|
||||
|
||||
// ---------- AUTONOMIA EM METROS (L/m) ----------
|
||||
|
||||
/// <summary>
|
||||
/// Consumo médio de herbicida por metro pulverizado (L/m),
|
||||
/// calculado numa janela móvel de distância.
|
||||
/// </summary>
|
||||
public double LPorMetro { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Distância máxima teórica que ainda pode ser pulverizada (sem margem), em metros.
|
||||
/// </summary>
|
||||
public double DistanciaMaximaTeorica_m { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Distância máxima segura que ainda pode ser pulverizada (com margem), em metros.
|
||||
/// </summary>
|
||||
public double DistanciaMaximaSegura_m { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Alias mais descritivo para uso direto pelo Manager.
|
||||
/// </summary>
|
||||
public double DistanciaEstimadaRestantePulverizando_m => DistanciaMaximaSegura_m;
|
||||
|
||||
// ---------- AUTONOMIA EM TEMPO (L/min) ----------
|
||||
|
||||
/// <summary>
|
||||
/// Consumo médio de herbicida por minuto (L/min) durante pulverização.
|
||||
/// </summary>
|
||||
public double LPorMinuto { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Tempo estimado restante pulverizando, em minutos.
|
||||
/// </summary>
|
||||
public double TempoEstimadoMinutosPulverizando { get; private set; }
|
||||
|
||||
// ---------- JANELAS DE MÉDIA MÓVEL ----------
|
||||
|
||||
// Distância: vamos usar uma janela de ~50 m (mesma ideia da bateria)
|
||||
private const double JanelaAutonomia_m = 50.0;
|
||||
|
||||
// Tempo: janela de ~60 s pulverizando
|
||||
private const double JanelaTempo_s = 60.0;
|
||||
|
||||
private readonly Queue<(double deltaDist_m, double deltaVol_L)> _janelaDist = new Queue<(double deltaDist_m, double deltaVol_L)>();
|
||||
private readonly Queue<(double deltaTempo_s, double deltaVol_L)> _janelaTempo = new Queue<(double deltaTempo_s, double deltaVol_L)>();
|
||||
|
||||
private double _somaDistanciaJanela_m;
|
||||
private double _somaVolumeDistJanela_L;
|
||||
|
||||
private double _somaTempoJanela_s;
|
||||
private double _somaVolumeTempoJanela_L;
|
||||
|
||||
// Valores anteriores para cálculo de deltas
|
||||
private double _volumeAnterior_L;
|
||||
private double _distanciaTotalAnterior_m;
|
||||
private double _tempoTotalAnterior_s;
|
||||
|
||||
private bool _inicializado;
|
||||
|
||||
/// <summary>
|
||||
/// Atualiza o estado do sistema de herbicida.
|
||||
///
|
||||
/// Chamar periodicamente com:
|
||||
/// - volumeMedido_L: leitura de nível atual do reservatório (L)
|
||||
/// - pulverizando: true se algum bico está ativo
|
||||
/// - distanciaTotalMetrosAtual: distância total acumulada (m)
|
||||
/// - tempoTotalSegundosAtual: tempo total de operação (s)
|
||||
/// </summary>
|
||||
public void AtualizarConsumo(double distanciaTotalMetrosAtual, double tempoTotalSegundosAtual)
|
||||
{
|
||||
var Sensor = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.Sensores?.FirstOrDefault(x => x.Componente == S_Code.sMAS && x.ID == "MASRS");
|
||||
|
||||
Iniciado = Sensor?.Inicializado ?? false;
|
||||
|
||||
if (!Iniciado)
|
||||
return;
|
||||
|
||||
bool pulverizando = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.BicosPulverizadores?.Any(x => x.Inicializado && (x.ValoresLeituras?.Any(y => y.funcao == FuncoesPinout.EstadoLeitura && y.atual?.valor == Estado.Ligado) ?? false)) ?? false;
|
||||
double massaLida_Kg = Sensor?.ValoresLeituras?.FirstOrDefault(x => x.funcao == FuncoesPinout.Massa)?.atual?.valor ?? 0;
|
||||
double volumeMedido_L = massaLida_Kg / DensidadeProduto;
|
||||
int qtd_atuacoes = Variaveis.OperacaoEmAndamento.Controle?.BicosAtuados?.Sum(x => x.Atuacoes) ?? 0;
|
||||
|
||||
// Sanitiza volume
|
||||
if (volumeMedido_L < 0) volumeMedido_L = 0;
|
||||
if (volumeMedido_L > CapacidadeLitros) volumeMedido_L = CapacidadeLitros;
|
||||
|
||||
// Inicialização
|
||||
if (!_inicializado)
|
||||
{
|
||||
_inicializado = true;
|
||||
_volumeAnterior_L = volumeMedido_L;
|
||||
_distanciaTotalAnterior_m = distanciaTotalMetrosAtual;
|
||||
_tempoTotalAnterior_s = tempoTotalSegundosAtual;
|
||||
|
||||
MassaAtual_Kg = massaLida_Kg;
|
||||
VolumeAtual_L = volumeMedido_L;
|
||||
return;
|
||||
}
|
||||
|
||||
MassaAtual_Kg = massaLida_Kg;
|
||||
VolumeAtual_L = volumeMedido_L;
|
||||
|
||||
// --- Cálculo de deltas básicos ---
|
||||
|
||||
double deltaVolume_L = 0.0;
|
||||
double diffVol = _volumeAnterior_L - volumeMedido_L;
|
||||
|
||||
// Só considera volume consumido (queda de nível) e apenas quando pulverizando
|
||||
if (pulverizando && diffVol > 0)
|
||||
{
|
||||
deltaVolume_L = diffVol;
|
||||
VolumeConsumido_L += deltaVolume_L;
|
||||
}
|
||||
|
||||
if (qtd_atuacoes > 0)
|
||||
{
|
||||
HerbicidaPorAtuacao = VolumeConsumido_L / qtd_atuacoes;
|
||||
}
|
||||
|
||||
_volumeAnterior_L = volumeMedido_L;
|
||||
|
||||
double deltaDist_m = distanciaTotalMetrosAtual - _distanciaTotalAnterior_m;
|
||||
if (deltaDist_m < 0) deltaDist_m = 0;
|
||||
_distanciaTotalAnterior_m = distanciaTotalMetrosAtual;
|
||||
|
||||
double deltaTempo_s = tempoTotalSegundosAtual - _tempoTotalAnterior_s;
|
||||
if (deltaTempo_s < 0) deltaTempo_s = 0;
|
||||
_tempoTotalAnterior_s = tempoTotalSegundosAtual;
|
||||
|
||||
// --- Atualiza janela de distância (L/m) ---
|
||||
AtualizarJanelaDistancia(deltaDist_m, deltaVolume_L, pulverizando);
|
||||
|
||||
// --- Atualiza janela de tempo (L/min) ---
|
||||
AtualizarJanelaTempo(deltaTempo_s, deltaVolume_L, pulverizando);
|
||||
|
||||
// --- Atualiza métricas de autonomia ---
|
||||
AtualizarAutonomia();
|
||||
}
|
||||
|
||||
private void AtualizarJanelaDistancia(double deltaDist_m, double deltaVolume_L, bool pulverizando)
|
||||
{
|
||||
// Só faz sentido atualizar se o robô andou e estava pulverizando
|
||||
if (!pulverizando || deltaDist_m <= 0 || deltaVolume_L <= 0)
|
||||
return;
|
||||
|
||||
_janelaDist.Enqueue((deltaDist_m, deltaVolume_L));
|
||||
_somaDistanciaJanela_m += deltaDist_m;
|
||||
_somaVolumeDistJanela_L += deltaVolume_L;
|
||||
|
||||
// Mantém a janela limitada a JanelaAutonomia_m
|
||||
while (_somaDistanciaJanela_m > JanelaAutonomia_m && _janelaDist.Count > 0)
|
||||
{
|
||||
var (dOld, vOld) = _janelaDist.Dequeue();
|
||||
_somaDistanciaJanela_m -= dOld;
|
||||
_somaVolumeDistJanela_L -= vOld;
|
||||
}
|
||||
|
||||
if (_somaDistanciaJanela_m > 0 && _somaVolumeDistJanela_L > 0)
|
||||
{
|
||||
LPorMetro = _somaVolumeDistJanela_L / _somaDistanciaJanela_m;
|
||||
}
|
||||
}
|
||||
|
||||
private void AtualizarJanelaTempo(double deltaTempo_s, double deltaVolume_L, bool pulverizando)
|
||||
{
|
||||
// Só faz sentido atualizar se o tempo avançou, estava pulverizando e houve consumo
|
||||
if (!pulverizando || deltaTempo_s <= 0 || deltaVolume_L <= 0)
|
||||
return;
|
||||
|
||||
_janelaTempo.Enqueue((deltaTempo_s, deltaVolume_L));
|
||||
_somaTempoJanela_s += deltaTempo_s;
|
||||
_somaVolumeTempoJanela_L += deltaVolume_L;
|
||||
|
||||
// Mantém a janela de tempo limitada a JanelaTempo_s
|
||||
while (_somaTempoJanela_s > JanelaTempo_s && _janelaTempo.Count > 0)
|
||||
{
|
||||
var (tOld, vOld) = _janelaTempo.Dequeue();
|
||||
_somaTempoJanela_s -= tOld;
|
||||
_somaVolumeTempoJanela_L -= vOld;
|
||||
}
|
||||
|
||||
if (_somaTempoJanela_s > 0 && _somaVolumeTempoJanela_L > 0)
|
||||
{
|
||||
// L/s * 60 = L/min
|
||||
LPorMinuto = (_somaVolumeTempoJanela_L / _somaTempoJanela_s) * 60.0;
|
||||
}
|
||||
}
|
||||
|
||||
private void AtualizarAutonomia()
|
||||
{
|
||||
// ----- Distância máxima pulverizando (m) -----
|
||||
if (VolumeAtual_L > 0 && LPorMetro > 0)
|
||||
{
|
||||
DistanciaMaximaTeorica_m = VolumeAtual_L / LPorMetro;
|
||||
|
||||
double margem = FuncoesMatematicas.Clamp(MargemSegurancaAutonomia, 0.0, 0.9);
|
||||
DistanciaMaximaSegura_m = DistanciaMaximaTeorica_m * (1.0 - margem);
|
||||
if (DistanciaMaximaSegura_m < 0)
|
||||
DistanciaMaximaSegura_m = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
DistanciaMaximaTeorica_m = 0;
|
||||
DistanciaMaximaSegura_m = 0;
|
||||
}
|
||||
|
||||
// ----- Tempo máximo pulverizando (min) -----
|
||||
if (VolumeAtual_L > 0 && LPorMinuto > 0)
|
||||
{
|
||||
TempoEstimadoMinutosPulverizando = VolumeAtual_L / LPorMinuto;
|
||||
}
|
||||
else
|
||||
{
|
||||
TempoEstimadoMinutosPulverizando = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper direto para o Manager/Health:
|
||||
/// indica se o volume atual é suficiente para pulverizar uma rua de certo comprimento (m).
|
||||
/// </summary>
|
||||
public bool ConseguePulverizarRua(double comprimentoRua_m)
|
||||
{
|
||||
if (comprimentoRua_m <= 0)
|
||||
return true;
|
||||
|
||||
return DistanciaMaximaSegura_m >= comprimentoRua_m;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Permite "forçar" um volume inicial (por exemplo, depois de reabastecer).
|
||||
/// </summary>
|
||||
public void DefinirVolumeAtual(double volume_L)
|
||||
{
|
||||
volume_L = FuncoesMatematicas.Clamp(volume_L, 0, CapacidadeLitros);
|
||||
|
||||
VolumeAtual_L = volume_L;
|
||||
_volumeAnterior_L = volume_L;
|
||||
VolumeConsumido_L = CapacidadeLitros - VolumeAtual_L;
|
||||
|
||||
// Zera as janelas (melhor não carregar histórico de antes de reabastecer)
|
||||
_janelaDist.Clear();
|
||||
_janelaTempo.Clear();
|
||||
_somaDistanciaJanela_m = 0;
|
||||
_somaVolumeDistJanela_L = 0;
|
||||
_somaTempoJanela_s = 0;
|
||||
_somaVolumeTempoJanela_L = 0;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -321,7 +321,7 @@ namespace AgroBase.Services
|
|||
{
|
||||
List<byte> _sensores = new List<byte>();
|
||||
_sensores.AddRange(CanPrefix(DadosLoRaParse.DadosSensores));
|
||||
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Bateria.PorcentagemBateria)); // 1 byte
|
||||
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Bateria.PercentualBateria)); // 1 byte
|
||||
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Movimentacao.TemperaturaMedia)); // 1 byte
|
||||
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Movimentacao.TemperaturaMedia)); // 1 byte
|
||||
_sensores.Add((byte)Convert.ToInt32(sensoriamento.Trajetoria.AnguloCaminho)); // 1 byte
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ namespace AgroBase.Services.Operadores
|
|||
ervas_no_radar = _Sensoriamento.Atuador?.ErvasNoRadar ?? false,
|
||||
percentual_ervas_no_radar = _Sensoriamento.Atuador?.PercentualErvasNoRadar ?? 0,
|
||||
percentual_reservatorio = _Sensoriamento.Atuador?.PercentualReservatorio ?? 0,
|
||||
percentual_bateria = _Sensoriamento.Bateria?.PorcentagemBateria ?? 0,
|
||||
percentual_bateria = _Sensoriamento.Bateria?.PercentualBateria ?? 0,
|
||||
}
|
||||
)
|
||||
);
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ namespace AgroBase.Services
|
|||
|
||||
bool Sucesso = DecifrarRespostaAquisicao(Resposta);
|
||||
|
||||
ContadorCarga.AtualizarConsumo();
|
||||
ContadorCarga.AtualizarConsumo(Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.DistanciaPercorridaTotal ?? 0);
|
||||
|
||||
return Sucesso;
|
||||
}
|
||||
|
|
|
|||
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
|
|
@ -17,7 +17,7 @@
|
|||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_e96ec2bc0d29f93b5eb9a092cd8db254 {
|
||||
#map_8cc37873267a22a9d923af21cb86f52f {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
|
|
@ -54,14 +54,14 @@
|
|||
<body>
|
||||
|
||||
|
||||
<div class="folium-map" id="map_e96ec2bc0d29f93b5eb9a092cd8db254" ></div>
|
||||
<div class="folium-map" id="map_8cc37873267a22a9d923af21cb86f52f" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
|
||||
var map_e96ec2bc0d29f93b5eb9a092cd8db254 = L.map(
|
||||
"map_e96ec2bc0d29f93b5eb9a092cd8db254",
|
||||
var map_8cc37873267a22a9d923af21cb86f52f = L.map(
|
||||
"map_8cc37873267a22a9d923af21cb86f52f",
|
||||
{
|
||||
center: [0.0, 0.0],
|
||||
crs: L.CRS.EPSG3857,
|
||||
|
|
@ -78,7 +78,7 @@
|
|||
|
||||
|
||||
|
||||
var tile_layer_2073fabf3e3fe0f56ca3d565a07db8af = L.tileLayer(
|
||||
var tile_layer_eb3898ea6d8dcda1eaa11b968cc95b03 = L.tileLayer(
|
||||
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{
|
||||
"minZoom": 0,
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
);
|
||||
|
||||
|
||||
tile_layer_2073fabf3e3fe0f56ca3d565a07db8af.addTo(map_e96ec2bc0d29f93b5eb9a092cd8db254);
|
||||
tile_layer_eb3898ea6d8dcda1eaa11b968cc95b03.addTo(map_8cc37873267a22a9d923af21cb86f52f);
|
||||
|
||||
</script>
|
||||
|
||||
|
|
@ -116,7 +116,7 @@
|
|||
}
|
||||
trajeto_json_add({"features": []});
|
||||
|
||||
trajeto_json.addTo(map_e96ec2bc0d29f93b5eb9a092cd8db254);
|
||||
trajeto_json.addTo(map_8cc37873267a22a9d923af21cb86f52f);
|
||||
|
||||
function adicionarGeometria(novaGeometria) {
|
||||
trajeto_json.addData(novaGeometria);
|
||||
|
|
@ -179,9 +179,9 @@
|
|||
|
||||
var marcadorEquipamento = L.marker([0, 0], {
|
||||
icon: customIcon
|
||||
}).addTo(map_e96ec2bc0d29f93b5eb9a092cd8db254);
|
||||
}).addTo(map_8cc37873267a22a9d923af21cb86f52f);
|
||||
|
||||
var marcadorBase = L.marker([0, 0], {}).addTo(map_e96ec2bc0d29f93b5eb9a092cd8db254);
|
||||
var marcadorBase = L.marker([0, 0], {}).addTo(map_8cc37873267a22a9d923af21cb86f52f);
|
||||
var icon = L.AwesomeMarkers.icon(
|
||||
{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}
|
||||
);
|
||||
|
|
@ -246,7 +246,7 @@
|
|||
}
|
||||
|
||||
if (foco) {
|
||||
map_e96ec2bc0d29f93b5eb9a092cd8db254.setView(novaPosicao, map_e96ec2bc0d29f93b5eb9a092cd8db254.getZoom());
|
||||
map_8cc37873267a22a9d923af21cb86f52f.setView(novaPosicao, map_8cc37873267a22a9d923af21cb86f52f.getZoom());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -268,7 +268,7 @@
|
|||
marcadorDinamico.setRotationAngle(angulo);
|
||||
|
||||
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
||||
map_e96ec2bc0d29f93b5eb9a092cd8db254.setView(novaPosicao, map_e96ec2bc0d29f93b5eb9a092cd8db254.getZoom());*/
|
||||
map_8cc37873267a22a9d923af21cb86f52f.setView(novaPosicao, map_8cc37873267a22a9d923af21cb86f52f.getZoom());*/
|
||||
});
|
||||
|
||||
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
|
@ -75,7 +75,7 @@
|
|||
<Label x:Name="lblDispositivos_Status" Content="Desconectado" Style="{StaticResource RoundedLabel}" Height="26" Width="76" Canvas.Left="367" Canvas.Top="9" HorizontalAlignment="Center" VerticalAlignment="Top" IsEnabled="False"/>
|
||||
<ComboBox x:Name="cmbDispositivo" HorizontalAlignment="Left" VerticalAlignment="Center" Width="138" Canvas.Left="224" Canvas.Top="11" SelectionChanged="cmbDispositivo_SelectionChanged"/>
|
||||
|
||||
<Label Content="Liberado | Automático | EmAndamento | CaminhandoRua" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="100" Canvas.Top="32"/>
|
||||
<Label x:Name="lblDisposiivos_Autonomia" Content="Liberado | Automático | EmAndamento | CaminhandoRua" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="100" Canvas.Top="35"/>
|
||||
</Canvas>
|
||||
</Border>
|
||||
|
||||
|
|
@ -90,10 +90,10 @@
|
|||
<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"/>
|
||||
<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 x:Name="lblResumo_Bateria" Content="0,00 V (00:00:00 0,00 m)" 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"/>
|
||||
<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 x:Name="lblResumo_Herbicida" Content="0,00 L (00:00:00 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"/>
|
||||
<Label x:Name="lblResumo_Infestacao" Content="0,00 mL/erva" FontSize="9" HorizontalAlignment="Center" Canvas.Top="76" VerticalAlignment="Top" Canvas.Left="154"/>
|
||||
|
|
@ -128,18 +128,22 @@
|
|||
<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" Tag="sFRO" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
|
||||
<Label x:Name="lblDiagnosticos_SEN_MAGDF" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
|
||||
<Label x:Name="lblDiagnosticos_SEN_TMVDF" Tag="sNTC" 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" Tag="sFRO" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
|
||||
<Label x:Name="lblDiagnosticos_SEN_MAGEF" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
|
||||
<Label x:Name="lblDiagnosticos_SEN_TMVEF" Tag="sNTC" 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" Tag="sFRO" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
|
||||
<Label x:Name="lblDiagnosticos_SEN_MAGET" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="332" HorizontalAlignment="Center" VerticalAlignment="Top"/>
|
||||
<Label x:Name="lblDiagnosticos_SEN_TMVET" Tag="sNTC" 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" Tag="sFRO" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
|
||||
<Label x:Name="lblDiagnosticos_SEN_MAGDT" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="332" HorizontalAlignment="Center" VerticalAlignment="Top"/>
|
||||
<Label x:Name="lblDiagnosticos_SEN_TMVDT" Tag="sNTC" 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"/>
|
||||
|
|
|
|||
|
|
@ -176,6 +176,7 @@ namespace OperationControl.Windows
|
|||
|
||||
brdResumo.IsEnabled = !dados_base;
|
||||
brdDiagnostico.IsEnabled = !dados_base;
|
||||
brdStatusModulo.IsEnabled = !dados_base;
|
||||
brdControle.IsEnabled = !dados_base;
|
||||
brdAjustesOperacao.IsEnabled = !dados_base;
|
||||
if (!dados_base)
|
||||
|
|
@ -340,21 +341,21 @@ namespace OperationControl.Windows
|
|||
try
|
||||
{
|
||||
pgbResumo_RuaAtual.Value = dados.Trajetoria.PercentualRuaAtual;
|
||||
lblResumo_RuaAtual.Content = $"{dados.Trajetoria.CorredorAtual.DistanciaPercorridaCorredor.ToString("0.00")} m / {dados.Trajetoria.CorredorAtual.DistanciaTotal.ToString("0.00")} m ({dados.Trajetoria.CorredorAtual.Idx + 1})";
|
||||
lblResumo_RuaAtual.Content = $"{dados.Trajetoria.CorredorAtual.DistanciaPercorridaCorredor:0.00} m / {dados.Trajetoria.CorredorAtual.DistanciaTotal:0.00} m ({dados.Trajetoria.CorredorAtual.Idx + 1})";
|
||||
pgbResumo_AreaTotal.Value = dados.Trajetoria.PercentualOperacao;
|
||||
lblResumo_AreaTotal.Content = $"{dados.Trajetoria.DistanciaPercorrida.ToString("0.00")} m / {dados.Trajetoria.DistanciaTotal.ToString("0.00")} m";
|
||||
pgbResumo_Bateria.Value = dados.Bateria.PorcentagemBateria;
|
||||
lblResumo_Bateria.Content = $"{dados.Bateria.TensaoInstantanea.ToString("0.00")} V ({TimeSpan.FromMinutes(dados.Bateria.TempoEstimadoRestanteMinutos)})";
|
||||
lblResumo_AreaTotal.Content = $"{dados.Trajetoria.DistanciaPercorrida:0.00} m / {dados.Trajetoria.DistanciaTotal:0.00} m";
|
||||
pgbResumo_Bateria.Value = dados.Bateria.PercentualBateria;
|
||||
lblResumo_Bateria.Content = $"{dados.Bateria.TensaoInstantanea:0.00} V ({TimeSpan.FromMinutes(dados.Bateria.TempoEstimadoRestanteMinutos).ToString(@"dd\.hh\:mm\:ss")} {dados.Bateria.DistanciaEstimadaRestanteMetros:0.00} m)";
|
||||
pgbResumo_Herbicida.Value = dados.Atuador.PercentualReservatorio;
|
||||
lblResumo_Herbicida.Content = $"{dados.Atuador.VolumeReservatorio.ToString("0.00")} L ({0.ToString("0.00")} m)";
|
||||
lblResumo_Herbicida.Content = $"{dados.Atuador.VolumeReservatorio:0.00} L ({TimeSpan.FromMinutes(dados.Atuador.TempoEstimadoRestanteMinutos).ToString(@"hh\:mm\:ss")} {dados.Atuador.DistanciaEstimadaRestanteMetros:0.00} m)";
|
||||
pgbResumo_Infestacao.Value = dados.Atuador.PercentualErvasTerreno;
|
||||
lblResumo_Infestacao.Content = $"{dados.Atuador.VazaoMedia.ToString("0.00")}";
|
||||
lblResumo_Infestacao.Content = $"{dados.Atuador.HerbicidaPorErva:0.00} mL/erva";
|
||||
|
||||
lblResumo_OperacaoLiberada.Content = $"Operação " + (dados.OperacaoLiberada ? "🔓 Liberada" : "🔒 Bloqueada");
|
||||
lblResumo_OperacaoModo.Content = $"Modo {dados.Modo}";
|
||||
lblResumo_OperacaoStatus.Content = $"Status {dados.StatusOperacao}" + (dados.StatusOperacao == AgroBase.Models.Enums.StatusOperacao.Aguardando ? $" ({dados.TempoAguardandoSeg.ToString("0")})" : "");
|
||||
lblResumo_OperacaoStatus.Content = $"Status {dados.StatusOperacao}" + (dados.StatusOperacao == AgroBase.Models.Enums.StatusOperacao.Aguardando ? $" ({dados.TempoAguardandoSeg:0})" : "");
|
||||
lblResumo_StatusCarro.Content = $"Carro {dados.Trajetoria.StatusCarro}";
|
||||
lblResumo_TemperaturaGeral.Content = $"Temperatura {(dados.DadosPerformance.CPU_temp ?? 0).ToString("0.00")} °C";
|
||||
lblResumo_TemperaturaGeral.Content = $"Temperatura {(dados.DadosPerformance.CPU_temp ?? 0):0.00} °C";
|
||||
lblResumo_OperacaoDuracao.Content = $"Duração {dados.TempoDecorrido.ToString("HH:mm:ss")} / " + (string.IsNullOrEmpty(dados.Trajetoria.TempoEstimadoOperacao) ? "00:00:00" : dados.Trajetoria.TempoEstimadoOperacao);
|
||||
}
|
||||
catch (Exception exUi)
|
||||
|
|
@ -515,6 +516,9 @@ namespace OperationControl.Windows
|
|||
case AgroBase.Models.Enums.T_Code.Ipb:
|
||||
iniciado = rover.Alive;
|
||||
break;
|
||||
case AgroBase.Models.Enums.T_Code.Can:
|
||||
iniciado = rover.DadosLeitura.DispositivosMapeados?.Any(x => x.Dispositivo == AgroBase.Models.Enums.T_Code.Can) ?? false;
|
||||
break;
|
||||
case AgroBase.Models.Enums.T_Code.Lra:
|
||||
iniciado = rover.DadosLeitura?.DadosLoRa?.Conectado ?? false;
|
||||
break;
|
||||
|
|
@ -590,15 +594,17 @@ namespace OperationControl.Windows
|
|||
ucr = rover?.DadosLeitura?.Movimentacao?.Dados?.FirstOrDefault(x => x.ID == label)?.UltimoComandoRespondido ?? DateTime.MinValue;
|
||||
else if (modulo == AgroBase.Models.Enums.T_Code.Dir)
|
||||
ucr = rover?.DadosLeitura?.Direcional?.Dados?.FirstOrDefault(x => x.Modulo_ID == label)?.UltimoComandoRespondido ?? DateTime.MinValue;
|
||||
else
|
||||
ucr = rover.DadosLeitura?.Momento ?? DateTime.MinValue;
|
||||
|
||||
DateTime mom = rover.DadosLeitura?.Momento ?? DateTime.MinValue;
|
||||
double can_latencia = (mom - ucr).TotalMilliseconds;
|
||||
double can_latencia = (ucr - mom).TotalMilliseconds;
|
||||
|
||||
lblSaude_Descricao.Content = $"Módulo {modulo} {label}";
|
||||
lblSaude_Iniciado.Content = (iniciado ? "Iniciado" : "Não Iniciado");
|
||||
lblSaude_Iniciado.Foreground = new SolidColorBrush(iniciado ? System.Windows.Media.Colors.Green : System.Windows.Media.Colors.Red);
|
||||
lblSaude_Status.Content = $"{individual?.status ?? saude?.status ?? AgroBase.Models.Enums.StatusModulo.Desconectado} (Saúde {individual?.saude ?? saude?.saude ?? 0}%)";
|
||||
lblSaude_CAN.Content = $"CAN {can_latencia} ms";
|
||||
lblSaude_CAN.Content = $"CAN {can_latencia:0} ms";
|
||||
lblSaude_Latencia.Content = $"Latência {dispositivo?.Latencia ?? 0} ms";
|
||||
lblSaude_Impedimento.Text = $"Impedimento: {motivos ?? "Nenhum"}";
|
||||
|
||||
|
|
@ -614,7 +620,12 @@ namespace OperationControl.Windows
|
|||
PreencherAbaCondicoesOperacionais(saude?.condicoes_operacionais);
|
||||
PreencherAbaAcompanhamento(true);
|
||||
PreencherAbaOpcoes(true);
|
||||
PreencherAbaLogs(rover.DadosLeitura?.Logs?.Where(x => x.Dispositivo == modulo));
|
||||
var logs = rover.DadosLeitura?.Logs?.Where(x => x.Dispositivo == modulo);
|
||||
if (!string.IsNullOrEmpty(label))
|
||||
logs = logs.Where(x => x.ID == label);
|
||||
else
|
||||
logs = logs.Where(x => x.ID == null);
|
||||
PreencherAbaLogs(logs);
|
||||
}
|
||||
|
||||
private void PreencherAbaCondicoesOperacionais(List<ManagerWorkerMessageResponseModulosPendentesSaudeCondicoesModel> condicoes)
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
BIN
AgroBase/OperationControl/bin/Debug/net8.0-windows7.0/OperationControl.dll (Stored with Git LFS)
BIN
AgroBase/OperationControl/bin/Debug/net8.0-windows7.0/OperationControl.dll (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -94,7 +94,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/attitudeindicator.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/attitudeindicator.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\AttitudeIndicator.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/bbox3dviewer.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/bbox3dviewer.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\Bbox3DViewer.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/gstvideoview.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/gstvideoview.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\GstVideoView.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -118,7 +118,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/headingindicator.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/headingindicator.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\HeadingIndicator.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/labeledbar.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/labeledbar.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\LabeledBar.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/manualcontrolpad.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/manualcontrolpad.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\ManualControlPad.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/mapviewcontrol.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/mapviewcontrol.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\MapViewControl.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/progressbartext.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/progressbartext.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\ProgressBarText.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -86,8 +86,7 @@ namespace OperationControl.Controls.Pulverizador {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/pulverizador/bicolequeindicator.xam" +
|
||||
"l", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/pulverizador/bicolequeindicator.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\..\Controls\Pulverizador\BicoLequeIndicator.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -70,8 +70,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/pulverizador/pulverizadorindicator." +
|
||||
"xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/pulverizador/pulverizadorindicator.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\..\Controls\Pulverizador\PulverizadorIndicator.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/riskmeter.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/riskmeter.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\RiskMeter.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ namespace OperationControl.Controls {
|
|||
return;
|
||||
}
|
||||
_contentLoaded = true;
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;V1.0.0.0;component/controls/temperatureindicator.xaml", System.UriKind.Relative);
|
||||
System.Uri resourceLocater = new System.Uri("/OperationControl;component/controls/temperatureindicator.xaml", System.UriKind.Relative);
|
||||
|
||||
#line 1 "..\..\..\..\Controls\TemperatureIndicator.xaml"
|
||||
System.Windows.Application.LoadComponent(this, resourceLocater);
|
||||
|
|
|
|||
|
|
@ -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")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+bd8069c54554e0251ed143bf93aabe93c52f19a2")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("OperationControl")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("OperationControl")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
7f7e3e3330835a9e331ff8ae9e65bce6b076d907a4ff29ab3f8d822addcfdc36
|
||||
bcf738967f77ebf630bc6d19737a8d4412f54220daac0759437ffecc63b6b0d9
|
||||
|
|
|
|||
Binary file not shown.
BIN
AgroBase/OperationControl/obj/Debug/net8.0-windows7.0/OperationControl.dll (Stored with Git LFS)
BIN
AgroBase/OperationControl/obj/Debug/net8.0-windows7.0/OperationControl.dll (Stored with Git LFS)
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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+20378a9fd109692c3261d3b86f890d4ad392c336")]
|
||||
[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.
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
fd6cdbaea7f6f777c5394b581761f3118b7207d8dd5423e48a98a85f933f9cd6
|
||||
|
|
@ -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_12lwqfv2_wpftmp
|
||||
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
|
|
@ -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;
|
||||
Binary file not shown.
|
|
@ -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+cdbcb8f1d72a243d2ae205abe4adb9bcce349f0a")]
|
||||
[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.
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
e97aa85db49e23473483f7f5559669e0e230fe330f46dcf20f82f6845bfc475e
|
||||
|
|
@ -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_2gnql3df_wpftmp
|
||||
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
|
|
@ -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;
|
||||
Binary file not shown.
|
|
@ -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+bd8069c54554e0251ed143bf93aabe93c52f19a2")]
|
||||
[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.
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
bcf738967f77ebf630bc6d19737a8d4412f54220daac0759437ffecc63b6b0d9
|
||||
|
|
@ -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_315b3u3t_wpftmp
|
||||
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
|
|
@ -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;
|
||||
Binary file not shown.
|
|
@ -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+cdbcb8f1d72a243d2ae205abe4adb9bcce349f0a")]
|
||||
[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.
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
e97aa85db49e23473483f7f5559669e0e230fe330f46dcf20f82f6845bfc475e
|
||||
|
|
@ -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_4kfvjdhz_wpftmp
|
||||
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
|
|
@ -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;
|
||||
Binary file not shown.
|
|
@ -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;
|
||||
|
||||
False
|
||||
True
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,12 @@
|
|||
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;;
|
||||
|
||||
|
|
@ -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+20378a9fd109692c3261d3b86f890d4ad392c336")]
|
||||
[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.
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
fd6cdbaea7f6f777c5394b581761f3118b7207d8dd5423e48a98a85f933f9cd6
|
||||
|
|
@ -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_ha4so3iu_wpftmp
|
||||
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
|
|
@ -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;
|
||||
Binary file not shown.
|
|
@ -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+cdbcb8f1d72a243d2ae205abe4adb9bcce349f0a")]
|
||||
[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.
|
||||
|
||||
|
|
@ -0,0 +1 @@
|
|||
e97aa85db49e23473483f7f5559669e0e230fe330f46dcf20f82f6845bfc475e
|
||||
|
|
@ -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_hrchs1pg_wpftmp
|
||||
build_property.ProjectDir = C:\ZendionInc\agrobot_base\AgroBase\OperationControl\
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
|
|
@ -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;
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue