ajustes no fluxo de movimentacao autonoma

This commit is contained in:
Diego Freitas 2024-12-12 19:04:05 -03:00
parent 72a0eb823d
commit 7ae31a4950
67 changed files with 4864 additions and 230 deletions

Binary file not shown.

View File

@ -3,20 +3,34 @@
"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\\frma05config.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frma05config.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{00000000-0000-0000-0000-000000000000}|\u003CSolution\u003E|AgroBase||{04B8AB82-A572-4FEF-95CE-5222444B6B64}|"
},
{
"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\\services\\wifiservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\wifiservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\services\\serialservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\serialservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\services\\pythonservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\pythonservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\services\\kinectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\kinectservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\services\\ethernetservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\ethernetservice.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\\variaveis.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\variaveis.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\\frmethernet.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmethernet.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\\asynctasktimermodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\asynctasktimermodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
},
{
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\||{B270807C-D8C6-49EB-8EBE-8E8D566637A1}|5e9a8ac2-4f34-4521-858f-4c248ba31532"
}
],
"DocumentGroupContainers": [
@ -26,58 +40,96 @@
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 2,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 2,
"Title": "SerialService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\SerialService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\SerialService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\SerialService.cs",
"RelativeToolTip": "AgroBase\\Services\\SerialService.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAALUAAAA9AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-11T16:45:47.67Z",
"DocumentIndex": 0,
"Title": "AgroBase",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\AgroBase.csproj",
"RelativeDocumentMoniker": "AgroBase\\AgroBase.csproj",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\AgroBase.csproj",
"RelativeToolTip": "AgroBase\\AgroBase.csproj",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001001|",
"WhenOpened": "2024-12-12T21:57:11.22Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 1,
"Title": "OperacaoModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAKkLAAAAAAAA",
"Title": "WifiService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\WifiService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\WifiService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\WifiService.cs",
"RelativeToolTip": "AgroBase\\Services\\WifiService.cs",
"ViewState": "AQIAABEAAAAAAAAAAAAowHUAAAAAAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-11T15:36:21.874Z",
"WhenOpened": "2024-12-12T21:52:34.025Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "frmA05Config.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmA05Config.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmA05Config.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmA05Config.cs",
"RelativeToolTip": "AgroBase\\Forms\\frmA05Config.cs",
"ViewState": "AQIAAAAAAAAAAAAAAAAAAHoAAAAJAAAA",
"DocumentIndex": 2,
"Title": "PythonService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\PythonService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\PythonService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\PythonService.cs",
"RelativeToolTip": "AgroBase\\Services\\PythonService.cs",
"ViewState": "AQIAACwAAAAAAAAAAIA9wG4AAAA5AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-11T15:19:41.774Z",
"WhenOpened": "2024-12-12T21:51:36.505Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 5,
"Title": "frmEthernet.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmEthernet.cs",
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmEthernet.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmEthernet.cs",
"RelativeToolTip": "AgroBase\\Forms\\frmEthernet.cs",
"ViewState": "AQIAACAAAAAAAAAAAAAnwEEAAAA7AAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-12T21:49:57.208Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 3,
"Title": "KinectService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\KinectService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\KinectService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\KinectService.cs",
"RelativeToolTip": "AgroBase\\Services\\KinectService.cs",
"ViewState": "AQIAAA8AAAAAAAAAAAAAAAAAAAAAAAAA",
"Title": "EthernetService.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\EthernetService.cs",
"RelativeDocumentMoniker": "AgroBase\\Services\\EthernetService.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\EthernetService.cs",
"RelativeToolTip": "AgroBase\\Services\\EthernetService.cs",
"ViewState": "AQIAAGkBAAAAAAAAAADgv/kBAAAPAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-11T15:19:26.121Z",
"WhenOpened": "2024-12-12T21:30:59.607Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 4,
"Title": "Variaveis.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Variaveis.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\Variaveis.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Variaveis.cs",
"RelativeToolTip": "AgroBase\\Models\\Variaveis.cs",
"ViewState": "AQIAALMCAAAAAAAAAAASwGoDAAAbAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-12T21:12:48.82Z",
"EditorCaption": ""
},
{
"$type": "Document",
"DocumentIndex": 6,
"Title": "AsyncTaskTimerModel.cs",
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\AsyncTaskTimerModel.cs",
"RelativeDocumentMoniker": "AgroBase\\Models\\AsyncTaskTimerModel.cs",
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\AsyncTaskTimerModel.cs",
"RelativeToolTip": "AgroBase\\Models\\AsyncTaskTimerModel.cs",
"ViewState": "AQIAAEkAAAAAAAAAAAAiwA4BAAAJAAAA",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2024-12-12T16:20:53.336Z",
"EditorCaption": ""
}
]

View File

@ -59,6 +59,9 @@ namespace AgroBase.Forms.IHM
tmrLeitura?.Dispose();
tmrLeitura = new AsyncTaskTimerModel("tmrLeitura", tmrLeitura_Tick, 500, this);
tmrLeitura.Start();
tkbAnguloDirecional.Minimum = 0;
tkbAnguloDirecional.Maximum = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Max);
}
private void frmDialogoMapa_FormClosing(object sender, FormClosingEventArgs e)
@ -138,7 +141,7 @@ namespace AgroBase.Forms.IHM
{
cmbModoControle.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Controle.TipoMovimento;
double Percentual = (Variaveis.OperacaoEmAndamento.Controle.RPM_SP / VariaveisEquipamento.RPM_Max_Roda) * 100.0;
double Percentual = ((double)Variaveis.OperacaoEmAndamento.Controle.RPM_SP / (double)VariaveisEquipamento.RPM_Max_Roda) * 100.0;
tkbVelocidade.Value = Convert.ToInt32(Percentual);
tkbAnguloDirecional.Value = Math.Abs(Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo));
@ -150,7 +153,7 @@ namespace AgroBase.Forms.IHM
try
{
double angulo = Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarro;
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, -90);
FuncoesGlobais.DesenharInclinacao((Panel)sender, e, (float)angulo, 90, (float)Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloRua);
}
catch { }
}
@ -189,8 +192,6 @@ namespace AgroBase.Forms.IHM
cmbModoControle.SelectedIndex = (int)Variaveis.OperacaoEmAndamento.Controle.TipoMovimento;
tkbAnguloDirecional.Minimum = 0;
tkbAnguloDirecional.Maximum = Convert.ToInt32(Variaveis.OperacaoEmAndamento.Controle.Angulo_Max);
FuncoesGlobais.PreencheValorTrackBar(tkbAnguloDirecional, Variaveis.OperacaoEmAndamento.Controle.Angulo);
FuncoesGlobais.PreencheValorTrackBar(tkbVelocidade, Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP);

View File

@ -54,15 +54,18 @@ namespace AgroBase.Forms
string gateway = txtGateway.Text;
string subnetMask = txtSubmask.Text;
// Aqui substituímos "Ethernet" pelo nome correto da interface que o PC está usando
if (chbIpFixo.Checked)
Task.Run(async () =>
{
EthernetService.DefinirIpFixo(_Interface, ipNovo, subnetMask, gateway, true);
}
else
{
EthernetService.DefinirIpDinamico(_Interface, true);
}
// Aqui substituímos "Ethernet" pelo nome correto da interface que o PC está usando
if (chbIpFixo.Checked)
{
await EthernetService.DefinirIpFixo(_Interface, ipNovo, subnetMask, gateway, true);
}
else
{
await EthernetService.DefinirIpDinamico(_Interface, true);
}
});
}
private void chbIpFixo_CheckedChanged(object sender, EventArgs e)

View File

@ -63,7 +63,7 @@ namespace AgroBase.Forms
Velocidade = GPSService.UltimaLeitura.Velocidade,
Orientacao = GPSService.UltimaLeitura.Orientacao
};
Trajetoria[Trajetoria.Count].Add(leitura);
Trajetoria[Trajetoria.Count - 1].Add(leitura);
File.WriteAllText(Variaveis.CaminhoLogsDispositivos + "GPS/" + LogID + ".json", JsonConvert.SerializeObject(Trajetoria, Formatting.None), Encoding.UTF8);
}

View File

@ -20,8 +20,8 @@ namespace AgroBase.Forms
public static frmIHM frmIHM = new frmIHM()
{
FormBorderStyle = FormBorderStyle.None,
WindowState = FormWindowState.Maximized,
TopMost = true
//WindowState = FormWindowState.Maximized,
//TopMost = true
};
public frmInstancial()

View File

@ -29,6 +29,7 @@
private void InitializeComponent()
{
this.pnlOpcoes = new System.Windows.Forms.Panel();
this.chbAutomatico = new System.Windows.Forms.CheckBox();
this.lblTempoEstimado = new System.Windows.Forms.Label();
this.lblStatusOperacao = new System.Windows.Forms.Label();
this.lblDistanciaLateral = new System.Windows.Forms.Label();
@ -80,7 +81,6 @@
this.lblAproximando = new System.Windows.Forms.Label();
this.lblDistProx = new System.Windows.Forms.Label();
this.lblDistAnt = new System.Windows.Forms.Label();
this.chbAutomatico = new System.Windows.Forms.CheckBox();
this.pnlOpcoes.SuspendLayout();
this.gpbSonar.SuspendLayout();
this.gpbGPS.SuspendLayout();
@ -110,6 +110,18 @@
this.pnlOpcoes.Size = new System.Drawing.Size(1379, 100);
this.pnlOpcoes.TabIndex = 0;
//
// chbAutomatico
//
this.chbAutomatico.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.chbAutomatico.AutoSize = true;
this.chbAutomatico.Location = new System.Drawing.Point(1231, 72);
this.chbAutomatico.Margin = new System.Windows.Forms.Padding(2);
this.chbAutomatico.Name = "chbAutomatico";
this.chbAutomatico.Size = new System.Drawing.Size(137, 17);
this.chbAutomatico.TabIndex = 30;
this.chbAutomatico.Text = "Atualização Automática";
this.chbAutomatico.UseVisualStyleBackColor = true;
//
// lblTempoEstimado
//
this.lblTempoEstimado.AutoSize = true;
@ -481,7 +493,7 @@
this.txtLongitude.Name = "txtLongitude";
this.txtLongitude.Size = new System.Drawing.Size(135, 20);
this.txtLongitude.TabIndex = 15;
this.txtLongitude.Text = "-47,1956147249173";
this.txtLongitude.Text = "-47,3815481565223";
this.txtLongitude.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// txtLatitude
@ -491,7 +503,7 @@
this.txtLatitude.Name = "txtLatitude";
this.txtLatitude.Size = new System.Drawing.Size(135, 20);
this.txtLatitude.TabIndex = 14;
this.txtLatitude.Text = "-22,0787517060124";
this.txtLatitude.Text = "-22,2131153491009";
this.txtLatitude.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
//
// btnIniciarGPS
@ -687,18 +699,6 @@
this.lblDistAnt.TabIndex = 24;
this.lblDistAnt.Text = "Distância Ponto Anterior: 0,00 m";
//
// chbAutomatico
//
this.chbAutomatico.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.chbAutomatico.AutoSize = true;
this.chbAutomatico.Location = new System.Drawing.Point(1231, 72);
this.chbAutomatico.Margin = new System.Windows.Forms.Padding(2);
this.chbAutomatico.Name = "chbAutomatico";
this.chbAutomatico.Size = new System.Drawing.Size(137, 17);
this.chbAutomatico.TabIndex = 30;
this.chbAutomatico.Text = "Atualização Automática";
this.chbAutomatico.UseVisualStyleBackColor = true;
//
// frmSimulacaoMapaGPS
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

View File

@ -138,12 +138,15 @@ namespace AgroBase.Forms
Latitude = GPSService.UltimaLeitura.Latitude,
};
GPSService.UltimaLeitura = new GPSModel()
if (!GPSService.Iniciado || (txtLongitude.Text != "" && txtLatitude.Text != ""))
{
DataHora = DateTime.Now,
Longitude = double.Parse(txtLongitude.Text.Replace(".", ",")),
Latitude = double.Parse(txtLatitude.Text.Replace(".", ",")),
};
GPSService.UltimaLeitura = new GPSModel()
{
DataHora = DateTime.Now,
Longitude = double.Parse(txtLongitude.Text.Replace(".", ",")),
Latitude = double.Parse(txtLatitude.Text.Replace(".", ",")),
};
}
GPSService.AtualizarCoordenadasGPS();
}

View File

@ -239,7 +239,7 @@ namespace AgroBase.Models
// Garante que o intervalo é respeitado entre execuções
await Task.Delay(_interval, cancellationToken);
_Ticking = false;
_ticks++;
//_ticks++;
}
}

View File

@ -278,6 +278,7 @@ namespace AgroBase.Models
{
get
{
double anguloCaminho = 0;
try
{
lock (TrajetoriaDinamica_Lock)
@ -289,7 +290,7 @@ namespace AgroBase.Models
if ((idx + 1) >= TrajetoriaDinamica.Count())
{
return 0;
return anguloCaminho;
}
double angulo = GPSService.CalcularOrientacao(TrajetoriaDinamica[idx], TrajetoriaDinamica[idx + 1]);
@ -298,18 +299,20 @@ namespace AgroBase.Models
angulo = GPSService.CalcularOrientacao(TrajetoriaDinamica[idx + 1], TrajetoriaDinamica[idx + 2]);
}
return (!(angulo >= 0 || angulo <= 0)) ? 0 : angulo;
}
else
{
return 0;
anguloCaminho = (!(angulo >= 0 || angulo <= 0)) ? 0 : angulo;
}
}
}
catch
{
return 0;
anguloCaminho = 0;
}
finally
{
Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloRua = anguloCaminho;
}
return anguloCaminho;
}
}
public double AnguloRuaAtual

View File

@ -47,11 +47,11 @@ namespace AgroBase.Models.Operacoes
// Calcule o erro lateral baseado nas distâncias entre as ruas do mapa atraves do GPS
double erroLateral = statusCarroRua == StatusCarroMapa.CaminhandoRua ? Variaveis.OperacaoEmAndamento.Mapa.DistanciaEsquerda - Variaveis.OperacaoEmAndamento.Mapa.DistanciaDireita : 0;
double erroLateral = statusCarroRua == StatusCarroMapa.CaminhandoRua && false ? Variaveis.OperacaoEmAndamento.Mapa.DistanciaEsquerda - Variaveis.OperacaoEmAndamento.Mapa.DistanciaDireita : 0;
double erroUltrassom = UltrasonicA05Helper.CalcularErroUltrassons();
double erroCombinado = CalcularErroCombinado(erroLateral, erroOrientacao, erroUltrassom, anguloCarro, statusCarroRua);
double erroCombinado = CalcularErroCombinado(erroLateral, erroOrientacao, erroUltrassom, anguloCarro, anguloRua, statusCarroRua);
@ -130,7 +130,7 @@ namespace AgroBase.Models.Operacoes
return erroCombinado;
}
private double CalcularErroCombinado(double erroLateral, double erroOrientacao, double erroUltrassons, double anguloCarro, StatusCarroMapa statusCarroRua)
private double CalcularErroCombinado(double erroLateral, double erroOrientacao, double erroUltrassons, double anguloCarro, double anguloRua, StatusCarroMapa statusCarroRua)
{
bool carroDentroRua = StatusDentroRua.Contains(statusCarroRua);
@ -151,7 +151,8 @@ namespace AgroBase.Models.Operacoes
(erroPosicaoLateral * PesoLateralDentroRua) +
(erroUltrassons * PesoUltrassons);
Direcao direcaoVirar = erroCombinado < anguloCarro ? Direcao.Esquerda : Direcao.Direita;
//Direcao direcaoVirar = erroCombinado < anguloCarro ? Direcao.Esquerda : Direcao.Direita;
Direcao direcaoVirar = CalcularDirecaoParaVirar(anguloCarro, anguloRua);
double erroComparar = erroCombinado < 0 ? -erroCombinado : erroCombinado;
// Aplica correções extras quando o erro é significativo e comparável com a distância à borda da rua
@ -170,6 +171,27 @@ namespace AgroBase.Models.Operacoes
return erroCombinado;
}
public static Direcao CalcularDirecaoParaVirar(double anguloCarro, double anguloRua)
{
// Normaliza os ângulos para o intervalo [0, 360)
anguloCarro = ((anguloCarro % 360) + 360) % 360;
anguloRua = ((anguloRua % 360) + 360) % 360;
// Calcula a diferença angular nos dois sentidos
double diferencaHorario = (anguloRua - anguloCarro + 360) % 360;
double diferencaAntihorario = (anguloCarro - anguloRua + 360) % 360;
// Determina a direção com a menor distância
if (diferencaHorario <= diferencaAntihorario)
{
return Direcao.Direita; // Virar no sentido horário
}
else
{
return Direcao.Esquerda; // Virar no sentido antihorário
}
}
private void DefinirTipoMovimento(StatusCarroMapa statusCarro)
{

View File

@ -1272,7 +1272,6 @@ namespace AgroBase.Models
{
if (_Controle.Angulo < 0)
{
_Controle.Angulo *= -1;
if (_ControleAnterior.Angulo < _Controle.Angulo)
{
_Controle.Direcao = Direcao.Parado;

View File

@ -15,21 +15,25 @@ namespace AgroBase.Models
public double LimiteSaida { get; set; } = 100.0; // Define o limite máximo para a saída do PID
public double LimiteSomaErro { get; set; } = 50.0; // Define o limite para a soma do erro (wind-up)
public void Atualizar(double valorAtual)
public void Atualizar(double valorAtual, double setPoint = 0)
{
SetPoint = setPoint;
ValorAtual = valorAtual;
double erro = SetPoint - ValorAtual;
// Atualiza a soma do erro com limitação para prevenir wind-up
somaErro = Math.Max(Math.Min(somaErro + erro, LimiteSomaErro), -LimiteSomaErro);
if (erro != erroAnterior)
{
// Atualiza a soma do erro com limitação para prevenir wind-up
somaErro = Math.Max(Math.Min(somaErro + erro, LimiteSomaErro), -LimiteSomaErro);
double deltaErro = erro - erroAnterior;
double saidaTemp = (Kp * erro) + (Ki * somaErro) + (Kd * deltaErro);
double deltaErro = erro - erroAnterior;
double saidaTemp = (Kp * erro) + (Ki * somaErro) + (Kd * deltaErro);
// Limita a saída do PID
Saida = Math.Max(Math.Min(saidaTemp, LimiteSaida), -LimiteSaida);
// Limita a saída do PID
Saida = Math.Max(Math.Min(saidaTemp, LimiteSaida), -LimiteSaida);
erroAnterior = erro;
erroAnterior = erro;
}
}
public void Resetar()

View File

@ -429,7 +429,7 @@ namespace AgroBase.Models
return bmp;
}
public static void DesenharInclinacao(Panel pnlBussola, PaintEventArgs e, float anguloInclinacao, float anguloSub)
public static void DesenharInclinacao(Panel pnlBussola, PaintEventArgs e, float anguloInclinacao, float anguloSub, float? anguloOpcional = null)
{
if (!(anguloInclinacao >= 0 || anguloInclinacao <= 0))
{
@ -443,7 +443,7 @@ namespace AgroBase.Models
//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")}°";
string anguloTexto = (anguloOpcional.HasValue ? "C: " : "") + $"{anguloInclinacao.ToString("0.0")}°";
Font fonteAngulo = new Font("Arial", 7); // Ajuste o tamanho da fonte conforme necessário
SizeF textSize = e.Graphics.MeasureString(anguloTexto, fonteAngulo);
@ -484,6 +484,38 @@ namespace AgroBase.Models
g.DrawLine(pen, pontoCentral, pontoFinal);
}
}
// Desenhar a segunda seta se o ângulo opcional for fornecido
if (anguloOpcional.HasValue)
{
// Escreve o ângulo no centro do círculo
string anguloTexto2 = $"R: {anguloOpcional.Value.ToString("0.0")}°";
SizeF textSize2 = e.Graphics.MeasureString(anguloTexto2, fonteAngulo);
// Calcula a posição para o texto ser centralizado no círculo
float textX2 = pnlBussola.Width - textSize2.Width;
float textY2 = 0;
// Desenha o texto no Graphics do painel
g.DrawString(anguloTexto2, fonteAngulo, Brushes.Blue, textX2, textY2);
float anguloOpcionalRadianos = (anguloOpcional.Value - anguloSub) * (float)(Math.PI / 180.0);
PointF pontoFinalOpcional = new PointF(
pontoCentral.X + comprimentoLinha * (float)Math.Cos(anguloOpcionalRadianos),
pontoCentral.Y + comprimentoLinha * (float)Math.Sin(anguloOpcionalRadianos)
);
using (AdjustableArrowCap bigArrow = new AdjustableArrowCap(4, 4))
{
using (Pen pen = new Pen(Color.Blue, 2))
{
pen.CustomEndCap = bigArrow;
g.DrawLine(pen, pontoCentral, pontoFinalOpcional);
}
}
}
}
public static string ConverterSegundosParaHHmmss(int totalSeconds)
@ -751,31 +783,49 @@ namespace AgroBase.Models
return imagemSemBordas;
}
public static async Task ExecutarMetodoComVerificacaoCrossThreadAsync(Control controle, Func<Task> acao)
{
if (controle.InvokeRequired)
{
TaskCompletionSource<object> tcs = new TaskCompletionSource<object>();
var tcs = new TaskCompletionSource<object>();
controle.BeginInvoke(new Action(async () =>
try
{
try
controle.BeginInvoke(new Action(async () =>
{
await acao();
tcs.SetResult(null);
}
catch (Exception ex)
{
tcs.SetException(ex);
}
}));
try
{
await acao();
if (!tcs.Task.IsCompleted) // Evitar race conditions
tcs.TrySetResult(null);
}
catch (Exception ex)
{
if (!tcs.Task.IsCompleted) // Evitar race conditions
tcs.TrySetException(ex);
}
}));
}
catch (Exception ex)
{
if (!tcs.Task.IsCompleted) // Garante que o estado do TCS é atualizado corretamente
tcs.TrySetException(ex);
}
await tcs.Task;
await tcs.Task; // Aguarda a conclusão da ação
}
else
{
await acao();
try
{
await acao();
}
catch (Exception ex)
{
// Log de exceção opcional, se necessário
Console.WriteLine($"Erro ao executar ação no thread UI: {ex.Message}");
throw;
}
}
}

View File

@ -361,7 +361,7 @@ namespace AgroBase.Comum
btnPinout.Click -= btnPinout_Click;
btnPinout.Click += btnPinout_Click;
tmrLogsDispositivo = new AsyncTaskTimerModel("tmrLogsDispositivo", tmrLogsDispositivo_Tick, 1000);
tmrLogsDispositivo = new AsyncTaskTimerModel("tmrLogsDispositivo_" + Dispositivo.ToString(), tmrLogsDispositivo_Tick, 1000);
tmrLogsDispositivo.Start();
gpbItem.Controls.Add(lblPorta);

View File

@ -115,13 +115,13 @@ public class EthernetService
// Método para enviar dados ao dispositivo via Ethernet
public async Task<bool> SendDataAsync(byte[] data)
{
if (IsConnected && _networkStream.CanWrite)
if (IsConnected && (_networkStream?.CanWrite ?? false))
{
try
{
await FlushBufferAsync(); // Limpa o buffer antes de enviar
await _networkStream.WriteAsync(data, 0, data.Length);
await _networkStream.FlushAsync();
await _networkStream?.WriteAsync(data, 0, data.Length);
await _networkStream?.FlushAsync();
return true;
}
catch (Exception ex)
@ -142,7 +142,7 @@ public class EthernetService
var buffer = new byte[expectedLength];
try
{
var readTask = _networkStream.ReadAsync(buffer, 0, expectedLength); // Tarefa de leitura sem o token
var readTask = _networkStream?.ReadAsync(buffer, 0, expectedLength); // Tarefa de leitura sem o token
// Cria uma tarefa de delay que representa o timeout
if (await Task.WhenAny(readTask, Task.Delay(timeoutMilliseconds)) == readTask)
@ -166,7 +166,7 @@ public class EthernetService
}
finally
{
await _networkStream.FlushAsync();
await _networkStream?.FlushAsync();
await FlushBufferAsync();
}
}
@ -270,12 +270,12 @@ public class EthernetService
{
try
{
if (_networkStream.DataAvailable) // Verifica se há dados pendentes no buffer
if (_networkStream?.DataAvailable ?? false) // Verifica se há dados pendentes no buffer
{
var tempBuffer = new byte[1024]; // Buffer temporário para leitura
while (_networkStream.DataAvailable)
while (_networkStream?.DataAvailable ?? false)
{
await _networkStream.ReadAsync(tempBuffer, 0, tempBuffer.Length);
await _networkStream?.ReadAsync(tempBuffer, 0, tempBuffer.Length);
}
//Console.WriteLine("Buffer limpo.");
}
@ -440,7 +440,7 @@ public class EthernetService
return "Nenhuma interface de rede ativa encontrada";
}
public static void DefinirIpDinamico(string interfaceName, bool response)
public static async Task DefinirIpDinamico(string interfaceName, bool response)
{
try
{
@ -449,8 +449,8 @@ public class EthernetService
// Define o DNS para DHCP
string comandoDns = $"interface ip set dns \"{interfaceName}\" dhcp";
ExecutarComandoNetsh(comandoIp);
ExecutarComandoNetsh(comandoDns);
await ExecutarComandoNetshAsync(comandoIp);
await ExecutarComandoNetshAsync(comandoDns);
if (response)
{
@ -466,17 +466,17 @@ public class EthernetService
}
}
public static void DefinirIpFixo(string nomeInterface, string ipAddress, string subnetMask, string gateway, bool response)
public static async Task DefinirIpFixo(string nomeInterface, string ipAddress, string subnetMask, string gateway, bool response)
{
try
{
// Define o IP fixo na interface de rede
string comandoIp = $"interface ip set address name=\"{nomeInterface}\" static {ipAddress} {subnetMask} {gateway}";
ExecutarComandoNetsh(comandoIp);
await ExecutarComandoNetshAsync(comandoIp);
// Configura o DNS para automático (caso desejado)
string comandoDns = $"interface ip set dns name=\"{nomeInterface}\" source=static addr=8.8.4.4 register=primary";
ExecutarComandoNetsh(comandoDns);
await ExecutarComandoNetshAsync(comandoDns);
if (response)
{
@ -507,6 +507,25 @@ public class EthernetService
return output;
}
private static async Task<string> ExecutarComandoNetshAsync(string comando)
{
using (Process process = new Process())
{
process.StartInfo.FileName = "netsh";
process.StartInfo.Arguments = comando;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.UseShellExecute = false;
process.StartInfo.CreateNoWindow = true;
process.Start();
string output = await process.StandardOutput.ReadToEndAsync();
await Task.Run(() => process.WaitForExit());
return output;
}
}
public static async Task ScanSubnetAsync(string subnet)
{
@ -550,14 +569,17 @@ public class EthernetService
string ip = Variaveis.IP_Host;
string submask = ObterSubnetMaskAtual(_Interface);
if (fixo)
Task.Run(async () =>
{
DefinirIpFixo(_Interface, ip, submask, gateway, response);
}
else
{
DefinirIpDinamico(_Interface, response);
}
if (fixo)
{
await DefinirIpFixo(_Interface, ip, submask, gateway, response);
}
else
{
await DefinirIpDinamico(_Interface, response);
}
});
}
}

View File

@ -591,12 +591,6 @@ namespace AgroBase.Services
return;
}
DefinirAnguloCarroGPS();
int ID = Convert.ToInt32(Variaveis.ConexaoLoRa.parametros.address);
double angulo = ((Variaveis.OperacaoEmAndamento.Sensoriamento?.AnguloCarro ?? 0) - 180);
EnviarCoordenadasParaMapa(UltimaLeitura.Latitude, UltimaLeitura.Longitude, angulo, Variaveis.OperacaoEmAndamento.Iniciado, ID);
if (VariaveisOperacao.PosicaoBase != null)
{
byte enderecoBase = Variaveis.OperacaoEmAndamento.DispSen.Dados.LoRaParametrosBase.address;
@ -635,6 +629,13 @@ namespace AgroBase.Services
}
}
}
DefinirAnguloCarroGPS();
int ID = Convert.ToInt32(Variaveis.ConexaoLoRa.parametros.address);
double angulo = ((Variaveis.OperacaoEmAndamento.Sensoriamento?.AnguloCarro ?? 0) - 180);
EnviarCoordenadasParaMapa(UltimaLeitura.Latitude, UltimaLeitura.Longitude, angulo, Variaveis.OperacaoEmAndamento.Iniciado, ID);
}
public static void EnviarCoordenadasParaMapa(double Latitude, double Longitude, double Orientacao, bool EmFoco, int ID)
@ -740,6 +741,14 @@ namespace AgroBase.Services
Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Indice].Count > PontosConsiderarAngulo ?
Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Indice].OrderByDescending(x => x.DataHora).Take(PontosConsiderarAngulo).ToList() :
Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Indice].OrderByDescending(x => x.DataHora).ToList();
if (Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua.Count() > Indice && Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Indice].Count == 1 && Indice > 0)
{
Pontos = new List<GPSModel>()
{
Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Indice - 1][Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Indice - 1].Count - 1],
Variaveis.OperacaoEmAndamento.GPSTrajetoriaRua[Indice][0]
};
}
Pontos = Pontos.OrderBy(x => x.DataHora).ToList();
for (int i = 0; i < Pontos.Count() - 1; i++)
{

View File

@ -62,7 +62,7 @@ namespace AgroBase.Services
MapasVariaveisModel.TopicoCoordenadasGPS,
MapasVariaveisModel.TopicoSelecaoRuasMapa,
MapasVariaveisModel.TopicoTrajetoriaDinamica,
caminhoArquivo.Split('.')[1] == "json" ? "1" : "0"
extensao == ".json" ? "1" : "0"
});
MapaUrl = new Uri(CaminhoSaida + NomeArquivoMapa).AbsoluteUri;
@ -107,15 +107,16 @@ namespace AgroBase.Services
features = new List<MapaFeatureModel>()
};
foreach (var rua in Trajetoria)
for (int i = 0; i < Trajetoria.Count; i++)
{
var rua = Trajetoria[i];
double length = GPSService.DistanciaDoTrecho(rua);
featureCollection.features.Add(new MapaFeatureModel()
{
type = "Feature",
properties = new MapaFeaturePropertiesModel()
{
Id = id.ToString(),
Id = (i + 1).ToString(),
Name = name,
Length = length,
Dist1 = dist1,
@ -129,7 +130,7 @@ namespace AgroBase.Services
});
// Adicionando coordenadas aos recursos
var coordinates = featureCollection.features[0].geometry.coordinates;
var coordinates = featureCollection.features[i].geometry.coordinates;
foreach (var gpsModel in rua)
{
var coordinate = new List<double> { gpsModel.Longitude, gpsModel.Latitude };

View File

@ -186,7 +186,7 @@ namespace AgroBase.Services
return;
}
//VarreduraEmAndamento = true;
VarreduraEmAndamento = true;
try
{

File diff suppressed because it is too large Load Diff

View File

@ -15460,3 +15460,538 @@ Parameter name: source
11/12/2024 16:31:33:955 - Endereço 35 (192.168.105.11): Dados recebidos de um endereço inválido: [251 35 61 250]
11/12/2024 16:31:33:955 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
11/12/2024 16:32:42:300 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 14:10:17:855 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:18:00:151 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 14:18:04:321 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:21:35:564 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=33
12/12/2024 14:21:37:405 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=33
12/12/2024 14:21:37:437 - Endereço 0 (192.168.105.11): Dados recebidos de um endereço inválido: [0 0 0 49]
12/12/2024 14:21:37:437 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:24:13:393 - Endereço 191 (192.168.105.11): Dados recebidos de um endereço inválido: [187 191 160 159 245 2 47]
12/12/2024 14:24:13:393 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:24:17:462 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:29:39:446 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:39:493 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:39:572 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:39:650 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:41:352 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:41:509 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:41:641 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:41:729 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:42:060 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:43:258 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:43:305 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:44:179 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:44:226 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:44:258 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:45:122 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:45:201 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:45:265 - Endereço 3 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:45:361 - Endereço 3 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:45:409 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:45:457 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:45:548 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:45:629 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:46:634 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:46:728 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:46:791 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:46:885 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:46:951 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:47:418 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:47:528 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:48:128 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:48:207 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:48:238 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:49:133 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:49:212 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:49:255 - Endereço 3 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:49:384 - Endereço 3 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:49:431 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:49:479 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:49:541 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:49:573 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:50:619 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:50:667 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:50:713 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:50:761 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:50:808 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:51:388 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:51:458 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:52:143 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:52:221 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:52:260 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:53:140 - Endereço 1 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:53:218 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:53:281 - Endereço 3 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:53:457 - Endereço 3 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:53:511 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:53:555 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:53:677 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:53:744 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:54:643 - Endereço 2 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:54:692 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:54:723 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:29:54:786 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:29:54:833 - Endereço 4 (192.168.105.11): Erro ao enviar dados para o dispositivo via Ethernet
12/12/2024 14:31:56:816 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:32:29:154 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:32:35:301 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 14:32:41:209 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:38:37:958 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:38:40:635 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:51:47:179 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=33
12/12/2024 14:51:48:221 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=33
12/12/2024 14:51:48:330 - Endereço 0 (192.168.105.11): Dados recebidos de um endereço inválido: [0 0 0 47]
12/12/2024 14:51:48:330 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 14:56:01:837 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:56:05:776 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 14:59:08:973 - Endereço 212 (192.168.105.11): Dados recebidos de um endereço inválido: [251 212 169]
12/12/2024 14:59:08:973 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 14:59:08:994 - Endereço 245 (192.168.105.11): Dados recebidos de um endereço inválido: [4 245 2 246]
12/12/2024 14:59:08:994 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 14:59:10:835 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 14:59:25:122 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 15:02:55:467 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:49:13:771 - Endereço 139 (192.168.105.11): Dados recebidos de um endereço inválido: [251 139 127 169]
12/12/2024 16:49:13:780 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 16:51:11:925 - Endereço 191 (192.168.105.11): Dados recebidos de um endereço inválido: [251 191 253 138 32 27 77]
12/12/2024 16:51:11:925 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 16:51:14:658 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 16:51:58:571 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:00:759 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:01:658 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:02:558 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:05:299 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:141 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:235 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:329 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:407 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:454 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:533 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:627 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:721 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:784 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:878 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:08:941 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:082 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:192 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:333 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:412 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:510 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:584 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:678 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:757 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:836 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:09:914 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:011 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:086 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:180 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:290 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:384 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:478 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:557 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:698 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:839 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:886 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:10:980 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:090 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:200 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:342 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:483 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:561 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:672 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:751 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:830 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:11:940 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:002 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:096 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:159 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:238 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:300 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:378 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:488 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:582 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:661 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:740 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:849 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:12:991 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:100 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:195 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:289 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:367 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:430 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:524 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:602 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:665 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:728 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:791 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:885 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:13:979 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:073 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:136 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:199 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:277 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:371 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:450 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:521 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:575 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:654 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:733 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:779 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:874 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:14:937 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:022 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:122 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:187 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:297 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:391 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:501 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:611 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:658 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:736 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:862 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:15:941 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:024 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:113 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:176 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:254 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:349 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:427 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:505 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:584 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:663 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:742 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:884 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:16:994 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:088 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:182 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:261 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:339 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:433 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:527 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:627 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:699 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:762 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:841 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:888 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:17:951 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:029 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:107 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:155 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:228 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:280 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:359 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:437 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:484 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:578 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:657 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:704 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:798 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:876 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:930 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:18:986 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:033 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:112 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:159 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:221 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:269 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:363 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:431 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:473 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:536 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:598 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:645 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:708 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:755 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:834 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:881 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:943 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:19:990 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:085 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:163 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:226 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:273 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:336 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:414 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:477 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:524 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:602 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:680 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:743 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:834 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:900 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:20:963 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:041 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:104 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:182 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:234 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:308 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:355 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:402 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:449 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:512 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:590 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:669 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:747 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:810 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:872 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:21:951 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:014 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:108 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:155 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:202 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:249 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:343 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:421 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:469 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:537 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:625 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:673 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:751 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:837 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:892 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:22:955 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:038 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:112 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:175 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:238 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:316 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:395 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:458 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:520 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:599 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:662 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:708 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:803 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:866 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:23:928 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:022 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:101 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:195 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:258 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:352 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:430 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:509 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:587 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:741 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:823 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:885 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:948 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:24:995 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:074 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:168 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:247 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:342 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:419 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:513 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:576 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:686 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:796 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:25:905 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:000 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:094 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:172 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:251 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:345 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:423 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:501 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:580 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:737 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:815 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:925 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:26:988 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:099 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:161 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:272 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:368 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:463 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:574 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:653 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:763 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:857 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:935 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:27:982 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:048 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:108 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:218 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:265 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:406 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:485 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:563 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:641 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:704 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:862 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:28:972 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:081 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:191 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:254 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:379 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:520 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:678 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:751 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:834 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:913 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:29:991 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:086 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:152 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:211 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:353 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:446 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:493 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:619 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:697 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:760 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:838 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:30:979 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:074 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:155 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:231 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:310 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:357 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:420 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:514 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:608 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:656 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:756 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:859 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:31:969 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:063 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:141 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:204 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:329 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:439 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:502 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:612 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:706 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:757 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:816 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:879 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:934 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:32:989 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:084 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:193 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:258 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:319 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:382 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:444 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:523 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:617 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:695 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:821 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:33:978 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:088 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:166 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:261 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:386 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:496 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:590 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:684 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:794 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:857 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:34:920 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:030 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:139 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:202 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:296 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:422 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:563 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:642 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:736 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:799 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:865 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:35:987 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:081 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:143 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:206 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:285 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:366 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:426 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:473 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:583 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:647 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:758 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:836 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:36:930 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:37:088 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:37:197 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:37:307 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:37:417 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:37:542 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:37:621 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:37:747 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:52:37:873 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:57:40:096 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 16:57:40:096 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:112 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 16:57:40:112 - Endereço 4 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:127 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 16:57:40:127 - Endereço 4 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:159 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 16:57:40:159 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:174 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 16:57:40:174 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:221 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 16:57:40:221 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:285 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:300 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 16:57:40:300 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:363 - Endereço 1 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:378 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 16:57:40:378 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:410 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 16:57:40:410 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:441 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 16:57:40:441 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:504 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:529 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 16:57:40:529 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:583 - Endereço 3 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:599 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 16:57:40:599 - Endereço 2 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:630 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 16:57:40:630 - Endereço 2 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:678 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 16:57:40:678 - Endereço 2 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:741 - Endereço 2 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:820 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:57:40:820 - Endereço 4 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:914 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:57:40:914 - Endereço 4 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:40:977 - Endereço 4 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 16:57:41:040 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 16:57:44:212 - Endereço 2 (192.168.105.11): Conexão Ethernet não está definida ou não está conectada
12/12/2024 17:10:09:131 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:10:09:225 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:10:10:747 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:10:10:823 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:10:10:951 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:10:11:023 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:10:12:158 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:10:12:326 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:11:45:314 - Endereço 209 (192.168.105.11): Dados recebidos de um endereço inválido: [251 209 2 246 1 0 48]
12/12/2024 17:11:45:314 - Endereço 2 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:11:46:280 - Endereço 244 (192.168.105.11): Dados recebidos de um endereço inválido: [251 244]
12/12/2024 17:11:46:280 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=46
12/12/2024 17:13:11:542 - Endereço 1 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:13:11:595 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:14:18:960 - Endereço 3 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:14:19:040 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:14:19:247 - Endereço 2 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:14:19:327 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:14:19:640 - Endereço 4 (192.168.105.11): Erro ao enviar comando: Referência de objeto não definida para uma instância de um objeto.
12/12/2024 17:14:55:217 - Endereço 245 (192.168.105.11): Dados recebidos de um endereço inválido: [3 245 2 245]
12/12/2024 17:14:55:217 - Endereço 3 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:29:48:460 - Endereço 255 (192.168.105.11): Dados recebidos de um endereço inválido: [80 255]
12/12/2024 17:29:48:586 - Endereço 4 (192.168.105.11): Timeout ao receber resposta. GET=False, Parametro=13
12/12/2024 17:29:48:602 - Endereço 251 (192.168.105.11): Dados recebidos de um endereço inválido: [251 251 4 245 2 246 128 47]
12/12/2024 17:29:48:602 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:29:50:438 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:32:53:302 - Endereço 1 (192.168.105.11): Erro ao enviar comando: O índice estava fora dos limites da matriz.
12/12/2024 17:33:05:324 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:33:07:382 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:33:17:032 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:33:19:042 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:33:23:057 - Endereço 245 (192.168.105.11): Dados recebidos de um endereço inválido: [4 245 2 246]
12/12/2024 17:33:23:057 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:33:25:003 - Endereço 1 (192.168.105.11): Timeout ao receber resposta. GET=True, Parametro=1
12/12/2024 17:33:29:168 - Endereço 1 (192.168.105.11): Erro ao enviar comando: O índice estava fora dos limites da matriz.

View File

@ -1 +0,0 @@
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"Id":"1517","Name":"Projeto","Length":79.155642202986542,"Dist1":0.0,"Dist2":0.0},"geometry":{"id":null,"type":"LineString","coordinates":[[-47.381513166666664,-22.213679],[-47.381501666666665,-22.2136855],[-47.381491333333337,-22.213692833333333],[-47.381484666666665,-22.213698166666667],[-47.381481666666666,-22.213699833333333],[-47.381481166666667,-22.2136995],[-47.381477333333336,-22.213695666666666],[-47.381470833333331,-22.2136885],[-47.381464666666666,-22.2136795],[-47.3814595,-22.213669333333332],[-47.381454166666664,-22.213659833333335],[-47.381449,-22.213650333333334],[-47.381442833333331,-22.213640666666667],[-47.381437,-22.2136315],[-47.381431166666665,-22.213622166666667],[-47.381425833333331,-22.213612166666667],[-47.381420333333331,-22.2136015],[-47.381414333333332,-22.2135915],[-47.381408666666665,-22.213581333333334],[-47.381402666666666,-22.213571666666667],[-47.381396333333335,-22.213562],[-47.381391166666667,-22.213552166666666],[-47.381384833333335,-22.2135415],[-47.38137833333333,-22.213531166666666],[-47.381372,-22.2135225],[-47.3813655,-22.213513166666665],[-47.381358333333331,-22.213503666666668],[-47.381351,-22.213494333333333],[-47.381344166666665,-22.213485666666667],[-47.381337333333335,-22.213476],[-47.381331,-22.213465833333334],[-47.38132516666667,-22.213455333333332],[-47.381318666666665,-22.213445],[-47.3813125,-22.213434833333334],[-47.381305,-22.213425],[-47.3812975,-22.213415],[-47.381290166666666,-22.2134045],[-47.381284,-22.213394],[-47.381277166666663,-22.2133835],[-47.381271166666664,-22.213373166666667],[-47.381265,-22.213363333333334],[-47.381257833333336,-22.213354166666665],[-47.381250333333334,-22.213345666666665],[-47.381245333333332,-22.213336666666667],[-47.38124366666667,-22.213326666666667],[-47.381246,-22.213314833333332],[-47.3812515,-22.213303833333335],[-47.381257833333336,-22.213293333333333],[-47.381263333333337,-22.213282666666668],[-47.381268333333331,-22.213272],[-47.381273166666666,-22.213261833333334],[-47.381278333333334,-22.213252],[-47.381285666666663,-22.213243333333335],[-47.381294166666663,-22.213234833333335],[-47.381302333333331,-22.213226166666665],[-47.381310333333332,-22.213217],[-47.381318666666665,-22.213207833333332],[-47.381327333333331,-22.213199666666668],[-47.38133633333333,-22.213190833333332],[-47.381346,-22.2131815],[-47.381355333333332,-22.213172],[-47.381364833333336,-22.213162333333333],[-47.381373833333335,-22.213152333333333],[-47.3813835,-22.213143],[-47.381392666666663,-22.213134333333333]]}}]}

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -11,21 +11,21 @@
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
<script src="folium/leaflet.js"></script>
<script src="folium/jquery-3.7.1.min.js"></script>
<script src="folium/bootstrap.bundle.min.js"></script>
<script src="folium/leaflet.awesome-markers.js"></script>
<link rel="stylesheet" href="folium/leaflet.css"/>
<link rel="stylesheet" href="folium/bootstrap.min.css"/>
<link rel="stylesheet" href="folium/bootstrap.min.css"/>
<link rel="stylesheet" href="folium/all.min.css"/>
<link rel="stylesheet" href="folium/leaflet.awesome-markers.css"/>
<link rel="stylesheet" href="folium/leaflet.awesome.rotate.min.css"/>
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
#map_5f4fd292c4d69c95c75af1d5a9f8d951 {
#map_a363af6677d6ad9f6a3adf9cb8c2a801 {
position: relative;
width: 100.0%;
height: 100.0%;
@ -39,14 +39,14 @@
<body>
<div class="folium-map" id="map_5f4fd292c4d69c95c75af1d5a9f8d951" ></div>
<div class="folium-map" id="map_a363af6677d6ad9f6a3adf9cb8c2a801" ></div>
</body>
<script>
var map_5f4fd292c4d69c95c75af1d5a9f8d951 = L.map(
"map_5f4fd292c4d69c95c75af1d5a9f8d951",
var map_a363af6677d6ad9f6a3adf9cb8c2a801 = L.map(
"map_a363af6677d6ad9f6a3adf9cb8c2a801",
{
center: [0.0, 0.0],
crs: L.CRS.EPSG3857,
@ -78,7 +78,7 @@
}
trajeto_json_add({"features": []});
trajeto_json.addTo(map_5f4fd292c4d69c95c75af1d5a9f8d951);
trajeto_json.addTo(map_a363af6677d6ad9f6a3adf9cb8c2a801);
function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria);
@ -136,7 +136,7 @@
var marcadorDinamico = L.marker([0, 0], {
icon: customIcon
}).addTo(map_5f4fd292c4d69c95c75af1d5a9f8d951);
}).addTo(map_a363af6677d6ad9f6a3adf9cb8c2a801);
// Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
@ -174,7 +174,7 @@
marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
map_5f4fd292c4d69c95c75af1d5a9f8d951.setView(novaPosicao, map_5f4fd292c4d69c95c75af1d5a9f8d951.getZoom());
map_a363af6677d6ad9f6a3adf9cb8c2a801.setView(novaPosicao, map_a363af6677d6ad9f6a3adf9cb8c2a801.getZoom());
});
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {

View File

@ -0,0 +1,205 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script>
L_NO_TOUCH = false;
L_DISABLE_3D = false;
</script>
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
#map_9ab876a6ef8733158bc39237c9c2e2b1 {
position: relative;
width: 100.0%;
height: 100.0%;
left: 0.0%;
top: 0.0%;
}
.leaflet-container { font-size: 1rem; }
</style>
</head>
<body>
<div class="folium-map" id="map_9ab876a6ef8733158bc39237c9c2e2b1" ></div>
</body>
<script>
var map_9ab876a6ef8733158bc39237c9c2e2b1 = L.map(
"map_9ab876a6ef8733158bc39237c9c2e2b1",
{
center: [0.0, 0.0],
crs: L.CRS.EPSG3857,
zoom: 12,
zoomControl: true,
preferCanvas: false,
}
);
</script>
<script>
function trajeto_json_onEachFeature(feature, layer) {
layer.on({
});
};
var trajeto_json = L.geoJson(null, {
onEachFeature: trajeto_json_onEachFeature,
style: function(feature) {
return {color: 'red'};
}
}
);
function trajeto_json_add (data) {
trajeto_json.addData(data);
}
trajeto_json_add({"features": []});
trajeto_json.addTo(map_9ab876a6ef8733158bc39237c9c2e2b1);
function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria);
}
function saoCoordenadasIguais(coord1, coord2, tolerancia) {
return Math.abs(coord1[0] - coord2[0]) < tolerancia && Math.abs(coord1[1] - coord2[1]) < tolerancia;
}
function adicionarCoordenada(idGeometria, novaCoordenada) {
var feature = trajeto_json.toGeoJSON().features.find(f => f.id === idGeometria);
if (feature) {
var ultima = [0.0,0.0];
if (feature.geometry.coordinates.length > 0) {
ultima = feature.geometry.coordinates[feature.geometry.coordinates.length - 1];
}
if (!saoCoordenadasIguais(ultima, novaCoordenada, 0.000001)) {
feature.geometry.coordinates.push(novaCoordenada);
var ft = feature;
trajeto_json.clearLayers();
trajeto_json.addData(ft);
}
} else {
console.log("Feature com ID " + idGeometria + " não encontrada.");
}
}
adicionarGeometria({
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": []
},
"properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"},
"id": "Tj"
});
</script>
<script src="folium/mqtt.min.js"></script>
<script src="folium/leaflet.rotatedMarker.js"></script>
<script>
let posicaoAtual = {
lat: 0,
long: 0
};
var customIcon = L.icon({
iconUrl: 'folium/images/position_marker.png',
iconSize: [32, 32],
iconAnchor: [16, 16],
popupAnchor: [0, -16]
});
var marcadorDinamico = L.marker([0, 0], {
icon: customIcon
}).addTo(map_9ab876a6ef8733158bc39237c9c2e2b1);
// Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
// Quando conectado, inscreva-se no tópico desejado
client.on('connect', function () {
console.log('Conectado ao broker MQTT');
// Inscrever-se no tópico
client.subscribe('coordenadas_gps', function (err) {
if (!err) {
console.log("Inscrição bem-sucedida no tópico");
} else {
console.error("Falha na inscrição do tópico", err);
}
});
});
// Lidar com mensagens recebidas para o tópico inscrito
client.on('message', function (topic, message) {
// A mensagem é um Buffer, converta para string ou objeto conforme necessário
//console.log(`Mensagem recebida no tópico '${topic}': ${message.toString()}`);
var dados = JSON.parse(message);
var novaLatitude = dados.latitude;
var novaLongitude = dados.longitude;
var novaPosicao = [novaLatitude, novaLongitude];
marcadorDinamico.setLatLng(novaPosicao);
var angulo = dados.orientacao;
posicaoAtual.lat = novaPosicao[0];
posicaoAtual.long = novaPosicao[1];
// Rotacionar o marcador para o angulo calculado
marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
map_9ab876a6ef8733158bc39237c9c2e2b1.setView(novaPosicao, map_9ab876a6ef8733158bc39237c9c2e2b1.getZoom());
});
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
// Converter latitudes e longitudes de graus para radianos
const latA = P1latitude * (Math.PI / 180.0);
const lonA = P1longitude * (Math.PI / 180.0);
const latB = P2latitude * (Math.PI / 180.0);
const lonB = P2longitude * (Math.PI / 180.0);
// Calcular a diferença de longitude
const deltaLon = lonB - lonA;
// Calcular a direção
const y = Math.sin(deltaLon) * Math.cos(latB);
const x = Math.cos(latA) * Math.sin(latB) - Math.sin(latA) * Math.cos(latB) * Math.cos(deltaLon);
const direcaoRadianos = Math.atan2(y, x);
// Converter a direção de radianos para graus
let direcaoGraus = direcaoRadianos * (180.0 / Math.PI);
// Normalizar a direção para que esteja no intervalo de 0 a 360 graus
direcaoGraus = (direcaoGraus + 360) % 360;
return direcaoGraus;
}
</script>
</html>

View File

@ -0,0 +1,214 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<script>
L_NO_TOUCH = false;
L_DISABLE_3D = false;
</script>
<style>html, body {width: 100%;height: 100%;margin: 0;padding: 0;}</style>
<style>#map {position:absolute;top:0;bottom:0;right:0;left:0;}</style>
<script src="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.js"></script>
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/leaflet.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/all.min.css"/>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/leaflet.awesome-markers.css"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/leaflet.awesome.rotate.min.css"/>
<meta name="viewport" content="width=device-width,
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<style>
#map_2c6f7962906ac812aae604c2131a913d {
position: relative;
width: 100.0%;
height: 100.0%;
left: 0.0%;
top: 0.0%;
}
.leaflet-container { font-size: 1rem; }
</style>
</head>
<body>
<div class="folium-map" id="map_2c6f7962906ac812aae604c2131a913d" ></div>
</body>
<script>
var map_2c6f7962906ac812aae604c2131a913d = L.map(
"map_2c6f7962906ac812aae604c2131a913d",
{
center: [0.0, 0.0],
crs: L.CRS.EPSG3857,
zoom: 12,
zoomControl: true,
preferCanvas: false,
}
);
var tile_layer_0ef1e546cf5f2e1a85eaef04975a0819 = L.tileLayer(
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
);
tile_layer_0ef1e546cf5f2e1a85eaef04975a0819.addTo(map_2c6f7962906ac812aae604c2131a913d);
</script>
<script>
function trajeto_json_onEachFeature(feature, layer) {
layer.on({
});
};
var trajeto_json = L.geoJson(null, {
onEachFeature: trajeto_json_onEachFeature,
style: function(feature) {
return {color: 'red'};
}
}
);
function trajeto_json_add (data) {
trajeto_json.addData(data);
}
trajeto_json_add({"features": []});
trajeto_json.addTo(map_2c6f7962906ac812aae604c2131a913d);
function adicionarGeometria(novaGeometria) {
trajeto_json.addData(novaGeometria);
}
function saoCoordenadasIguais(coord1, coord2, tolerancia) {
return Math.abs(coord1[0] - coord2[0]) < tolerancia && Math.abs(coord1[1] - coord2[1]) < tolerancia;
}
function adicionarCoordenada(idGeometria, novaCoordenada) {
var feature = trajeto_json.toGeoJSON().features.find(f => f.id === idGeometria);
if (feature) {
var ultima = [0.0,0.0];
if (feature.geometry.coordinates.length > 0) {
ultima = feature.geometry.coordinates[feature.geometry.coordinates.length - 1];
}
if (!saoCoordenadasIguais(ultima, novaCoordenada, 0.000001)) {
feature.geometry.coordinates.push(novaCoordenada);
var ft = feature;
trajeto_json.clearLayers();
trajeto_json.addData(ft);
}
} else {
console.log("Feature com ID " + idGeometria + " não encontrada.");
}
}
adicionarGeometria({
"type": "Feature",
"geometry": {
"type": "LineString",
"coordinates": []
},
"properties": {"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"},
"id": "Tj"
});
</script>
<script src="folium/mqtt.min.js"></script>
<script src="folium/leaflet.rotatedMarker.js"></script>
<script>
let posicaoAtual = {
lat: 0,
long: 0
};
var customIcon = L.icon({
iconUrl: 'folium/images/position_marker.png',
iconSize: [32, 32],
iconAnchor: [16, 16],
popupAnchor: [0, -16]
});
var marcadorDinamico = L.marker([0, 0], {
icon: customIcon
}).addTo(map_2c6f7962906ac812aae604c2131a913d);
// Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
// Quando conectado, inscreva-se no tópico desejado
client.on('connect', function () {
console.log('Conectado ao broker MQTT');
// Inscrever-se no tópico
client.subscribe('coordenadas_gps', function (err) {
if (!err) {
console.log("Inscrição bem-sucedida no tópico");
} else {
console.error("Falha na inscrição do tópico", err);
}
});
});
// Lidar com mensagens recebidas para o tópico inscrito
client.on('message', function (topic, message) {
// A mensagem é um Buffer, converta para string ou objeto conforme necessário
//console.log(`Mensagem recebida no tópico '${topic}': ${message.toString()}`);
var dados = JSON.parse(message);
var novaLatitude = dados.latitude;
var novaLongitude = dados.longitude;
var novaPosicao = [novaLatitude, novaLongitude];
marcadorDinamico.setLatLng(novaPosicao);
var angulo = dados.orientacao;
posicaoAtual.lat = novaPosicao[0];
posicaoAtual.long = novaPosicao[1];
// Rotacionar o marcador para o angulo calculado
marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
map_2c6f7962906ac812aae604c2131a913d.setView(novaPosicao, map_2c6f7962906ac812aae604c2131a913d.getZoom());
});
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
// Converter latitudes e longitudes de graus para radianos
const latA = P1latitude * (Math.PI / 180.0);
const lonA = P1longitude * (Math.PI / 180.0);
const latB = P2latitude * (Math.PI / 180.0);
const lonB = P2longitude * (Math.PI / 180.0);
// Calcular a diferença de longitude
const deltaLon = lonB - lonA;
// Calcular a direção
const y = Math.sin(deltaLon) * Math.cos(latB);
const x = Math.cos(latA) * Math.sin(latB) - Math.sin(latA) * Math.cos(latB) * Math.cos(deltaLon);
const direcaoRadianos = Math.atan2(y, x);
// Converter a direção de radianos para graus
let direcaoGraus = direcaoRadianos * (180.0 / Math.PI);
// Normalizar a direção para que esteja no intervalo de 0 a 360 graus
direcaoGraus = (direcaoGraus + 360) % 360;
return direcaoGraus;
}
</script>
</html>

File diff suppressed because one or more lines are too long

View File

@ -201,6 +201,18 @@ with open(caminho_completo_html, 'r+') as arquivo_html:
</script>
"""
# Importar arquivos localmente
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/', 'folium/')
conteudo_html = conteudo_html.replace('https://code.jquery.com/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/', 'folium/')
# Inserir o script no conteúdo HTML
conteudo_atualizado = conteudo_html.replace('</html>', script_desenha_trajeotria + script_atualizacao_marcador + '</html>')

View File

@ -480,4 +480,4 @@ C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\MathNet.Numerics.xml
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\bin\Debug\OpenHardwareMonitorLib.dll
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmA05Config.resources
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.Forms.frmEthernet.resources
C:\ZendionInc\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.CopyComplete
C:\ZendionINC\agrobot_base\AgroBase\AgroBase\obj\Debug\AgroBase.csproj.Up2Date

View File

@ -57,6 +57,7 @@
this.btnProximo = new System.Windows.Forms.Button();
this.pnlParametros = new System.Windows.Forms.Panel();
this.gpbSensoriamento = new System.Windows.Forms.GroupBox();
this.chbSonarAtivado = new System.Windows.Forms.CheckBox();
this.rtbDescricao = new System.Windows.Forms.RichTextBox();
this.lblConfigUltrassom = new System.Windows.Forms.Label();
this.cmbConfiguracaoUltrassom = new System.Windows.Forms.ComboBox();
@ -102,7 +103,6 @@
this.btnCarregar = new System.Windows.Forms.Button();
this.txtDescricao = new System.Windows.Forms.TextBox();
this.lblDescricao = new System.Windows.Forms.Label();
this.chbSonarAtivado = new System.Windows.Forms.CheckBox();
this.gpbModulos.SuspendLayout();
this.pnlModulos.SuspendLayout();
this.tabControl1.SuspendLayout();
@ -473,6 +473,16 @@
this.gpbSensoriamento.TabStop = false;
this.gpbSensoriamento.Text = "Sensoriamento";
//
// chbSonarAtivado
//
this.chbSonarAtivado.AutoSize = true;
this.chbSonarAtivado.Location = new System.Drawing.Point(9, 90);
this.chbSonarAtivado.Name = "chbSonarAtivado";
this.chbSonarAtivado.Size = new System.Drawing.Size(93, 17);
this.chbSonarAtivado.TabIndex = 13;
this.chbSonarAtivado.Text = "Sonar Ativado";
this.chbSonarAtivado.UseVisualStyleBackColor = true;
//
// rtbDescricao
//
this.rtbDescricao.BackColor = System.Drawing.SystemColors.Window;
@ -923,16 +933,6 @@
this.lblDescricao.TabIndex = 7;
this.lblDescricao.Text = "Descrição";
//
// chbSonarAtivado
//
this.chbSonarAtivado.AutoSize = true;
this.chbSonarAtivado.Location = new System.Drawing.Point(9, 90);
this.chbSonarAtivado.Name = "chbSonarAtivado";
this.chbSonarAtivado.Size = new System.Drawing.Size(93, 17);
this.chbSonarAtivado.TabIndex = 13;
this.chbSonarAtivado.Text = "Sonar Ativado";
this.chbSonarAtivado.UseVisualStyleBackColor = true;
//
// frmAjustesOperacao
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

View File

@ -201,7 +201,7 @@ namespace AgroMonitor.Forms
});
}
if (Dispositivo == T_Code.A05)
if (Dispositivo == T_Code.A05 || Dispositivo == T_Code.Knt)
{
gpbSensoriamento.Enabled = chb.Checked;
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,209 @@
import geopandas as gpd
import json
import sys
import folium
import requests
import re
def internet_disponivel():
"""Verifica se há conexão com a internet."""
url = 'http://www.google.com/'
timeout = 5
try:
_ = requests.get(url, timeout=timeout)
return True
except requests.ConnectionError:
return False
# Argumentos e configurações iniciais
pathFiles = sys.argv[1]
fileName = sys.argv[2]
outputName = sys.argv[3]
outputMapName = sys.argv[4]
topico_gps = sys.argv[5]
pastaSaida = 'Python/Output/'
center = [0, 0]
# Verificar se há conexão com a internet
if internet_disponivel():
m = folium.Map(location=center, zoom_start=12)
else:
m = folium.Map(location=center, zoom_start=12, tiles=None)
# Salvar o mapa interativo em um arquivo HTML
m.save(pastaSaida + outputMapName)
# Caminho completo para o arquivo HTML gerado
caminho_completo_html = pastaSaida + outputMapName
# Abrir o arquivo HTML para leitura e escrita
with open(caminho_completo_html, 'r+') as arquivo_html:
# Ler o conteúdo do arquivo
conteudo_html = arquivo_html.read()
# Usar expressão regular para encontrar o ID do mapa
padrao_id_mapa = re.compile(r'id="map_(.*?)"')
resultado_busca = padrao_id_mapa.search(conteudo_html)
# Verificar se encontrou um ID de mapa
if resultado_busca:
id_mapa = 'map_' + resultado_busca.group(1)
else:
raise ValueError("Não foi possível encontrar o ID do mapa no arquivo HTML.")
# Script JavaScript para adicionar ao HTML, com o ID do mapa substituído
script_desenha_trajeotria = f"""
<script>
function trajeto_json_onEachFeature(feature, layer) {{
layer.on({{
}});
}};
var trajeto_json = L.geoJson(null, {{
onEachFeature: trajeto_json_onEachFeature,
style: function(feature) {{
return {{color: 'red'}};
}}
}}
);
function trajeto_json_add (data) {{
trajeto_json.addData(data);
}}
trajeto_json_add({{"features": []}});
trajeto_json.addTo({id_mapa});
function adicionarGeometria(novaGeometria) {{
trajeto_json.addData(novaGeometria);
}}
function saoCoordenadasIguais(coord1, coord2, tolerancia) {{
return Math.abs(coord1[0] - coord2[0]) < tolerancia && Math.abs(coord1[1] - coord2[1]) < tolerancia;
}}
function adicionarCoordenada(idGeometria, novaCoordenada) {{
var feature = trajeto_json.toGeoJSON().features.find(f => f.id === idGeometria);
if (feature) {{
var ultima = [0.0,0.0];
if (feature.geometry.coordinates.length > 0) {{
ultima = feature.geometry.coordinates[feature.geometry.coordinates.length - 1];
}}
if (!saoCoordenadasIguais(ultima, novaCoordenada, 0.000001)) {{
feature.geometry.coordinates.push(novaCoordenada);
var ft = feature;
trajeto_json.clearLayers();
trajeto_json.addData(ft);
}}
}} else {{
console.log("Feature com ID " + idGeometria + " não encontrada.");
}}
}}
adicionarGeometria({{
"type": "Feature",
"geometry": {{
"type": "LineString",
"coordinates": []
}},
"properties": {{"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"}},
"id": "Tj"
}});
</script>
"""
# Script JavaScript para adicionar ao HTML, com o ID do mapa substituído
script_atualizacao_marcador = f"""
<script src="folium/mqtt.min.js"></script>
<script src="folium/leaflet.rotatedMarker.js"></script>
<script>
let posicaoAtual = {{
lat: 0,
long: 0
}};
var customIcon = L.icon({{
iconUrl: 'folium/images/position_marker.png',
iconSize: [32, 32],
iconAnchor: [16, 16],
popupAnchor: [0, -16]
}});
var marcadorDinamico = L.marker([0, 0], {{
icon: customIcon
}}).addTo({id_mapa});
// Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
// Quando conectado, inscreva-se no tópico desejado
client.on('connect', function () {{
console.log('Conectado ao broker MQTT');
// Inscrever-se no tópico
client.subscribe('{topico_gps}', function (err) {{
if (!err) {{
console.log("Inscrição bem-sucedida no tópico");
}} else {{
console.error("Falha na inscrição do tópico", err);
}}
}});
}});
// Lidar com mensagens recebidas para o tópico inscrito
client.on('message', function (topic, message) {{
// A mensagem é um Buffer, converta para string ou objeto conforme necessário
//console.log(`Mensagem recebida no tópico '${{topic}}': ${{message.toString()}}`);
var dados = JSON.parse(message);
var novaLatitude = dados.latitude;
var novaLongitude = dados.longitude;
var novaPosicao = [novaLatitude, novaLongitude];
marcadorDinamico.setLatLng(novaPosicao);
var angulo = dados.orientacao;
posicaoAtual.lat = novaPosicao[0];
posicaoAtual.long = novaPosicao[1];
// Rotacionar o marcador para o angulo calculado
marcadorDinamico.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
{id_mapa}.setView(novaPosicao, {id_mapa}.getZoom());
}});
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {{
// Converter latitudes e longitudes de graus para radianos
const latA = P1latitude * (Math.PI / 180.0);
const lonA = P1longitude * (Math.PI / 180.0);
const latB = P2latitude * (Math.PI / 180.0);
const lonB = P2longitude * (Math.PI / 180.0);
// Calcular a diferença de longitude
const deltaLon = lonB - lonA;
// Calcular a direção
const y = Math.sin(deltaLon) * Math.cos(latB);
const x = Math.cos(latA) * Math.sin(latB) - Math.sin(latA) * Math.cos(latB) * Math.cos(deltaLon);
const direcaoRadianos = Math.atan2(y, x);
// Converter a direção de radianos para graus
let direcaoGraus = direcaoRadianos * (180.0 / Math.PI);
// Normalizar a direção para que esteja no intervalo de 0 a 360 graus
direcaoGraus = (direcaoGraus + 360) % 360;
return direcaoGraus;
}}
</script>
"""
# Inserir o script no conteúdo HTML
conteudo_atualizado = conteudo_html.replace('</html>', script_desenha_trajeotria + script_atualizacao_marcador + '</html>')
# Agora, reabrir o arquivo para escrita e sobrescrever o conteúdo com a versão atualizada
with open(caminho_completo_html, 'w') as arquivo_html:
arquivo_html.write(conteudo_atualizado)

View File

@ -0,0 +1,123 @@
import cv2
import numpy as np
from flask import Flask, Response, request
import json
import time
import threading
import sys
import os
import uuid
import paho.mqtt.client as mqtt
mqtt_client = mqtt.Client(f"client_weed_detector_{uuid.uuid4()}")
mqtt_client.connect("localhost", port=1883)
max_readings = int(sys.argv[1])
porta = sys.argv[2]
url = sys.argv[3]
arquivoSaida = sys.argv[4]
mostrar_linhas = sys.argv[5] == "1"
mqtt_topic = sys.argv[6]
app = Flask(__name__)
json_data = None
output_folder = 'Python/Output/'
# Função para detecção de objetos usando YOLO e salvar as coordenadas em um arquivo JSON
def detect_objects(conf_threshold, nms_threshold, _camera_index):
# Definir intervalos de cor verde no espaço HSV
lower_green = np.array([35, 50, 100]) # Valores de limite inferior (Hue, Saturation, Value)
upper_green = np.array([90, 255, 255]) # Valores de limite superior (Hue, Saturation, Value)
#cap = cv2.VideoCapture(_camera_index, cv2.CAP_DSHOW)
cap = cv2.VideoCapture(_camera_index, cv2.CAP_MSMF)
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
readings = []
while True:
ret, frame = cap.read()
if not ret:
break
# Converter a imagem de BGR para HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
# Criar uma máscara para os pixels verdes na faixa especificada
mask = cv2.inRange(hsv, lower_green, upper_green)
# Encontrar os contornos na máscara
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
current_readings = []
idx = 0 # Índice de detecção
for contour in contours:
area = cv2.contourArea(contour)
if area > 1000: # Filtrar áreas menores que um valor específico (ajuste conforme necessário)
x, y, w, h = cv2.boundingRect(contour)
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
cv2.putText(frame, f'Verde {idx}', (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# Salvar as informações da detecção
detection_info = {
'id': int(idx),
'descricao': 'Green',
'x': int(x),
'y': int(y),
'largura': int(w),
'altura': int(h),
'confianca': 1.0 # Neste caso, confiança fixa para detecções baseadas em cores
}
current_readings.append(detection_info)
idx += 1
global json_data
# Atualizar os resultados
timestamp = time.time()
json_data = {'timestamp': timestamp, 'x_max': width, 'y_max': height, 'objetos': current_readings}
readings.append(json_data)
mqtt_client.publish(mqtt_topic, json.dumps(json_data).encode('utf-8'))
if not os.path.exists(output_folder):
os.makedirs(output_folder)
if len(readings) > max_readings:
readings.pop(0)
with open(output_folder + arquivoSaida, 'w') as file:
json.dump(readings, file, indent=4)
# Convertendo frame para JPEG e enviando via Flask
ret, buffer = cv2.imencode('.jpg', frame)
frame = buffer.tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
# Esta função é para confirmar que script está pronto para execução
def send_script_ready():
mqtt_client.publish(mqtt_topic, "OK")
# Iniciar o servidor Flask em uma thread separada
def run_flask_server():
app.run(host='0.0.0.0', port=porta, threaded=True, debug=False)
@app.route('/' + url, methods=['GET'])
def video_feed():
conf_threshold = float(request.args.get('conf_threshold'))
nms_threshold = float(request.args.get('nms_threshold'))
camera_index = int(request.args.get('camera_index'))
return Response(detect_objects(conf_threshold, nms_threshold, camera_index), mimetype='multipart/x-mixed-replace; boundary=frame')
# Iniciar o servidor
if __name__ == '__main__':
# Cria trhead separada para informar que o script iniciou com sucesso
mqtt_thread = threading.Thread(target=send_script_ready)
mqtt_thread.start()
# Inicia o servidor Flask na thread principal
run_flask_server()

View File

@ -0,0 +1,235 @@
import geopandas as gpd
import json
import sys
import folium
import requests
import re
import shutil
def internet_disponivel():
"""Verifica se há conexão com a internet."""
url = 'http://www.google.com/'
timeout = 5
try:
_ = requests.get(url, timeout=timeout)
return True
except requests.ConnectionError:
return False
# Argumentos e configurações iniciais
pathFiles = sys.argv[1]
fileName = sys.argv[2]
outputName = sys.argv[3]
outputMapName = sys.argv[4]
topico_gps = sys.argv[5]
topico_ruas = sys.argv[6]
topico_trajeto_dinamico = sys.argv[7]
mapa_dados_json = sys.argv[8]
pastaSaida = 'Python/Output/'
if mapa_dados_json == "0":
# Carregar o arquivo shapefile contendo a geometria
input_shapefile = pathFiles + fileName + '.shp'
data_geometry = gpd.read_file(input_shapefile)
# Converter o GeoDataFrame para GeoJSON e adicionar ao mapa
geojson_data = data_geometry.to_json()
# Calcular os limites (bounds) da geometria
minx, miny, maxx, maxy = data_geometry.total_bounds
center = [(miny + maxy) / 2, (minx + maxx) / 2]
# Salvar GEOJson
data_geometry.to_file(pastaSaida + outputName, driver='GeoJSON')
else:
# Lendo os dados JSON
with open(pathFiles + fileName + '.json', 'r', encoding='utf-8-sig') as f:
geojson_data = json.load(f)
# Obter os limites (bounds) dos dados GeoJSON
bounds = folium.GeoJson(geojson_data).get_bounds()
center = [(bounds[0][0] + bounds[1][0]) / 2, (bounds[0][1] + bounds[1][1]) / 2]
# Adicionando um ID sequencial a cada Feature
for idx, feature in enumerate(geojson_data["features"]):
# Adicionar uma propriedade 'id' para cada Feature começando do índice zero
feature['id'] = idx
# Copiando o arquivo JSON para a pasta de saída
shutil.copy(pathFiles + fileName + '.json', pastaSaida + outputName)
# Verificar se há conexão com a internet
if internet_disponivel():
m = folium.Map(location=center, zoom_start=12)
else:
m = folium.Map(location=center, zoom_start=12, tiles=None)
folium.GeoJson(geojson_data).add_to(m)
# Salvar o mapa interativo em um arquivo HTML
m.save(pastaSaida + outputMapName)
# Caminho completo para o arquivo HTML gerado
caminho_completo_html = pastaSaida + outputMapName
# Abrir o arquivo HTML para leitura e escrita
with open(caminho_completo_html, 'r+') as arquivo_html:
# Ler o conteúdo do arquivo
conteudo_html = arquivo_html.read()
# Usar expressão regular para encontrar o ID do mapa
padrao_id_mapa = re.compile(r'id="map_(.*?)"')
resultado_busca = padrao_id_mapa.search(conteudo_html)
# Verificar se encontrou um ID de mapa
if resultado_busca:
id_mapa = 'map_' + resultado_busca.group(1)
else:
raise ValueError("Não foi possível encontrar o ID do mapa no arquivo HTML.")
# Script para desenhar o trajo percorrido no mapa
script_marcadores_dinamicos = f"""
<script src="folium/mqtt.min.js"></script>
<script src="folium/leaflet.rotatedMarker.js"></script>
<script>
var marcadores = {{}};
var trajetos = {{}};
function criarMarcador(id, coordenadas, orientacao) {{
var marcador;
if (id == 1) {{
marcador = L.marker(coordenadas, {{}}).addTo({id_mapa});
var icon = L.AwesomeMarkers.icon(
{{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}}
);
marcador.setIcon(icon);
}}
else {{
var customIcon = L.icon({{
iconUrl: 'folium/images/position_marker.png',
iconSize: [32, 32],
iconAnchor: [16, 16],
popupAnchor: [0, -16]
}});
marcador = L.marker(coordenadas, {{ icon: customIcon }}).addTo({id_mapa});
marcador.setRotationAngle(orientacao);
}}
var popup = L.popup({{"maxWidth": "100%"}});
var html = $(`<div id="html_${{id}}" style="width: 100.0%; height: 100.0%;">Endereco: ${{id}}</div>`)[0];
popup.setContent(html);
marcador.bindPopup(popup)
marcadores[id] = marcador;
}}
function criarTrajeto(id) {{
trajetos[id] = L.geoJson(null, {{
style: function(feature) {{
return {{ color: 'red' }};
}}
}}).addTo({id_mapa});
}}
function atualizarMarcador(id, coordenadas, orientacao) {{
var marcador = marcadores[id];
if (marcador) {{
marcador.setLatLng(coordenadas);
marcador.setRotationAngle(orientacao);
}}
}}
function atualizarTrajeto(id, coordenadas) {{
var trajeto = trajetos[id];
if (trajeto) {{
var feature = trajeto.toGeoJSON().features.find(f => f.id === id);
if (feature) {{
var ultima = [0.0, 0.0];
if (feature.geometry.coordinates.length > 0) {{
ultima = feature.geometry.coordinates[feature.geometry.coordinates.length - 1];
}}
if (!saoCoordenadasIguais(ultima, coordenadas, 0.000001)) {{
feature.geometry.coordinates.push(coordenadas);
trajeto.clearLayers();
trajeto.addData(feature);
}}
}}
}}
}}
function saoCoordenadasIguais(coord1, coord2, tolerancia) {{
return Math.abs(coord1[0] - coord2[0]) < tolerancia && Math.abs(coord1[1] - coord2[1]) < tolerancia;
}}
function adicionarDados(id, coordenadas, orientacao, foco) {{
if (!marcadores[id]) {{
criarMarcador(id, coordenadas, orientacao);
criarTrajeto(id);
trajetos[id].addData({{
"type": "Feature",
"geometry": {{
"type": "LineString",
"coordinates": []
}},
"properties": {{"Dist1": 0.0, "Dist2": 0.0, "Id": id, "Length": 0.0, "Name": "Trajeto"}},
"id": id
}});
}} else {{
atualizarMarcador(id, coordenadas, orientacao);
atualizarTrajeto(id, [coordenadas[1], coordenadas[0]]);
}}
if (foco) {{
{id_mapa}.setView(coordenadas, {id_mapa}.getZoom());
}}
}}
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexao segura
client.on('connect', function () {{
console.log('Conectado ao broker MQTT');
client.subscribe('{topico_gps}', function (err) {{
if (!err) {{
console.log("Inscricao bem-sucedida no topico");
}} else {{
console.error("Falha na inscricao do topico", err);
}}
}});
}});
client.on('message', function (topic, message) {{
var dados = JSON.parse(message);
if (topic === '{topico_gps}') {{
var id = dados.id;
var novaLatitude = dados.latitude;
var novaLongitude = dados.longitude;
var novaPosicao = [novaLatitude, novaLongitude];
var orientacao = dados.orientacao;
var foco = dados.foco;
adicionarDados(id, novaPosicao, orientacao, foco);
}}
}});
</script>
"""
# Importar arquivos localmente
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/', 'folium/')
conteudo_html = conteudo_html.replace('https://code.jquery.com/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/', 'folium/')
# Inserir o script no conteúdo HTML
conteudo_atualizado = conteudo_html.replace('</html>', script_marcadores_dinamicos + '</html>')
# Agora, reabrir o arquivo para escrita e sobrescrever o conteúdo com a versão atualizada
with open(caminho_completo_html, 'w') as arquivo_html:
arquivo_html.write(conteudo_atualizado)

View File

@ -0,0 +1,456 @@
import geopandas as gpd
import json
import sys
import folium
import requests
import re
import shutil
def internet_disponivel():
"""Verifica se há conexão com a internet."""
url = 'http://www.google.com/'
timeout = 5
try:
_ = requests.get(url, timeout=timeout)
return True
except requests.ConnectionError:
return False
# Argumentos e configurações iniciais
pathFiles = sys.argv[1]
fileName = sys.argv[2]
outputName = sys.argv[3]
outputMapName = sys.argv[4]
topico_gps = sys.argv[5]
topico_ruas = sys.argv[6]
topico_trajeto_dinamico = sys.argv[7]
mapa_dados_json = sys.argv[8]
pastaSaida = 'Python/Output/'
if mapa_dados_json == "0":
# Carregar o arquivo shapefile contendo a geometria
input_shapefile = pathFiles + fileName + '.shp'
data_geometry = gpd.read_file(input_shapefile)
# Converter o GeoDataFrame para GeoJSON e adicionar ao mapa
geojson_data = data_geometry.to_json()
# Calcular os limites (bounds) da geometria
minx, miny, maxx, maxy = data_geometry.total_bounds
center = [(miny + maxy) / 2, (minx + maxx) / 2]
# Salvar GEOJson
data_geometry.to_file(pastaSaida + outputName, driver='GeoJSON')
else:
# Lendo os dados JSON
with open(pathFiles + fileName + '.json', 'r', encoding='utf-8-sig') as f:
geojson_data = json.load(f)
# Obter os limites (bounds) dos dados GeoJSON
bounds = folium.GeoJson(geojson_data).get_bounds()
center = [(bounds[0][0] + bounds[1][0]) / 2, (bounds[0][1] + bounds[1][1]) / 2]
# Adicionando um ID sequencial a cada Feature
for idx, feature in enumerate(geojson_data["features"]):
# Adicionar uma propriedade 'id' para cada Feature começando do índice zero
feature['id'] = idx
# Copiando o arquivo JSON para a pasta de saída
shutil.copy(pathFiles + fileName + '.json', pastaSaida + outputName)
# Verificar se há conexão com a internet
if internet_disponivel():
m = folium.Map(location=center, zoom_start=12)
else:
m = folium.Map(location=center, zoom_start=12, tiles=None)
folium.GeoJson(geojson_data).add_to(m)
# Salvar o mapa interativo em um arquivo HTML
m.save(pastaSaida + outputMapName)
# Caminho completo para o arquivo HTML gerado
caminho_completo_html = pastaSaida + outputMapName
# Abrir o arquivo HTML para leitura e escrita
with open(caminho_completo_html, 'r+') as arquivo_html:
# Ler o conteúdo do arquivo
conteudo_html = arquivo_html.read()
# Usar expressão regular para encontrar o ID do mapa
padrao_id_mapa = re.compile(r'id="map_(.*?)"')
resultado_busca = padrao_id_mapa.search(conteudo_html)
# Verificar se encontrou um ID de mapa
if resultado_busca:
id_mapa = 'map_' + resultado_busca.group(1)
else:
raise ValueError("Não foi possível encontrar o ID do mapa no arquivo HTML.")
# Usar expressão regular para encontrar o ID da Trajetoria
padrao_id_trajetoria = re.compile(r'var geo_json_(\w+)\s*=')
resultado_busca_trajetoria = padrao_id_trajetoria.search(conteudo_html)
# Verificar se encontrou um ID de trajetória
if resultado_busca_trajetoria:
id_trajetoria = 'geo_json_' + resultado_busca_trajetoria.group(1)
else:
# Adicionar mensagem de depuração para verificar o conteúdo do arquivo HTML
raise ValueError("Não foi possível encontrar o ID da trajetória no arquivo HTML.")
# Script para representar a trajetoria que o robô deve fazer até iniciar o trabalho
script_desenha_trajetoria_dinamica = f"""
<script>
function trajeto_dinamico_json_onEachFeature(feature, layer) {{
layer.on({{
}});
}};
var trajeto_dinamico_json = L.geoJson(null, {{
onEachFeature: trajeto_dinamico_json_onEachFeature,
style: function(feature) {{
return {{color: 'green'}};
}}
}}
);
function trajeto_dinamico_json_add (data) {{
trajeto_dinamico_json.addData(data);
}}
trajeto_dinamico_json_add({{"features": []}});
trajeto_dinamico_json.addTo({id_mapa});
function adicionarGeometriaDinamica(novaGeometria) {{
trajeto_dinamico_json.addData(novaGeometria);
}}
function adicionarCoordenadaDinamica(idGeometria, coordenadas) {{
var feature = trajeto_dinamico_json.toGeoJSON().features.find(f => f.id === idGeometria);
if (feature) {{
feature.geometry.coordinates = [];
coordenadas.forEach(x => feature.geometry.coordinates.push([x.longitude, x.latitude]));
var ft = feature;
trajeto_dinamico_json.clearLayers();
trajeto_dinamico_json.addData(ft);
}} else {{
console.log("Feature com ID " + idGeometria + " nao encontrada.");
}}
}}
adicionarGeometriaDinamica({{
"type": "Feature",
"geometry": {{
"type": "LineString",
"coordinates": []
}},
"properties": {{"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"}},
"id": "TjD"
}});
</script>
"""
# Script para desenhar o trajo percorrido no mapa
script_desenha_trajeotria = f"""
<script>
function trajeto_json_onEachFeature(feature, layer) {{
layer.on({{
}});
}};
var trajeto_json = L.geoJson(null, {{
onEachFeature: trajeto_json_onEachFeature,
style: function(feature) {{
return {{color: 'red'}};
}}
}}
);
function trajeto_json_add (data) {{
trajeto_json.addData(data);
}}
trajeto_json_add({{"features": []}});
trajeto_json.addTo({id_mapa});
function adicionarGeometria(novaGeometria) {{
trajeto_json.addData(novaGeometria);
}}
function saoCoordenadasIguais(coord1, coord2, tolerancia) {{
return Math.abs(coord1[0] - coord2[0]) < tolerancia && Math.abs(coord1[1] - coord2[1]) < tolerancia;
}}
function adicionarCoordenada(idGeometria, novaCoordenada) {{
var feature = trajeto_json.toGeoJSON().features.find(f => f.id === idGeometria);
if (feature) {{
var ultima = [0.0,0.0];
if (feature.geometry.coordinates.length > 0) {{
ultima = feature.geometry.coordinates[feature.geometry.coordinates.length - 1];
}}
if (!saoCoordenadasIguais(ultima, novaCoordenada, 0.000001)) {{
feature.geometry.coordinates.push(novaCoordenada);
var ft = feature;
trajeto_json.clearLayers();
trajeto_json.addData(ft);
}}
}} else {{
console.log("Feature com ID " + idGeometria + " não encontrada.");
}}
}}
adicionarGeometria({{
"type": "Feature",
"geometry": {{
"type": "LineString",
"coordinates": []
}},
"properties": {{"Dist1": 0.0, "Dist2": 0.0, "Id": 1517, "Length": 21.724783283, "Name": "Projeto"}},
"id": "Tj"
}});
</script>
"""
# Script JavaScript para adicionar ao HTML, com o ID do mapa substituído
script_atualizacao_marcador = f"""
<script src="folium/mqtt.min.js"></script>
<script src="folium/leaflet.rotatedMarker.js"></script>
<script>
let posicaoAtualEquipamento = {{
lat: 0,
long: 0
}};
let posicaoAtualBase = {{
lat: 0,
long: 0
}};
var customIcon = L.icon({{
iconUrl: 'folium/images/position_marker.png',
iconSize: [32, 32],
iconAnchor: [16, 16],
popupAnchor: [0, -16]
}});
var marcadorEquipamento = L.marker([0, 0], {{
icon: customIcon
}}).addTo({id_mapa});
var marcadorBase = L.marker([0, 0], {{}}).addTo({id_mapa});
var icon = L.AwesomeMarkers.icon(
{{"extraClasses": "fa-rotate-0", "icon": "info-sign", "iconColor": "white", "markerColor": "red", "prefix": "glyphicon"}}
);
marcadorBase.setIcon(icon);
// Conectar ao broker MQTT
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
// Quando conectado, inscreva-se no tópico desejado
client.on('connect', function () {{
console.log('Conectado ao broker MQTT');
// Inscrever-se no tópico
client.subscribe('{topico_gps}', function (err) {{
if (!err) {{
console.log("Inscricao bem-sucedida no topico");
}} else {{
console.error("Falha na inscricao do topico", err);
}}
}});
client.subscribe('{topico_trajeto_dinamico}', function (err) {{
if (!err) {{
console.log("Inscricao bem-sucedida no topico");
}} else {{
console.error("Falha na inscricao do topico", err);
}}
}});
client.subscribe('{topico_ruas}', function (err) {{
if (!err) {{
console.log("Inscricao bem-sucedida no topico");
}} else {{
console.error("Falha na inscricao do topico", err);
}}
}});
}});
// Lidar com mensagens recebidas para o topico inscrito
client.on('message', function (topic, message) {{
var dados = JSON.parse(message);
if (topic === "{topico_trajeto_dinamico}") {{
adicionarCoordenadaDinamica("TjD", dados); // "Tj" é o ID da feature no GeoJSON
}}
else if (topic === "{topico_gps}") {{
// A mensagem e um Buffer, converta para string ou objeto conforme necessario
//console.log(`Mensagem recebida no topico '${{topic}}': ${{message.toString()}}`);
var id = dados.id;
var novaLatitude = dados.latitude;
var novaLongitude = dados.longitude;
var novaPosicao = [novaLatitude, novaLongitude];
var orientacao = dados.orientacao;
var foco = dados.foco;
if (id == 1) {{
marcadorBase.setLatLng(novaPosicao);
// Calcular angulo de rotacao
var angulo = dados.orientacao;
posicaoAtualBase.lat = novaPosicao[0];
posicaoAtualBase.long = novaPosicao[1];
// Rotacionar o marcador para o angulo calculado
marcadorBase.setRotationAngle(angulo);
}}
else {{
marcadorEquipamento.setLatLng(novaPosicao);
// Calcular angulo de rotacao
var angulo = dados.orientacao;
posicaoAtualEquipamento.lat = novaPosicao[0];
posicaoAtualEquipamento.long = novaPosicao[1];
// Rotacionar o marcador para o angulo calculado
marcadorEquipamento.setRotationAngle(angulo);
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
}}
if (foco) {{
{id_mapa}.setView(novaPosicao, {id_mapa}.getZoom());
}}
}}
else if (topic === '{topico_ruas}') {{
var selecionadas = dados;
if (selecionadas.length != RuasSelecionadas.length) {{
atualizarSelecaoRuas(selecionadas);
}}
}}
}});
// Função para atualizar a seleção das ruas e mudar a cor no mapa
function atualizarSelecaoRuas(selecionadas) {{
selecionadas = JSON.parse(selecionadas);
RuasSelecionadas = Array.isArray(selecionadas) ? [...selecionadas] : [];
{id_trajetoria}.eachLayer(function (layer) {{
if (RuasSelecionadas.includes(parseInt(layer.feature.id))) {{
layer.setStyle({{ color: 'blue' }});
}} else {{
layer.setStyle({{ color: '#3388ff' }}); // Cor original
}}
}});
}}
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {{
// Converter latitudes e longitudes de graus para radianos
const latA = P1latitude * (Math.PI / 180.0);
const lonA = P1longitude * (Math.PI / 180.0);
const latB = P2latitude * (Math.PI / 180.0);
const lonB = P2longitude * (Math.PI / 180.0);
// Calcular a diferença de longitude
const deltaLon = lonB - lonA;
// Calcular a direção
const y = Math.sin(deltaLon) * Math.cos(latB);
const x = Math.cos(latA) * Math.sin(latB) - Math.sin(latA) * Math.cos(latB) * Math.cos(deltaLon);
const direcaoRadianos = Math.atan2(y, x);
// Converter a direção de radianos para graus
let direcaoGraus = direcaoRadianos * (180.0 / Math.PI);
// Normalizar a direção para que esteja no intervalo de 0 a 360 graus
direcaoGraus = (direcaoGraus + 360) % 360;
return direcaoGraus;
}}
</script>
"""
# Primeiro, vamos definir o novo trecho de JavaScript que você quer adicionar
funcao_define_ruas_selecionadas = f"""
var trajetosSelecionados = {{}};
var RuasSelecionadas = [];
function enviarSelecaoParaServidor() {{
client.publish("{topico_ruas}", JSON.stringify(RuasSelecionadas), function (err) {{
/*if (!err) {{
console.log("Mensagem publicada com sucesso");
}} else {{
console.error("Falha ao publicar mensagem", err);
}}*/
}});
}}
"""
# Código para inserir dentro do layer.on({})
codigo_layer_on = """
click: function(e) {
// Verificar se o trajeto está selecionado
if (trajetosSelecionados[feature.id]) {
// Se está selecionado, reverta para a cor original e remova da seleção
e.target.setStyle({
color: '#3388ff' // Cor original
});
delete trajetosSelecionados[feature.id];
RuasSelecionadas.splice(RuasSelecionadas.indexOf(feature.id), 1);
} else {
// Se não está selecionado, mude a cor para indicar seleção e adicione ao objeto de seleção
e.target.setStyle({
color: 'blue' // Cor de seleção
});
trajetosSelecionados[feature.id] = true;
RuasSelecionadas.push(feature.id);
}
enviarSelecaoParaServidor();
}/*, mouseover: function(e) {
// Mostrar tooltip com o ID da geometria quando o mouse passar sobre a linha
var tooltip = L.tooltip({
direction: 'auto', // Leaflet determina a melhor posição
sticky: true // Faz com que o tooltip siga o cursor do mouse
})
.setContent('Rua ' + feature.id); // Define o conteúdo do tooltip
// Abre o tooltip na posição atual do mouse
var latLng = e.latlng;
tooltip.setLatLng(latLng);
layer.bindTooltip(tooltip).openTooltip(latLng);
}*/
"""
# Importar arquivos localmente
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/', 'folium/')
conteudo_html = conteudo_html.replace('https://code.jquery.com/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/leaflet@1.9.3/dist/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://netdna.bootstrapcdn.com/bootstrap/3.0.0/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.2.0/css/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdnjs.cloudflare.com/ajax/libs/Leaflet.awesome-markers/2.0.2/', 'folium/')
conteudo_html = conteudo_html.replace('https://cdn.jsdelivr.net/gh/python-visualization/folium/folium/templates/', 'folium/')
# Inserir o script no conteúdo HTML
conteudo_atualizado = conteudo_html.replace('</html>', script_desenha_trajeotria + script_desenha_trajetoria_dinamica + script_atualizacao_marcador + '</html>')
# Encontrar a posição onde inserir o novo trecho de JavaScript
indice_inicio_funcao = conteudo_atualizado.find("function geo_json_")
# Inserir o novo trecho de JavaScript antes da função
conteudo_atualizado = conteudo_atualizado[:indice_inicio_funcao] + funcao_define_ruas_selecionadas + conteudo_atualizado[indice_inicio_funcao:]
# Agora, para adicionar o código dentro do layer.on({})
# Você precisa encontrar o local exato. Isso pode ser um pouco mais complicado, pois pode haver várias ocorrências.
# Uma abordagem seria encontrar a primeira ocorrência após o seu trecho inserido anteriormente.
indice_layer_on = conteudo_atualizado.find("layer.on({", indice_inicio_funcao)
# Verificar se encontrou o layer.on({})
if indice_layer_on != -1:
# Encontrar a posição do fechamento do layer.on({})
indice_fechamento = conteudo_atualizado.find("});", indice_layer_on) # +1 para incluir a abertura da chave
# Inserir o código dentro do layer.on({})
conteudo_atualizado = conteudo_atualizado[:indice_fechamento] + codigo_layer_on + conteudo_atualizado[indice_fechamento:]
# Agora, reabrir o arquivo para escrita e sobrescrever o conteúdo com a versão atualizada
with open(caminho_completo_html, 'w') as arquivo_html:
arquivo_html.write(conteudo_atualizado)

View File

@ -0,0 +1,191 @@
import torch
from PIL import Image
import torchvision.transforms as T
import numpy as np
import cv2
import json
import time
import io
import paho.mqtt.client as mqtt
import uuid
import sys
import os
import base64
# Parâmetros de entrada
output_folder = 'Python/Output/'
mqtt_send_topic = sys.argv[1] # Tópico para receber o bitmap
mqtt_receive_topic = sys.argv[2] # Tópico para enviar o resultado
model_folder = sys.argv[3] # Pasta do modelo
script_version = sys.argv[4] # Versao do script
# Configurações MQTT
mqtt_client = mqtt.Client(f"client_street_detector_{uuid.uuid4()}")
mqtt_client.connect("localhost", port=1883)
script_dir = os.path.dirname(__file__) # Obtém o diretório onde o script está localizado
parent_dir = os.path.dirname(script_dir) # Obtém o diretório pai (Python/)
sys.path.append(parent_dir)
# Supondo que você tenha a estrutura do repositório e o módulo `network` conforme descrito no README
from Models.deeplabv3plus.modeling import deeplabv3plus_resnet50 as deeplabv3_model
# Configurações Iniciais
NUM_CLASSES = 4 # Pascal VOC possui 3 classes + 1 para o fundo
OUTPUT_STRIDE = 16 # Valor comum para DeepLab
MODEL_PATH = model_folder + "model-" + script_version + '.pth' # Caminho para o modelo pré-treinado
# Variáveis globais para armazenar os dados do labelmap
label_colors = None
class_names = None
# Função para carregar o modelo
def load_model(model_path):
model = deeplabv3_model(num_classes=NUM_CLASSES, output_stride=OUTPUT_STRIDE)
model.load_state_dict(torch.load(model_path), strict=False)
model.eval() # Modo de avaliação
return model
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
# Carregar o modelo
model = load_model(MODEL_PATH)
model.to(device)
# Função para processar o frame
def segment_frame(frame):
image = Image.fromarray(cv2.cvtColor(frame, cv2.COLOR_BGR2RGB))
transform = T.Compose([
T.Resize(520),
T.ToTensor(),
T.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])
input_tensor = transform(image).unsqueeze(0).to(device)
with torch.no_grad():
output = model(input_tensor)
output_predictions = output.max(1)[1].squeeze().detach().cpu().numpy()
return output_predictions
# Função para ler o mapa de rótulos
def read_labelmap(path):
global label_colors, class_names
if label_colors is None or class_names is None: # Verifica se já estão carregados
label_colors = []
class_names = []
with open(path, 'r') as file:
for line in file.readlines():
if line.startswith('#'):
continue
parts = line.strip().split(':')
if len(parts) >= 2:
label = parts[0].strip()
color = tuple(map(int, parts[1].split(',')))
class_names.append(label)
label_colors.append(color)
label_colors = np.array(label_colors)
return label_colors, class_names
# Função para gerar o JSON de saída
def generate_json(image):
label_colors, class_names = read_labelmap(model_folder + "labelmap-" + script_version + ".txt")
detected_classes = set(np.unique(image))
timestamp = time.time()
json_data = {'timestamp': timestamp, 'Classes': []}
for l in detected_classes:
if l < len(label_colors):
class_entry = {'Classe': class_names[l], 'Contornos': []}
mask = (image == l).astype(np.uint8) * 255
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
if contour.size > 0:
for point in contour:
class_entry['Contornos'].append(point.squeeze().tolist())
json_data['Classes'].append(class_entry)
return json_data
# Função para aplicar o overlay da segmentação no frame original
def apply_segmentation_overlay(frame, output_predictions):
label_colors, class_names = read_labelmap(model_folder + "labelmap-" + script_version + ".txt")
nc = len(label_colors)
height, width, _ = frame.shape
overlay = np.zeros((height, width, 3), dtype=np.uint8)
output_predictions_resized = cv2.resize(output_predictions, (width, height), interpolation=cv2.INTER_NEAREST)
for l in np.unique(output_predictions_resized):
if l < nc:
mask = output_predictions_resized == l
overlay[mask] = label_colors[l]
overlayed_frame = cv2.addWeighted(frame, 0.6, overlay, 0.4, 0)
return overlayed_frame
# Função para converter imagem para base64
def image_to_base64(image):
_, buffer = cv2.imencode('.jpg', image)
image_base64 = base64.b64encode(buffer).decode('utf-8')
return image_base64
# Função para decodificar a imagem bitmap recebida via MQTT
def decode_bitmap_message(payload):
image_stream = io.BytesIO(payload)
image = Image.open(image_stream)
return np.array(image)
# Função chamada quando uma mensagem MQTT é recebida
def on_message(client, userdata, message):
print(f"Mensagem recebida no tópico {message.topic}")
try:
bitmap = decode_bitmap_message(message.payload)
output_predictions = segment_frame(bitmap)
# Gerar JSON das classes detectadas
json_data = generate_json(output_predictions)
# Aplicar segmentação ao bitmap
segmented_bitmap = apply_segmentation_overlay(bitmap, output_predictions)
# Converter o bitmap segmentado em base64
segmented_bitmap_base64 = image_to_base64(segmented_bitmap)
# Adicionar o bitmap segmentado no JSON
json_data['segmented_image'] = segmented_bitmap_base64
# Enviar JSON e bitmap segmentado via MQTT
mqtt_client.publish(mqtt_send_topic, json.dumps(json_data).encode('utf-8')) # Enviar JSON
print(f"Segmentação processada e enviada para {mqtt_send_topic}")
except Exception as e:
print(f"Erro ao processar a imagem: {e}")
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Conectado ao MQTT com sucesso!")
else:
print(f"Falha ao conectar ao MQTT: {rc}")
def on_disconnect(client, userdata, rc):
print(f"Desconectado do MQTT: {rc}")
# Configurações do MQTT
mqtt_client.on_connect = on_connect
mqtt_client.on_disconnect = on_disconnect
mqtt_client.on_message = on_message
mqtt_client.subscribe(mqtt_receive_topic)
mqtt_client.publish(mqtt_send_topic, "OK")
mqtt_client.loop_forever()
# Loop principal aguardando mensagens MQTT
try:
while True:
time.sleep(1)
except KeyboardInterrupt:
print("Finalizando script...")
finally:
mqtt_client.loop_stop()

View File

@ -0,0 +1,172 @@
import cv2
import torch
import time
import threading
import numpy as np
from numpy import random
import sys
import os
from flask import Flask, Response, request
import json
models_path = os.path.join(os.path.dirname(__file__), '..', 'Models/yolov7')
sys.path.append(models_path)
from models.experimental import attempt_load
from utils.general import non_max_suppression, scale_coords, check_img_size
from utils.torch_utils import select_device, time_synchronized
from utils.datasets import letterbox
from utils.plots import plot_one_box
import uuid
import paho.mqtt.client as mqtt
mqtt_client = mqtt.Client(f"client_weed_detector_{uuid.uuid4()}")
mqtt_client.connect("localhost", port=1883)
# Outras configurações
json_data = None
output_folder = 'Python/Output/'
max_readings = int(sys.argv[1])
porta = sys.argv[2]
url = sys.argv[3]
arquivoSaida = sys.argv[4]
mostrar_linhas = sys.argv[5] == "1"
mqtt_topic = sys.argv[6]
model_folder = sys.argv[7]
script_version = sys.argv[8]
app = Flask(__name__)
def detect(weights, _camera_index, img_size=512, conf_thres=0.25, iou_thres=0.45):
with torch.no_grad():
# Initialize
device = select_device('')
half = device.type != 'cpu' # half precision only supported on CUDA
# Load model
model = attempt_load(weights, map_location=device) # load FP32 model
model.eval()
stride = int(model.stride.max()) # model stride
imgsz = check_img_size(img_size, s=stride) # check img_size
if half:
model.half() # to FP16
# Open camera
cap = cv2.VideoCapture(_camera_index) # 0 for the first webcam device
#cap.set(3, 640) # set video width
#cap.set(4, 480) # set video height
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
readings = []
while True:
ret, frame = cap.read()
if not ret:
break
# Padded resize
img = letterbox(frame, imgsz, stride=stride)[0]
# Convert
img = img[:, :, ::-1].transpose(2, 0, 1) # BGR to RGB, to 3x416x416
img = np.ascontiguousarray(img)
img = torch.from_numpy(img).to(device)
img = img.half() if half else img.float() # uint8 to fp16/32
img /= 255.0 # 0 - 255 to 0.0 - 1.0
if img.ndimension() == 3:
img = img.unsqueeze(0)
# Inference
t1 = time_synchronized()
pred = model(img, augment=False)[0]
t2 = time_synchronized()
# Apply NMS
pred = non_max_suppression(pred, conf_thres, iou_thres, classes=None, agnostic=False)
current_readings = []
# Process detections
for i, det in enumerate(pred): # detections per frame
if len(det):
# Rescale boxes from img_size to frame size
det[:, :4] = scale_coords(img.shape[2:], det[:, :4], frame.shape).round()
# Print results and draw boxes
for *xyxy, conf, cls in reversed(det):
x1, y1, x2, y2 = xyxy
x = int(x1)
y = int(y1)
w = int(x2 - x1)
h = int(y2 - y1)
class_id = int(cls)
confidence = float(conf)
detection_info = {
'id': class_id,
'descricao': model.module.names[class_id] if hasattr(model, 'module') else model.names[class_id],
'x': x,
'y': y,
'largura': w,
'altura': h,
'confianca': confidence
}
current_readings.append(detection_info)
if mostrar_linhas:
label = f'{model.names[class_id]} {confidence:.2f}'
plot_one_box(xyxy, frame, label=label, color=[random.randint(0, 255) for _ in range(3)], line_thickness=3)
# Após a detecção:
del img # Delete the image tensor to free up memory
#if device.type == 'cuda':
# torch.cuda.empty_cache() # Clear CUDA cache
#gc.collect() # Run garbage collection
global json_data
timestamp = time.time()
json_data = {'timestamp': timestamp, 'x_max': width, 'y_max': height, 'objetos': current_readings}
readings.append(json_data)
# Verifica se atingiu o limite do buffer
if len(readings) >= max_readings:
# Escolhe a mensagem mais relevante
mensagem_relevante = max(readings, key=lambda m: len(m['objetos']), default=None)
if not mensagem_relevante:
mensagem_relevante = readings[0] # Envia qualquer mensagem se não houver dados
mqtt_client.publish(mqtt_topic, json.dumps(mensagem_relevante).encode('utf-8'))
readings.clear() # Limpa o buffer após o envio
ret, buffer = cv2.imencode('.jpg', frame)
frame = buffer.tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
# Esta função é para confirmar que script está pronto para execução
def send_script_ready():
mqtt_client.publish(mqtt_topic, "OK")
# Iniciar o servidor Flask em uma thread separada
def run_flask_server():
app.run(host='0.0.0.0', port=porta, threaded=True, debug=False)
@app.route('/' + url, methods=['GET'])
def video_feed():
weights_path = model_folder + 'model-' + script_version + '.pt'
conf_threshold = float(request.args.get('conf_threshold'))
nms_threshold = float(request.args.get('nms_threshold'))
camera_index = int(request.args.get('camera_index'))
return Response(detect(weights_path, camera_index, 512), mimetype='multipart/x-mixed-replace; boundary=frame')
# Iniciar o servidor
if __name__ == '__main__':
# Cria trhead separada para informar que o script iniciou com sucesso
mqtt_thread = threading.Thread(target=send_script_ready)
mqtt_thread.start()
# Inicia o servidor Flask na thread principal
run_flask_server()

View File

@ -185,7 +185,6 @@ C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\OpenTK.GLControl.xml
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\OpenTK.xml
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\obj\Debug\AgroMonitor.Forms.frmAjustesOperacao.resources
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\obj\Debug\AgroMonitor.Forms.frmMonitoramento.resources
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\obj\Debug\AgroMonitor.csproj.CopyComplete
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\dll\x86\OpenCvSharpExtern.dll
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\dll\x86\opencv_videoio_ffmpeg4100.dll
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\dll\x64\OpenCvSharpExtern.dll
@ -208,3 +207,4 @@ C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\x86\msvcp140_codecvt_i
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\x86\opencv_videoio_ffmpeg440.dll
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\x86\vcruntime140.dll
C:\ZendionInc\agrobot_base\AgroBase\AgroMonitor\bin\Debug\OpenHardwareMonitorLib.dll
C:\ZendionINC\agrobot_base\AgroBase\AgroMonitor\obj\Debug\AgroMoni.D419EBC3.Up2Date