ajustado controle direcional

This commit is contained in:
Diego Freitas 2025-03-05 16:25:57 -03:00
parent d95257ff2a
commit 63058b5abf
33 changed files with 2881 additions and 138 deletions

Binary file not shown.

View File

@ -3,20 +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\\frmmapa.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmmapa.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\\models\\generaljoystick.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\generaljoystick.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\\frmmapa.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmmapa.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\\modules\\movimentacaounificadomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\movimentacaounificadomodel.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\\frmgps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmgps.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\\frmacompanhamento.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmacompanhamento.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\\frmgps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmgps.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\\mks057dservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\mks057dservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
@ -26,57 +26,59 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 3,
"SelectedChildIndex": 1,
"Children": [
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "frmGPS.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmGPS.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmGPS.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmGPS.cs",
"RelativeToolTip": "AgroBase\\Forms\\frmGPS.cs",
"ViewState": "AQIAABMAAAAAAAAAAAAwwFMAAAB1AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-02-06T23:36:23.855Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "frmGPS.cs [Design]",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmGPS.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmGPS.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmGPS.cs [Design]",
"RelativeToolTip": "AgroBase\\Forms\\frmGPS.cs [Design]",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-02-06T23:32:18.176Z",
"EditorCaption": " [Design]"
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "frmMapa.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmMapa.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmMapa.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmMapa.cs",
"RelativeToolTip": "AgroBase\\Forms\\frmMapa.cs",
"ViewState": "AQIAAI0AAAAAAAAAAAAqwJwAAAAuAAAA",
"Title": "MovimentacaoUnificadoModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
"ViewState": "AQIAAF4CAAAAAAAAAAAhwBEEAAAuAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-02-06T17:31:27.011Z",
"WhenOpened": "2025-03-05T18:33:00.132Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "frmMapa.cs [Design]",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmMapa.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmMapa.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmMapa.cs [Design]",
"RelativeToolTip": "AgroBase\\Forms\\frmMapa.cs [Design]",
"Title": "GeneralJoystick.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\GeneralJoystick.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\GeneralJoystick.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\GeneralJoystick.cs",
"RelativeToolTip": "AgroBase\\Models\\GeneralJoystick.cs",
"ViewState": "AQIAAFYCAAAAAAAAAAASwHgCAABgAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-02-06T17:31:25.372Z",
"EditorCaption": " [Design]"
"WhenOpened": "2025-03-05T16:35:13.298Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "MKS057DService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\MKS057DService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\MKS057DService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\MKS057DService.cs",
"RelativeToolTip": "AgroBase\\Services\\MKS057DService.cs",
"ViewState": "AQIAAOwBAAAAAAAAAAAlwBkCAAANAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-05T13:29:23.053Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "frmAcompanhamento.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmAcompanhamento.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmAcompanhamento.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmAcompanhamento.cs",
"RelativeToolTip": "AgroBase\\Forms\\frmAcompanhamento.cs",
"ViewState": "AQIAAAwAAAAAAAAAAAAAAG8AAABfAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2025-03-05T13:10:45.219Z",
"EditorCaption": ""
}
]
}

View File

@ -53,9 +53,9 @@
this.tabInformacoes = new System.Windows.Forms.TabPage();
this.gridDados = new System.Windows.Forms.DataGridView();
this.tabDeteccoes = new System.Windows.Forms.TabPage();
this.pnlDeteccoesRua = new System.Windows.Forms.Panel();
this.chbSonarAtivado = new System.Windows.Forms.CheckBox();
this.chbMostrarGrade = new System.Windows.Forms.CheckBox();
this.pnlDeteccoesRua = new System.Windows.Forms.Panel();
this.chbSonarDesvioAutomatico = new System.Windows.Forms.CheckBox();
this.tabPulverizador = new System.Windows.Forms.TabPage();
this.lblPressaoSP = new System.Windows.Forms.Label();
@ -82,6 +82,7 @@
this.lblTipoMovimento = new System.Windows.Forms.Label();
this.chbPulverizador = new System.Windows.Forms.CheckBox();
this.flwCamerasSolo = new System.Windows.Forms.FlowLayoutPanel();
this.lblGPSFix = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.chartGraficos)).BeginInit();
this.tabControl1.SuspendLayout();
this.tabMapa.SuspendLayout();
@ -198,6 +199,7 @@
// tabMapa
//
this.tabMapa.BackColor = System.Drawing.Color.White;
this.tabMapa.Controls.Add(this.lblGPSFix);
this.tabMapa.Controls.Add(this.lblGPSprecisao);
this.tabMapa.Controls.Add(this.lblGPSaltitude);
this.tabMapa.Controls.Add(this.lblGPSvelocidade);
@ -228,7 +230,7 @@
// lblGPSaltitude
//
this.lblGPSaltitude.AutoSize = true;
this.lblGPSaltitude.Location = new System.Drawing.Point(4, 142);
this.lblGPSaltitude.Location = new System.Drawing.Point(4, 155);
this.lblGPSaltitude.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblGPSaltitude.Name = "lblGPSaltitude";
this.lblGPSaltitude.Size = new System.Drawing.Size(74, 13);
@ -238,7 +240,7 @@
// lblGPSvelocidade
//
this.lblGPSvelocidade.AutoSize = true;
this.lblGPSvelocidade.Location = new System.Drawing.Point(4, 129);
this.lblGPSvelocidade.Location = new System.Drawing.Point(4, 142);
this.lblGPSvelocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblGPSvelocidade.Name = "lblGPSvelocidade";
this.lblGPSvelocidade.Size = new System.Drawing.Size(80, 13);
@ -346,14 +348,6 @@
this.tabDeteccoes.Text = "Detecção rua";
this.tabDeteccoes.UseVisualStyleBackColor = true;
//
// pnlDeteccoesRua
//
this.pnlDeteccoesRua.Location = new System.Drawing.Point(13, 13);
this.pnlDeteccoesRua.Margin = new System.Windows.Forms.Padding(2);
this.pnlDeteccoesRua.Name = "pnlDeteccoesRua";
this.pnlDeteccoesRua.Size = new System.Drawing.Size(434, 242);
this.pnlDeteccoesRua.TabIndex = 0;
//
// chbSonarAtivado
//
this.chbSonarAtivado.AutoSize = true;
@ -378,6 +372,14 @@
this.chbMostrarGrade.UseVisualStyleBackColor = true;
this.chbMostrarGrade.CheckedChanged += new System.EventHandler(this.chbMostrarGrade_CheckedChanged);
//
// pnlDeteccoesRua
//
this.pnlDeteccoesRua.Location = new System.Drawing.Point(13, 13);
this.pnlDeteccoesRua.Margin = new System.Windows.Forms.Padding(2);
this.pnlDeteccoesRua.Name = "pnlDeteccoesRua";
this.pnlDeteccoesRua.Size = new System.Drawing.Size(434, 242);
this.pnlDeteccoesRua.TabIndex = 0;
//
// chbSonarDesvioAutomatico
//
this.chbSonarDesvioAutomatico.AutoSize = true;
@ -665,6 +667,16 @@
this.flwCamerasSolo.Size = new System.Drawing.Size(597, 172);
this.flwCamerasSolo.TabIndex = 36;
//
// lblGpsFix
//
this.lblGPSFix.AutoSize = true;
this.lblGPSFix.Location = new System.Drawing.Point(4, 129);
this.lblGPSFix.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
this.lblGPSFix.Name = "lblGpsFix";
this.lblGPSFix.Size = new System.Drawing.Size(71, 13);
this.lblGPSFix.TabIndex = 32;
this.lblGPSFix.Text = "SemCorrecao";
//
// frmOperacaoManual
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -773,5 +785,6 @@
private System.Windows.Forms.CheckBox chbSonarAtivado;
private System.Windows.Forms.CheckBox chbMostrarGrade;
private System.Windows.Forms.FlowLayoutPanel flwCamerasSolo;
private System.Windows.Forms.Label lblGPSFix;
}
}

View File

@ -165,7 +165,8 @@ namespace AgroBase.Forms.Operacoes
lblDistanciaEsquerda.Text = "Distancia Esq: " + _Sensoriamento.Trajetoria.DistanciaEsquerda.ToString("0.00") + " cm";
lblDistanciaDireita.Text = "Distancia Dir: " + _Sensoriamento.Trajetoria.DistanciaDireita.ToString("0.00") + " cm";
lblGPSsatelites.Text = _Sensoriamento.Gps.NumeroSatelites.ToString() + " satélites";
lblGPSprecisao.Text = "Precisão: " + _Sensoriamento.Gps.PrecisaoHorizontal.ToString("0.00") + " m";
lblGPSFix.Text = _Sensoriamento.Gps.QualidadeFix.ToString();
lblGPSprecisao.Text = "Precisão: " + _Sensoriamento.Gps.PrecisaoCm.ToString("0.00") + " cm";
lblGPSvelocidade.Text = "Vel.: " + _Sensoriamento.Gps.Velocidade.ToString("0.00") + " km/h";
lblGPSaltitude.Text = "Altitude: " + _Sensoriamento.Gps.Altitude.ToString("0.0") + " m";

View File

@ -668,25 +668,25 @@ namespace AgroBase.Forms.Operacoes
new GraficoInterativoSerieModel()
{
Titulo = $"{camNome} RAM %",
Valores = camSolo.Select(x => (double)(x?.Leitura.device_data.Memory_Usage.Percent ?? 0)).ToList(),
Valores = camSolo.Select(x => (double)(x?.Leitura?.device_data?.Memory_Usage?.Percent ?? 0)).ToList(),
Visivel = true,
},
new GraficoInterativoSerieModel()
{
Titulo = $"{camNome} CPU Temp",
Valores = camSolo.Select(x => (double)(x?.Leitura.device_data.Temperature.css ?? 0)).ToList(),
Valores = camSolo.Select(x => (double)(x?.Leitura?.device_data?.Temperature?.css ?? 0)).ToList(),
Visivel = true,
},
new GraficoInterativoSerieModel()
{
Titulo = $"{camNome} RAM Temp",
Valores = camSolo.Select(x => (double)(x?.Leitura.device_data.Temperature.mss ?? 0)).ToList(),
Valores = camSolo.Select(x => (double)(x?.Leitura?.device_data?.Temperature?.mss ?? 0)).ToList(),
Visivel = true,
},
new GraficoInterativoSerieModel()
{
Titulo = $"{camNome} VCC Temp",
Valores = camSolo.Select(x => (double)(x?.Leitura.device_data.Temperature.upa ?? 0)).ToList(),
Valores = camSolo.Select(x => (double)(x?.Leitura?.device_data?.Temperature?.upa ?? 0)).ToList(),
Visivel = true,
}
});
@ -701,25 +701,25 @@ namespace AgroBase.Forms.Operacoes
new GraficoInterativoSerieModel()
{
Titulo = $"{camNome} RAM %",
Valores = camCaminho.Select(x => (double)(x?.Leitura.device_data.Memory_Usage.Percent ?? 0)).ToList(),
Valores = camCaminho.Select(x => (double)(x?.Leitura?.device_data?.Memory_Usage?.Percent ?? 0)).ToList(),
Visivel = true,
},
new GraficoInterativoSerieModel()
{
Titulo = $"{camNome} CPU Temp",
Valores = camCaminho.Select(x => (double)(x?.Leitura.device_data.Temperature.css ?? 0)).ToList(),
Valores = camCaminho.Select(x => (double)(x?.Leitura?.device_data?.Temperature?.css ?? 0)).ToList(),
Visivel = true,
},
new GraficoInterativoSerieModel()
{
Titulo = $"{camNome} RAM Temp",
Valores = camCaminho.Select(x => (double)(x?.Leitura.device_data.Temperature.mss ?? 0)).ToList(),
Valores = camCaminho.Select(x => (double)(x?.Leitura?.device_data?.Temperature?.mss ?? 0)).ToList(),
Visivel = true,
},
new GraficoInterativoSerieModel()
{
Titulo = $"{camNome} VCC Temp",
Valores = camCaminho.Select(x => (double)(x?.Leitura.device_data.Temperature.upa ?? 0)).ToList(),
Valores = camCaminho.Select(x => (double)(x?.Leitura?.device_data?.Temperature?.upa ?? 0)).ToList(),
Visivel = true,
}
});

View File

@ -623,14 +623,16 @@ namespace AgroBase
}
else
{
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(x => x.DirMotor.EnviarComandoControle(DirecaoAtual));
/*Task.Run(async () =>
foreach (var mod in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos)
{
foreach (var mod in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos)
mod.DirMotor.EnviarComandoControle(DirecaoAtual);
if (mod.MovMotor.CompensacaoNecessaria)
{
mod.DirMotor.EnviarComandoControle(DirecaoAtual);
};
});*/
Direcao ultimaDirecaoMov = Variaveis.OperacaoEmAndamento.Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Mov)?.UltimaDirecao ?? Direcao.Parado;
mod.MovMotor.EnviarComandoControle(ultimaDirecaoMov);
}
};
}
break;
}

View File

@ -341,12 +341,17 @@ namespace AgroBase.Models.Modules
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sRLE, Modulo.DirMotor.SensorAnguloAuxiliar.ReleControle.ID, Estado.Desligado);
await Task.Delay(2000);
}
Direcao direcaoContraria = Modulo.DirMotor.SensorAnguloAuxiliar.Sentido == Sentido.Horario ? Direcao.Esquerda : Direcao.Direita;
var _sentido = Modulo.DirMotor.SensorAnguloAuxiliar?.Sentido ?? Sentido.Parado;
Direcao direcaoContraria =
_sentido == Sentido.Horario ? Direcao.Esquerda :
_sentido == Sentido.Antihorario ? Direcao.Direita :
Direcao.Parado;
Modulo.DirMotor.EnviarComandoControle(direcaoContraria);
}
// Verifica se o angulo de set point do motor em questao e diferente do angulo atual, e se for, reenvia o comando para garantir que o motor esteja coerente com o set point
if (!MKS057DService.Referenciando && (Modulo.DirMotor.UltimoComandoEnviado.AddMilliseconds(1000) < DateTime.Now) && !Modulo.DirMotor.AtingiuAnguloSP)
if (!MKS057DService.Referenciando && (Modulo.DirMotor.UltimoComandoEnviado.AddMilliseconds(500) < DateTime.Now) && !Modulo.DirMotor.AtingiuAnguloSP)
{
var Controle = Variaveis.OperacaoEmAndamento.Controle.TiposControle?.FirstOrDefault(x => x.Tipo == T_Code.Dir);
if (Controle != null)
@ -603,6 +608,13 @@ namespace AgroBase.Models.Modules
return Convert.ToByte(Endereco.Replace("0x", ""), 16);
}
}
public string Mod_ID
{
get
{
return Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.Modulos?.FirstOrDefault(x => x.MovMotor.EnderecoByte == EnderecoByte)?.Modulo_ID ?? "";
}
}
public bool LeituraLigado
{
get
@ -743,6 +755,37 @@ namespace AgroBase.Models.Modules
}
}
public bool CompensacaoNecessaria
{
get
{
if (ComandoLigado)
{
var _Controle = Variaveis.OperacaoEmAndamento.Controle;
var _ControleDir = _Controle.TiposControle.FirstOrDefault(x => x.Tipo == T_Code.Dir);
bool movimentoCompensado =
_Controle.TipoMovimento == TipoMovimentoDirecional.MovimentoArco ||
_Controle.TipoMovimento == TipoMovimentoDirecional.RodasDianteiras ||
_Controle.TipoMovimento == TipoMovimentoDirecional.RodasTraseiras;
bool emCurva = _ControleDir.UltimaDirecao != Direcao.Parado;
if (movimentoCompensado && emCurva)
{
if (
(_ControleDir.UltimaDirecao == Direcao.Esquerda && Mod_ID.Contains("E")) ||
(_ControleDir.UltimaDirecao == Direcao.Direita && Mod_ID.Contains("D"))
)
{
return true;
}
}
}
return false;
}
}
public Dictionary<TipoMovimentoDirecional,ConfiguracaoSentidoMotor> ConfigSentidos { get; set; }
public List<FuncoesPinout> Funcoes { get; set; }
@ -914,6 +957,8 @@ namespace AgroBase.Models.Modules
ComandoLigado = RPM_SP > 0;
RPM_SP = Convert.ToInt32(RPM_SP * FatorCompensacaoCurvas());
Variaveis.OperacaoEmAndamento.SimulacaoRpmControle = (RPM_SP / VariaveisEquipamento.RelacaoRPM);
switch (DirecaoAtual)
@ -948,7 +993,7 @@ namespace AgroBase.Models.Modules
ComandoLigado ? OIDModoControle.Velocidade :
OIDModoControle.Corrente;
if (Leitura.ModoControle != modoControle)
if ((Leitura?.ModoControle ?? OIDModoControle.Velocidade) != modoControle)
{
OIDService.AdicionarComandoNaFila(new OIDComandoModel()
{
@ -994,6 +1039,19 @@ namespace AgroBase.Models.Modules
}
}
private float FatorCompensacaoCurvas()
{
if (CompensacaoNecessaria)
{
double compensacao = 1 - FuncoesMatematicas.Map(Variaveis.OperacaoEmAndamento.Controle.Angulo, 0.0, 45.0, 0.0, 0.7);
return (float)compensacao;
}
else
{
return 1;
}
}
}
@ -1035,7 +1093,10 @@ namespace AgroBase.Models.Modules
{
get
{
return Leitura?.Direcao ?? Sentido.Parado;
return
Angulo > 0 ? Sentido.Horario :
Angulo < 0 ? Sentido.Antihorario :
Sentido.Parado;
}
}
public double Angulo
@ -1108,7 +1169,9 @@ namespace AgroBase.Models.Modules
{
get
{
return (UltimaDirecao != Direcao.Esquerda && UltimaDirecao != Direcao.Direita);
bool foraZero = !FuncoesMatematicas.ValorEstaEntre(Angulo, 0, 1);
bool parar = UltimaDirecao == Direcao.Parado;
return foraZero && parar;
}
}
public bool EmMovimento
@ -1258,25 +1321,28 @@ namespace AgroBase.Models.Modules
bool limiteLateralExcedido = SensorAnguloAuxiliar?.LimiteExcedido ?? false;
if (UltimaDirecao != Direcao)
if (!Comandar || limiteLateralExcedido)
{
Sentido_SP =
Direcao == Direcao.Direita ? ConfigSentidos[_Controle.TipoMovimento].Direita :
Direcao == Direcao.Esquerda ? ConfigSentidos[_Controle.TipoMovimento].Esquerda :
Sentido_SP == Sentido.Horario ? Sentido.Antihorario :
Sentido_SP == Sentido.Antihorario ? Sentido.Horario :
Sentido.Parado;
if (!limiteLateralExcedido)
{
UltimaDirecao = Direcao;
}
Sentido_SP = Sentido.Parado;
}
else if (Direcao == Direcao.Direita)
{
Sentido_SP = ConfigSentidos[_Controle.TipoMovimento].Direita;
}
else if (Direcao == Direcao.Esquerda)
{
Sentido_SP = ConfigSentidos[_Controle.TipoMovimento].Esquerda;
}
else
{
Sentido_SP = Sentido.Parado;
}
if (RetornandoAzero || !Comandar || limiteLateralExcedido)
UltimaDirecao = Direcao;
if (Sentido_SP == Sentido.Parado)
{
Angulo_SP = 0;
Sentido_SP = Sentido.Parado;
UltimaDirecao = Direcao.Parado;
}
else if (AnguloTipoMovimento != -1)
@ -1305,6 +1371,7 @@ namespace AgroBase.Models.Modules
MKS057DService.AdicionarComandoNaFila(MKS057DService.MontarComandoMovimento(EnderecoByte, Angulo_SP, Velocidade, Sentido_SP));
UltimoComandoEnviado = DateTime.Now;
}
}
public async Task ReferenciaMotor()
@ -1402,7 +1469,7 @@ namespace AgroBase.Models.Modules
if (_anguloEntrada == 9999)
{
inverterGiro = (_angulo > 0 && Angulo >= (_angulo - 0.5)) || (_angulo < 0 && Angulo <= (_angulo + 0.5));
if (!inverterGiro && SensorAnguloAuxiliar != null)
if (!inverterGiro && SensorAnguloAuxiliar != null && false)
{
if (SensorAnguloAuxiliar.Angulo < (SensorAnguloAuxiliar.LimiteMinimo / 2.0) || SensorAnguloAuxiliar.Angulo > (SensorAnguloAuxiliar.LimiteMaximo / 2.0))
{

View File

@ -357,6 +357,7 @@ namespace AgroBase.Services
Endereco = Endereco,
AguardaResposta = true,
TamanhoResposta = 8,
TimeoutResposta = 200,
};
}
@ -371,6 +372,7 @@ namespace AgroBase.Services
Endereco = Endereco,
AguardaResposta = true,
TamanhoResposta = 5,
TimeoutResposta = 200,
};
}
@ -445,6 +447,7 @@ namespace AgroBase.Services
ModoControle = Controle,
AguardaResposta = true,
TamanhoResposta = 5,
TimeoutResposta = 200,
};
}
@ -586,7 +589,7 @@ namespace AgroBase.Services
ushort velocidade = (ushort)Comando.Velocidade;
byte[] VelocidadeBytes = BitConverter.GetBytes(velocidade); // Little Endian
byte _Sentido = Comando._Sentido == Sentido.Horario ? (byte)0x01 : (byte)0x00;
byte _Sentido = Comando._Sentido == Sentido.Horario ? FWD : RWD;
string _AnguloStr = ConverterAnguloParaValor(Comando.Angulo).ToString();
@ -595,14 +598,7 @@ namespace AgroBase.Services
uint PulseText = Convert.ToUInt32(_AnguloStr, 10);
byte[] PulsosBytes = BitConverter.GetBytes(PulseText);
if (Comando._Sentido == Sentido.Antihorario)
{
VelocidadeBytes[1] |= RWD;
}
else if (Comando._Sentido == Sentido.Horario)
{
VelocidadeBytes[1] |= FWD;
}
VelocidadeBytes[1] |= _Sentido;
// Construção do Buffer de Pulsos (idêntico ao original)
Buffer = new byte[]
@ -640,7 +636,7 @@ namespace AgroBase.Services
private static bool DecifrarRespostaDriver(byte[] resposta)
{
if (resposta == null || resposta.Length == 0 || resposta.Length > 11)
if (resposta == null || resposta.Length == 0)
{
return false;
}
@ -796,7 +792,7 @@ namespace AgroBase.Services
break;
default:
MessageBox.Show("Erro ao decodificar resposta");
Console.WriteLine("Erro ao decodificar resposta");
return false;
}

View File

@ -312,3 +312,4 @@
29/01/2025 14:28:23:051 - Porta COM20 - 0: Erro ao processar fila de comandos. Erro=The port is closed.
19/02/2025 16:02:07:001 - Porta COM - 0: Erro ao processar fila de comandos. Erro=The port is closed.
19/02/2025 16:05:23:105 - Porta COM77 - 0: Erro ao processar fila de comandos. Erro=The port is closed.
05/03/2025 15:45:57:518 - Porta COM28 - 0: Erro ao processar fila de comandos. Erro=A porta está fechada.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -25,7 +25,7 @@
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
#map_40b1108e333517ffcf33c7dc2f290963 {
#map_621b62163f2ccafd05c33f58249e3800 {
position: relative;
width: 100.0%;
height: 100.0%;
@ -39,14 +39,14 @@
<body>
<div class="folium-map" id="map_40b1108e333517ffcf33c7dc2f290963" ></div>
<div class="folium-map" id="map_621b62163f2ccafd05c33f58249e3800" ></div>
</body>
<script>
var map_40b1108e333517ffcf33c7dc2f290963 = L.map(
"map_40b1108e333517ffcf33c7dc2f290963",
var map_621b62163f2ccafd05c33f58249e3800 = L.map(
"map_621b62163f2ccafd05c33f58249e3800",
{
center: [0.0, 0.0],
crs: L.CRS.EPSG3857,
@ -60,13 +60,13 @@
var tile_layer_12f8b928aba0bec9587603488d6125aa = L.tileLayer(
var tile_layer_54182e004e62958132ef1f2ec111c5b8 = L.tileLayer(
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
);
tile_layer_12f8b928aba0bec9587603488d6125aa.addTo(map_40b1108e333517ffcf33c7dc2f290963);
tile_layer_54182e004e62958132ef1f2ec111c5b8.addTo(map_621b62163f2ccafd05c33f58249e3800);
</script>
@ -87,7 +87,7 @@
}
trajeto_json_add({"features": []});
trajeto_json.addTo(map_40b1108e333517ffcf33c7dc2f290963);
trajeto_json.addTo(map_621b62163f2ccafd05c33f58249e3800);
function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria);
@ -145,7 +145,7 @@
var marcadorDinamico = L.marker([0, 0], {
icon: customIcon
}).addTo(map_40b1108e333517ffcf33c7dc2f290963);
}).addTo(map_621b62163f2ccafd05c33f58249e3800);
// Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
@ -183,7 +183,7 @@
marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
map_40b1108e333517ffcf33c7dc2f290963.setView(novaPosicao, map_40b1108e333517ffcf33c7dc2f290963.getZoom());
map_621b62163f2ccafd05c33f58249e3800.setView(novaPosicao, map_621b62163f2ccafd05c33f58249e3800.getZoom());
});
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {

File diff suppressed because one or more lines are too long

View File

@ -480,6 +480,6 @@ C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.Sensoriame
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Properties.Resources.resources
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.GenerateResource.cache
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CoreCompileInputs.cache
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CopyComplete
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.exe
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.pdb
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.Up2Date