ajustes performance manager worker
This commit is contained in:
parent
97acd6f2f4
commit
1574cd5538
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.
|
|
@ -2,33 +2,29 @@
|
||||||
"Version": 1,
|
"Version": 1,
|
||||||
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
|
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
|
||||||
"Documents": [
|
"Documents": [
|
||||||
|
{
|
||||||
|
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\trajetoriamapaoperacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
|
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\trajetoriamapaoperacaomodel.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}",
|
"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}"
|
"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\\services\\mks057dcanservice.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\\operadores\\operadoresservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\mks057dcanservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\operadores\\operadoresservice.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\\frmmks.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\\frminstancial.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmmks.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frminstancial.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\\frmmks.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\\simuladores\\frmsimulacaomapagps.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmmks.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
|
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\simuladores\\frmsimulacaomapagps.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\\direcionalmodel.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\\pythonservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\direcionalmodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\pythonservice.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\\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\\models\\modules\\sensoriamentomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
|
||||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\sensoriamentomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"DocumentGroupContainers": [
|
"DocumentGroupContainers": [
|
||||||
|
|
@ -38,96 +34,84 @@
|
||||||
"DocumentGroups": [
|
"DocumentGroups": [
|
||||||
{
|
{
|
||||||
"DockedWidth": 200,
|
"DockedWidth": 200,
|
||||||
"SelectedChildIndex": 0,
|
"SelectedChildIndex": 2,
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 0,
|
"DocumentIndex": 1,
|
||||||
"Title": "OperacaoModel.cs",
|
"Title": "OperacaoModel.cs",
|
||||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
||||||
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
||||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
||||||
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
||||||
"ViewState": "AQIAACIDAAAAAAAAAAAUwGMDAAAWAAAA",
|
"ViewState": "AQIAAHwDAAAAAAAAAAAQwJQFAABMAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2025-05-19T10:52:21.592Z",
|
"WhenOpened": "2025-07-30T23:29:07.62Z",
|
||||||
"EditorCaption": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"$type": "Document",
|
|
||||||
"DocumentIndex": 5,
|
|
||||||
"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": "AQIAABcAAAAAAAAAAAAQwCIAAAAxAAAA",
|
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
|
||||||
"WhenOpened": "2025-05-19T10:55:20.352Z",
|
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 2,
|
"DocumentIndex": 2,
|
||||||
"Title": "frmMKS.cs",
|
"Title": "OperadoresService.cs",
|
||||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmMKS.cs",
|
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\Operadores\\OperadoresService.cs",
|
||||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmMKS.cs",
|
"RelativeDocumentMoniker": "AgroBase\\Services\\Operadores\\OperadoresService.cs",
|
||||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmMKS.cs",
|
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\Operadores\\OperadoresService.cs",
|
||||||
"RelativeToolTip": "AgroBase\\Forms\\frmMKS.cs",
|
"RelativeToolTip": "AgroBase\\Services\\Operadores\\OperadoresService.cs",
|
||||||
"ViewState": "AQIAAEcJAAAAAAAAAAA5wG8JAAAaAAAA",
|
"ViewState": "AQIAAB4AAAAAAAAAAIAwwFIAAAAQAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2025-05-19T10:42:45.135Z",
|
"WhenOpened": "2025-07-30T23:10:32.958Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 3,
|
"DocumentIndex": 0,
|
||||||
"Title": "frmMKS.cs [Design]",
|
"Title": "TrajetoriaMapaOperacaoModel.cs",
|
||||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmMKS.cs",
|
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\TrajetoriaMapaOperacaoModel.cs",
|
||||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmMKS.cs",
|
"RelativeDocumentMoniker": "AgroBase\\Models\\TrajetoriaMapaOperacaoModel.cs",
|
||||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmMKS.cs [Design]",
|
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\TrajetoriaMapaOperacaoModel.cs",
|
||||||
"RelativeToolTip": "AgroBase\\Forms\\frmMKS.cs [Design]",
|
"RelativeToolTip": "AgroBase\\Models\\TrajetoriaMapaOperacaoModel.cs",
|
||||||
|
"ViewState": "AQIAAKICAAAAAAAAAAAkwLICAABFAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2025-05-19T10:40:53.896Z",
|
"WhenOpened": "2025-07-30T22:49:55.626Z",
|
||||||
"EditorCaption": " [Design]"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"$type": "Document",
|
|
||||||
"DocumentIndex": 1,
|
|
||||||
"Title": "MKS057DCanService.cs",
|
|
||||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\MKS057DCanService.cs",
|
|
||||||
"RelativeDocumentMoniker": "AgroBase\\Services\\MKS057DCanService.cs",
|
|
||||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\MKS057DCanService.cs",
|
|
||||||
"RelativeToolTip": "AgroBase\\Services\\MKS057DCanService.cs",
|
|
||||||
"ViewState": "AQIAACcAAAAAAAAAAAAmwIUAAAA9AAAA",
|
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
|
||||||
"WhenOpened": "2025-05-16T13:48:29.51Z",
|
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 4,
|
"DocumentIndex": 4,
|
||||||
"Title": "DirecionalModel.cs",
|
"Title": "frmSimulacaoMapaGPS.cs",
|
||||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\DirecionalModel.cs",
|
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Simuladores\\frmSimulacaoMapaGPS.cs",
|
||||||
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\DirecionalModel.cs",
|
"RelativeDocumentMoniker": "AgroBase\\Forms\\Simuladores\\frmSimulacaoMapaGPS.cs",
|
||||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\DirecionalModel.cs",
|
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Simuladores\\frmSimulacaoMapaGPS.cs",
|
||||||
"RelativeToolTip": "AgroBase\\Models\\Modules\\DirecionalModel.cs",
|
"RelativeToolTip": "AgroBase\\Forms\\Simuladores\\frmSimulacaoMapaGPS.cs",
|
||||||
"ViewState": "AQIAAGYAAAAAAAAAAAAowGQBAAARAAAA",
|
"ViewState": "AQIAAFcAAAAAAAAAAAAIwHQAAAAsAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2025-05-16T13:46:41.52Z",
|
"WhenOpened": "2025-07-30T22:13:15.946Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 6,
|
"DocumentIndex": 5,
|
||||||
"Title": "SensoriamentoModel.cs",
|
"Title": "PythonService.cs",
|
||||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
|
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\PythonService.cs",
|
||||||
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
|
"RelativeDocumentMoniker": "AgroBase\\Services\\PythonService.cs",
|
||||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
|
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\PythonService.cs",
|
||||||
"RelativeToolTip": "AgroBase\\Models\\Modules\\SensoriamentoModel.cs",
|
"RelativeToolTip": "AgroBase\\Services\\PythonService.cs",
|
||||||
"ViewState": "AQIAAIsDAAAAAAAAAAAcwKkDAAAlAAAA",
|
"ViewState": "AQIAAAwAAAAAAAAAAAAYwNMAAAAMAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
"WhenOpened": "2025-05-16T12:09:31.074Z",
|
"WhenOpened": "2025-07-30T22:11:44.833Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 3,
|
||||||
|
"Title": "frmInstancial.cs",
|
||||||
|
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmInstancial.cs",
|
||||||
|
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmInstancial.cs",
|
||||||
|
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmInstancial.cs",
|
||||||
|
"RelativeToolTip": "AgroBase\\Forms\\frmInstancial.cs",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAACMAAAArAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||||
|
"WhenOpened": "2025-07-30T22:11:37.87Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -433,7 +433,7 @@ namespace AgroBase.Forms
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
double angulo = Variaveis.OperacaoEmAndamento.SimulacaoAnguloControle;
|
double angulo = Variaveis.OperacaoEmAndamento.SimulacaoAnguloControle;
|
||||||
double dif = Variaveis.OperacaoEmAndamento.Sensoriamento.Trajetoria.ErroOrientacaoAngularProximoPonto;
|
double dif = Variaveis.OperacaoEmAndamento.Sensoriamento.Trajetoria?.ErroOrientacaoAngularProximoPonto ?? 0;
|
||||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90, (float)dif);
|
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90, (float)dif);
|
||||||
}
|
}
|
||||||
catch { }
|
catch { }
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ namespace AgroBase.Forms
|
||||||
|
|
||||||
Task.Run(async () =>
|
Task.Run(async () =>
|
||||||
{
|
{
|
||||||
await VariaveisOperacao.Operadores.IniciarProcessamento(true);
|
await VariaveisOperacao.Operadores.IniciarProcessamento(false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -184,6 +184,7 @@ namespace AgroBase.Models
|
||||||
public LoRaProtocoloTransmissaoCoordenadasModel Coordenadas { get; set; }
|
public LoRaProtocoloTransmissaoCoordenadasModel Coordenadas { get; set; }
|
||||||
public LoRaProtocoloTransmissaoSensoresModel Sensores { get; set; }
|
public LoRaProtocoloTransmissaoSensoresModel Sensores { get; set; }
|
||||||
public LoRaProtocoloTransmissaoOperacaoModel Operacao { get; set; }
|
public LoRaProtocoloTransmissaoOperacaoModel Operacao { get; set; }
|
||||||
|
public LoRaProtocoloTransmissaoControleModel Controle { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LoRaProtocoloTransmissaoCoordenadasModel
|
public class LoRaProtocoloTransmissaoCoordenadasModel
|
||||||
|
|
@ -191,6 +192,12 @@ namespace AgroBase.Models
|
||||||
public double Latitude { get; set; }
|
public double Latitude { get; set; }
|
||||||
public double Longitude { get; set; }
|
public double Longitude { get; set; }
|
||||||
public double Orientacao { get; set; }
|
public double Orientacao { get; set; }
|
||||||
|
public double Altitude { get; set; }
|
||||||
|
public double Velocidade { get; set; }
|
||||||
|
public bool Inicializado { get; set; }
|
||||||
|
public TiposCorrecaoGPS Correcao { get; set; }
|
||||||
|
public int NSatelites { get; set; }
|
||||||
|
public double Precisao { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class LoRaProtocoloTransmissaoSensoresModel
|
public class LoRaProtocoloTransmissaoSensoresModel
|
||||||
|
|
@ -219,6 +226,15 @@ namespace AgroBase.Models
|
||||||
public string TempoEstimado { get; set; }
|
public string TempoEstimado { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class LoRaProtocoloTransmissaoControleModel
|
||||||
|
{
|
||||||
|
public Direcao direcao { get; set; }
|
||||||
|
public int percentual_velocidade_sp { get; set; }
|
||||||
|
public TipoMovimentoDirecional tipo_movimento { get; set; }
|
||||||
|
public int angulo_sp { get; set; }
|
||||||
|
public int velocidade_mp { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
public enum LoRaTipoProtocolo
|
public enum LoRaTipoProtocolo
|
||||||
{
|
{
|
||||||
Parametrizacao = 0x00,
|
Parametrizacao = 0x00,
|
||||||
|
|
|
||||||
|
|
@ -668,6 +668,8 @@ namespace AgroBase.Models
|
||||||
Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeMin;
|
Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeMin;
|
||||||
|
|
||||||
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
|
RedisService.AtualizarCampos(CtxKey.DadosOperacao, ("configurado", false));
|
||||||
|
|
||||||
|
Variaveis.OperacaoEmAndamento.Sensoriamento.AtualizarDados();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -688,6 +690,8 @@ namespace AgroBase.Models
|
||||||
ID = DataInicio.ToString("dd_MM_yyyy_HH_mm_ss");
|
ID = DataInicio.ToString("dd_MM_yyyy_HH_mm_ss");
|
||||||
Directory.CreateDirectory(Variaveis.CaminhoOperacoes + ID + "/");
|
Directory.CreateDirectory(Variaveis.CaminhoOperacoes + ID + "/");
|
||||||
|
|
||||||
|
Sensoriamento.AtualizarDados();
|
||||||
|
|
||||||
DispMvd?.Dados?.ReiniciarLeituras(DispMvd?.Dados);
|
DispMvd?.Dados?.ReiniciarLeituras(DispMvd?.Dados);
|
||||||
DispAtu?.Dados?.ReiniciarLeituras(DispAtu?.Dados);
|
DispAtu?.Dados?.ReiniciarLeituras(DispAtu?.Dados);
|
||||||
DispSen?.Dados?.ReiniciarLeituras(DispSen?.Dados);
|
DispSen?.Dados?.ReiniciarLeituras(DispSen?.Dados);
|
||||||
|
|
@ -798,6 +802,8 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
ID = "";
|
ID = "";
|
||||||
|
|
||||||
|
Sensoriamento.AtualizarDados();
|
||||||
|
|
||||||
DispMvd?.Dados?.ReiniciarLeituras(DispMvd.Dados);
|
DispMvd?.Dados?.ReiniciarLeituras(DispMvd.Dados);
|
||||||
DispAtu?.Dados?.ReiniciarLeituras(DispAtu.Dados);
|
DispAtu?.Dados?.ReiniciarLeituras(DispAtu.Dados);
|
||||||
DispSen?.Dados?.ReiniciarLeituras(DispSen.Dados);
|
DispSen?.Dados?.ReiniciarLeituras(DispSen.Dados);
|
||||||
|
|
@ -1418,6 +1424,9 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
private double _angulo_sp = 0.0;
|
private double _angulo_sp = 0.0;
|
||||||
public double Angulo { get; set; }
|
public double Angulo { get; set; }
|
||||||
|
public int heartbeat { get; set; } = 1;
|
||||||
|
//public int ticks_sem_resposta { get; set; } = 0;
|
||||||
|
public DateTime ticks_sem_resposta { get; set; } = DateTime.MinValue;
|
||||||
public int RPM_SP
|
public int RPM_SP
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
@ -1776,7 +1785,10 @@ namespace AgroBase.Models
|
||||||
ErroOrientacaoAngular = _Trajetoria?.ErroOrientacaoAngular ?? 0,
|
ErroOrientacaoAngular = _Trajetoria?.ErroOrientacaoAngular ?? 0,
|
||||||
ErroOrientacaoAngularCombinado = _Trajetoria?.ErroOrientacaoAngularCombinado ?? 0,
|
ErroOrientacaoAngularCombinado = _Trajetoria?.ErroOrientacaoAngularCombinado ?? 0,
|
||||||
ErroOrientacaoAngularCaminho = _Trajetoria?.ErroOrientacaoAngularCaminho ?? 0,
|
ErroOrientacaoAngularCaminho = _Trajetoria?.ErroOrientacaoAngularCaminho ?? 0,
|
||||||
ErroOrientacaoAngularProximoPonto = _Trajetoria?.ErroOrientacaoAngularProximoPonto ?? 0
|
ErroOrientacaoAngularProximoPonto = _Trajetoria?.ErroOrientacaoAngularProximoPonto ?? 0,
|
||||||
|
PercentualOperacao = _Trajetoria?.PercentualTrajetoria ?? 0,
|
||||||
|
PercentualRuaAtual = _Trajetoria?.CorredorAtual?.Progresso ?? 0,
|
||||||
|
IdxRuaAtual = _Trajetoria?.CorredorAtual?.Idx ?? 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
var dadosGps = GPSService.UltimaLeitura.Clone();
|
var dadosGps = GPSService.UltimaLeitura.Clone();
|
||||||
|
|
@ -2021,6 +2033,10 @@ namespace AgroBase.Models
|
||||||
public double ErroOrientacaoAngularProximoPonto { get; set; }
|
public double ErroOrientacaoAngularProximoPonto { get; set; }
|
||||||
public double ErroLateralAngular { get; set; }
|
public double ErroLateralAngular { get; set; }
|
||||||
|
|
||||||
|
public int IdxRuaAtual { get; set; }
|
||||||
|
public double PercentualOperacao { get; set; }
|
||||||
|
public double PercentualRuaAtual { get; set; }
|
||||||
|
|
||||||
public OperacaoSensoriamentoLogTrajetoriaModel Clone()
|
public OperacaoSensoriamentoLogTrajetoriaModel Clone()
|
||||||
{
|
{
|
||||||
return new OperacaoSensoriamentoLogTrajetoriaModel()
|
return new OperacaoSensoriamentoLogTrajetoriaModel()
|
||||||
|
|
@ -2048,6 +2064,9 @@ namespace AgroBase.Models
|
||||||
ProximoPonto = ProximoPonto.Clone(),
|
ProximoPonto = ProximoPonto.Clone(),
|
||||||
PontoAtual = PontoAtual.Clone(),
|
PontoAtual = PontoAtual.Clone(),
|
||||||
PontoMaisProximo = PontoMaisProximo.Clone(),
|
PontoMaisProximo = PontoMaisProximo.Clone(),
|
||||||
|
IdxRuaAtual = IdxRuaAtual,
|
||||||
|
PercentualOperacao = PercentualOperacao,
|
||||||
|
PercentualRuaAtual = PercentualRuaAtual,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,6 +51,7 @@ namespace AgroBase.Models.Operadores
|
||||||
public double angulo { get; set; }
|
public double angulo { get; set; }
|
||||||
public TipoMovimentoDirecional tipo_movimento { get; set; }
|
public TipoMovimentoDirecional tipo_movimento { get; set; }
|
||||||
public List<double[]> simulacao { get; set; }
|
public List<double[]> simulacao { get; set; }
|
||||||
|
public int heartbeat { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ManagerWorkerMessageResponseModulosPendentesModel
|
public class ManagerWorkerMessageResponseModulosPendentesModel
|
||||||
|
|
|
||||||
|
|
@ -52,8 +52,8 @@ namespace AgroBase.Models.Operadores
|
||||||
return new WeedWorkerAnaliseModel()
|
return new WeedWorkerAnaliseModel()
|
||||||
{
|
{
|
||||||
timestamp = timestamp,
|
timestamp = timestamp,
|
||||||
deteccoes = new List<WeedWorkerAnaliseDeteccaoModel>(deteccoes),
|
deteccoes = new List<WeedWorkerAnaliseDeteccaoModel>(deteccoes ?? new List<WeedWorkerAnaliseDeteccaoModel>()),
|
||||||
controle = new Dictionary<int, bool>(controle),
|
controle = new Dictionary<int, bool>(controle ?? new Dictionary<int, bool>()),
|
||||||
ervas_identificadas = ervas_identificadas?.Select(dict => new Dictionary<string, int>(dict)).ToList(),
|
ervas_identificadas = ervas_identificadas?.Select(dict => new Dictionary<string, int>(dict)).ToList(),
|
||||||
height = height,
|
height = height,
|
||||||
width = width,
|
width = width,
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
using AgroBase.Models.Operadores;
|
using AgroBase.Models.Operadores;
|
||||||
using AgroBase.Services;
|
using AgroBase.Services;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
|
@ -673,7 +674,84 @@ namespace AgroBase.Models
|
||||||
|
|
||||||
//Variaveis.OperacaoEmAndamento.AtualizaInformacoesControleOperacao();
|
//Variaveis.OperacaoEmAndamento.AtualizaInformacoesControleOperacao();
|
||||||
|
|
||||||
RedisService.Publish(CmdKey.ManagerWorkerRx, JsonConvert.SerializeObject(new { cmd = ManagerWorkerCommandType.AtualizarDadosControle }));
|
//RedisService.Publish(CmdKey.ManagerWorkerRx, JsonConvert.SerializeObject(new { cmd = ManagerWorkerCommandType.AtualizarDadosControle }));
|
||||||
|
|
||||||
|
AtualizarDadosControleRedis();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosControleRedis()
|
||||||
|
{
|
||||||
|
int min_ticks_sem_resposta = 500;
|
||||||
|
int max_ticks_sem_resposta = 2000;
|
||||||
|
ManagerWorkerMessageResponseComandoModel novoComando = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string controleStr = RedisService.Get(CtxKey.DadosControle);
|
||||||
|
var dictParams = JObject.Parse(controleStr);
|
||||||
|
dictParams.TryGetValue("angulo_sp", out var _angulo);
|
||||||
|
dictParams.TryGetValue("velocidade_sp", out var _velocidade);
|
||||||
|
dictParams.TryGetValue("tipo_movimento_direcional", out var _movimento);
|
||||||
|
dictParams.TryGetValue("simulacao", out var _simulacao);
|
||||||
|
dictParams.TryGetValue("heartbeat", out var _heartbeat);
|
||||||
|
novoComando = new ManagerWorkerMessageResponseComandoModel()
|
||||||
|
{
|
||||||
|
angulo = Convert.ToDouble(_angulo),
|
||||||
|
percentual_velocidade = Convert.ToDouble(_velocidade),
|
||||||
|
tipo_movimento = (TipoMovimentoDirecional)Convert.ToInt32(_movimento),
|
||||||
|
simulacao = JsonConvert.DeserializeObject<List<double[]>>((_simulacao ?? "").ToString()),
|
||||||
|
heartbeat = Convert.ToInt32(_heartbeat)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//MostrarLog($"Erro ao receber novo comando: {ex.Message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime agora = DateTime.Now;
|
||||||
|
|
||||||
|
var _Controle = Variaveis.OperacaoEmAndamento.Controle;
|
||||||
|
bool comandoMudou = (_Controle.Angulo != novoComando.angulo || _Controle.PercentualVelocidadeSP != novoComando.percentual_velocidade || _Controle.TipoMovimento != novoComando.tipo_movimento);
|
||||||
|
bool mangerDestravou = (_Controle.ticks_sem_resposta.AddMilliseconds(min_ticks_sem_resposta) < agora && novoComando.heartbeat != _Controle.heartbeat);
|
||||||
|
if (novoComando != null && (comandoMudou || mangerDestravou))
|
||||||
|
{
|
||||||
|
_Controle.Angulo = novoComando.angulo;
|
||||||
|
_Controle.TipoMovimento = novoComando.tipo_movimento;
|
||||||
|
_Controle.PercentualVelocidadeSP = novoComando.percentual_velocidade;
|
||||||
|
_Controle.SimulacaoMPC = novoComando.simulacao?.Select(x => new MPCSimulacaoModel() { latitude = x[0], longitude = x[1], orientacao = x[2] }).ToList() ?? new List<MPCSimulacaoModel>();
|
||||||
|
Variaveis.OperacaoEmAndamento.AtualizaInformacoesControleOperacao();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (novoComando.heartbeat == _Controle.heartbeat)
|
||||||
|
{
|
||||||
|
if (_Controle.ticks_sem_resposta == DateTime.MinValue)
|
||||||
|
{
|
||||||
|
_Controle.ticks_sem_resposta = agora;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_Controle.ticks_sem_resposta = DateTime.MinValue;
|
||||||
|
}
|
||||||
|
_Controle.heartbeat = novoComando.heartbeat;
|
||||||
|
if (_Controle.ticks_sem_resposta != DateTime.MinValue)
|
||||||
|
{
|
||||||
|
if (_Controle.ticks_sem_resposta.AddMilliseconds(max_ticks_sem_resposta) < agora)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Muito tempo sem receber novo comando do Manager Worker! Parando Movimento!");
|
||||||
|
RedisService.AtualizarCampos(
|
||||||
|
CtxKey.DadosControle,
|
||||||
|
("velocidade_sp", 0)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
else if (_Controle.ticks_sem_resposta.AddMilliseconds(min_ticks_sem_resposta) < agora)
|
||||||
|
{
|
||||||
|
Console.WriteLine("Muito tempo sem receber novo comando do Manager Worker! Reduzindo Velocidade!");
|
||||||
|
RedisService.AtualizarCampos(
|
||||||
|
CtxKey.DadosControle,
|
||||||
|
("velocidade_sp", _Controle.PercentualVelocidadeMin)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -379,7 +379,12 @@ namespace AgroBase.Services
|
||||||
equipamento = new LoRaProtocoloTransmissaoModel()
|
equipamento = new LoRaProtocoloTransmissaoModel()
|
||||||
{
|
{
|
||||||
EnderecoCarro = remetente,
|
EnderecoCarro = remetente,
|
||||||
Coordenadas = new LoRaProtocoloTransmissaoCoordenadasModel()
|
Coordenadas = new LoRaProtocoloTransmissaoCoordenadasModel(),
|
||||||
|
CodigoFalha = 0,
|
||||||
|
Momento = DateTime.Now,
|
||||||
|
Operacao = new LoRaProtocoloTransmissaoOperacaoModel(),
|
||||||
|
Sensores = new LoRaProtocoloTransmissaoSensoresModel(),
|
||||||
|
RecebidoEm = DateTime.Now,
|
||||||
};
|
};
|
||||||
LeituraDadosOperacao.Add(equipamento);
|
LeituraDadosOperacao.Add(equipamento);
|
||||||
}
|
}
|
||||||
|
|
@ -404,6 +409,50 @@ namespace AgroBase.Services
|
||||||
double _velocidade = LoRaSerializer.DescompactarDecimal(dados, 4);
|
double _velocidade = LoRaSerializer.DescompactarDecimal(dados, 4);
|
||||||
double _orientacao = LoRaSerializer.DescompactarDecimal(dados, 6);
|
double _orientacao = LoRaSerializer.DescompactarDecimal(dados, 6);
|
||||||
equipamento.Coordenadas.Orientacao = _orientacao;
|
equipamento.Coordenadas.Orientacao = _orientacao;
|
||||||
|
equipamento.Coordenadas.Altitude = _altitude;
|
||||||
|
equipamento.Coordenadas.Velocidade = _velocidade;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DadosLoRaParse.GpsQualidade:
|
||||||
|
{
|
||||||
|
bool _inicializado = dados[2] == 1;
|
||||||
|
TiposCorrecaoGPS _fix = (TiposCorrecaoGPS)((int)dados[3]);
|
||||||
|
int _n_satelites = (int)dados[4];
|
||||||
|
double _precisao = LoRaSerializer.DescompactarDecimal(dados, 5);
|
||||||
|
equipamento.Coordenadas.Inicializado = _inicializado;
|
||||||
|
equipamento.Coordenadas.Correcao = _fix;
|
||||||
|
equipamento.Coordenadas.NSatelites = _n_satelites;
|
||||||
|
equipamento.Coordenadas.Precisao = _precisao;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DadosLoRaParse.ComandoControle:
|
||||||
|
{
|
||||||
|
Direcao _direcao = (Direcao)((int)dados[2]);
|
||||||
|
int _velocidade_sp =(int)dados[3];
|
||||||
|
TipoMovimentoDirecional _tipo = (TipoMovimentoDirecional)((int)dados[4]);
|
||||||
|
int _angulo_sp = (int)dados[5];
|
||||||
|
int _velocidade_mp = (int)dados[6];
|
||||||
|
|
||||||
|
equipamento.Controle.direcao = _direcao;
|
||||||
|
equipamento.Controle.percentual_velocidade_sp = _velocidade_sp;
|
||||||
|
equipamento.Controle.tipo_movimento = _tipo;
|
||||||
|
equipamento.Controle.angulo_sp = _angulo_sp;
|
||||||
|
equipamento.Controle.velocidade_mp = _velocidade_mp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case DadosLoRaParse.DadosOperacao:
|
||||||
|
{
|
||||||
|
StatusOperacao _status_operacao = (StatusOperacao)((int)dados[2]);
|
||||||
|
StatusCarroMapa _status_carro = (StatusCarroMapa)((int)dados[3]);
|
||||||
|
int _percentual_operacao = (int)dados[4];
|
||||||
|
int _percentual_rua = (int)dados[5];
|
||||||
|
int _idx_rua = (int)dados[6];
|
||||||
|
|
||||||
|
equipamento.Operacao.statusOperacao = _status_operacao;
|
||||||
|
equipamento.Operacao.statusCarro = _status_carro;
|
||||||
|
equipamento.Operacao.PercentualOperacao = _percentual_operacao;
|
||||||
|
equipamento.Operacao.PercentualRua = _percentual_rua;
|
||||||
|
equipamento.Operacao.idxRuaAtual = _idx_rua;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case DadosLoRaParse.DadosControle:
|
case DadosLoRaParse.DadosControle:
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,12 @@ namespace AgroBase.Services
|
||||||
{
|
{
|
||||||
var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento;
|
var _Sensoriamento = Variaveis.OperacaoEmAndamento.Sensoriamento;
|
||||||
|
|
||||||
|
List<byte[]> dadosOperacao = LoRaSerializer.SerializeOperacao(_Sensoriamento);
|
||||||
|
foreach (var dado in dadosOperacao)
|
||||||
|
{
|
||||||
|
Variaveis.LoraService?.EnviarDadosLoRaViaCAN(dado);
|
||||||
|
}
|
||||||
|
|
||||||
List<byte[]> dadosGps = LoRaSerializer.SerializeGPS(_Sensoriamento.Gps);
|
List<byte[]> dadosGps = LoRaSerializer.SerializeGPS(_Sensoriamento.Gps);
|
||||||
foreach (var dado in dadosGps)
|
foreach (var dado in dadosGps)
|
||||||
{
|
{
|
||||||
|
|
@ -122,6 +128,7 @@ namespace AgroBase.Services
|
||||||
GpsGerais = (int)CanMessagePosicaoDados.Command6,
|
GpsGerais = (int)CanMessagePosicaoDados.Command6,
|
||||||
ComandoControle = (int)CanMessagePosicaoDados.Command7,
|
ComandoControle = (int)CanMessagePosicaoDados.Command7,
|
||||||
DadosControle = (int)CanMessagePosicaoDados.Command8,
|
DadosControle = (int)CanMessagePosicaoDados.Command8,
|
||||||
|
DadosOperacao = (int)CanMessagePosicaoDados.Command9,
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum LoRaCaracteresEspeciais
|
public enum LoRaCaracteresEspeciais
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Numerics;
|
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using static AgroBase.Models.Enums;
|
using static AgroBase.Models.Enums;
|
||||||
|
|
@ -301,6 +300,23 @@ namespace AgroBase.Services
|
||||||
return dados.ToArray();
|
return dados.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<byte[]> SerializeOperacao(OperacaoSensoriamentoLogModel sensoriamento)
|
||||||
|
{
|
||||||
|
List<byte> operacao = new List<byte>();
|
||||||
|
operacao.AddRange(CanPrefix(DadosLoRaParse.DadosOperacao));
|
||||||
|
operacao.Add((byte)(sensoriamento.StatusOperacao)); // 1 byte
|
||||||
|
operacao.Add((byte)sensoriamento.Trajetoria.StatusCarro); // 1 byte
|
||||||
|
operacao.Add((byte)sensoriamento.Trajetoria.PercentualOperacao); // 1 byte
|
||||||
|
operacao.Add((byte)sensoriamento.Trajetoria.PercentualRuaAtual); // 1 byte
|
||||||
|
operacao.Add((byte)sensoriamento.Trajetoria.IdxRuaAtual); // 1 byte
|
||||||
|
|
||||||
|
return new List<byte[]>()
|
||||||
|
{
|
||||||
|
operacao.ToArray(),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private static byte[] CompactarDecimal(double precisaoCm)
|
private static byte[] CompactarDecimal(double precisaoCm)
|
||||||
{
|
{
|
||||||
ushort valor = (ushort)Math.Round(precisaoCm); // Arredonda para inteiro
|
ushort valor = (ushort)Math.Round(precisaoCm); // Arredonda para inteiro
|
||||||
|
|
|
||||||
|
|
@ -57,12 +57,14 @@ namespace AgroBase.Services.Operadores
|
||||||
dictParams.TryGetValue("velocidade_sp", out object _velocidade);
|
dictParams.TryGetValue("velocidade_sp", out object _velocidade);
|
||||||
dictParams.TryGetValue("tipo_movimento_direcional", out object _movimento);
|
dictParams.TryGetValue("tipo_movimento_direcional", out object _movimento);
|
||||||
dictParams.TryGetValue("simulacao", out object _simulacao);
|
dictParams.TryGetValue("simulacao", out object _simulacao);
|
||||||
|
dictParams.TryGetValue("heartbeat", out object _heartbeat);
|
||||||
novoComando = new ManagerWorkerMessageResponseComandoModel()
|
novoComando = new ManagerWorkerMessageResponseComandoModel()
|
||||||
{
|
{
|
||||||
angulo = Convert.ToDouble(_angulo),
|
angulo = Convert.ToDouble(_angulo),
|
||||||
percentual_velocidade = Convert.ToDouble(_velocidade),
|
percentual_velocidade = Convert.ToDouble(_velocidade),
|
||||||
tipo_movimento = (Enums.TipoMovimentoDirecional)Convert.ToInt32(_movimento),
|
tipo_movimento = (Enums.TipoMovimentoDirecional)Convert.ToInt32(_movimento),
|
||||||
simulacao = JsonConvert.DeserializeObject<List<double[]>>((_simulacao ?? "").ToString())
|
simulacao = JsonConvert.DeserializeObject<List<double[]>>((_simulacao ?? "").ToString()),
|
||||||
|
heartbeat = Convert.ToInt32(_heartbeat)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
|
|
|
||||||
|
|
@ -69,11 +69,11 @@ namespace AgroBase.Services.Operadores
|
||||||
|
|
||||||
private async Task tmrHearthbeat_Tick()
|
private async Task tmrHearthbeat_Tick()
|
||||||
{
|
{
|
||||||
Conectado = true;
|
Conectado = false;
|
||||||
foreach (var worker in Workers)
|
foreach (var worker in Workers)
|
||||||
{
|
{
|
||||||
worker.AtualizarSaude();
|
worker.AtualizarSaude();
|
||||||
Conectado &= worker.Saude.conectado;
|
Conectado |= worker.Saude.conectado;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Conectado)
|
if (!Conectado)
|
||||||
|
|
|
||||||
|
|
@ -209,7 +209,7 @@ namespace AgroBase.Services
|
||||||
|
|
||||||
public static void EncerrarProcessos(int processId = -1)
|
public static void EncerrarProcessos(int processId = -1)
|
||||||
{
|
{
|
||||||
//return;
|
return;
|
||||||
foreach (var processo in Process.GetProcessesByName("python"))
|
foreach (var processo in Process.GetProcessesByName("python"))
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|
|
||||||
Binary file not shown.
Binary file not shown.
|
|
@ -22,5 +22,5 @@
|
||||||
"top_topics_and_observing_domains": [ ]
|
"top_topics_and_observing_domains": [ ]
|
||||||
} ],
|
} ],
|
||||||
"hex_encoded_hmac_key": "40F346D3248C3AFDF2BEE1FE496DBD32F7CED6E5AE98B881ABC421AA7E7B5642",
|
"hex_encoded_hmac_key": "40F346D3248C3AFDF2BEE1FE496DBD32F7CED6E5AE98B881ABC421AA7E7B5642",
|
||||||
"next_scheduled_calculation_time": "13398455528649568"
|
"next_scheduled_calculation_time": "13398455528649993"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
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.
|
|
@ -1,3 +1,3 @@
|
||||||
2025/07/30-13:45:05.219 7cc4 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
|
2025/07/30-21:33:49.609 56e4 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
|
||||||
2025/07/30-13:45:05.225 7cc4 Recovering log #3
|
2025/07/30-21:33:49.618 56e4 Recovering log #3
|
||||||
2025/07/30-13:45:05.228 7cc4 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log
|
2025/07/30-21:33:49.621 56e4 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
2025/07/30-13:29:47.201 865c Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
|
2025/07/30-21:19:10.001 514 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/MANIFEST-000001
|
||||||
2025/07/30-13:29:47.207 865c Recovering log #3
|
2025/07/30-21:19:10.034 514 Recovering log #3
|
||||||
2025/07/30-13:29:47.212 865c Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log
|
2025/07/30-21:19:10.037 514 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Local Storage\leveldb/000003.log
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13398454400339748","port":443,"protocol_str":"quic"}],"anonymization":["DAAAAAcAAABmaWxlOi8vAA==",false,0],"network_stats":{"srtt":16690},"server":"https://tile.openstreetmap.org","supports_spdy":true}],"supports_quic":{"address":"2804:d78:609:f200:c506:7fc8:b135:b811","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G","CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G","CAYSABiAgICA+P////8B":"Offline"}}}
|
{"net":{"http_server_properties":{"servers":[{"alternative_service":[{"advertised_alpns":["h3"],"expiration":"13398482057963342","port":443,"protocol_str":"quic"}],"anonymization":["DAAAAAcAAABmaWxlOi8vAA==",false,0],"network_stats":{"srtt":11735},"server":"https://tile.openstreetmap.org","supports_spdy":true}],"supports_quic":{"address":"192.168.1.10","used_quic":true},"version":5},"network_qualities":{"CAASABiAgICA+P////8B":"4G","CAESABiAgICA+P////8B":"4G","CAISABiAgICA+P////8B":"4G","CAYSABiAgICA+P////8B":"Offline"}}}
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"sts":[{"expiry":1785430400.33992,"host":"bWGAftl61rqoc0YzqPncsLvQQh/iC2Bdp3ejUeGC83w=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1753894400.339923}],"version":2}
|
{"sts":[{"expiry":1785458055.97563,"host":"bWGAftl61rqoc0YzqPncsLvQQh/iC2Bdp3ejUeGC83w=","mode":"force-https","sts_include_subdomains":true,"sts_observed":1753922055.975635}],"version":2}
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1,3 +1,3 @@
|
||||||
2025/07/30-13:55:20.640 7cc4 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
|
2025/07/30-21:42:34.039 5418 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
|
||||||
2025/07/30-13:55:20.641 7cc4 Recovering log #3
|
2025/07/30-21:42:34.041 5418 Recovering log #3
|
||||||
2025/07/30-13:55:20.644 7cc4 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log
|
2025/07/30-21:42:34.045 5418 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
2025/07/30-13:30:08.915 865c Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
|
2025/07/30-21:28:06.850 514 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/MANIFEST-000001
|
||||||
2025/07/30-13:30:08.916 865c Recovering log #3
|
2025/07/30-21:28:06.855 514 Recovering log #3
|
||||||
2025/07/30-13:30:08.919 865c Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log
|
2025/07/30-21:28:06.864 514 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Session Storage/000003.log
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
2025/07/30-13:45:05.146 2cb0 Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
|
2025/07/30-21:33:49.527 1e74 Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
|
||||||
2025/07/30-13:45:05.147 2cb0 Recovering log #7
|
2025/07/30-21:33:49.529 1e74 Recovering log #12
|
||||||
2025/07/30-13:45:05.148 2cb0 Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000007.log
|
2025/07/30-21:33:49.529 1e74 Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000012.log
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
2025/07/30-13:29:47.127 741c Reusing MANIFEST C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
|
2025/07/30-21:19:09.902 3b4c Reusing MANIFEST C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/MANIFEST-000001
|
||||||
2025/07/30-13:29:47.129 741c Recovering log #7
|
2025/07/30-21:19:09.904 3b4c Recovering log #12
|
||||||
2025/07/30-13:29:47.130 741c Reusing old log C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000007.log
|
2025/07/30-21:19:09.904 3b4c Reusing old log C:\ZendionINC\agrobot_base\AgroBase\AgroBase\bin\x64\Debug\AgroBase.exe.WebView2\EBWebView\Default\Site Characteristics Database/000012.log
|
||||||
|
|
|
||||||
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.
File diff suppressed because one or more lines are too long
Binary file not shown.
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
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.
Binary file not shown.
Binary file not shown.
|
|
@ -23,7 +23,7 @@ class ManagerWorker:
|
||||||
self.definir_processador()
|
self.definir_processador()
|
||||||
if self.processador:
|
if self.processador:
|
||||||
comando = self.processador.processar()
|
comando = self.processador.processar()
|
||||||
if comando is not None:
|
if comando is not None and False:
|
||||||
ContextoGlobalRedis.publicar_comando(CmdKey.ManagerWorkerTx, { "cmd": ManagerWorkerCommandType.EnviarDadosControle.value, "params": comando })
|
ContextoGlobalRedis.publicar_comando(CmdKey.ManagerWorkerTx, { "cmd": ManagerWorkerCommandType.EnviarDadosControle.value, "params": comando })
|
||||||
else:
|
else:
|
||||||
mostrar_log("Processador nao definido")
|
mostrar_log("Processador nao definido")
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ def main():
|
||||||
manager.executar()
|
manager.executar()
|
||||||
|
|
||||||
manager = ManagerWorker()
|
manager = ManagerWorker()
|
||||||
fila = WorkerFilaMensagens("controle", fila_callback, 1, True, 120)
|
fila = WorkerFilaMensagens("controle", fila_callback, 1, True, 100)
|
||||||
|
|
||||||
frequencia_loop = 5 # hz
|
frequencia_loop = 5 # hz
|
||||||
|
|
||||||
|
|
@ -33,8 +33,8 @@ def main():
|
||||||
t0 = agora
|
t0 = agora
|
||||||
latencia = 0.0
|
latencia = 0.0
|
||||||
try:
|
try:
|
||||||
pass
|
#pass
|
||||||
#latencia = manager.executar()
|
latencia = manager.executar()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
mostrar_log("🛑 Encerrando Manager Worker...")
|
mostrar_log("🛑 Encerrando Manager Worker...")
|
||||||
break
|
break
|
||||||
|
|
@ -49,8 +49,8 @@ def main():
|
||||||
latencia=latencia
|
latencia=latencia
|
||||||
)
|
)
|
||||||
|
|
||||||
#delay_corrigido = max(0, (1.0 / frequencia_loop) - latencia)
|
delay_corrigido = max(0, (1.0 / frequencia_loop) - latencia) # 0.1
|
||||||
time.sleep(0.1)
|
time.sleep(delay_corrigido)
|
||||||
|
|
||||||
def redis_callback(dados):
|
def redis_callback(dados):
|
||||||
acao = ManagerWorkerCommandType(dados.get("cmd", 0))
|
acao = ManagerWorkerCommandType(dados.get("cmd", 0))
|
||||||
|
|
@ -65,6 +65,7 @@ def main():
|
||||||
#mostrar_log("Adicionado na fila")
|
#mostrar_log("Adicionado na fila")
|
||||||
fila.adicionar(acao)
|
fila.adicionar(acao)
|
||||||
#manager.executar()
|
#manager.executar()
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
mostrar_log(f"⚠️ Comando desconhecido: {acao.name}")
|
mostrar_log(f"⚠️ Comando desconhecido: {acao.name}")
|
||||||
|
|
||||||
|
|
|
||||||
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.
|
|
@ -4,18 +4,21 @@ from manager_worker.config import mostrar_log
|
||||||
from shared.contexto_global_redis import ContextoGlobalRedis, CtxKey
|
from shared.contexto_global_redis import ContextoGlobalRedis, CtxKey
|
||||||
|
|
||||||
def comando_controle(percentual_velocidade: float, angulo: float, tipo_movimento: int, simulacao = []):
|
def comando_controle(percentual_velocidade: float, angulo: float, tipo_movimento: int, simulacao = []):
|
||||||
|
heartbeat = 1 if ContextoGlobalRedis.get_controle().get("heartbeat", 0) == 0 else 0
|
||||||
ContextoGlobalRedis.atualizar_ctx_dict(
|
ContextoGlobalRedis.atualizar_ctx_dict(
|
||||||
CtxKey.DadosControle,
|
CtxKey.DadosControle,
|
||||||
angulo_sp=angulo,
|
angulo_sp=angulo,
|
||||||
tipo_movimento_direcional=tipo_movimento,
|
tipo_movimento_direcional=tipo_movimento,
|
||||||
velocidade_sp=percentual_velocidade,
|
velocidade_sp=percentual_velocidade,
|
||||||
simulacao=simulacao
|
simulacao=simulacao,
|
||||||
|
heartbeat=heartbeat
|
||||||
)
|
)
|
||||||
return {
|
return {
|
||||||
"velocidade_sp": percentual_velocidade,
|
"velocidade_sp": percentual_velocidade,
|
||||||
"angulo_sp": angulo,
|
"angulo_sp": angulo,
|
||||||
"tipo_movimento_direcional": tipo_movimento,
|
"tipo_movimento_direcional": tipo_movimento,
|
||||||
"simulacao": simulacao
|
"simulacao": simulacao,
|
||||||
|
"heartbeat": heartbeat
|
||||||
}
|
}
|
||||||
|
|
||||||
def comando_parado():
|
def comando_parado():
|
||||||
|
|
|
||||||
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.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue