ajustes no fluxo do ultrassom

This commit is contained in:
Diego Freitas 2024-12-11 14:21:16 -03:00
parent 1b031dfb62
commit fb39cd67dd
31 changed files with 215 additions and 152 deletions

Binary file not shown.

View File

@ -3,24 +3,20 @@
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\ihm\\frmdiagnosticos.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\ihm\\frmdiagnosticos.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\frma05config.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frma05config.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\ihm\\frmdiagnosticos.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\ihm\\frmdiagnosticos.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\ihm\\frmihm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\ihm\\frmihm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\services\\serialservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\serialservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\ihm\\frmajustes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\ihm\\frmajustes.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\ihm\\frmihm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\ihm\\frmihm.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\services\\kinectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\kinectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@ -30,68 +26,58 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 3,
"SelectedChildIndex": 2,
"Children": [
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "frmIHM.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmIHM.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\IHM\\frmIHM.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmIHM.cs",
"RelativeToolTip": "AgroBase\\Forms\\IHM\\frmIHM.cs",
"ViewState": "AQIAAA8AAAAAAAAAAAAAABcAAAAXAAAA",
"DocumentIndex": 2,
"Title": "SerialService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\SerialService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\SerialService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\SerialService.cs",
"RelativeToolTip": "AgroBase\\Services\\SerialService.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAALUAAAA9AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-07-16T18:11:05.21Z",
"WhenOpened": "2024-12-11T16:45:47.67Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "OperacaoModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAKkLAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-11T15:36:21.874Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "frmA05Config.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmA05Config.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmA05Config.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmA05Config.cs",
"RelativeToolTip": "AgroBase\\Forms\\frmA05Config.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAHoAAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-11T15:19:41.774Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "frmAjustes.cs [Design]",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmAjustes.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\IHM\\frmAjustes.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmAjustes.cs [Design]",
"RelativeToolTip": "AgroBase\\Forms\\IHM\\frmAjustes.cs [Design]",
"Title": "KinectService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\KinectService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\KinectService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\KinectService.cs",
"RelativeToolTip": "AgroBase\\Services\\KinectService.cs",
"ViewState": "AQIAAA8AAAAAAAAAAAAAAAAAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-07-16T18:10:00.133Z",
"EditorCaption": " [Design]"
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "frmIHM.cs [Design]",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmIHM.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\IHM\\frmIHM.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmIHM.cs [Design]",
"RelativeToolTip": "AgroBase\\Forms\\IHM\\frmIHM.cs [Design]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-07-16T17:59:00.517Z",
"EditorCaption": " [Design]"
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "frmDiagnosticos.cs [Design]",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmDiagnosticos.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\IHM\\frmDiagnosticos.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmDiagnosticos.cs [Design]",
"RelativeToolTip": "AgroBase\\Forms\\IHM\\frmDiagnosticos.cs [Design]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-07-16T17:37:18.816Z",
"EditorCaption": " [Design]"
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "frmDiagnosticos.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmDiagnosticos.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\IHM\\frmDiagnosticos.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\IHM\\frmDiagnosticos.cs",
"RelativeToolTip": "AgroBase\\Forms\\IHM\\frmDiagnosticos.cs",
"ViewState": "AQIAAFIAAAAAAAAAAAAowHIAAABRAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-07-16T17:37:12.117Z",
"WhenOpened": "2024-12-11T15:19:26.121Z",
"EditorCaption": ""
}
]

View File

@ -242,6 +242,7 @@
this.chbLimiteMinimo.TabIndex = 5;
this.chbLimiteMinimo.Text = "Limite de mínimo";
this.chbLimiteMinimo.UseVisualStyleBackColor = true;
this.chbLimiteMinimo.CheckedChanged += new System.EventHandler(this.chbLimiteMinimo_CheckedChanged);
//
// txtLimiteMinimo
//
@ -270,6 +271,7 @@
this.chbLimiteMaximo.TabIndex = 9;
this.chbLimiteMaximo.Text = "Limite de máximo";
this.chbLimiteMaximo.UseVisualStyleBackColor = true;
this.chbLimiteMaximo.CheckedChanged += new System.EventHandler(this.chbLimiteMaximo_CheckedChanged);
//
// cmbPosicao
//

View File

@ -67,7 +67,7 @@ namespace AgroBase.Forms
txtLimiteMinimo.Enabled = Sensor.LimiteMinimo;
txtMargemMinimo.Text = Sensor.MargemMinimo.ToString();
txtMargemMinimo.Enabled = Sensor.LimiteMinimo;
chbLimiteMaximo.Checked = Sensor.LimiteMinimo;
chbLimiteMaximo.Checked = Sensor.LimiteMaximo;
txtLimiteMaximo.Text = Sensor.LimiteMaximoVal.ToString();
txtLimiteMaximo.Enabled = Sensor.LimiteMaximo;
txtMargemMaximo.Text = Sensor.MargemMaximo.ToString();
@ -128,18 +128,24 @@ namespace AgroBase.Forms
Sensor.Posicao = (PosicaoSensorUltrassonico)cmbPosicao.SelectedIndex;
Sensor.LimiteMinimo = chbLimiteMinimo.Checked;
Sensor.LimiteMinimoVal = double.Parse(txtLimiteMinimo.Text);
Sensor.LimiteMinimo = txtLimiteMinimo.Enabled;
Sensor.MargemMinimo = double.Parse(txtMargemMinimo.Text);
Sensor.LimiteMinimo = txtMargemMinimo.Enabled;
Sensor.LimiteMinimo = chbLimiteMaximo.Checked;
Sensor.LimiteMaximo = chbLimiteMaximo.Checked;
Sensor.LimiteMaximoVal = double.Parse(txtLimiteMaximo.Text);
Sensor.LimiteMaximo = txtLimiteMaximo.Enabled;
Sensor.MargemMaximo = double.Parse(txtMargemMaximo.Text);
Sensor.LimiteMaximo = txtMargemMaximo.Enabled;
Sensor.Desvio = rdbDesvio.Checked;
Sensor.Parada = rdbParada.Checked;
}
private void chbLimiteMinimo_CheckedChanged(object sender, EventArgs e)
{
txtLimiteMinimo.Enabled = ((CheckBox)sender).Checked;
txtMargemMinimo.Enabled = ((CheckBox)sender).Checked;
}
private void chbLimiteMaximo_CheckedChanged(object sender, EventArgs e)
{
txtLimiteMaximo.Enabled = ((CheckBox)sender).Checked;
txtMargemMaximo.Enabled = ((CheckBox)sender).Checked;
}
}
}

View File

@ -50,22 +50,25 @@ namespace AgroBase.Forms
AtualzarDadosMovimentacao();
lblUL_Pzm.ForeColor = PZEMService.Iniciado ? Color.Green : Color.Red;
if (PZEMService.Iniciado)
{
lblUL_Pzm.Text = "Ultima Leitura PZM: " + PZEMService.UltimaLeitura.DataHora.ToString("HH:mm:ss");
lblTensao.Text = "Bateria: " + PZEMService.UltimaLeitura.Tensao.ToString("0.00") + " V - " + PZEMService.UltimaLeitura.Corrente.ToString("0.00") + " A - " + PZEMService.UltimaLeitura.Potencia.ToString("0.00") + " W";
}
lblUL_Wit.ForeColor = WT901CService.Iniciado ? Color.Green : Color.Red;
if (WT901CService.Iniciado)
{
lblUL_Wit.Text = "Ultima Leitura WIT: " + WT901CService.DadosLeitura.Momento.ToString("HH:mm:ss");
}
lblUL_A05.ForeColor = UltrasonicA05Service.Iniciado ? Color.Green : Color.Red;
if (UltrasonicA05Service.Iniciado)
{
lblUL_A05.Text = "Ultima Leitura A05: " + UltrasonicA05Service.DadosLeitura.Momento.ToString("HH:mm:ss");
lblU1.Text = "U1: " + UltrasonicA05Service.DadosLeitura.U1.ToString("") + " mm";
lblU2.Text = "U2: " + UltrasonicA05Service.DadosLeitura.U2.ToString("") + " mm";
lblU3.Text = "U3: " + UltrasonicA05Service.DadosLeitura.U3.ToString("") + " mm";
lblU4.Text = "U4: " + UltrasonicA05Service.DadosLeitura.U4.ToString("") + " mm";
lblU1.Text = "U1: " + UltrasonicA05Service.DadosLeitura.Configuracao.Sensores[0].LeituraCm.ToString("") + " cm";
lblU2.Text = "U2: " + UltrasonicA05Service.DadosLeitura.Configuracao.Sensores[1].LeituraCm.ToString("") + " cm";
lblU3.Text = "U3: " + UltrasonicA05Service.DadosLeitura.Configuracao.Sensores[2].LeituraCm.ToString("") + " cm";
lblU4.Text = "U4: " + UltrasonicA05Service.DadosLeitura.Configuracao.Sensores[3].LeituraCm.ToString("") + " cm";
}
if (Variaveis.OperacaoEmAndamento.DispSen.Dados.Conectado)
{

View File

@ -757,6 +757,26 @@ namespace AgroBase
}
}
if (UltrasonicA05Service.Iniciado)
{
if (UltrasonicA05Service.DadosLeitura.Configuracao._paradaFrontal)
{
ComandosImpedidos.Add(Keys.Up);
}
if (UltrasonicA05Service.DadosLeitura.Configuracao._paradaTraseira)
{
ComandosImpedidos.Add(Keys.Down);
}
if (UltrasonicA05Service.DadosLeitura.Configuracao._paradaEsquerda)
{
ComandosImpedidos.Add(Keys.Left);
}
if (UltrasonicA05Service.DadosLeitura.Configuracao._paradaDireita)
{
ComandosImpedidos.Add(Keys.Right);
}
}
return !ComandosImpedidos.Any(x => x == Comando);
}

View File

@ -1789,30 +1789,17 @@ namespace AgroBase.Models
if (UltrasonicA05Service.Iniciado)
{
var sensoresAtuados = Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom.Sensores
.Where(x => x.SensorAtuado)
.GroupBy(x => UltrasonicA05Helper.ObterCategoriaSensor(x.Posicao));
bool deteccaoFrontal = sensoresAtuados.Any(g => g.Key == "Frontal");
bool deteccaoTraseira = sensoresAtuados.Any(g => g.Key == "Traseira");
bool deteccaoEsquerda = sensoresAtuados.Any(g => g.Key == "Esquerda");
bool deteccaoDireita = sensoresAtuados.Any(g => g.Key == "Direita");
bool parada = sensoresAtuados.Any(g => g.Any(s => s.Parada));
bool desvioEsquerda = sensoresAtuados.Where(g => g.Key == "Esquerda").Any(g => g.Any(s => s.Desvio));
bool desvioDireita = sensoresAtuados.Where(g => g.Key == "Direita").Any(g => g.Any(s => s.Desvio));
if (deteccaoFrontal || deteccaoTraseira || (deteccaoEsquerda && deteccaoDireita))
if (UltrasonicA05Service.DadosLeitura.Configuracao.ParadaNecessaria)
{
GeneralJoystick.EnviaComandoMotor(Keys.Escape, T_Code.Mov);
}
else if (Variaveis.OperacaoEmAndamento.Controle.SonarDesvioAutomatico)
else if (Variaveis.OperacaoEmAndamento.Controle.SonarDesvioAutomatico && UltrasonicA05Service.DadosLeitura.Configuracao.DesvioNecessario)
{
if (deteccaoEsquerda && desvioEsquerda)
if (UltrasonicA05Service.DadosLeitura.Configuracao.DirecaoDesvio == Direcao.Direita)
{
GeneralJoystick.EnviaComandoMotor(Keys.Right, T_Code.Dir);
}
else if (deteccaoDireita && desvioDireita)
else if (UltrasonicA05Service.DadosLeitura.Configuracao.DirecaoDesvio == Direcao.Esquerda)
{
GeneralJoystick.EnviaComandoMotor(Keys.Left, T_Code.Dir);
}

View File

@ -2,6 +2,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using static AgroBase.Models.Enums;
namespace AgroBase.Models
{
@ -74,10 +76,10 @@ namespace AgroBase.Models
break;
case ConfiguracaoSensorUltrassonico.DeteccaoObstaculosFrenteETras:
ConfigPadrao.Sensores.Add(DefineDadosSensor(1, PosicaoSensorUltrassonico.FrontalEsquerdo, true, true, 10.0, 30.0, 2.0, 2.0, true, true));
ConfigPadrao.Sensores.Add(DefineDadosSensor(2, PosicaoSensorUltrassonico.FrontalDireito, true, true, 10.0, 30.0, 2.0, 2.0, true, true));
ConfigPadrao.Sensores.Add(DefineDadosSensor(3, PosicaoSensorUltrassonico.TraseiroEsquerdo, true, true, 10.0, 30.0, 2.0, 2.0, true, true));
ConfigPadrao.Sensores.Add(DefineDadosSensor(4, PosicaoSensorUltrassonico.TraseiroDireito, true, true, 10.0, 30.0, 2.0, 2.0, true, true));
ConfigPadrao.Sensores.Add(DefineDadosSensor(1, PosicaoSensorUltrassonico.TraseiroEsquerdo, true, true, 10.0, 30.0, 2.0, 2.0, true, true));
ConfigPadrao.Sensores.Add(DefineDadosSensor(2, PosicaoSensorUltrassonico.TraseiroDireito, true, true, 10.0, 30.0, 2.0, 2.0, true, true));
ConfigPadrao.Sensores.Add(DefineDadosSensor(3, PosicaoSensorUltrassonico.FrontalEsquerdo, true, true, 10.0, 30.0, 2.0, 2.0, true, true));
ConfigPadrao.Sensores.Add(DefineDadosSensor(4, PosicaoSensorUltrassonico.FrontalDireito, true, true, 10.0, 30.0, 2.0, 2.0, true, true));
break;
case ConfiguracaoSensorUltrassonico.DeteccaoSulcosEBuracos:
@ -188,7 +190,7 @@ namespace AgroBase.Models
// Decisões de parada e desvio
if (paradaNecessaria || (desvioEsquerdaNecessario && desvioDireitaNecessario))
{
Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = 0; // Parada imediata
//Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = 0; // Parada imediata
return double.MaxValue;
}
else if (desvioEsquerdaNecessario)
@ -232,6 +234,82 @@ namespace AgroBase.Models
{
public ConfiguracaoSensorUltrassonico Configuracao { get; set; } = ConfiguracaoSensorUltrassonico.NaoUtilizado;
public List<UltrasonicA05ConfiguracoesSensor> Sensores { get; set; }
private IEnumerable<IGrouping<string, UltrasonicA05ConfiguracoesSensor>> _sensoresAtuados
{
get
{
var sensoresAtuados = Sensores
.Where(x => x.SensorAtuado)
.GroupBy(x => UltrasonicA05Helper.ObterCategoriaSensor(x.Posicao));
return sensoresAtuados;
}
}
private bool _desvioEsquerda => _sensoresAtuados.Where(g => g.Key == "Esquerda").Any(g => g.Any(s => s.Desvio));
private bool _desvioDireita => _sensoresAtuados.Where(g => g.Key == "Direita").Any(g => g.Any(s => s.Desvio));
private bool _deteccaoFrontal => _sensoresAtuados.Any(g => g.Key == "Frontal");
public bool _paradaFrontal => _sensoresAtuados.Where(g => g.Key == "Frontal").Any(g => g.Any(s => s.Parada));
private bool _deteccaoTraseira => _sensoresAtuados.Any(g => g.Key == "Traseira");
public bool _paradaTraseira => _sensoresAtuados.Where(g => g.Key == "Traseira").Any(g => g.Any(s => s.Parada));
private bool _deteccaoEsquerda => _sensoresAtuados.Any(g => g.Key == "Esquerda");
public bool _paradaEsquerda => _sensoresAtuados.Where(g => g.Key == "Esquerda").Any(g => g.Any(s => s.Parada));
private bool _deteccaoDireita => _sensoresAtuados.Any(g => g.Key == "Direita");
public bool _paradaDireita => _sensoresAtuados.Where(g => g.Key == "Direita").Any(g => g.Any(s => s.Parada));
public bool DesvioNecessario
{
get
{
return DirecaoDesvio != Direcao.Frente;
}
}
public bool ParadaNecessaria => _sensoresAtuados.Any(x => x.Any(g => g.Parada));
public List<Direcao> DirecoesObstaculos
{
get
{
List<Direcao> Direcoes = new List<Direcao>();
if (_deteccaoFrontal)
{
Direcoes.Add(Direcao.Frente);
}
if (_deteccaoTraseira)
{
Direcoes.Add(Direcao.Tras);
}
if (_deteccaoEsquerda)
{
Direcoes.Add(Direcao.Esquerda);
}
if (_deteccaoDireita)
{
Direcoes.Add(Direcao.Direita);
}
return Direcoes;
}
}
public Direcao DirecaoDesvio
{
get
{
if (_paradaFrontal || _paradaTraseira || _paradaEsquerda || _paradaDireita || (_deteccaoEsquerda && _deteccaoDireita))
{
return Direcao.Parado;
}
else if (_deteccaoEsquerda && _desvioEsquerda)
{
return Direcao.Direita;
}
else if (_deteccaoDireita && _desvioDireita)
{
return Direcao.Esquerda;
}
return Direcao.Frente;
}
}
}
public class UltrasonicA05ConfiguracoesSensor

View File

@ -142,7 +142,7 @@ namespace AgroBase.Services
Endereco = UltrasonicA05Service.slaveAddress,
Comando = UltrasonicA05Service.ComandoAquisicaoDados(),
Verificacao = false,
TamanhoEsperado = 11,
TamanhoEsperado = 13,
TimeoutResposta = 1000,
});
}

View File

@ -11,7 +11,13 @@ namespace AgroBase.Services
{
public class PZEMService
{
public static bool Iniciado { get; set; }
public static bool Iniciado
{
get
{
return UltimaLeitura.DataHora.AddMilliseconds(ModbusService.TaxaAmostragem * 5) > DateTime.Now;
}
}
public static byte slaveAddress = 0x01;
@ -63,7 +69,7 @@ namespace AgroBase.Services
await Task.Delay(200);
}
Iniciado = DecifrarRespostaAquisicao(Comando.Resposta);
DecifrarRespostaAquisicao(Comando.Resposta);
if (Iniciado)
{

View File

@ -179,16 +179,14 @@ namespace AgroBase.Services
public static async Task RealizarVarreduraPortasUSB() // System.Timers.Timer tmr
public static async Task RealizarVarreduraPortasUSB()
{
//tmr.Interval = InteraloVerificacao;
if (VarreduraEmAndamento || frmInstancial.Fechando)
{
return;
}
VarreduraEmAndamento = true;
//VarreduraEmAndamento = true;
try
{
@ -240,46 +238,8 @@ namespace AgroBase.Services
try
{
string ProtocoloCheck = "";
_Porta.Open();
/*if (!PortaDispositivoProprio && !DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Atu))
{
ProtocoloCheck = Variaveis.OperacaoEmAndamento.DispAtu.Dados.ProtocoloVerificacao(true);
AtualizarConsole("Procurando dispositivo ATU");
if (!EnviarDadosPortaSerial(_Porta, ProtocoloCheck))
{
continue;
}
await AguardaRespostaPorta(_Porta, 1000);
PortaDispositivoProprio = ProcessarRespostaDispositivo(_Porta);
if (PortaDispositivoProprio)
{
AtualizarConsole("Dispositivo ATU encontrado");
}
}
if (!PortaDispositivoProprio && !DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Sen))
{
ProtocoloCheck = Variaveis.OperacaoEmAndamento.DispSen.Dados.ProtocoloVerificacao(true);
AtualizarConsole("Procurando dispositivo SEN");
if (!EnviarDadosPortaSerial(_Porta, ProtocoloCheck))
{
continue;
}
await AguardaRespostaPorta(_Porta, 1000);
PortaDispositivoProprio = ProcessarRespostaDispositivo(_Porta);
if (PortaDispositivoProprio)
{
AtualizarConsole("Dispositivo SEN encontrado");
}
}*/
if (!PortaDispositivoProprio && !GPSService.Iniciado)
{
AtualizarConsole("Procurando dispositivo GPS");

View File

@ -10,7 +10,13 @@ namespace AgroBase.Services
{
public class UltrasonicA05Service
{
public static bool Iniciado { get; set; }
public static bool Iniciado
{
get
{
return DadosLeitura.Momento.AddMilliseconds(ModbusService.TaxaAmostragem * 5) > DateTime.Now;
}
}
public static byte slaveAddress = 0x01;
@ -37,7 +43,7 @@ namespace AgroBase.Services
await Task.Delay(200);
}
Iniciado = DecifrarRespostaAquisicao(Comando.Resposta);
DecifrarRespostaAquisicao(Comando.Resposta);
if (Iniciado)
{
@ -120,12 +126,15 @@ namespace AgroBase.Services
DadosLeitura = modelo;
if (Variaveis.OperacaoEmAndamento.DispSen != null && Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom != null)
if (Variaveis.OperacaoEmAndamento.DispSen?.Dados?.ConfiguracaoSensorUltrassom != null)
{
for (int i = 0; i < Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom.Sensores.Count(); i++)
{
var sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom.Sensores[i];
sensor.LeituraCm = leituras[i] / 1000.0;
if (leituras[i] > 0)
{
var sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom.Sensores[i];
sensor.LeituraCm = leituras[i] / 10.0;
}
}
DadosLeitura.Configuracao = Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom;
}

View File

@ -12,7 +12,13 @@ namespace AgroBase.Services
{
public class WT901CService
{
public static bool Iniciado { get; set; }
public static bool Iniciado
{
get
{
return DadosLeitura.Momento.AddMilliseconds(ModbusService.TaxaAmostragem * 5) > DateTime.Now;
}
}
public static byte slaveAddress = 0x50;
private static Dictionary<string, object> DadosSensor { get; } = new Dictionary<string, object>();
@ -75,7 +81,7 @@ namespace AgroBase.Services
await Task.Delay(200);
}
Iniciado = DecifrarRespostaAquisicao(Comando.Resposta, ComandoAquisicaoDados());
DecifrarRespostaAquisicao(Comando.Resposta, ComandoAquisicaoDados());
if (Iniciado)
{

View File

@ -1 +1 @@
{"tmrRegistrador":{"_uiControl":null,"State":2,"IsRunning":false,"IsStopped":true,"IsCreated":false,"Interval":1000,"StackTrace":"AtuadorModel.IniciarRegistrador","Id":"tmrRegistrador_Atu","Ticks":22,"TimeTick":"00:00:00"},"Modulo_ID":"Atu","IP":"192.168.100.13","RequisitarDados":true,"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B02","Posicao":2,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B03","Posicao":3,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B04","Posicao":4,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0}],"BombasPressurizadoras":[{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","LimiteMaximo":120.0,"LimiteMinimo":60.0}],"BombaPressurizadora":{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false},"ScriptDeteccaoErvas":"weed_detector-1_0.py","DadosLeitura":{"Momento":"0001-01-01T00:00:00","Conectado":false,"Mod_ID":null,"QualidadeWifi":0,"LatenciaLoop":0,"BicosPulverizadores":[],"BombasPressurizadoras":[],"SensoresFluxo":[],"SensoresMassa":[],"SensoresPressao":[]},"_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"MassaReservatorio":0.0,"VolumeReservatorio":0.0,"PercentualReservatorio":0.0,"VolumeVazaoAferido":0.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"VazaoFluxoMLpSInstantanea":0.0,"VazaoFluxoMLpSMedia":0.0,"VolumeVazaoML":0.0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"PressaoLinha":0.0,"PressaoLinhaCalc":0.0}
{"tmrRegistrador":{"_uiControl":null,"State":2,"IsRunning":false,"IsStopped":true,"IsCreated":false,"Interval":1000,"StackTrace":"AtuadorModel.IniciarRegistrador","Id":"tmrRegistrador_Atu","Ticks":165,"TimeTick":"00:00:00"},"Modulo_ID":"Atu","IP":"192.168.100.13","RequisitarDados":true,"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B02","Posicao":2,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B03","Posicao":3,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0},{"ID":"B04","Posicao":4,"Componente":422,"AtuacaoNivelAlto":true,"ComandoAtuar":false,"Comandar":true,"Testando":false,"Funcoes":[21],"LeituraStatusBico":false,"MediaNivelFluxo":0.0,"Leitura":null,"Inicializado":false,"Atuacoes":0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0}],"BombasPressurizadoras":[{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false}],"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Leitura":null,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","LimiteMaximo":120.0,"LimiteMinimo":60.0}],"BombaPressurizadora":{"ID":"BOMBA","ComandoAtuar":false,"Componente":325,"LeituraEstado":false,"Comandar":true,"Testando":false,"Funcoes":[14,35,36,37,5],"LeituraPotencia":0.0,"LeituraPressaoSP":0.0,"LeituraPressao":0.0,"Leitura":null,"Inicializado":false},"ScriptDeteccaoErvas":"weed_detector-1_0.py","DadosLeitura":{"Momento":"0001-01-01T00:00:00","Conectado":false,"Mod_ID":null,"QualidadeWifi":0,"LatenciaLoop":0,"BicosPulverizadores":[],"BombasPressurizadoras":[],"SensoresFluxo":[],"SensoresMassa":[],"SensoresPressao":[]},"_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"MassaReservatorio":0.0,"VolumeReservatorio":0.0,"PercentualReservatorio":0.0,"VolumeVazaoAferido":0.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"VazaoFluxoMLpSInstantanea":0.0,"VazaoFluxoMLpSMedia":0.0,"VolumeVazaoML":0.0,"InicioAtuacao":"0001-01-01T00:00:00","TempoAtuado":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"PressaoLinha":0.0,"PressaoLinhaCalc":0.0}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -440,7 +440,6 @@ C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmMKS.res
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.IHM.frmDialogoMapa.resources
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.IHM.frmAjustes.resources
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.IHM.frmDiagnosticos.resources
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CopyComplete
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\Microsoft.Kinect.dll
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\AssimpNet.dll
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\AssimpNet.xml
@ -481,3 +480,4 @@ C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\MathNet.Numerics.xml
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\OpenHardwareMonitorLib.dll
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmA05Config.resources
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmEthernet.resources
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.Up2Date