iniciado resultados da operacao
This commit is contained in:
parent
37d865168c
commit
5a811047cd
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.
|
|
@ -3,16 +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\\frmkinect.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmkinect.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\\operacoes\\frmresultadosoperacao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmresultadosoperacao.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\\frmkinect.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmkinect.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\\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\\frmpinout.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmpinout.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\\graficointerativomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\graficointerativomodel.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\\operacoes\\frmresultadosoperacao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmresultadosoperacao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}|Form"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
|
|
@ -22,44 +26,59 @@
|
|||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 0,
|
||||
"SelectedChildIndex": 1,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "frmKinect.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmKinect.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmKinect.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmKinect.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\frmKinect.cs",
|
||||
"ViewState": "AQIAAAsBAAAAAAAAAADwv4sAAAAMAAAA",
|
||||
"DocumentIndex": 3,
|
||||
"Title": "frmResultadosOperacao.cs [Design]",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs [Design]",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs [Design]",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-13T16:12:47.193Z",
|
||||
"WhenOpened": "2024-05-16T12:05:37.337Z",
|
||||
"IsPinned": true,
|
||||
"EditorCaption": " [Design]"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "frmResultadosOperacao.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"ViewState": "AQIAAEkAAAAAAAAAAAAAAOIAAAAiAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-16T17:45:26.13Z",
|
||||
"IsPinned": true,
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "GraficoInterativoModel.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\GraficoInterativoModel.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\GraficoInterativoModel.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\GraficoInterativoModel.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\GraficoInterativoModel.cs",
|
||||
"ViewState": "AQIAAFMAAAAAAAAAAAAkwI4AAAA7AAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-17T11:53:55.974Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "frmKinect.cs [Design]",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmKinect.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmKinect.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmKinect.cs [Design]",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\frmKinect.cs [Design]",
|
||||
"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": "AQIAAF0AAAAAAAAAAAA1wHECAAAoAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-13T16:12:16.688Z",
|
||||
"EditorCaption": " [Design]"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "frmPinout.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmPinout.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmPinout.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmPinout.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\frmPinout.cs",
|
||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAEBAABbAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-05-10T11:31:13.293Z",
|
||||
"WhenOpened": "2024-05-16T14:00:24.714Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -301,6 +301,12 @@
|
|||
<Compile Include="Forms\Operacoes\frmParametrizacaoOperacao.Designer.cs">
|
||||
<DependentUpon>frmParametrizacaoOperacao.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Operacoes\frmResultadosOperacao.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Operacoes\frmResultadosOperacao.Designer.cs">
|
||||
<DependentUpon>frmResultadosOperacao.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\Sensoriamento\frmSenCamera.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
|
|
@ -324,6 +330,7 @@
|
|||
<Compile Include="Models\CameraModel.cs" />
|
||||
<Compile Include="Models\CameraSoloModel.cs" />
|
||||
<Compile Include="Models\GPSModel.cs" />
|
||||
<Compile Include="Models\GraficoInterativoModel.cs" />
|
||||
<Compile Include="Models\MapasModel.cs" />
|
||||
<Compile Include="Models\MensagemFilaModel.cs" />
|
||||
<Compile Include="Models\Modules\AtuadorModel.cs" />
|
||||
|
|
@ -366,6 +373,7 @@
|
|||
<Content Include="Imagens\loading.gif" />
|
||||
<None Include="Imagens\robo_superior.jpg" />
|
||||
<None Include="Imagens\mcp.jpg" />
|
||||
<Content Include="Imagens\roda_superior.png" />
|
||||
<Content Include="Imagens\rosa_dos_ventos.png" />
|
||||
<Content Include="Imagens\transferidor.png" />
|
||||
<Content Include="Python\Models\deeplabv3plus\backbone\hrnetv2.py">
|
||||
|
|
@ -584,6 +592,9 @@
|
|||
<EmbeddedResource Include="Forms\Operacoes\frmParametrizacaoOperacao.resx">
|
||||
<DependentUpon>frmParametrizacaoOperacao.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Operacoes\frmResultadosOperacao.resx">
|
||||
<DependentUpon>frmResultadosOperacao.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\Sensoriamento\frmSenCamera.resx">
|
||||
<DependentUpon>frmSenCamera.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
|
|
|||
|
|
@ -411,16 +411,19 @@ namespace AgroBase.Forms.Operacoes
|
|||
private void videoSourceRua_NewFrame(object sender, NewFrameEventArgs eventArgs)
|
||||
{
|
||||
Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.ultimoFrameCaminho = bitmap;
|
||||
picCameraRua.Image = bitmap;
|
||||
}
|
||||
private void videoSourceSoloE_NewFrame(object sender, NewFrameEventArgs eventArgs)
|
||||
{
|
||||
Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.ultimoFrameSoloE = bitmap;
|
||||
picCameraSoloE.Image = bitmap;
|
||||
}
|
||||
private void videoSourceSoloD_NewFrame(object sender, NewFrameEventArgs eventArgs)
|
||||
{
|
||||
Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
|
||||
Variaveis.OperacaoEmAndamento.DispSen.Dados.ultimoFrameSoleD = bitmap;
|
||||
picCameraSoloD.Image = bitmap;
|
||||
}
|
||||
|
||||
|
|
@ -433,7 +436,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
try
|
||||
{
|
||||
double angulo = GPSService.CalcularOrientacao(GPSService.PenultimaLeitura, GPSService.UltimaLeitura);
|
||||
DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
|
||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
|
@ -443,67 +446,11 @@ namespace AgroBase.Forms.Operacoes
|
|||
try
|
||||
{
|
||||
double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola;
|
||||
DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
|
||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
private void DesenharInclinacao(Panel pnlBussola, PaintEventArgs e, float anguloInclinacao, float anguloSub)
|
||||
{
|
||||
if (!(anguloInclinacao >= 0 || anguloInclinacao <= 0))
|
||||
{
|
||||
anguloInclinacao = 0;
|
||||
}
|
||||
|
||||
Graphics g = e.Graphics;
|
||||
// Desenha o círculo da bússola
|
||||
int diameter = Math.Min(pnlBussola.Width - 1, pnlBussola.Height - 1);
|
||||
Point centro = new Point((pnlBussola.Width - 1) / 2, (pnlBussola.Height - 1) / 2);
|
||||
//g.DrawEllipse(Pens.Black, centro.X - diameter / 2, centro.Y - diameter / 2, diameter, diameter);
|
||||
|
||||
// Escreve o ângulo no centro do círculo
|
||||
string anguloTexto = $"{anguloInclinacao.ToString("0")}°";
|
||||
Font fonteAngulo = new Font("Arial", 7); // Ajuste o tamanho da fonte conforme necessário
|
||||
SizeF textSize = e.Graphics.MeasureString(anguloTexto, fonteAngulo);
|
||||
|
||||
// Calcula a posição para o texto ser centralizado no círculo
|
||||
float textX = 0;
|
||||
float textY = 0;
|
||||
|
||||
// Define a cor do texto
|
||||
Brush textBrush = Brushes.Black;
|
||||
|
||||
// Desenha o texto no Graphics do painel
|
||||
g.DrawString(anguloTexto, fonteAngulo, textBrush, textX, textY);
|
||||
|
||||
// A linha será desenhada do centro do círculo
|
||||
PointF pontoCentral = new PointF(centro.X, centro.Y);
|
||||
// O comprimento da linha será metade do diâmetro do círculo (raio)
|
||||
float comprimentoLinha = diameter / 3;
|
||||
|
||||
// Ajustar o ângulo para que 0 graus esteja para cima e aumente no sentido horário
|
||||
//float anguloRadianos = (anguloInclinacao - 90) * (float)(Math.PI / 180.0);
|
||||
float anguloRadianos = (anguloInclinacao - anguloSub) * (float)(Math.PI / 180.0);
|
||||
|
||||
// Calcular o ponto final da linha baseado no ângulo de inclinação
|
||||
PointF pontoFinal = new PointF(
|
||||
pontoCentral.X + comprimentoLinha * (float)Math.Cos(anguloRadianos),
|
||||
pontoCentral.Y + comprimentoLinha * (float)Math.Sin(anguloRadianos)
|
||||
);
|
||||
|
||||
// Desenhar a linha de inclinação
|
||||
g.DrawLine(Pens.Red, pontoCentral, pontoFinal);
|
||||
|
||||
// Opcional: Desenhar uma ponta de seta na linha para indicar direção
|
||||
using (AdjustableArrowCap bigArrow = new AdjustableArrowCap(4, 4))
|
||||
{
|
||||
using (Pen pen = new Pen(Color.Red, 2))
|
||||
{
|
||||
pen.CustomEndCap = bigArrow;
|
||||
g.DrawLine(pen, pontoCentral, pontoFinal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
|
|
|||
|
|
@ -796,7 +796,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
try
|
||||
{
|
||||
//DesenharInclinacao((Panel)sender, e, (float)cameraCaminho.Angulo);
|
||||
DesenharInclinacao((Panel)sender, e, (float)(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.Angulo), 90);
|
||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)(Variaveis.OperacaoEmAndamento.OpMapaGPS.Controle.Angulo), 90);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
|
@ -806,7 +806,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
try
|
||||
{
|
||||
//DesenharInclinacao((Panel)sender, e, (float)cameraCaminho.Angulo);
|
||||
DesenharInclinacao((Panel)sender, e, (float)(Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.AnguloRuaCamera), 90);
|
||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)(Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.AnguloRuaCamera), 90);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
|
@ -816,69 +816,11 @@ namespace AgroBase.Forms.Operacoes
|
|||
try
|
||||
{
|
||||
double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarro;
|
||||
DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
|
||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
private void DesenharInclinacao(Panel pnlBussola, PaintEventArgs e, float anguloInclinacao, float anguloSub)
|
||||
{
|
||||
if (!(anguloInclinacao >= 0 || anguloInclinacao <= 0))
|
||||
{
|
||||
anguloInclinacao = 0;
|
||||
}
|
||||
|
||||
Graphics g = e.Graphics;
|
||||
// Desenha o círculo da bússola
|
||||
int diameter = Math.Min(pnlBussola.Width - 1, pnlBussola.Height - 1);
|
||||
Point centro = new Point((pnlBussola.Width - 1) / 2, (pnlBussola.Height - 1) / 2);
|
||||
//g.DrawEllipse(Pens.Black, centro.X - diameter / 2, centro.Y - diameter / 2, diameter, diameter);
|
||||
|
||||
// Escreve o ângulo no centro do círculo
|
||||
string anguloTexto = $"{anguloInclinacao.ToString("0")}°";
|
||||
Font fonteAngulo = new Font("Arial", 7); // Ajuste o tamanho da fonte conforme necessário
|
||||
SizeF textSize = e.Graphics.MeasureString(anguloTexto, fonteAngulo);
|
||||
|
||||
// Calcula a posição para o texto ser centralizado no círculo
|
||||
float textX = 0;
|
||||
float textY = 0;
|
||||
|
||||
// Define a cor do texto
|
||||
Brush textBrush = Brushes.Black;
|
||||
|
||||
// Desenha o texto no Graphics do painel
|
||||
g.DrawString(anguloTexto, fonteAngulo, textBrush, textX, textY);
|
||||
|
||||
// A linha será desenhada do centro do círculo
|
||||
PointF pontoCentral = new PointF(centro.X, centro.Y);
|
||||
// O comprimento da linha será metade do diâmetro do círculo (raio)
|
||||
float comprimentoLinha = diameter / 3;
|
||||
|
||||
// Ajustar o ângulo para que 0 graus esteja para cima e aumente no sentido horário
|
||||
//float anguloRadianos = (anguloInclinacao - 90) * (float)(Math.PI / 180.0);
|
||||
float anguloRadianos = (anguloInclinacao - anguloSub) * (float)(Math.PI / 180.0);
|
||||
|
||||
// Calcular o ponto final da linha baseado no ângulo de inclinação
|
||||
PointF pontoFinal = new PointF(
|
||||
pontoCentral.X + comprimentoLinha * (float)Math.Cos(anguloRadianos),
|
||||
pontoCentral.Y + comprimentoLinha * (float)Math.Sin(anguloRadianos)
|
||||
);
|
||||
|
||||
// Desenhar a linha de inclinação
|
||||
g.DrawLine(Pens.Red, pontoCentral, pontoFinal);
|
||||
|
||||
// Opcional: Desenhar uma ponta de seta na linha para indicar direção
|
||||
using (AdjustableArrowCap bigArrow = new AdjustableArrowCap(4, 4))
|
||||
{
|
||||
using (Pen pen = new Pen(Color.Red, 2))
|
||||
{
|
||||
pen.CustomEndCap = bigArrow;
|
||||
g.DrawLine(pen, pontoCentral, pontoFinal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,451 @@
|
|||
using AgroBase.Models;
|
||||
using AgroBase.Properties;
|
||||
using AgroBase.Services;
|
||||
using CefSharp.DevTools.Page;
|
||||
using Emgu.CV;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.DataVisualization.Charting;
|
||||
|
||||
namespace AgroBase.Forms.Operacoes
|
||||
{
|
||||
public partial class frmResultadosOperacao : Form
|
||||
{
|
||||
List<OperacaoSensoriamentoLogModel> LogsOperacao = new List<OperacaoSensoriamentoLogModel>();
|
||||
List<GPSModel> LogsGPS = new List<GPSModel>();
|
||||
List<DirSensoriamentoLogModel> LogsDirecional = new List<DirSensoriamentoLogModel>();
|
||||
List<MovSensoriamentoLogModel> LogsMovimentacao = new List<MovSensoriamentoLogModel>();
|
||||
List<AtuSensoriamentoLogModel> LogsAtuador = new List<AtuSensoriamentoLogModel>();
|
||||
List<SenSensoriamentoLogModel> LogsSensoriamento = new List<SenSensoriamentoLogModel>();
|
||||
List<PzmSensoriamentoLogModel> LogsPzem = new List<PzmSensoriamentoLogModel>();
|
||||
string pathImagensCaminho = "";
|
||||
string pathImagensSoloE = "";
|
||||
string pathImagensSoloD = "";
|
||||
DateTime MomentoAtual = DateTime.Now;
|
||||
Timer tmrPlay = new Timer() { Interval = 1000 };
|
||||
MapasModel Mapa = new MapasModel();
|
||||
bool[] SeriesVisiveisAtuador = new bool[] { false, true, true, true, true, false };
|
||||
|
||||
GraficoInterativoModel graficoAtu;
|
||||
GraficoInterativoModel graficoSen;
|
||||
|
||||
|
||||
public frmResultadosOperacao()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void frmResultadosOperacao_Load(object sender, EventArgs e)
|
||||
{
|
||||
tmrPlay.Tick += TmrPlay_Tick;
|
||||
|
||||
picDIR_DF.Image = FuncoesGlobais.EspelharImagemHorizontalmente(Resources.roda_superior);
|
||||
picDIR_DT.Image = FuncoesGlobais.EspelharImagemHorizontalmente(Resources.roda_superior);
|
||||
}
|
||||
|
||||
private void TmrPlay_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (trbMomento.Value < trbMomento.Maximum)
|
||||
{
|
||||
trbMomento.Value++;
|
||||
}
|
||||
else
|
||||
{
|
||||
tmrPlay.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
private void trbMomento_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
MomentoAtual = LogsOperacao.Skip(trbMomento.Value).FirstOrDefault().Momento;
|
||||
AtualizarDadosMomento();
|
||||
}
|
||||
|
||||
private void btnPlay_Click(object sender, EventArgs e)
|
||||
{
|
||||
tmrPlay.Enabled = !tmrPlay.Enabled;
|
||||
btnPlay.Text = tmrPlay.Enabled ? "Pause" : "Pay";
|
||||
}
|
||||
|
||||
private void btnCarregarOperacao_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog ofd = new OpenFileDialog();
|
||||
ofd.Filter = "Arquivos de Operação|*.lgop";
|
||||
ofd.InitialDirectory = Application.StartupPath + Variaveis.CaminhoOperacoes;
|
||||
if (ofd.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
OperacaoDadosModel data = JsonConvert.DeserializeObject<OperacaoDadosModel>(File.ReadAllText(ofd.FileName));
|
||||
|
||||
LogsOperacao = JsonConvert.DeserializeObject<OperacaoSensoriamentoLogModel[]>(DeserializarDadosOperacao(ofd.FileName, data.operacao)).ToList();
|
||||
LogsGPS = JsonConvert.DeserializeObject<GPSModel[]>(DeserializarDadosOperacao(ofd.FileName, data.gps)).ToList();
|
||||
LogsDirecional = JsonConvert.DeserializeObject<DirSensoriamentoLogModel[]>(DeserializarDadosOperacao(ofd.FileName, data.dir)).ToList();
|
||||
LogsMovimentacao = JsonConvert.DeserializeObject<MovSensoriamentoLogModel[]>(DeserializarDadosOperacao(ofd.FileName, data.mov)).ToList();
|
||||
LogsAtuador = JsonConvert.DeserializeObject<AtuSensoriamentoLogModel[]>(DeserializarDadosOperacao(ofd.FileName, data.atu)).ToList();
|
||||
LogsSensoriamento = JsonConvert.DeserializeObject<SenSensoriamentoLogModel[]>(DeserializarDadosOperacao(ofd.FileName, data.sen)).ToList();
|
||||
LogsPzem = JsonConvert.DeserializeObject<PzmSensoriamentoLogModel[]>(DeserializarDadosOperacao(ofd.FileName, data.pzm)).ToList();
|
||||
pathImagensCaminho = ofd.FileName.Replace("data.lgop", data.caminho + "/");
|
||||
pathImagensSoloE = ofd.FileName.Replace("data.lgop", data.soloE + "/");
|
||||
pathImagensSoloD = ofd.FileName.Replace("data.lgop", data.soloD + "/");
|
||||
|
||||
Mapa = new MapasModel()
|
||||
{
|
||||
pnlMapa = pnlMapa
|
||||
};
|
||||
MapasService.CriarArquivoMapa(new List<List<GPSModel>>() { LogsGPS }, 1517, data.id);
|
||||
Mapa.btnCarregar_Click(sender, e, Variaveis.CaminhoSistema + "/" + Variaveis.CaminhoMapasConvertidos + data.id + ".json");
|
||||
|
||||
trbMomento.Maximum = LogsOperacao.Count - 1;
|
||||
trbMomento.Minimum = 0;
|
||||
trbMomento.Value = 0;
|
||||
|
||||
MomentoAtual = LogsOperacao[0].Momento;
|
||||
|
||||
this.Text = "Resultados da Operação " + LogsOperacao[0].Momento.ToString("dd/MM/yyyy");
|
||||
|
||||
|
||||
InicializarGraficos();
|
||||
|
||||
|
||||
AtualizarDadosMomento();
|
||||
}
|
||||
}
|
||||
|
||||
private void InicializarGraficos()
|
||||
{
|
||||
var Momentos = LogsOperacao.Select(x => x.Momento.ToString("mm:ss:fff")).ToList();
|
||||
|
||||
graficoAtu = new GraficoInterativoModel(chartAtuador, Momentos, new List<GraficoInterativoSerieModel>()
|
||||
{
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "Pressão SP",
|
||||
Valores = LogsAtuador.Select(x => x?.PressaoLinha_SP ?? 0).ToList(),
|
||||
Visivel = false,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "Pressão",
|
||||
Valores = LogsAtuador.Select(x => x?.PressaoLinha ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "Potência",
|
||||
Valores = LogsAtuador.Select(x => x?.PotenciaBomba ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "Volume",
|
||||
Valores = LogsAtuador.Select(x => x?.VolumeReservatorio ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "Percentual",
|
||||
Valores = LogsAtuador.Select(x => x?.PercentualReservatorio ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "Vazão",
|
||||
Valores = LogsAtuador.Select(x => x?.VazaoFluxoMLpS ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
}
|
||||
});
|
||||
|
||||
graficoSen = new GraficoInterativoModel(chartSensoriamento, Momentos, new List<GraficoInterativoSerieModel>()
|
||||
{
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "V 3v3",
|
||||
Valores = LogsSensoriamento.Select(x => x?.Barramento3v3Tensao ?? 0).ToList(),
|
||||
Visivel = false,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "A 3v3",
|
||||
Valores = LogsSensoriamento.Select(x => x?.Barramento3v3Corrente ?? 0).ToList(),
|
||||
Visivel = false,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "V 5v0",
|
||||
Valores = LogsSensoriamento.Select(x => x?.Barramento5vTensao ?? 0).ToList(),
|
||||
Visivel = false,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "A 5v0",
|
||||
Valores = LogsSensoriamento.Select(x => x?.Barramento5vCorrente ?? 0).ToList(),
|
||||
Visivel = false,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "V 7v2",
|
||||
Valores = LogsSensoriamento.Select(x => x?.Barramento7v2Tensao ?? 0).ToList(),
|
||||
Visivel = false,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "A 7v2",
|
||||
Valores = LogsSensoriamento.Select(x => x?.Barramento7v2Corrente ?? 0).ToList(),
|
||||
Visivel = false,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "V 12v",
|
||||
Valores = LogsSensoriamento.Select(x => x?.Barramento12vTensao ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "A 12v",
|
||||
Valores = LogsSensoriamento.Select(x => x?.Barramento12vCorrente ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "V Bat",
|
||||
Valores = LogsPzem.Select(x => x?.Tensao ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "A Bat",
|
||||
Valores = LogsPzem.Select(x => x?.Corrente ?? 0).ToList(),
|
||||
Visivel = true,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private string DeserializarDadosOperacao(string caminho, string arquivo)
|
||||
{
|
||||
string opPath = caminho.Replace("data.lgop", arquivo) + ".json";
|
||||
string opStr = File.ReadAllText(opPath) + "]";
|
||||
return opStr;
|
||||
}
|
||||
|
||||
private void CarregarImagemCamera(PictureBox pic, string Caminho)
|
||||
{
|
||||
if (File.Exists(Caminho + trbMomento.Value + ".jpg"))
|
||||
{
|
||||
pic.Image = Image.FromFile(Caminho + trbMomento.Value + ".jpg");
|
||||
}
|
||||
else
|
||||
{
|
||||
Bitmap frame = new Bitmap(1, 1);
|
||||
using (Graphics g = Graphics.FromImage(frame))
|
||||
{
|
||||
g.Clear(Color.Black);
|
||||
}
|
||||
pic.Image = frame;
|
||||
}
|
||||
}
|
||||
|
||||
private void AtualizarDadosMomento()
|
||||
{
|
||||
if (!LogsOperacao.Any())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
txtMomento.Text = LogsOperacao.FirstOrDefault(x => x.Momento == MomentoAtual).Momento.ToString("HH:mm:ss");
|
||||
|
||||
CarregarImagemCamera(picCameraCaminho, pathImagensCaminho);
|
||||
CarregarImagemCamera(picCameraSoloE, pathImagensSoloE);
|
||||
CarregarImagemCamera(picCameraSoloD, pathImagensSoloD);
|
||||
|
||||
AtualizarInformacoesGPS();
|
||||
|
||||
AtualizarInformacoesMotorDirecional("DF");
|
||||
AtualizarInformacoesMotorDirecional("DT");
|
||||
AtualizarInformacoesMotorDirecional("EF");
|
||||
AtualizarInformacoesMotorDirecional("ET");
|
||||
pnlOrientacaoDirecional.Invalidate();
|
||||
|
||||
AtualizarInformacoesAtuador();
|
||||
AtualizarInformacoesSensoriamento();
|
||||
|
||||
pnlOrientacaoMagnetometro.Invalidate();
|
||||
}
|
||||
|
||||
private void AtualizarInformacoesMotorDirecional(string ID)
|
||||
{
|
||||
var Log = LogsDirecional.Where(x => x.ComponenteID == ID).FirstOrDefault(x => x.Momento == MomentoAtual);
|
||||
|
||||
double Angulo = Log?.Angulo ?? 0;
|
||||
double Multiplicador = (Log?.Sentido ?? Enuns.Sentido.Parado) == Enuns.Sentido.Antihorario ? -1 : 1;
|
||||
Image img = Resources.roda_superior;
|
||||
if (ID.StartsWith("D"))
|
||||
{
|
||||
img = FuncoesGlobais.EspelharImagemHorizontalmente(img);
|
||||
}
|
||||
|
||||
PictureBox pic = FuncoesGlobais.FindControlRecursive<PictureBox>(tabDirecional, "picDIR_" + ID);
|
||||
pic.Image = FuncoesGlobais.RotacionarImagem(img, Angulo * Multiplicador);
|
||||
|
||||
Label lbl = FuncoesGlobais.FindControlRecursive<Label>(tabDirecional, "lblDIR_" + ID);
|
||||
lbl.ForeColor = Log.Inicializado ? Color.Green : Color.Red;
|
||||
|
||||
TextBox txtAnguloSP = FuncoesGlobais.FindControlRecursive<TextBox>(tabDirecional, "txtDIR_AnguloSP_" + ID);
|
||||
txtAnguloSP.Text = (Log?.Angulo_SP ?? 0).ToString();
|
||||
TextBox txtAngulo = FuncoesGlobais.FindControlRecursive<TextBox>(tabDirecional, "txtDIR_Angulo_" + ID);
|
||||
txtAngulo.Text = (Log?.Angulo ?? 0).ToString();
|
||||
TextBox txtSentidoSP = FuncoesGlobais.FindControlRecursive<TextBox>(tabDirecional, "txtDIR_SentidoSP_" + ID);
|
||||
txtSentidoSP.Text = (Log?.Sentido_SP ?? Enuns.Sentido.Parado).ToString();
|
||||
TextBox txtSentido = FuncoesGlobais.FindControlRecursive<TextBox>(tabDirecional, "txtDIR_Sentido_" + ID);
|
||||
txtSentido.Text = (Log?.Sentido ?? Enuns.Sentido.Parado).ToString();
|
||||
TextBox txtVelocidade = FuncoesGlobais.FindControlRecursive<TextBox>(tabDirecional, "txtDIR_Velocidade_" + ID);
|
||||
txtVelocidade.Text = (Log?.Velocidade ?? 0).ToString();
|
||||
TextBox txtControlar = FuncoesGlobais.FindControlRecursive<TextBox>(tabDirecional, "txtDIR_Controlar_" + ID);
|
||||
txtControlar.Text = (Log?.Controlar ?? false) ? "Sim" : "Não";
|
||||
}
|
||||
|
||||
private void AtualizarInformacoesGPS()
|
||||
{
|
||||
var Log = LogsGPS.FirstOrDefault(x => x.Momento == MomentoAtual);
|
||||
txtGPS_Altitude.Text = (Log?.Altitude ?? 0).ToString();
|
||||
txtGPS_Data.Text = (Log?.DataHora ?? MomentoAtual).ToString("dd/MM HH:mm:ss");
|
||||
txtGPS_Latitude.Text = (Log?.Latitude ?? 0).ToString();
|
||||
txtGPS_Longitude.Text = (Log?.Longitude ?? 0).ToString();
|
||||
txtGPS_Orientacao.Text = (Log?.Orientacao ?? 0).ToString();
|
||||
txtGPS_Precisao.Text = (Log?.PrecisaoHorizontal ?? 0).ToString();
|
||||
txtGPS_Satelites.Text = (Log?.NumeroSatelites ?? 0).ToString();
|
||||
txtGPS_Velocidade.Text = (Log?.Velocidade ?? 0).ToString();
|
||||
|
||||
GPSService.EnviarCoordenadasParaMapa(Log?.Latitude ?? 0, Log?.Longitude ?? 0, Log?.Orientacao ?? 0);
|
||||
|
||||
pnlOrientacaoGPS.Invalidate();
|
||||
}
|
||||
|
||||
private void AtualizarInformacoesAtuador()
|
||||
{
|
||||
var LogsModulo = LogsAtuador.ToList();
|
||||
var Log = LogsModulo.FirstOrDefault(x => x.Momento == MomentoAtual);
|
||||
|
||||
graficoAtu.AtualizarDados(LogsModulo.IndexOf(Log));
|
||||
|
||||
pnlAtuadores.Invalidate();
|
||||
}
|
||||
|
||||
private void AtualizarInformacoesSensoriamento()
|
||||
{
|
||||
var LogsModulo = LogsSensoriamento.ToList();
|
||||
var Log = LogsModulo.FirstOrDefault(x => x.Momento == MomentoAtual);
|
||||
|
||||
graficoSen.AtualizarDados(LogsModulo.IndexOf(Log));
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void pnlOrientacaoDirecional_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
var Logs = LogsDirecional.Where(x => x.Momento == MomentoAtual).ToList();
|
||||
double Angulo = Logs.Any() ? Logs.Average(x => x.Angulo_SP) : 0;
|
||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)Angulo, 90);
|
||||
}
|
||||
|
||||
private void pnlOrientacaoGPS_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
var Log = LogsGPS.FirstOrDefault(x => x.Momento == MomentoAtual);
|
||||
double Angulo = Log?.Orientacao ?? 0;
|
||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)Angulo, -90);
|
||||
}
|
||||
|
||||
private void pnlOrientacaoMagnetometro_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
var Log = LogsSensoriamento.FirstOrDefault(x => x.Momento == MomentoAtual);
|
||||
double Angulo = Log?.OrientacaoMagnetica ?? 0;
|
||||
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)Angulo, -90);
|
||||
}
|
||||
|
||||
private void pnlAtuadores_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
var Log = LogsAtuador.FirstOrDefault(x => x.Momento == MomentoAtual);
|
||||
if (Log == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Graphics g = e.Graphics;
|
||||
Panel myPanel = (Panel)sender;
|
||||
int panelWidth = myPanel.Width;
|
||||
int circleDiameter = 40; // Diâmetro dos círculos grandes
|
||||
int smallCircleDiameter = circleDiameter / 2; // Diâmetro dos círculos pequenos
|
||||
int spaceBetweenCircles = (panelWidth - (circleDiameter * Log.QuantidadeBicos)) / (Log.QuantidadeBicos + 1);
|
||||
int yPosition = (myPanel.Height - circleDiameter) / 3; // Centralizado verticalmente
|
||||
|
||||
|
||||
for (int i = 0; i < Log.QuantidadeBicos; i++)
|
||||
{
|
||||
// Calcula a posição x do círculo
|
||||
int xPosition = spaceBetweenCircles + (i * (circleDiameter + spaceBetweenCircles));
|
||||
// Desenha o contorno do círculo
|
||||
g.DrawEllipse(Pens.Red, xPosition, yPosition, circleDiameter, circleDiameter);
|
||||
// Se o bico estiver aceso, preenche o círculo
|
||||
if (Log.Bicos[i].Atuado)
|
||||
{
|
||||
g.FillEllipse(Brushes.Red, xPosition, yPosition, circleDiameter, circleDiameter);
|
||||
}
|
||||
|
||||
// Define a string que representa o número do bico
|
||||
string bicoNumero = Log.Bicos[i].ID;
|
||||
// Define a fonte para o texto
|
||||
Font font = new Font("Arial", 10, FontStyle.Bold);
|
||||
// Mede o tamanho do texto
|
||||
SizeF stringSize = g.MeasureString(bicoNumero, font);
|
||||
// Calcula as posições x e y para centralizar o texto no círculo
|
||||
float textXPosition = xPosition + (circleDiameter - stringSize.Width) / 2;
|
||||
float textYPosition = yPosition + (circleDiameter - stringSize.Height) / 2;
|
||||
// Desenha o número do bico
|
||||
g.DrawString(bicoNumero, font, Brushes.Black, textXPosition, textYPosition);
|
||||
|
||||
|
||||
// Define a string que representa a atuacao do bico
|
||||
string bicoAtuacao = Log.Bicos[i].Atuacoes.ToString("000");
|
||||
// Define a fonte para o texto
|
||||
Font fontA = new Font("Arial", 8, FontStyle.Bold);
|
||||
// Mede o tamanho do texto
|
||||
SizeF stringSizeA = g.MeasureString(bicoAtuacao, fontA);
|
||||
// Calcula as posições x e y para centralizar o texto no círculo
|
||||
float textXPositionA = xPosition + (circleDiameter - stringSizeA.Width) / 2;
|
||||
float textYPositionA = circleDiameter + yPosition + 5;
|
||||
// Desenha as atuacoes do bico
|
||||
g.DrawString(bicoAtuacao, fontA, Brushes.Black, textXPositionA, textYPositionA);
|
||||
|
||||
|
||||
// Calcula a posição x e y do círculo pequeno
|
||||
int smallCircleXPosition = Convert.ToInt32(xPosition + circleDiameter - smallCircleDiameter / 1.3);
|
||||
int smallCircleYPosition = Convert.ToInt32(yPosition + circleDiameter - smallCircleDiameter / 1.3);
|
||||
|
||||
// Define a cor de contorno e preenchimento para o círculo pequeno
|
||||
Pen smallCirclePen = Pens.Blue; // Cor do contorno
|
||||
Brush smallCircleBrush = Brushes.Transparent; // Cor de preenchimento padrão
|
||||
|
||||
// Se o status do bico for true, altera a cor de preenchimento para azul
|
||||
if (Log.Bicos[i].StatusBico)
|
||||
{
|
||||
smallCircleBrush = Brushes.Blue;
|
||||
}
|
||||
|
||||
// Desenha o contorno do círculo pequeno
|
||||
g.DrawEllipse(smallCirclePen, smallCircleXPosition, smallCircleYPosition, smallCircleDiameter, smallCircleDiameter);
|
||||
// Preenche o círculo pequeno se o status do bico for true
|
||||
g.FillEllipse(smallCircleBrush, smallCircleXPosition, smallCircleYPosition, smallCircleDiameter, smallCircleDiameter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,120 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
|
|
@ -78,6 +78,7 @@ namespace AgroBase
|
|||
this.gpbJoystick = new System.Windows.Forms.GroupBox();
|
||||
this.gpbControleDirecional = new System.Windows.Forms.GroupBox();
|
||||
this.gpbAtalhos = new System.Windows.Forms.GroupBox();
|
||||
this.btnKinect = new System.Windows.Forms.Button();
|
||||
this.btnSimulador = new System.Windows.Forms.Button();
|
||||
this.btnSonar = new System.Windows.Forms.Button();
|
||||
this.btnAtuCalibragem = new System.Windows.Forms.Button();
|
||||
|
|
@ -90,7 +91,7 @@ namespace AgroBase
|
|||
this.btnIniciarOperacao = new System.Windows.Forms.Button();
|
||||
this.lblModoOperacao = new System.Windows.Forms.Label();
|
||||
this.cmbModoOperacao = new System.Windows.Forms.ComboBox();
|
||||
this.btnKinect = new System.Windows.Forms.Button();
|
||||
this.btnResultados = new System.Windows.Forms.Button();
|
||||
this.gpbAcoes.SuspendLayout();
|
||||
this.erroStrip.SuspendLayout();
|
||||
this.pnlLateral.SuspendLayout();
|
||||
|
|
@ -163,7 +164,7 @@ namespace AgroBase
|
|||
//
|
||||
this.chbConexaoautomatica.AutoSize = true;
|
||||
this.chbConexaoautomatica.Location = new System.Drawing.Point(229, 34);
|
||||
this.chbConexaoautomatica.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
|
||||
this.chbConexaoautomatica.Margin = new System.Windows.Forms.Padding(4);
|
||||
this.chbConexaoautomatica.Name = "chbConexaoautomatica";
|
||||
this.chbConexaoautomatica.Size = new System.Drawing.Size(152, 20);
|
||||
this.chbConexaoautomatica.TabIndex = 21;
|
||||
|
|
@ -534,7 +535,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnDiagnosticos
|
||||
//
|
||||
this.btnDiagnosticos.Location = new System.Drawing.Point(5, 21);
|
||||
this.btnDiagnosticos.Location = new System.Drawing.Point(5, 16);
|
||||
this.btnDiagnosticos.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnDiagnosticos.Name = "btnDiagnosticos";
|
||||
this.btnDiagnosticos.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -545,7 +546,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnAcompanhamento
|
||||
//
|
||||
this.btnAcompanhamento.Location = new System.Drawing.Point(5, 52);
|
||||
this.btnAcompanhamento.Location = new System.Drawing.Point(5, 47);
|
||||
this.btnAcompanhamento.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnAcompanhamento.Name = "btnAcompanhamento";
|
||||
this.btnAcompanhamento.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -556,7 +557,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnAtuCamera
|
||||
//
|
||||
this.btnAtuCamera.Location = new System.Drawing.Point(5, 82);
|
||||
this.btnAtuCamera.Location = new System.Drawing.Point(5, 77);
|
||||
this.btnAtuCamera.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnAtuCamera.Name = "btnAtuCamera";
|
||||
this.btnAtuCamera.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -567,7 +568,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnMapas
|
||||
//
|
||||
this.btnMapas.Location = new System.Drawing.Point(5, 145);
|
||||
this.btnMapas.Location = new System.Drawing.Point(5, 140);
|
||||
this.btnMapas.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnMapas.Name = "btnMapas";
|
||||
this.btnMapas.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -578,7 +579,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnSenCamera
|
||||
//
|
||||
this.btnSenCamera.Location = new System.Drawing.Point(5, 114);
|
||||
this.btnSenCamera.Location = new System.Drawing.Point(5, 109);
|
||||
this.btnSenCamera.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnSenCamera.Name = "btnSenCamera";
|
||||
this.btnSenCamera.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -612,13 +613,14 @@ namespace AgroBase
|
|||
this.gpbControleDirecional.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.gpbControleDirecional.Name = "gpbControleDirecional";
|
||||
this.gpbControleDirecional.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.gpbControleDirecional.Size = new System.Drawing.Size(440, 183);
|
||||
this.gpbControleDirecional.Size = new System.Drawing.Size(440, 196);
|
||||
this.gpbControleDirecional.TabIndex = 19;
|
||||
this.gpbControleDirecional.TabStop = false;
|
||||
this.gpbControleDirecional.Text = "Controle Direcional";
|
||||
//
|
||||
// gpbAtalhos
|
||||
//
|
||||
this.gpbAtalhos.Controls.Add(this.btnResultados);
|
||||
this.gpbAtalhos.Controls.Add(this.btnKinect);
|
||||
this.gpbAtalhos.Controls.Add(this.btnSimulador);
|
||||
this.gpbAtalhos.Controls.Add(this.btnSonar);
|
||||
|
|
@ -634,14 +636,25 @@ namespace AgroBase
|
|||
this.gpbAtalhos.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.gpbAtalhos.Name = "gpbAtalhos";
|
||||
this.gpbAtalhos.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.gpbAtalhos.Size = new System.Drawing.Size(124, 359);
|
||||
this.gpbAtalhos.Size = new System.Drawing.Size(124, 374);
|
||||
this.gpbAtalhos.TabIndex = 20;
|
||||
this.gpbAtalhos.TabStop = false;
|
||||
this.gpbAtalhos.Text = "Atalhos";
|
||||
//
|
||||
// btnKinect
|
||||
//
|
||||
this.btnKinect.Location = new System.Drawing.Point(5, 314);
|
||||
this.btnKinect.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnKinect.Name = "btnKinect";
|
||||
this.btnKinect.Size = new System.Drawing.Size(112, 25);
|
||||
this.btnKinect.TabIndex = 24;
|
||||
this.btnKinect.Text = "Kinect";
|
||||
this.btnKinect.UseVisualStyleBackColor = true;
|
||||
this.btnKinect.Click += new System.EventHandler(this.btnKinect_Click);
|
||||
//
|
||||
// btnSimulador
|
||||
//
|
||||
this.btnSimulador.Location = new System.Drawing.Point(5, 290);
|
||||
this.btnSimulador.Location = new System.Drawing.Point(5, 285);
|
||||
this.btnSimulador.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnSimulador.Name = "btnSimulador";
|
||||
this.btnSimulador.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -652,7 +665,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnSonar
|
||||
//
|
||||
this.btnSonar.Location = new System.Drawing.Point(5, 262);
|
||||
this.btnSonar.Location = new System.Drawing.Point(5, 257);
|
||||
this.btnSonar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnSonar.Name = "btnSonar";
|
||||
this.btnSonar.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -663,7 +676,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnAtuCalibragem
|
||||
//
|
||||
this.btnAtuCalibragem.Location = new System.Drawing.Point(5, 233);
|
||||
this.btnAtuCalibragem.Location = new System.Drawing.Point(5, 228);
|
||||
this.btnAtuCalibragem.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnAtuCalibragem.Name = "btnAtuCalibragem";
|
||||
this.btnAtuCalibragem.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -674,7 +687,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnContornos
|
||||
//
|
||||
this.btnContornos.Location = new System.Drawing.Point(5, 204);
|
||||
this.btnContornos.Location = new System.Drawing.Point(5, 199);
|
||||
this.btnContornos.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnContornos.Name = "btnContornos";
|
||||
this.btnContornos.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -685,7 +698,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnGPS
|
||||
//
|
||||
this.btnGPS.Location = new System.Drawing.Point(5, 175);
|
||||
this.btnGPS.Location = new System.Drawing.Point(5, 170);
|
||||
this.btnGPS.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnGPS.Name = "btnGPS";
|
||||
this.btnGPS.Size = new System.Drawing.Size(112, 25);
|
||||
|
|
@ -702,18 +715,18 @@ namespace AgroBase
|
|||
this.gpbOperacao.Controls.Add(this.btnIniciarOperacao);
|
||||
this.gpbOperacao.Controls.Add(this.lblModoOperacao);
|
||||
this.gpbOperacao.Controls.Add(this.cmbModoOperacao);
|
||||
this.gpbOperacao.Location = new System.Drawing.Point(12, 378);
|
||||
this.gpbOperacao.Location = new System.Drawing.Point(12, 388);
|
||||
this.gpbOperacao.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.gpbOperacao.Name = "gpbOperacao";
|
||||
this.gpbOperacao.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.gpbOperacao.Size = new System.Drawing.Size(571, 124);
|
||||
this.gpbOperacao.Size = new System.Drawing.Size(571, 119);
|
||||
this.gpbOperacao.TabIndex = 21;
|
||||
this.gpbOperacao.TabStop = false;
|
||||
this.gpbOperacao.Text = "Operação";
|
||||
//
|
||||
// btnIHM
|
||||
//
|
||||
this.btnIHM.Location = new System.Drawing.Point(395, 78);
|
||||
this.btnIHM.Location = new System.Drawing.Point(395, 72);
|
||||
this.btnIHM.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnIHM.Name = "btnIHM";
|
||||
this.btnIHM.Size = new System.Drawing.Size(163, 41);
|
||||
|
|
@ -724,7 +737,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnConfigurarOperacao
|
||||
//
|
||||
this.btnConfigurarOperacao.Location = new System.Drawing.Point(161, 78);
|
||||
this.btnConfigurarOperacao.Location = new System.Drawing.Point(161, 72);
|
||||
this.btnConfigurarOperacao.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnConfigurarOperacao.Name = "btnConfigurarOperacao";
|
||||
this.btnConfigurarOperacao.Size = new System.Drawing.Size(163, 41);
|
||||
|
|
@ -736,7 +749,7 @@ namespace AgroBase
|
|||
// chbDebugMode
|
||||
//
|
||||
this.chbDebugMode.AutoSize = true;
|
||||
this.chbDebugMode.Location = new System.Drawing.Point(179, 49);
|
||||
this.chbDebugMode.Location = new System.Drawing.Point(179, 43);
|
||||
this.chbDebugMode.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbDebugMode.Name = "chbDebugMode";
|
||||
this.chbDebugMode.Size = new System.Drawing.Size(135, 20);
|
||||
|
|
@ -746,7 +759,7 @@ namespace AgroBase
|
|||
//
|
||||
// btnIniciarOperacao
|
||||
//
|
||||
this.btnIniciarOperacao.Location = new System.Drawing.Point(9, 78);
|
||||
this.btnIniciarOperacao.Location = new System.Drawing.Point(9, 72);
|
||||
this.btnIniciarOperacao.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnIniciarOperacao.Name = "btnIniciarOperacao";
|
||||
this.btnIniciarOperacao.Size = new System.Drawing.Size(145, 41);
|
||||
|
|
@ -758,7 +771,7 @@ namespace AgroBase
|
|||
// lblModoOperacao
|
||||
//
|
||||
this.lblModoOperacao.AutoSize = true;
|
||||
this.lblModoOperacao.Location = new System.Drawing.Point(5, 27);
|
||||
this.lblModoOperacao.Location = new System.Drawing.Point(5, 21);
|
||||
this.lblModoOperacao.Name = "lblModoOperacao";
|
||||
this.lblModoOperacao.Size = new System.Drawing.Size(42, 16);
|
||||
this.lblModoOperacao.TabIndex = 13;
|
||||
|
|
@ -768,23 +781,23 @@ namespace AgroBase
|
|||
//
|
||||
this.cmbModoOperacao.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.cmbModoOperacao.FormattingEnabled = true;
|
||||
this.cmbModoOperacao.Location = new System.Drawing.Point(9, 47);
|
||||
this.cmbModoOperacao.Location = new System.Drawing.Point(9, 41);
|
||||
this.cmbModoOperacao.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.cmbModoOperacao.Name = "cmbModoOperacao";
|
||||
this.cmbModoOperacao.Size = new System.Drawing.Size(145, 24);
|
||||
this.cmbModoOperacao.TabIndex = 13;
|
||||
this.cmbModoOperacao.SelectedIndexChanged += new System.EventHandler(this.cmbModoOperacao_SelectedIndexChanged);
|
||||
//
|
||||
// btnKinect
|
||||
// btnResultados
|
||||
//
|
||||
this.btnKinect.Location = new System.Drawing.Point(5, 319);
|
||||
this.btnKinect.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnKinect.Name = "btnKinect";
|
||||
this.btnKinect.Size = new System.Drawing.Size(112, 25);
|
||||
this.btnKinect.TabIndex = 24;
|
||||
this.btnKinect.Text = "Kinect";
|
||||
this.btnKinect.UseVisualStyleBackColor = true;
|
||||
this.btnKinect.Click += new System.EventHandler(this.btnKinect_Click);
|
||||
this.btnResultados.Location = new System.Drawing.Point(5, 343);
|
||||
this.btnResultados.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnResultados.Name = "btnResultados";
|
||||
this.btnResultados.Size = new System.Drawing.Size(112, 25);
|
||||
this.btnResultados.TabIndex = 25;
|
||||
this.btnResultados.Text = "Resultados";
|
||||
this.btnResultados.UseVisualStyleBackColor = true;
|
||||
this.btnResultados.Click += new System.EventHandler(this.btnResultados_Click);
|
||||
//
|
||||
// frmPrincipal
|
||||
//
|
||||
|
|
@ -900,6 +913,7 @@ namespace AgroBase
|
|||
private System.Windows.Forms.Button btnSonar;
|
||||
private System.Windows.Forms.Button btnSimulador;
|
||||
private System.Windows.Forms.Button btnKinect;
|
||||
private System.Windows.Forms.Button btnResultados;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -325,5 +325,11 @@ namespace AgroBase
|
|||
frmKinect frmKinect = new frmKinect();
|
||||
frmKinect.Show();
|
||||
}
|
||||
|
||||
private void btnResultados_Click(object sender, EventArgs e)
|
||||
{
|
||||
frmResultadosOperacao frmResultadosOperacao = new frmResultadosOperacao();
|
||||
frmResultadosOperacao.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Binary file not shown.
|
After Width: | Height: | Size: 201 KiB |
|
|
@ -10,6 +10,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
public class GPSModel
|
||||
{
|
||||
public DateTime Momento { get; set; }
|
||||
public double Latitude { get; set; }
|
||||
public double Longitude { get; set; }
|
||||
public DateTime DataHora { get; set; }
|
||||
|
|
|
|||
|
|
@ -0,0 +1,154 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.DataVisualization.Charting;
|
||||
|
||||
namespace AgroBase.Models
|
||||
{
|
||||
public class GraficoInterativoModel
|
||||
{
|
||||
public GraficoInterativoModel(Chart _chart, List<string> _momentos, List<GraficoInterativoSerieModel> _series)
|
||||
{
|
||||
chart = _chart;
|
||||
chart.MouseClick += chart_MouseClick;
|
||||
chart.MouseDoubleClick += chart_MouseDoubleClick;
|
||||
|
||||
Momentos = _momentos;
|
||||
Series = _series;
|
||||
}
|
||||
|
||||
public Chart chart { get; set; }
|
||||
public string Titulo { get; set; }
|
||||
public double Minimo { get; set; }
|
||||
public double Maximo { get; set; }
|
||||
public List<string> Momentos { get; set; }
|
||||
public List<GraficoInterativoSerieModel> Series { get; set; }
|
||||
public int Idx { get; set; }
|
||||
|
||||
|
||||
private Chart Inicializar(Chart chart)
|
||||
{
|
||||
chart.Titles.Clear();
|
||||
chart.Series.Clear();
|
||||
|
||||
chart.ChartAreas[0].CursorX.IsUserEnabled = true;
|
||||
chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
|
||||
chart.ChartAreas[0].CursorX.Interval = 0;
|
||||
|
||||
chart.ChartAreas[0].CursorY.IsUserEnabled = true;
|
||||
chart.ChartAreas[0].CursorY.IsUserSelectionEnabled = true;
|
||||
chart.ChartAreas[0].CursorY.Interval = 0;
|
||||
|
||||
chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
|
||||
chart.ChartAreas[0].AxisY.ScaleView.Zoomable = true;
|
||||
|
||||
chart.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = true;
|
||||
chart.ChartAreas[0].AxisY.ScrollBar.IsPositionedInside = true;
|
||||
|
||||
return chart;
|
||||
}
|
||||
|
||||
private void chart_MouseClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
var chart = sender as Chart;
|
||||
if (chart == null) return;
|
||||
|
||||
var hit = chart.HitTest(e.X, e.Y);
|
||||
|
||||
if (hit.ChartElementType == ChartElementType.LegendItem)
|
||||
{
|
||||
var seriesName = hit.Series.Name;
|
||||
var series = chart.Series[seriesName];
|
||||
int idxSerie = chart.Series.IndexOf(series);
|
||||
|
||||
Series[idxSerie].Visivel = !Series[idxSerie].Visivel;
|
||||
AtualizarDados(Idx);
|
||||
}
|
||||
}
|
||||
|
||||
private void chart_MouseDoubleClick(object sender, MouseEventArgs e)
|
||||
{
|
||||
var chart = sender as Chart;
|
||||
if (chart != null)
|
||||
{
|
||||
chart.ChartAreas[0].AxisX.ScaleView.ZoomReset();
|
||||
chart.ChartAreas[0].AxisY.ScaleView.ZoomReset();
|
||||
}
|
||||
}
|
||||
|
||||
public void AtualizarDados(int _idx)
|
||||
{
|
||||
Idx = _idx;
|
||||
int startIdx, endIdx;
|
||||
(startIdx, endIdx) = DefineInicioFimLogs(Idx, Momentos.Count());
|
||||
|
||||
Minimo = 0;
|
||||
Maximo = 0;
|
||||
|
||||
chart = Inicializar(chart);
|
||||
|
||||
foreach (var Serie in Series)
|
||||
{
|
||||
var _valores = Serie.Valores.Skip(startIdx).Take(endIdx + 1).ToList();
|
||||
PopularSerieGrafico(chart, Serie.Titulo, Momentos, _valores);
|
||||
}
|
||||
}
|
||||
|
||||
private (int, int) DefineInicioFimLogs(int idxLog, int total)
|
||||
{
|
||||
int qtdLogs = 11;
|
||||
|
||||
// Determina os limites do intervalo
|
||||
int startIdx = Math.Max(idxLog - (qtdLogs / 2), 0);
|
||||
int endIdx = Math.Min(idxLog + (qtdLogs / 2), total - 1);
|
||||
|
||||
// Ajusta startIdx e endIdx para garantir que temos qtdLogs itens se possível
|
||||
if (endIdx - startIdx + 1 < qtdLogs)
|
||||
{
|
||||
if (startIdx == 0)
|
||||
{
|
||||
endIdx = Math.Min(startIdx + qtdLogs - 1, total - 1);
|
||||
}
|
||||
else if (endIdx == total - 1)
|
||||
{
|
||||
startIdx = Math.Max(endIdx - qtdLogs + 1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
return (startIdx, endIdx);
|
||||
}
|
||||
|
||||
private void PopularSerieGrafico(Chart chart, string Titulo, List<string> Momentos, List<double> Valores)
|
||||
{
|
||||
bool Visivel = Series[chart.Series.Count].Visivel;
|
||||
|
||||
Valores = Visivel ? Valores : Momentos.Select(x => 0.0).ToList();
|
||||
|
||||
var serie = new Series(Titulo);
|
||||
serie.Points.DataBindXY(Momentos, Valores);
|
||||
serie.ChartType = SeriesChartType.Line;
|
||||
serie.BorderWidth = Visivel ? 1 : 0;
|
||||
serie.BorderDashStyle = Visivel ? ChartDashStyle.Solid : ChartDashStyle.Dot;
|
||||
chart.Series.Add(serie);
|
||||
|
||||
chart.Legends.Last().Docking = Docking.Right;
|
||||
|
||||
Minimo = Valores.Min() < Minimo ? Valores.Min() : Minimo;
|
||||
Maximo = Valores.Min() > Maximo ? Valores.Max() : Maximo;
|
||||
|
||||
chart.ChartAreas[0].AxisY.Minimum = Minimo - 5;
|
||||
chart.ChartAreas[0].AxisY.Maximum = Maximo + 5;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class GraficoInterativoSerieModel
|
||||
{
|
||||
public string Titulo { get; set; }
|
||||
public List<double> Valores { get; set; }
|
||||
public bool Visivel { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -284,9 +284,9 @@ namespace AgroBase.Models
|
|||
}
|
||||
}
|
||||
|
||||
public void btnCarregar_Click(object sender, EventArgs e)
|
||||
public void btnCarregar_Click(object sender, EventArgs e, string caminhoArquivo = "")
|
||||
{
|
||||
mapaService.CarregarMapa(MapasVariaveisModel.NomeArquivoMapaInterativo, MapasVariaveisModel.NomeArquivoMapaInterativoSaida);
|
||||
mapaService.CarregarMapa(MapasVariaveisModel.NomeArquivoMapaInterativo, MapasVariaveisModel.NomeArquivoMapaInterativoSaida, caminhoArquivo);
|
||||
|
||||
if (mapaService.MapaUrl != "")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -443,5 +443,4 @@ namespace AgroBase.Models.Modules
|
|||
public Sentido Sentido { get; set; }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -430,8 +430,6 @@ namespace AgroBase.Models
|
|||
public int RPM_SP { get; set; } = 0;
|
||||
public double Potencia { get; set; } = 0;
|
||||
public double Potencia_SP { get; set; } = 0;
|
||||
public int Rampa { get; set; } = 0;
|
||||
public int Precisao { get; set; } = 0;
|
||||
public Sentido Sentido_SP { get; set; } = Sentido.Parado;
|
||||
public Sentido Sentido { get; set; } = Sentido.Parado;
|
||||
public StatusMotor Aceleracao { get; set; } = StatusMotor.Estavel;
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ using Emgu.CV.Structure;
|
|||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
|
@ -39,8 +40,11 @@ namespace AgroBase.Models.Modules
|
|||
public List<SensorModel> Sensores { get; set; }
|
||||
public List<SensorSinaleiroModel> Sinaleiros { get; set; }
|
||||
public string CameraID_Caminho { get; set; }
|
||||
public Bitmap ultimoFrameCaminho { get; set; }
|
||||
public string CameraID_SoloE { get; set; }
|
||||
public Bitmap ultimoFrameSoloE { get; set; }
|
||||
public string CameraID_SoloD { get; set; }
|
||||
public Bitmap ultimoFrameSoleD { get; set; }
|
||||
|
||||
|
||||
public static SensoriamentoModel CarregarParametrosIniciais()
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ namespace AgroBase.Models.Operacoes
|
|||
public OperacaoMapaGPSSensoriamentoModel Sensoriamento { get; set; } = new OperacaoMapaGPSSensoriamentoModel();
|
||||
public OperacaoControleModel Controle { get; set; } = new OperacaoControleModel();
|
||||
public OperacaoControleModel ControleAnterior { get; set; } = new OperacaoControleModel();
|
||||
public List<OperacaoMapaGPSSensoriamentoModel> Logs { get; set; } = new List<OperacaoMapaGPSSensoriamentoModel>();
|
||||
public List<StatusCarroMapa> StatusDentroRua = new List<StatusCarroMapa>()
|
||||
{
|
||||
StatusCarroMapa.EntrandoRua,
|
||||
|
|
@ -178,44 +177,6 @@ namespace AgroBase.Models.Operacoes
|
|||
|
||||
}
|
||||
|
||||
public void SalvarLog(bool Fim)
|
||||
{
|
||||
Logs.Add(new OperacaoMapaGPSSensoriamentoModel()
|
||||
{
|
||||
Momento = DateTime.Now,
|
||||
AtuacoesPorBico = new List<int>(Sensoriamento.AtuacoesPorBico),
|
||||
ErvasNoRadar = Sensoriamento.ErvasNoRadar,
|
||||
HerbicidaConsumido = Sensoriamento.HerbicidaConsumido,
|
||||
HerbicidaPorErva = Sensoriamento.HerbicidaPorErva,
|
||||
ProgressoTrajeto = Sensoriamento.ProgressoTrajeto,
|
||||
ProgressoRua = Sensoriamento.ProgressoRua,
|
||||
Status = ReferencialRuaGPS.StatusAtual,
|
||||
Direcao = ReferencialRuaGPS.Direcao,
|
||||
AnguloCarro = Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarro,
|
||||
AnguloRua = Variaveis.OperacaoEmAndamento.Mapa.AnguloCaminho,
|
||||
DentroDaRua = ReferencialRuaGPS.DentroDaRua,
|
||||
IdxPontoAproximadoRua = ReferencialRuaGPS.IdxPontoAproximadoRua,
|
||||
IdxRuaAtual = Variaveis.OperacaoEmAndamento.Mapa.IdxRuaAtual,
|
||||
AnguloDif = Sensoriamento.AnguloDif,
|
||||
AnguloRuaCamera = Sensoriamento.AnguloRuaCamera,
|
||||
});
|
||||
if (!Directory.Exists(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID))
|
||||
{
|
||||
Directory.CreateDirectory(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID);
|
||||
}
|
||||
if (!File.Exists(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID + "/logs.json"))
|
||||
{
|
||||
string jsonLog = JsonConvert.SerializeObject(Logs, Formatting.None);
|
||||
File.WriteAllText(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID + "/logs.json", jsonLog.Substring(0, jsonLog.Length - 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
string jsonLog = JsonConvert.SerializeObject(Logs[Logs.Count - 1], Formatting.None);
|
||||
File.AppendAllText(Variaveis.CaminhoOperacoes + Variaveis.OperacaoEmAndamento.ID + "/logs.json", "," + jsonLog + (Fim ? "]" : ""));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void AtualizarControleAtuadores()
|
||||
{
|
||||
Controle.BicosAtuados = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
using AgroBase.Comum;
|
||||
using AForge.Video.DirectShow;
|
||||
using AForge.Video;
|
||||
using AgroBase.Comum;
|
||||
using AgroBase.Forms;
|
||||
using AgroBase.Forms.Operacoes;
|
||||
using AgroBase.Models.Modules;
|
||||
|
|
@ -15,6 +17,8 @@ using System.Linq;
|
|||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static AgroBase.Models.Enuns;
|
||||
using CefSharp.DevTools.Page;
|
||||
using System.Drawing;
|
||||
|
||||
namespace AgroBase.Models
|
||||
{
|
||||
|
|
@ -89,7 +93,7 @@ namespace AgroBase.Models
|
|||
public DispositivosService<DirecionalModel> DispDir { get; set; }
|
||||
public DispositivosService<AtuadorModel> DispAtu { get; set; }
|
||||
public MapasModel Mapa { get; set; } = new MapasModel();
|
||||
public OperacaoSensoriamentoModel Sensoriamento { get; set; }
|
||||
public OperacaoSensoriamentoLogModel Sensoriamento { get; set; }
|
||||
public Form frmOperacao { get; set; }
|
||||
private StatusOperacao _EtapaAtual;
|
||||
private StatusOperacao _EtapaAnteriorParada = StatusOperacao.Parado;
|
||||
|
|
@ -235,7 +239,6 @@ namespace AgroBase.Models
|
|||
|
||||
public List<OperacaoModulosMandatoriosModel> ModulosMandatorios { get; set; } = new List<OperacaoModulosMandatoriosModel>();
|
||||
public List<OperacaoParametrosMandatoriosModel> ParametrosMandatorios { get; set; } = new List<OperacaoParametrosMandatoriosModel>();
|
||||
public List<OperacaoSensoriamentoModel> Logs { get; set; } = new List<OperacaoSensoriamentoModel>();
|
||||
public List<GPSModel> GPSTrajetoria { get; set; } = new List<GPSModel>();
|
||||
public List<List<GPSModel>> GPSTrajetoriaRua { get; set; } = new List<List<GPSModel>>();
|
||||
public int QuantidadeCamerasSolo { get; set; } = 2;
|
||||
|
|
@ -243,7 +246,7 @@ namespace AgroBase.Models
|
|||
public CameraCaminhoModel CameraCaminho { get; set; }
|
||||
public int TempoIniciarOperacao { get; set; } = 25;
|
||||
public string ID { get; set; }
|
||||
public Timer tmrLogs = new Timer() { Interval = 5000 };
|
||||
public Timer tmrLogs = new Timer() { Interval = 1000 };
|
||||
|
||||
|
||||
public static OperacaoModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo)
|
||||
|
|
@ -264,8 +267,7 @@ namespace AgroBase.Models
|
|||
DispDir = DirConectado,
|
||||
DispMov = MovConectado,
|
||||
DispSen = SenConectado,
|
||||
Logs = new List<OperacaoSensoriamentoModel>(),
|
||||
Sensoriamento = new OperacaoSensoriamentoModel(),
|
||||
Sensoriamento = new OperacaoSensoriamentoLogModel(),
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -318,7 +320,6 @@ namespace AgroBase.Models
|
|||
break;
|
||||
case ModoOperacao.MapaGPS:
|
||||
OperacaoCarregar.frmOperacao = (Form)Activator.CreateInstance(Variaveis.OperacaoEmAndamento.OpMapaGPS.frmOperacao.GetType());
|
||||
OperacaoCarregar.Logs = new List<OperacaoSensoriamentoModel>();
|
||||
OperacaoCarregar.OpMapaGPS.ControleAnterior = new OperacaoControleModel();
|
||||
OperacaoCarregar.OpMapaGPS.Controle = new OperacaoControleModel()
|
||||
{
|
||||
|
|
@ -489,7 +490,6 @@ namespace AgroBase.Models
|
|||
if (Modo == ModoOperacao.MapaGPS)
|
||||
{
|
||||
OpMapaGPS.Sensoriamento = new OperacaoMapaGPSSensoriamentoModel();
|
||||
OpMapaGPS.Logs = new List<OperacaoMapaGPSSensoriamentoModel>();
|
||||
if (DispAtu != null)
|
||||
{
|
||||
DispAtu.Dados.BombaPressurizadora.BombaAtuada = false;
|
||||
|
|
@ -513,9 +513,9 @@ namespace AgroBase.Models
|
|||
OpMapaGPS.Controle = controle;
|
||||
}
|
||||
}
|
||||
Logs = new List<OperacaoSensoriamentoModel>();
|
||||
GPSTrajetoria = new List<GPSModel>();
|
||||
ID = (new DateTime(TimestampInicio)).ToString("dd_MM_yyyy_HH_mm_ss");
|
||||
idxLog = 0;
|
||||
|
||||
Directory.CreateDirectory(Variaveis.CaminhoOperacoes + ID + "/");
|
||||
|
||||
|
|
@ -553,7 +553,7 @@ namespace AgroBase.Models
|
|||
//tmrLogs.Stop();
|
||||
//tmrParametrizacao.Start();
|
||||
|
||||
SalvarLog(true);
|
||||
SalvarLogs(false);
|
||||
|
||||
GPSService.PararRecepcaoDados();
|
||||
|
||||
|
|
@ -608,59 +608,241 @@ namespace AgroBase.Models
|
|||
}
|
||||
}
|
||||
|
||||
public void SalvarLog(bool Fim)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(ID))
|
||||
{
|
||||
Logs.Add(new OperacaoSensoriamentoModel()
|
||||
{
|
||||
Momento = DateTime.Now,
|
||||
BateriaConsumida = Sensoriamento.BateriaConsumida,
|
||||
DistanciaDireita = Sensoriamento.DistanciaDireita,
|
||||
DistanciaEsquerda = Sensoriamento.DistanciaEsquerda,
|
||||
DistanciaPercorrida = new List<double>(Sensoriamento.DistanciaPercorrida),
|
||||
PorcentagemBateria = Sensoriamento.PorcentagemBateria,
|
||||
AnguloCarroBussola = Sensoriamento.AnguloCarroBussola
|
||||
});
|
||||
if (!Directory.Exists(Variaveis.CaminhoOperacoes + ID))
|
||||
{
|
||||
Directory.CreateDirectory(Variaveis.CaminhoOperacoes + ID);
|
||||
}
|
||||
if (!File.Exists(Variaveis.CaminhoOperacoes + ID + "/logsGerais.json"))
|
||||
{
|
||||
string jsonLog = JsonConvert.SerializeObject(Logs, Formatting.None);
|
||||
File.WriteAllText(Variaveis.CaminhoOperacoes + ID + "/logsGerais.json", jsonLog.Substring(0, jsonLog.Length - 1));
|
||||
}
|
||||
else
|
||||
{
|
||||
string jsonLog = JsonConvert.SerializeObject(Logs[Logs.Count - 1], Formatting.None);
|
||||
File.AppendAllText(Variaveis.CaminhoOperacoes + ID + "/logsGerais.json", "," + jsonLog + (Fim ? "]" : ""));
|
||||
}
|
||||
|
||||
#region REGISTRO DE LOGS
|
||||
|
||||
try
|
||||
{
|
||||
File.WriteAllText(Variaveis.CaminhoOperacoes + ID + "/trajetoria.json", JsonConvert.SerializeObject(GPSTrajetoria, Formatting.None));
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
private int idxLog = 0;
|
||||
|
||||
private void TmrLogs_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (Iniciado)
|
||||
{
|
||||
SalvarLog(false);
|
||||
SalvarLogs(false);
|
||||
}
|
||||
|
||||
AtualizarSinaleiroOperacao();
|
||||
}
|
||||
|
||||
public void SalvarLogs(bool Fim)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(ID))
|
||||
{
|
||||
DateTime Agora = DateTime.Now;
|
||||
|
||||
OperacaoSensoriamentoLogModel logGeral = new OperacaoSensoriamentoLogModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
BateriaConsumida = Sensoriamento.BateriaConsumida,
|
||||
DistanciaDireita = Sensoriamento.DistanciaDireita,
|
||||
DistanciaEsquerda = Sensoriamento.DistanciaEsquerda,
|
||||
DistanciaPercorrida = new List<double>(Sensoriamento.DistanciaPercorrida),
|
||||
PorcentagemBateria = Sensoriamento.PorcentagemBateria,
|
||||
AnguloCarroBussola = Sensoriamento.AnguloCarroBussola,
|
||||
TempoMovimento = DispMov.Dados.TempoEmAtividade,
|
||||
StatusOperacao = _EtapaAtual,
|
||||
StatusCarro = OpMapaGPS.ReferencialRuaGPS.StatusAtual,
|
||||
ErvasIdentificadas = OpMapaGPS.Sensoriamento.AtuacoesPorBico.Sum(),
|
||||
ErvasNoRadar = Sensoriamento.ErvasNoRadar,
|
||||
HerbicidaConsumido = Sensoriamento.HerbicidaConsumido,
|
||||
HerbicidaPorErva = Sensoriamento.HerbicidaPorErva,
|
||||
ProgressoTrajeto = Sensoriamento.ProgressoTrajeto,
|
||||
ProgressoRua = Sensoriamento.ProgressoRua,
|
||||
Direcao = OpMapaGPS.ReferencialRuaGPS.Direcao,
|
||||
AnguloRua = Mapa.AnguloCaminho,
|
||||
DentroDaRua = OpMapaGPS.ReferencialRuaGPS.DentroDaRua,
|
||||
IdxPontoAproximadoRua = OpMapaGPS.ReferencialRuaGPS.IdxPontoAproximadoRua,
|
||||
IdxRuaAtual = Mapa.IdxRuaAtual,
|
||||
AnguloDif = Sensoriamento.AnguloDif,
|
||||
};
|
||||
SalvarLog("operacao", logGeral, Fim);
|
||||
|
||||
GPSModel logGps = new GPSModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
DataHora = GPSService.UltimaLeitura.DataHora,
|
||||
Altitude = GPSService.UltimaLeitura.Altitude,
|
||||
DirecaoTrecho = GPSService.UltimaLeitura.DirecaoTrecho,
|
||||
idxRua = GPSService.UltimaLeitura.idxRua,
|
||||
Latitude = GPSService.UltimaLeitura.Latitude,
|
||||
Longitude = GPSService.UltimaLeitura.Longitude,
|
||||
NumeroSatelites = GPSService.UltimaLeitura.NumeroSatelites,
|
||||
Orientacao = GPSService.UltimaLeitura.Orientacao,
|
||||
PrecisaoHorizontal = GPSService.UltimaLeitura.PrecisaoHorizontal,
|
||||
Velocidade = GPSService.UltimaLeitura.Velocidade
|
||||
};
|
||||
SalvarLog(T_Code.Gps.ToString(), logGps, Fim);
|
||||
|
||||
DispDir.Dados.Motores.ForEach(Motor =>
|
||||
{
|
||||
DirSensoriamentoLogModel log = new DirSensoriamentoLogModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
ComponenteID = Motor.ID,
|
||||
Inicializado = Motor.Inicializado,
|
||||
Controlar = Motor.Controlar,
|
||||
Angulo_SP = Motor.Angulo_SP,
|
||||
Angulo = Motor.Angulo,
|
||||
Sentido_SP = Motor.Sentido_SP,
|
||||
Sentido = Motor.Sentido,
|
||||
Velocidade = Motor.Velocidade,
|
||||
};
|
||||
SalvarLog(DispDir.Dispositivo.ToString(), log, false);
|
||||
});
|
||||
|
||||
DispMov.Dados.Motores.ForEach(Motor =>
|
||||
{
|
||||
MovSensoriamentoLogModel log = new MovSensoriamentoLogModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
ComponenteID = Motor.ID,
|
||||
Inicializado = Motor.Inicializado,
|
||||
Alarme = Motor.Alarme,
|
||||
Aceleracao = Motor.Aceleracao,
|
||||
RPM_SP = Motor.RPM_SP,
|
||||
RPM = Motor.RPM,
|
||||
Corrente = Motor.Corrente,
|
||||
Potencia = Motor.Potencia,
|
||||
Potencia_Offset = Motor.RPM_Offset,
|
||||
Temperatura = Motor.Temperatura,
|
||||
Tensao = Motor.Tensao,
|
||||
Sentido_SP = Motor.Sentido_SP,
|
||||
Sentido = Motor.Sentido,
|
||||
Velocidade = Motor.VelocidadeInstantanea,
|
||||
};
|
||||
SalvarLog(DispMov.Dispositivo.ToString(), log, false);
|
||||
});
|
||||
|
||||
AtuSensoriamentoLogModel logAtu = new AtuSensoriamentoLogModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
MassaReservatorio = DispAtu.Dados.MassaReservatorio,
|
||||
PercentualReservatorio = DispAtu.Dados.PercentualReservatorio,
|
||||
VolumeReservatorio = DispAtu.Dados.VolumeReservatorio,
|
||||
PressaoLinha_SP = DispAtu.Dados.BombaPressurizadora.PressaoSP,
|
||||
PressaoLinha = DispAtu.Dados.PressaoLinha,
|
||||
PotenciaBomba = DispAtu.Dados.BombaPressurizadora.Potencia,
|
||||
VazaoFluxoMLpS = DispAtu.Dados.VazaoFluxoMLpS,
|
||||
VolumeVazaoML = DispAtu.Dados.VolumeVazaoML,
|
||||
QuantidadeBicos = DispAtu.Dados.QuantidadeBicos,
|
||||
Bicos = DispAtu.Dados.BicosPulverizadores.Select(Bico => new AtuBicoSensoriamentoLogModel()
|
||||
{
|
||||
ID = Bico.ID,
|
||||
Inicializado = Bico.Inicializado,
|
||||
Comandar = Bico.Comandar,
|
||||
Atuado = Bico.Atuado,
|
||||
MediaNivelFluxo = Bico.MediaNivelFluxo,
|
||||
Posicao = Bico.Posicao,
|
||||
StatusBico = Bico.StatusBico,
|
||||
Atuacoes = OpMapaGPS.Sensoriamento.AtuacoesPorBico.Count > Bico.Posicao ? OpMapaGPS.Sensoriamento.AtuacoesPorBico[Bico.Posicao] : 0,
|
||||
}).ToList()
|
||||
};
|
||||
SalvarLog(DispAtu.Dispositivo.ToString(), logAtu, false);
|
||||
|
||||
SenSensoriamentoLogModel logSen = new SenSensoriamentoLogModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
Barramento3v3Corrente = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB3V" && x.Inicializado)?.Leituras[0] ?? -1,
|
||||
Barramento3v3Tensao = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB3V" && x.Inicializado)?.Leituras[1] ?? -1,
|
||||
Barramento5vCorrente = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB5V" && x.Inicializado)?.Leituras[0] ?? -1,
|
||||
Barramento5vTensao = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB5V" && x.Inicializado)?.Leituras[1] ?? -1,
|
||||
Barramento7v2Corrente = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB7V2" && x.Inicializado)?.Leituras[0] ?? -1,
|
||||
Barramento7v2Tensao = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB7V2" && x.Inicializado)?.Leituras[1] ?? -1,
|
||||
Barramento12vCorrente = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB12V" && x.Inicializado)?.Leituras[0] ?? -1,
|
||||
Barramento12vTensao = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB12V" && x.Inicializado)?.Leituras[1] ?? -1,
|
||||
OrientacaoMagnetica = DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "SMAG" && x.Inicializado)?.Leituras[0] ?? -1,
|
||||
};
|
||||
SalvarLog(DispSen.Dispositivo.ToString(), logSen, false);
|
||||
|
||||
PzmSensoriamentoLogModel logPzm = new PzmSensoriamentoLogModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
DataHora = PZEMService.UltimaLeitura.DataHora,
|
||||
Tensao = PZEMService.UltimaLeitura.Tensao,
|
||||
Corrente = PZEMService.UltimaLeitura.Corrente,
|
||||
Potencia = PZEMService.UltimaLeitura.Potencia,
|
||||
Energia = PZEMService.UltimaLeitura.Energia,
|
||||
AlarmeTensaoMin = PZEMService.UltimaLeitura.AlarmeTensaoMin,
|
||||
AlarmeTensaoMax = PZEMService.UltimaLeitura.AlarmeTensaoMax
|
||||
};
|
||||
SalvarLog(T_Code.Pzm.ToString(), logPzm, Fim);
|
||||
|
||||
|
||||
SalvarLogCamera("caminho", DispSen.Dados.ultimoFrameCaminho);
|
||||
SalvarLogCamera("soloE", DispSen.Dados.ultimoFrameSoloE);
|
||||
SalvarLogCamera("soloD", DispSen.Dados.ultimoFrameSoleD);
|
||||
|
||||
string ArquivoOp = Variaveis.CaminhoOperacoes + ID + "/data.lgop";
|
||||
if (!File.Exists(ArquivoOp))
|
||||
{
|
||||
var data = new OperacaoDadosModel()
|
||||
{
|
||||
id = ID,
|
||||
operacao = "operacao",
|
||||
gps = T_Code.Gps.ToString(),
|
||||
dir = T_Code.Dir.ToString(),
|
||||
mov = T_Code.Mov.ToString(),
|
||||
atu = T_Code.Atu.ToString(),
|
||||
sen = T_Code.Sen.ToString(),
|
||||
pzm = T_Code.Pzm.ToString(),
|
||||
caminho = "caminho",
|
||||
soloE = "soloE",
|
||||
soloD = "soloD"
|
||||
};
|
||||
File.WriteAllText(ArquivoOp, JsonConvert.SerializeObject(data));
|
||||
}
|
||||
|
||||
idxLog++;
|
||||
}
|
||||
}
|
||||
|
||||
private void SalvarLog<T>(string Arquivo, T Objeto, bool Fim)
|
||||
{
|
||||
var Caminho = Variaveis.CaminhoOperacoes + ID;
|
||||
if (!Directory.Exists(Caminho))
|
||||
{
|
||||
Directory.CreateDirectory(Caminho);
|
||||
}
|
||||
|
||||
Caminho += "/" + Arquivo + ".json";
|
||||
|
||||
if (!File.Exists(Caminho))
|
||||
{
|
||||
string jsonLog = JsonConvert.SerializeObject(Objeto, Formatting.None);
|
||||
File.WriteAllText(Caminho, "[" + jsonLog);
|
||||
}
|
||||
else
|
||||
{
|
||||
string jsonLog = JsonConvert.SerializeObject(Objeto, Formatting.None);
|
||||
File.AppendAllText(Caminho, "," + jsonLog + (Fim ? "]" : ""));
|
||||
}
|
||||
}
|
||||
|
||||
private void SalvarLogCamera(string Camera, Bitmap frame)
|
||||
{
|
||||
var Caminho = Variaveis.CaminhoOperacoes + ID + "/" + Camera;
|
||||
if (!Directory.Exists(Caminho))
|
||||
{
|
||||
Directory.CreateDirectory(Caminho);
|
||||
}
|
||||
|
||||
Caminho += "/" + idxLog + ".jpg";
|
||||
|
||||
// Se o frame for nulo, cria um novo bitmap representando uma tela preta
|
||||
if (frame == null)
|
||||
{
|
||||
frame = new Bitmap(1, 1);
|
||||
using (Graphics g = Graphics.FromImage(frame))
|
||||
{
|
||||
g.Clear(Color.Black);
|
||||
}
|
||||
}
|
||||
|
||||
FuncoesGlobais.SalvarFrameJPEG(frame, Caminho);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
public void AtualizarSinaleiroOperacao()
|
||||
{
|
||||
if (DispSen != null && DispSen.Dados.Conectado)
|
||||
|
|
@ -719,7 +901,66 @@ namespace AgroBase.Models
|
|||
|
||||
}
|
||||
|
||||
public class OperacaoSensoriamentoModel
|
||||
|
||||
public class OperacaoControleModel
|
||||
{
|
||||
public int RPM_Max { get; set; } = 45;
|
||||
public int RPM_Min { get; set; } = 15;
|
||||
public double Angulo_Max { get; set; } = 30;
|
||||
public double Angulo_Min { get; set; } = -30;
|
||||
public double VelocidadeMP { get; set; } = 50;
|
||||
|
||||
public double Angulo { get; set; } = 0;
|
||||
public int RPM { get; set; } = 0;
|
||||
public Direcao Direcao { get; set; } = Direcao.Parado;
|
||||
public List<AtuadorBicoModel> BicosAtuados { get; set; } = new List<AtuadorBicoModel>();
|
||||
|
||||
public List<OperacaoControleTipoModel> TiposControle { get; set; }
|
||||
public PIDModel PIDdirecional { get; set; } = new PIDModel();
|
||||
}
|
||||
|
||||
public class OperacaoControleTipoModel
|
||||
{
|
||||
public T_Code Tipo { get; set; }
|
||||
public int DelayEnvioComando { get; set; }
|
||||
public DateTime UltimoComando { get; set; }
|
||||
public List<string> Comandos { get; set; }
|
||||
}
|
||||
|
||||
public class OperacaoModulosMandatoriosModel
|
||||
{
|
||||
public T_Code Dispositivo { get; set; }
|
||||
public bool Mandatorio { get; set; }
|
||||
public bool Utilizar { get; set; }
|
||||
public bool Conectado { get; set; }
|
||||
}
|
||||
|
||||
public class OperacaoParametrosMandatoriosModel
|
||||
{
|
||||
public ParametrosOperacao Parametro { get; set; }
|
||||
public bool Mandatorio { get; set; }
|
||||
public bool Utilizar { get; set; }
|
||||
public bool Pronto { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class OperacaoDadosModel
|
||||
{
|
||||
public string id { get; set; }
|
||||
public string operacao { get; set; }
|
||||
public string gps { get; set; }
|
||||
public string dir { get; set; }
|
||||
public string mov { get; set; }
|
||||
public string atu { get; set; }
|
||||
public string sen { get; set; }
|
||||
public string pzm { get; set; }
|
||||
public string caminho { get; set; }
|
||||
public string soloE { get; set; }
|
||||
public string soloD { get; set; }
|
||||
}
|
||||
|
||||
public class OperacaoSensoriamentoLogModel
|
||||
{
|
||||
public DateTime Momento { get; set; }
|
||||
public double VelocidadeMedia
|
||||
|
|
@ -783,52 +1024,109 @@ namespace AgroBase.Models
|
|||
}
|
||||
}
|
||||
public SonarModel SonarFrontal { get; set; }
|
||||
public double TempoMovimento { get;set; }
|
||||
public StatusOperacao StatusOperacao { get; set; }
|
||||
public StatusCarroMapa StatusCarro { get; set; }
|
||||
public int ErvasNoRadar { get; set; } = 0;
|
||||
public double HerbicidaConsumido { get; set; } = 0;
|
||||
public double HerbicidaPorErva { get; set; } = 0;
|
||||
public int ErvasIdentificadas { get; set; } = 0;
|
||||
public double ProgressoTrajeto { get; set; } = 0;
|
||||
public double ProgressoRua { get; set; } = 0;
|
||||
public double AnguloRua { get; set; } = 0;
|
||||
public double AnguloRuaCamera { get; set; } = 0;
|
||||
public double AnguloDif { get; set; } = 0;
|
||||
public DirecaoCarroRua Direcao { get; set; } = DirecaoCarroRua.Parado;
|
||||
public bool DentroDaRua { get; set; } = false;
|
||||
public int IdxPontoAproximadoRua { get; set; } = 0;
|
||||
public int IdxRuaAtual { get; set; } = 0;
|
||||
|
||||
}
|
||||
|
||||
public class OperacaoControleModel
|
||||
public class PzmSensoriamentoLogModel
|
||||
{
|
||||
public int RPM_Max { get; set; } = 45;
|
||||
public int RPM_Min { get; set; } = 15;
|
||||
public double Angulo_Max { get; set; } = 30;
|
||||
public double Angulo_Min { get; set; } = -30;
|
||||
public double VelocidadeMP { get; set; } = 50;
|
||||
|
||||
public double Angulo { get; set; } = 0;
|
||||
public int RPM { get; set; } = 0;
|
||||
public Direcao Direcao { get; set; } = Direcao.Parado;
|
||||
public List<AtuadorBicoModel> BicosAtuados { get; set; } = new List<AtuadorBicoModel>();
|
||||
|
||||
public List<OperacaoControleTipoModel> TiposControle { get; set; }
|
||||
public PIDModel PIDdirecional { get; set; } = new PIDModel();
|
||||
public DateTime Momento { get; set; }
|
||||
public DateTime DataHora { get; set; }
|
||||
public double Tensao { get; set; }
|
||||
public double Corrente { get; set; }
|
||||
public double Potencia { get; set; }
|
||||
public double Energia { get; set; }
|
||||
public bool AlarmeTensaoMax { get; set; }
|
||||
public bool AlarmeTensaoMin { get; set; }
|
||||
}
|
||||
|
||||
public class OperacaoControleTipoModel
|
||||
public class DirSensoriamentoLogModel
|
||||
{
|
||||
public T_Code Tipo { get; set; }
|
||||
public int DelayEnvioComando { get; set; }
|
||||
public DateTime UltimoComando { get; set; }
|
||||
public List<string> Comandos { get; set; }
|
||||
public DateTime Momento { get; set; }
|
||||
public string ComponenteID { get; set; }
|
||||
public bool Inicializado { get; set; }
|
||||
public bool Controlar { get; set; }
|
||||
public double Angulo_SP { get; set; }
|
||||
public double Angulo { get; set; }
|
||||
public Sentido Sentido_SP { get; set; }
|
||||
public Sentido Sentido { get; set; }
|
||||
public double Velocidade { get; set; }
|
||||
}
|
||||
|
||||
public class OperacaoModulosMandatoriosModel
|
||||
public class MovSensoriamentoLogModel
|
||||
{
|
||||
public T_Code Dispositivo { get; set; }
|
||||
public bool Mandatorio { get; set; }
|
||||
public bool Utilizar { get; set; }
|
||||
public bool Conectado { get; set; }
|
||||
public DateTime Momento { get; set; }
|
||||
public string ComponenteID { get; set; }
|
||||
public bool Inicializado { get; set; }
|
||||
public bool Alarme { get; set; }
|
||||
public double RPM_SP { get; set; }
|
||||
public double RPM { get; set; }
|
||||
public double Velocidade { get; set; }
|
||||
public double Potencia { get; set; }
|
||||
public double Potencia_Offset { get; set; }
|
||||
public Sentido Sentido_SP { get; set; }
|
||||
public Sentido Sentido { get; set; }
|
||||
public double Temperatura { get; set; }
|
||||
public StatusMotor Aceleracao { get; set; } = StatusMotor.Estavel;
|
||||
public double Corrente { get; set; }
|
||||
public double Tensao { get; set; }
|
||||
}
|
||||
|
||||
public class OperacaoParametrosMandatoriosModel
|
||||
public class AtuSensoriamentoLogModel
|
||||
{
|
||||
public ParametrosOperacao Parametro { get; set; }
|
||||
public bool Mandatorio { get; set; }
|
||||
public bool Utilizar { get; set; }
|
||||
public bool Pronto { get; set; }
|
||||
public DateTime Momento { get; set; }
|
||||
public double MassaReservatorio { get; set; }
|
||||
public double PressaoLinha_SP { get; set; }
|
||||
public double PressaoLinha { get; set; }
|
||||
public double VolumeReservatorio { get; set; }
|
||||
public double PercentualReservatorio { get; set; }
|
||||
public double PotenciaBomba { get; set; }
|
||||
public double VazaoFluxoMLpS { get; set; }
|
||||
public double VolumeVazaoML { get; set; }
|
||||
public int QuantidadeBicos { get; set; }
|
||||
public List<AtuBicoSensoriamentoLogModel> Bicos { get; set; }
|
||||
}
|
||||
|
||||
|
||||
public class AtuBicoSensoriamentoLogModel
|
||||
{
|
||||
public string ID { get; set; }
|
||||
public int Posicao { get; set; }
|
||||
public bool Atuado { get; set; }
|
||||
public bool Comandar { get; set; }
|
||||
public bool Inicializado { get; set; }
|
||||
public bool StatusBico { get; set; }
|
||||
public double MediaNivelFluxo { get; set; }
|
||||
public int Atuacoes { get; set; }
|
||||
}
|
||||
|
||||
public class SenSensoriamentoLogModel
|
||||
{
|
||||
public DateTime Momento { get; set; }
|
||||
public double Barramento3v3Tensao { get; set; }
|
||||
public double Barramento3v3Corrente { get; set; }
|
||||
public double Barramento5vTensao { get; set; }
|
||||
public double Barramento5vCorrente { get; set; }
|
||||
public double Barramento7v2Tensao { get; set; }
|
||||
public double Barramento7v2Corrente { get; set; }
|
||||
public double Barramento12vTensao { get; set; }
|
||||
public double Barramento12vCorrente { get; set; }
|
||||
public double OrientacaoMagnetica { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
public class PZEMModel
|
||||
{
|
||||
public DateTime DataHora { get; set; }
|
||||
public double Tensao { get; set; }
|
||||
public double Corrente { get; set; }
|
||||
public double Potencia { get; set; }
|
||||
|
|
|
|||
|
|
@ -3,11 +3,14 @@ using AgroBase.Models.Modules;
|
|||
using AgroBase.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing.Imaging;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static AgroBase.Models.Enuns;
|
||||
using System.Drawing.Drawing2D;
|
||||
|
||||
namespace AgroBase.Models
|
||||
{
|
||||
|
|
@ -175,6 +178,138 @@ namespace AgroBase.Models
|
|||
return altura;
|
||||
}
|
||||
|
||||
// Método para salvar o frame atual em JPEG
|
||||
public static void SalvarFrameJPEG(Bitmap frame, string caminhoArquivo)
|
||||
{
|
||||
// Define as opções de codificação JPEG (qualidade de 90%)
|
||||
EncoderParameters encoderParams = new EncoderParameters(1);
|
||||
encoderParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 90L);
|
||||
|
||||
// Salva o bitmap em formato JPEG
|
||||
ImageCodecInfo jpegCodec = GetEncoderInfo(ImageFormat.Jpeg);
|
||||
frame.Save(caminhoArquivo, jpegCodec, encoderParams);
|
||||
}
|
||||
|
||||
// Método auxiliar para obter informações do codec JPEG
|
||||
private static ImageCodecInfo GetEncoderInfo(ImageFormat format)
|
||||
{
|
||||
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
|
||||
foreach (ImageCodecInfo codec in codecs)
|
||||
{
|
||||
if (codec.FormatID == format.Guid)
|
||||
{
|
||||
return codec;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Image EspelharImagemHorizontalmente(Image img)
|
||||
{
|
||||
// Cria uma cópia da imagem do PictureBox
|
||||
Bitmap originalImage = new Bitmap(img);
|
||||
|
||||
// Cria uma nova imagem para conter a imagem espelhada
|
||||
Bitmap mirroredImage = new Bitmap(originalImage.Width, originalImage.Height);
|
||||
|
||||
// Cria uma matriz de transformação para espelhar horizontalmente
|
||||
Matrix matrix = new Matrix();
|
||||
matrix.Scale(-1, 1);
|
||||
|
||||
// Cria um objeto Graphics para desenhar a imagem espelhada
|
||||
using (Graphics g = Graphics.FromImage(mirroredImage))
|
||||
{
|
||||
// Espelha a imagem original na nova imagem
|
||||
g.Transform = matrix;
|
||||
g.DrawImage(originalImage, new Rectangle(-originalImage.Width, 0, originalImage.Width, originalImage.Height));
|
||||
}
|
||||
|
||||
return mirroredImage;
|
||||
}
|
||||
|
||||
// Método para rotacionar a imagem
|
||||
public static Image RotacionarImagem(Image img, double rotationAngle)
|
||||
{
|
||||
// Calcula as novas dimensões do bitmap com base na rotação
|
||||
double angleRad = rotationAngle / 180.0 * Math.PI;
|
||||
double sin = Math.Abs(Math.Sin(angleRad));
|
||||
double cos = Math.Abs(Math.Cos(angleRad));
|
||||
int newWidth = (int)(img.Width * cos + img.Height * sin);
|
||||
int newHeight = (int)(img.Width * sin + img.Height * cos);
|
||||
|
||||
// Cria um novo bitmap com as dimensões calculadas
|
||||
Bitmap bmp = new Bitmap(newWidth, newHeight);
|
||||
|
||||
using (Graphics gfx = Graphics.FromImage(bmp))
|
||||
{
|
||||
gfx.Clear(Color.Transparent); // Define a cor de fundo como transparente
|
||||
gfx.TranslateTransform(newWidth / 2f, newHeight / 2f); // Move o ponto de rotação para o centro do novo bitmap
|
||||
gfx.RotateTransform((float)rotationAngle); // Aplica a rotação
|
||||
gfx.TranslateTransform(-img.Width / 2f, -img.Height / 2f); // Move a imagem de volta para o centro
|
||||
gfx.InterpolationMode = InterpolationMode.HighQualityBicubic;
|
||||
gfx.DrawImage(img, 0, 0, img.Width, img.Height); // Desenha a imagem original no bitmap
|
||||
}
|
||||
|
||||
return bmp;
|
||||
}
|
||||
|
||||
public static void DesenharInclinacao(Panel pnlBussola, PaintEventArgs e, float anguloInclinacao, float anguloSub)
|
||||
{
|
||||
if (!(anguloInclinacao >= 0 || anguloInclinacao <= 0))
|
||||
{
|
||||
anguloInclinacao = 0;
|
||||
}
|
||||
|
||||
Graphics g = e.Graphics;
|
||||
// Desenha o círculo da bússola
|
||||
int diameter = Math.Min(pnlBussola.Width - 1, pnlBussola.Height - 1);
|
||||
Point centro = new Point((pnlBussola.Width - 1) / 2, (pnlBussola.Height - 1) / 2);
|
||||
//g.DrawEllipse(Pens.Black, centro.X - diameter / 2, centro.Y - diameter / 2, diameter, diameter);
|
||||
|
||||
// Escreve o ângulo no centro do círculo
|
||||
string anguloTexto = $"{anguloInclinacao.ToString("0")}°";
|
||||
Font fonteAngulo = new Font("Arial", 7); // Ajuste o tamanho da fonte conforme necessário
|
||||
SizeF textSize = e.Graphics.MeasureString(anguloTexto, fonteAngulo);
|
||||
|
||||
// Calcula a posição para o texto ser centralizado no círculo
|
||||
float textX = 0;
|
||||
float textY = 0;
|
||||
|
||||
// Define a cor do texto
|
||||
Brush textBrush = Brushes.Black;
|
||||
|
||||
// Desenha o texto no Graphics do painel
|
||||
g.DrawString(anguloTexto, fonteAngulo, textBrush, textX, textY);
|
||||
|
||||
// A linha será desenhada do centro do círculo
|
||||
PointF pontoCentral = new PointF(centro.X, centro.Y);
|
||||
// O comprimento da linha será metade do diâmetro do círculo (raio)
|
||||
float comprimentoLinha = diameter / 3;
|
||||
|
||||
// Ajustar o ângulo para que 0 graus esteja para cima e aumente no sentido horário
|
||||
//float anguloRadianos = (anguloInclinacao - 90) * (float)(Math.PI / 180.0);
|
||||
float anguloRadianos = (anguloInclinacao - anguloSub) * (float)(Math.PI / 180.0);
|
||||
|
||||
// Calcular o ponto final da linha baseado no ângulo de inclinação
|
||||
PointF pontoFinal = new PointF(
|
||||
pontoCentral.X + comprimentoLinha * (float)Math.Cos(anguloRadianos),
|
||||
pontoCentral.Y + comprimentoLinha * (float)Math.Sin(anguloRadianos)
|
||||
);
|
||||
|
||||
// Desenhar a linha de inclinação
|
||||
g.DrawLine(Pens.Red, pontoCentral, pontoFinal);
|
||||
|
||||
// Opcional: Desenhar uma ponta de seta na linha para indicar direção
|
||||
using (AdjustableArrowCap bigArrow = new AdjustableArrowCap(4, 4))
|
||||
{
|
||||
using (Pen pen = new Pen(Color.Red, 2))
|
||||
{
|
||||
pen.CustomEndCap = bigArrow;
|
||||
g.DrawLine(pen, pontoCentral, pontoFinal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -110,6 +110,16 @@ namespace AgroBase.Properties {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap roda_superior {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("roda_superior", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Consulta um recurso localizado do tipo System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -133,6 +133,9 @@
|
|||
<data name="robo_superior" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Imagens\robo_superior.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="roda_superior" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Imagens\roda_superior.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="rosa_dos_ventos" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Imagens\rosa_dos_ventos.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
|
|
|
|||
|
|
@ -494,15 +494,7 @@ namespace AgroBase.Services
|
|||
|
||||
public static void AtualizarCoordenadasGPS()
|
||||
{
|
||||
var Coordenadas = new
|
||||
{
|
||||
latitude = UltimaLeitura.Latitude,
|
||||
longitude = UltimaLeitura.Longitude
|
||||
};
|
||||
Variaveis.MqttService.PublishAsync(
|
||||
Variaveis.MqttService.Topicos.First(x => x.Topico == MapasVariaveisModel.TopicoCoordenadasGPS),
|
||||
JsonConvert.SerializeObject(Coordenadas)
|
||||
).ConfigureAwait(false);
|
||||
EnviarCoordenadasParaMapa(UltimaLeitura.Latitude, UltimaLeitura.Longitude, UltimaLeitura.Orientacao);
|
||||
|
||||
|
||||
Variaveis.OperacaoEmAndamento.GPSTrajetoria.Add(new GPSModel()
|
||||
|
|
@ -536,6 +528,20 @@ namespace AgroBase.Services
|
|||
}
|
||||
}
|
||||
|
||||
public static void EnviarCoordenadasParaMapa(double Latitude, double Longitude, double Orientacao)
|
||||
{
|
||||
var Coordenadas = new
|
||||
{
|
||||
latitude = Latitude,
|
||||
longitude = Longitude,
|
||||
orientacao = Orientacao
|
||||
};
|
||||
Variaveis.MqttService.PublishAsync(
|
||||
Variaveis.MqttService.Topicos.First(x => x.Topico == MapasVariaveisModel.TopicoCoordenadasGPS),
|
||||
JsonConvert.SerializeObject(Coordenadas)
|
||||
).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
public static void AtualizarTrajetoriaDinamica()
|
||||
{
|
||||
var Trajetoria = Variaveis.OperacaoEmAndamento.Mapa.TrajetoriaDinamica.Select(x => new
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ namespace AgroBase.Services
|
|||
public bool Carregado = false;
|
||||
|
||||
|
||||
public void CarregarMapa(string nomeArquivoMapa, string nomeArquivoSaida)
|
||||
public void CarregarMapa(string nomeArquivoMapa, string nomeArquivoSaida, string caminhoArquivo = "")
|
||||
{
|
||||
NomeArquivoMapa = nomeArquivoMapa;
|
||||
ArquivoSaida = nomeArquivoSaida;
|
||||
|
|
@ -48,11 +48,15 @@ namespace AgroBase.Services
|
|||
Title = "Selecionar arquivo de mapa"
|
||||
};
|
||||
|
||||
if (opfMapa.ShowDialog() == DialogResult.OK)
|
||||
if (caminhoArquivo != "" || opfMapa.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
string extensao = "." + opfMapa.FileName.Split('.')[opfMapa.FileName.Split('.').Length - 1];
|
||||
NomeArquivos = opfMapa.FileName.Split('\\')[opfMapa.FileName.Split('\\').Length - 1].Replace(extensao, "");
|
||||
CaminhoMapa = opfMapa.FileName.Replace(NomeArquivos, "").Replace(extensao, "").Replace("\\", "/");
|
||||
if (caminhoArquivo == "")
|
||||
{
|
||||
caminhoArquivo = opfMapa.FileName;
|
||||
}
|
||||
string extensao = "." + caminhoArquivo.Split('.')[caminhoArquivo.Split('.').Length - 1];
|
||||
NomeArquivos = caminhoArquivo.Split('\\')[caminhoArquivo.Split('\\').Length - 1].Replace(extensao, "");
|
||||
CaminhoMapa = caminhoArquivo.Replace(NomeArquivos, "").Replace(extensao, "").Replace("\\", "/");
|
||||
|
||||
pythonProcess = PythonService.RunScript(PythonService.ScriptMapConverter, new string[]
|
||||
{
|
||||
|
|
@ -63,7 +67,7 @@ namespace AgroBase.Services
|
|||
MapasVariaveisModel.TopicoCoordenadasGPS,
|
||||
MapasVariaveisModel.TopicoSelecaoRuasMapa,
|
||||
MapasVariaveisModel.TopicoTrajetoriaDinamica,
|
||||
opfMapa.FileName.Split('.')[1] == "json" ? "1" : "0"
|
||||
caminhoArquivo.Split('.')[1] == "json" ? "1" : "0"
|
||||
});
|
||||
|
||||
MapaUrl = new Uri(CaminhoSaida + NomeArquivoMapa).AbsoluteUri;
|
||||
|
|
|
|||
|
|
@ -278,7 +278,10 @@ namespace AgroBase.Services
|
|||
int numBytes = resposta[2];
|
||||
if (numBytes == 16) // Se o número de bytes de dados for 16
|
||||
{
|
||||
PZEMModel modelo = new PZEMModel();
|
||||
PZEMModel modelo = new PZEMModel()
|
||||
{
|
||||
DataHora = DateTime.Now,
|
||||
};
|
||||
var tensao_raw = "0x" + resposta[3].ToString("X") + resposta[4].ToString("X");
|
||||
modelo.Tensao = Convert.ToInt32(tensao_raw, 16) * 0.02; // 0.01;
|
||||
var corrente_raw = "0x" + resposta[5].ToString("X") + resposta[6].ToString("X");
|
||||
|
|
|
|||
Binary file not shown.
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
|
|
@ -0,0 +1 @@
|
|||
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"Id":"1517","Name":"16_05_2024_14_59_25","Length":14.899224374909538,"Dist1":0.0,"Dist2":0.0},"geometry":{"id":null,"type":"LineString","coordinates":[[-47.381473333333332,-22.215007833333335],[-47.38148833333333,-22.2150205],[-47.381501833333331,-22.215029],[-47.381497333333336,-22.215033833333333],[-47.381534,-22.215062666666668],[-47.381526833333332,-22.215055833333334],[-47.38153066666667,-22.215061833333333],[-47.3815335,-22.215054333333335],[-47.381534666666667,-22.215051833333334],[-47.381556833333335,-22.215059333333333],[-47.381556833333335,-22.215059333333333]]}}]}
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-06T10:49:39.4832413-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":-226.83333333333334,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-06T10:49:44.4983744-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":-227.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.0],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-06T10:49:49.4983432-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":-227.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.0],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-06T10:49:54.1155221-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":-227.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.0],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:30","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:31","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:32","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:33","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:34","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:35","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:36","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:37","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:38","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false},{"Latitude":-22.213107666666666,"Longitude":-47.381568333333334,"DataHora":"2024-05-06T10:49:39","Altitude":0.0,"Velocidade":0.0,"NumeroSatelites":0,"PrecisaoHorizontal":99.99,"idxRua":-1,"DirecaoTrecho":0,"Passado":false}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-06T10:50:24.9175688-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":-227.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}
|
||||
|
|
@ -1 +0,0 @@
|
|||
[]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-06T10:50:31.0242704-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":-227.16666666666666,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-06T10:50:34.8649539-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":-227.66666666666666,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[]
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T09:52:51.2146126-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":87.833333333333329,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.6853113469813925],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:53:00.969167-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":87.833333333333329,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.6853113469813925],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":229.96541901035945,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Latitude":-22.213093666666666,"Longitude":-47.3815025,"DataHora":"2024-05-07T09:39:38","Altitude":627.0,"Velocidade":1.911264,"NumeroSatelites":8,"PrecisaoHorizontal":1.06,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.2130975,"Longitude":-47.381505666666669,"DataHora":"2024-05-07T09:39:39","Altitude":627.0,"Velocidade":2.16684,"NumeroSatelites":7,"PrecisaoHorizontal":2.27,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213100833333332,"Longitude":-47.381509,"DataHora":"2024-05-07T09:39:40","Altitude":626.8,"Velocidade":1.542716,"NumeroSatelites":7,"PrecisaoHorizontal":2.27,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213102833333334,"Longitude":-47.381509833333332,"DataHora":"2024-05-07T09:39:41","Altitude":626.9,"Velocidade":0.883404,"NumeroSatelites":7,"PrecisaoHorizontal":2.27,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213105166666665,"Longitude":-47.381512833333332,"DataHora":"2024-05-07T09:39:42","Altitude":627.0,"Velocidade":1.409372,"NumeroSatelites":7,"PrecisaoHorizontal":2.27,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T09:53:27.6690689-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":88.000000000000014,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":229.96541901035945,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}
|
||||
|
|
@ -1 +0,0 @@
|
|||
[]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T09:57:45.0236065-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.666666666666671,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.62526653144541955],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":81.467945501200347,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:57:49.0756622-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.333333333333357,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.5628748431793145],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":277.68961334238628,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:57:54.0471488-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.333333333333357,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.3266873663668832],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":72.513053899569,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:57:59.067028-03:00","VelocidadeMedia":0.0025,"PorcentagemBateria":85.499999999999986,"BateriaConsumida":0.0,"DistanciaPercorrida":[3.4918437518891166],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":93.862198705988874,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:58:53.125304-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":84.833333333333329,"BateriaConsumida":0.0,"DistanciaPercorrida":[4.2398822531054021],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":76.96759051894071,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:58:54.117946-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":84.833333333333329,"BateriaConsumida":0.0,"DistanciaPercorrida":[4.2398822531054021],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":76.96759051894071,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:58:59.0462561-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.000000000000014,"BateriaConsumida":0.0,"DistanciaPercorrida":[5.06465528160699],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":65.768965591740084,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:59:04.0576249-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.166666666666657,"BateriaConsumida":0.0,"DistanciaPercorrida":[6.6995914228318965],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":298.37272098328873,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:59:09.0574526-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":84.833333333333329,"BateriaConsumida":0.0,"DistanciaPercorrida":[7.83589682505383],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":72.045100003551966,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:59:14.0478768-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.166666666666657,"BateriaConsumida":0.0,"DistanciaPercorrida":[10.070815275648767],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":75.3866345233825,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:59:19.0658316-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":84.6666666666667,"BateriaConsumida":0.0,"DistanciaPercorrida":[12.24472030306932],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":73.838385174649375,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:59:24.0569853-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.000000000000014,"BateriaConsumida":0.0,"DistanciaPercorrida":[13.226341437661704],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":42.793023212049434,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T09:59:28.4125265-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.166666666666657,"BateriaConsumida":0.0,"DistanciaPercorrida":[13.440851127670419],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":42.793024755324836,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}],{"Momento":"2024-05-07T09:59:38.7013939-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":85.000000000000014,"BateriaConsumida":0.0,"DistanciaPercorrida":[13.440851127670419],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":42.793024755324836,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}]
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T10:02:45.703269-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":70.198321038788436,"AnguloCarroBussola":0.0,"AnguloCarro":70.198321038788436,"SonarFrontal":null},{"Momento":"2024-05-07T10:02:50.6463898-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.96761566228770768],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":137.20698509575618,"AnguloCarroBussola":0.0,"AnguloCarro":137.20698509575618,"SonarFrontal":null},{"Momento":"2024-05-07T10:02:55.7457575-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.6799472775081847],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":221.57973754411964,"AnguloCarroBussola":0.0,"AnguloCarro":221.57973754411964,"SonarFrontal":null},{"Momento":"2024-05-07T10:03:00.7233267-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[7.139992887194702],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":226.02195642068034,"AnguloCarroBussola":0.0,"AnguloCarro":226.02195642068034,"SonarFrontal":null},{"Momento":"2024-05-07T10:03:04.5337717-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[9.1534782519544127],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":269.99999983127896,"AnguloCarroBussola":0.0,"AnguloCarro":269.99999983127896,"SonarFrontal":null}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Latitude":-22.2131595,"Longitude":-47.38154766666667,"DataHora":"2024-05-07T10:02:26","Altitude":619.0,"Velocidade":0.16853200000000002,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213163,"Longitude":-47.381549833333331,"DataHora":"2024-05-07T10:02:27","Altitude":619.3,"Velocidade":0.192608,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213166166666667,"Longitude":-47.3815515,"DataHora":"2024-05-07T10:02:28","Altitude":619.9,"Velocidade":0.272244,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213167,"Longitude":-47.381550666666669,"DataHora":"2024-05-07T10:02:29","Altitude":620.3,"Velocidade":0.387068,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213166,"Longitude":-47.381548833333333,"DataHora":"2024-05-07T10:02:30","Altitude":620.6,"Velocidade":0.70931600000000006,"NumeroSatelites":6,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213167833333333,"Longitude":-47.381551,"DataHora":"2024-05-07T10:02:31","Altitude":620.6,"Velocidade":0.49818800000000008,"NumeroSatelites":7,"PrecisaoHorizontal":1.29,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213175833333334,"Longitude":-47.381558666666663,"DataHora":"2024-05-07T10:02:32","Altitude":621.8,"Velocidade":0.533376,"NumeroSatelites":8,"PrecisaoHorizontal":1.11,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213184833333333,"Longitude":-47.381569666666664,"DataHora":"2024-05-07T10:02:33","Altitude":623.4,"Velocidade":0.692648,"NumeroSatelites":7,"PrecisaoHorizontal":1.11,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213190833333332,"Longitude":-47.381578833333336,"DataHora":"2024-05-07T10:02:34","Altitude":625.9,"Velocidade":1.113052,"NumeroSatelites":6,"PrecisaoHorizontal":3.03,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213202,"Longitude":-47.381591333333333,"DataHora":"2024-05-07T10:02:35","Altitude":628.7,"Velocidade":1.011192,"NumeroSatelites":5,"PrecisaoHorizontal":3.56,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213212833333333,"Longitude":-47.381605,"DataHora":"2024-05-07T10:02:36","Altitude":631.2,"Velocidade":1.5279,"NumeroSatelites":5,"PrecisaoHorizontal":3.56,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213213,"Longitude":-47.381605333333333,"DataHora":"2024-05-07T10:02:37","Altitude":631.1,"Velocidade":1.153796,"NumeroSatelites":4,"PrecisaoHorizontal":4.79,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213213,"Longitude":-47.3816065,"DataHora":"2024-05-07T10:02:38","Altitude":631.2,"Velocidade":0.80191600000000007,"NumeroSatelites":4,"PrecisaoHorizontal":4.78,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0}]
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
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
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T13:20:07.4129019-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":77.833333333333357,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.037106496837406293],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":0.0,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:20:12.4358655-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":76.166666666666671,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.44768460862775217],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":328.31755309326104,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:20:17.4117264-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":76.833333333333329,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.993199423649285],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":244.70587617972086,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Latitude":-22.213100333333333,"Longitude":-47.381521,"DataHora":"2024-05-07T13:19:57","Altitude":623.9,"Velocidade":0.198164,"NumeroSatelites":10,"PrecisaoHorizontal":0.94,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.2131,"Longitude":-47.381521,"DataHora":"2024-05-07T13:19:58","Altitude":624.1,"Velocidade":0.061116000000000004,"NumeroSatelites":8,"PrecisaoHorizontal":1.44,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213100666666666,"Longitude":-47.38152216666667,"DataHora":"2024-05-07T13:19:59","Altitude":623.9,"Velocidade":0.16853200000000002,"NumeroSatelites":8,"PrecisaoHorizontal":1.32,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213101,"Longitude":-47.381523166666668,"DataHora":"2024-05-07T13:20:00","Altitude":623.8,"Velocidade":0.14075200000000002,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213100166666667,"Longitude":-47.381523333333334,"DataHora":"2024-05-07T13:20:01","Altitude":624.0,"Velocidade":0.092600000000000016,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213099666666668,"Longitude":-47.381523666666666,"DataHora":"2024-05-07T13:20:03","Altitude":624.2,"Velocidade":0.24076000000000003,"NumeroSatelites":9,"PrecisaoHorizontal":0.94,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.2131,"Longitude":-47.381523666666666,"DataHora":"2024-05-07T13:20:04","Altitude":624.1,"Velocidade":0.17594,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213101666666667,"Longitude":-47.3815245,"DataHora":"2024-05-07T13:20:06","Altitude":623.7,"Velocidade":0.12593600000000002,"NumeroSatelites":8,"PrecisaoHorizontal":0.94,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213102833333334,"Longitude":-47.381527166666665,"DataHora":"2024-05-07T13:20:08","Altitude":623.1,"Velocidade":0.070376000000000008,"NumeroSatelites":9,"PrecisaoHorizontal":0.91,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0}]
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T13:39:21.3609736-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.16523405790633539],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":230.98823394669722,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:39:26.360952-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.47523659927015072],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":137.20697501380511,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:39:31.3619046-03:00","VelocidadeMedia":0.0375,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.93816591592308374],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":317.20697450988655,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:39:36.3668038-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.1231264516820827],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":270.0,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:39:41.3617011-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.4829798238587673],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":214.7737182561736,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:39:46.3756061-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.9618219453804517],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":327.34307535996027,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:39:51.3766008-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.2964114841661418],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":129.01176689735297,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:39:56.3755229-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.8902625771547421],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":13.03142772512615,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:40:01.3584829-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[3.6765139885636278],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":118.37271722506841,"AnguloCarroBussola":0.0,"AnguloCarro":0.0,"SonarFrontal":null},{"Momento":"2024-05-07T13:40:02.2661376-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[3.7526887469163608],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":13.03142700551507,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}]
|
||||
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
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
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
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
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T14:12:41.686261-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.10113346384150065],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":42.793036321239981,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:12:46.6812399-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.56880576168354857],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":222.79303585569173,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:12:51.6682619-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.97164031361620851],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":17.149953723076806,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:12:56.6792464-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.2862396258189048],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":349.51009109820785,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:13:01.6691755-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.6570170557051924],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":42.793035777823775,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:13:06.696077-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.9698564319625289],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":234.24195884175543,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:13:11.6920285-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.2117637610626937],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":204.83904968454712,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:13:16.6719426-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.2837073311276739],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":250.19833226341717,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:13:21.678611-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.3654855106995392],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":335.16095086283764,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:13:26.6842069-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.3654855106995392],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":335.16095086283764,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:13:30.1327286-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.3654855106995392],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":335.16095086283764,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}]
|
||||
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
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T14:16:51.443644-03:00","VelocidadeMedia":0.015,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":270.0,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:16:55.3511454-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.54235319705948049],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":70.198329073131674,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:00.3941719-03:00","VelocidadeMedia":0.15,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.97121526318595075],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":90.000000262454762,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:05.3451385-03:00","VelocidadeMedia":0.21,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[1.5034692996713148],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":170.4452883424791,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:10.3587026-03:00","VelocidadeMedia":0.83749999999999991,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[2.3164011769519282],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":132.79524470952708,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:15.3705918-03:00","VelocidadeMedia":3.81,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[3.0524123524181261],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":90.000000295261657,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:22.9313721-03:00","VelocidadeMedia":0.525,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[3.7899674993055674],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":127.65186326703122,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:25.3511289-03:00","VelocidadeMedia":1.0625,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[4.2861943135488083],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":84.3917153220043,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:30.3493148-03:00","VelocidadeMedia":0.145,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[5.0776250333773705],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":70.1983281620249,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:35.3546113-03:00","VelocidadeMedia":-0.59,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[5.6456666988853907],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":52.348137576921488,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:40.353385-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[5.9697422165326239],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":24.839046027977986,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:45.3512575-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[6.1932950831961948],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":42.79303028354326,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:50.3676356-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[6.5781180713295369],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":13.031430102381194,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:17:55.3772511-03:00","VelocidadeMedia":0.0875,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[6.7727288956246143],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":70.198329254378166,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:18:04.1637989-03:00","VelocidadeMedia":0.072500000000000009,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[7.0575365380060635],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":252.84879801850951,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:18:04.9865295-03:00","VelocidadeMedia":0.255,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[7.1710407434337151],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":310.83135344526812,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}]
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T14:18:05.3399664-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":310.83135344526812,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:18:07.1065482-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":310.83135344526812,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Momento":"2024-05-07T14:18:36.3659862-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.042459669529649587],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":270.0,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:18:41.3489254-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.22537465613121596],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":204.83904659665646,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null},{"Momento":"2024-05-07T14:18:44.3824957-03:00","VelocidadeMedia":0.0,"PorcentagemBateria":0.0,"BateriaConsumida":0.0,"DistanciaPercorrida":[0.25972726651225275],"DistanciaEsquerda":0.0,"DistanciaDireita":0.0,"AnguloCarroGPS":90.0,"AnguloCarroBussola":360.0,"AnguloCarro":360.0,"SonarFrontal":null}]
|
||||
|
|
@ -1 +0,0 @@
|
|||
[{"Latitude":-22.213086833333332,"Longitude":-47.381531,"DataHora":"2024-05-07T14:18:25","Altitude":630.3,"Velocidade":0.11482400000000001,"NumeroSatelites":7,"PrecisaoHorizontal":1.11,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213087,"Longitude":-47.381531166666669,"DataHora":"2024-05-07T14:18:26","Altitude":630.2,"Velocidade":0.048152,"NumeroSatelites":7,"PrecisaoHorizontal":1.11,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213087,"Longitude":-47.381531333333335,"DataHora":"2024-05-07T14:18:27","Altitude":630.2,"Velocidade":0.137048,"NumeroSatelites":8,"PrecisaoHorizontal":1.01,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.2130875,"Longitude":-47.381531666666667,"DataHora":"2024-05-07T14:18:28","Altitude":630.0,"Velocidade":0.06482,"NumeroSatelites":8,"PrecisaoHorizontal":1.01,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.2130875,"Longitude":-47.381531833333334,"DataHora":"2024-05-07T14:18:29","Altitude":630.1,"Velocidade":0.10371200000000001,"NumeroSatelites":8,"PrecisaoHorizontal":1.01,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213087333333334,"Longitude":-47.381531833333334,"DataHora":"2024-05-07T14:18:30","Altitude":630.1,"Velocidade":0.061116000000000004,"NumeroSatelites":8,"PrecisaoHorizontal":1.01,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213088,"Longitude":-47.381532166666666,"DataHora":"2024-05-07T14:18:32","Altitude":630.0,"Velocidade":0.051856000000000006,"NumeroSatelites":7,"PrecisaoHorizontal":1.11,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213088,"Longitude":-47.381532,"DataHora":"2024-05-07T14:18:33","Altitude":630.0,"Velocidade":0.183348,"NumeroSatelites":7,"PrecisaoHorizontal":1.11,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0},{"Latitude":-22.213088,"Longitude":-47.381531833333334,"DataHora":"2024-05-07T14:18:34","Altitude":629.9,"Velocidade":0.225944,"NumeroSatelites":8,"PrecisaoHorizontal":1.01,"Orientacao":0.0,"idxRua":-1,"DirecaoTrecho":0}]
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue