diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/145b1290-1be5-4746-8892-0221f065b23f.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/145b1290-1be5-4746-8892-0221f065b23f.vsidx
deleted file mode 100644
index 52fb91d46..000000000
Binary files a/AgroBase/.vs/AgroBase/FileContentIndex/145b1290-1be5-4746-8892-0221f065b23f.vsidx and /dev/null differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/2838acc7-9e38-4902-808b-c533543c9144.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/2838acc7-9e38-4902-808b-c533543c9144.vsidx
deleted file mode 100644
index 42e1496cb..000000000
Binary files a/AgroBase/.vs/AgroBase/FileContentIndex/2838acc7-9e38-4902-808b-c533543c9144.vsidx and /dev/null differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/624f61a9-3897-426b-88b6-f0919280b10d.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/624f61a9-3897-426b-88b6-f0919280b10d.vsidx
new file mode 100644
index 000000000..1895d75f3
Binary files /dev/null and b/AgroBase/.vs/AgroBase/FileContentIndex/624f61a9-3897-426b-88b6-f0919280b10d.vsidx differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/6d92dd93-a686-4423-afa0-fc683f720922.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/6d92dd93-a686-4423-afa0-fc683f720922.vsidx
new file mode 100644
index 000000000..9f7bdf747
Binary files /dev/null and b/AgroBase/.vs/AgroBase/FileContentIndex/6d92dd93-a686-4423-afa0-fc683f720922.vsidx differ
diff --git a/AgroBase/.vs/AgroBase/FileContentIndex/ef289cb7-5f12-4c7b-9669-68c878268e82.vsidx b/AgroBase/.vs/AgroBase/FileContentIndex/ef289cb7-5f12-4c7b-9669-68c878268e82.vsidx
new file mode 100644
index 000000000..a658f0269
Binary files /dev/null and b/AgroBase/.vs/AgroBase/FileContentIndex/ef289cb7-5f12-4c7b-9669-68c878268e82.vsidx differ
diff --git a/AgroBase/.vs/AgroBase/v17/.suo b/AgroBase/.vs/AgroBase/v17/.suo
index 0195177db..3c4612baf 100644
Binary files a/AgroBase/.vs/AgroBase/v17/.suo and b/AgroBase/.vs/AgroBase/v17/.suo differ
diff --git a/AgroBase/AgroBase/AgroBase.csproj b/AgroBase/AgroBase/AgroBase.csproj
index 3fedc8f09..5f6da2ed8 100644
--- a/AgroBase/AgroBase/AgroBase.csproj
+++ b/AgroBase/AgroBase/AgroBase.csproj
@@ -421,6 +421,7 @@
+
diff --git a/AgroBase/AgroBase/Forms/Atuador/frmAtuCamera.cs b/AgroBase/AgroBase/Forms/Atuador/frmAtuCamera.cs
index e0c10c2ef..74b8b61a2 100644
--- a/AgroBase/AgroBase/Forms/Atuador/frmAtuCamera.cs
+++ b/AgroBase/AgroBase/Forms/Atuador/frmAtuCamera.cs
@@ -98,9 +98,8 @@ namespace AgroBase.Forms
ArquivoVersao.Versao
},
cameraSolo.VideoPorta,
- cameraSolo.VideoUrl,
- cameraSolo.MqttTopico,
- cameraSolo.tmrProcesso
+ cameraSolo.VideoUrl,
+ cameraSolo.MqttTopico
);
tmrLeitura = new AsyncTaskTimerModel("tmrLeitura", tmrLeitura_Tick, 200);
diff --git a/AgroBase/AgroBase/Forms/IHM/frmDiagnosticos.cs b/AgroBase/AgroBase/Forms/IHM/frmDiagnosticos.cs
index 931ef4395..c681ce6fd 100644
--- a/AgroBase/AgroBase/Forms/IHM/frmDiagnosticos.cs
+++ b/AgroBase/AgroBase/Forms/IHM/frmDiagnosticos.cs
@@ -722,16 +722,16 @@ namespace AgroBase.Forms.IHM
bool Sucesso = false;
while (!Sucesso && Inicio.AddMilliseconds(Timeout) > DateTime.Now)
{
- Dispositivo.Dados.RequisitarDadosComponente(ServoFreio.Componente, ServoFreio.ID);
+ Dispositivo.Dados.RequisitarDadosModulo();
await Task.Delay(1000);
Sucesso =
- Teste.ComplementoValorPadrao == "<" ? ServoFreio._AnguloLeitura < Teste.ValorPadrao :
- Teste.ComplementoValorPadrao == ">" ? ServoFreio._AnguloLeitura > Teste.ValorPadrao :
- ServoFreio._AnguloLeitura == Teste.ValorPadrao;
+ Teste.ComplementoValorPadrao == "<" ? (((FirmwareServoFreio)ServoFreio.Leitura)?.Angulo ?? 0) < Teste.ValorPadrao :
+ Teste.ComplementoValorPadrao == ">" ? (((FirmwareServoFreio)ServoFreio.Leitura)?.Angulo ?? 0) > Teste.ValorPadrao :
+ (((FirmwareServoFreio)ServoFreio.Leitura)?.Angulo ?? 0) == Teste.ValorPadrao;
}
- Teste.ValorAferido = ServoFreio._AnguloLeitura;
+ Teste.ValorAferido = (((FirmwareServoFreio)ServoFreio.Leitura)?.Angulo ?? 0);
return Sucesso;
}
@@ -1036,18 +1036,18 @@ namespace AgroBase.Forms.IHM
bool SenIniciado = Modulo_Sen.Conectado;
idx = PreencheDadosLinha(grid, Testes, idx, SenIniciado ? 1 : 0);
- var S5V = Modulo_Sen.Sensores.FirstOrDefault(x => x.ID == "AB5V");
- double Tensao5V = S5V != null && S5V.Leituras.Count() > 1 ? S5V.Leituras[1] : -1;
+ var S5V = Modulo_Sen.DadosLeitura.SensoresCorrente.FirstOrDefault(x => x.ID == "AB5V");
+ double Tensao5V = S5V != null ? (double)S5V.Current : -1;
idx = PreencheDadosLinha(grid, Testes, idx, Tensao5V);
- double Corrente5V = S5V != null && S5V.Leituras.Count() > 0 ? S5V.Leituras[0] : -1;
+ double Corrente5V = S5V != null ? (double)S5V.Current : -1;
idx = PreencheDadosLinha(grid, Testes, idx, Corrente5V);
- var S12V = Modulo_Sen.Sensores.FirstOrDefault(x => x.ID == "AB12V");
- double Tensao12V = S12V != null && S12V.Leituras.Count() > 1 ? S12V.Leituras[1] : -1;
+ var S12V = Modulo_Sen.DadosLeitura.SensoresCorrente.FirstOrDefault(x => x.ID == "AB12V");
+ double Tensao12V = S12V != null ? (double)S12V.Current : -1;
idx = PreencheDadosLinha(grid, Testes, idx, Tensao12V);
- double Corrente12V = S12V != null && S12V.Leituras.Count() > 0 ? S12V.Leituras[0] : -1;
+ double Corrente12V = S12V != null ? (double)S12V.Current : -1;
idx = PreencheDadosLinha(grid, Testes, idx, Corrente12V);
bool WitConectado = SerialService.DispositivosMapeados.Any(x => x.Dispositivo == Enums.T_Code.Wit);
@@ -1176,12 +1176,12 @@ namespace AgroBase.Forms.IHM
await EnviarComandoRele(Dispositivo, ReleLra, true, 1000);
- bool RlStatus = RlInicializado && ReleLra.StatusLeitura == Estado.Ligado;
+ bool RlStatus = RlInicializado && (((FirmwareRele)ReleLra.Leitura)?.Leitura ?? Estado.Desligado) == Estado.Ligado;
idx = PreencheDadosLinha(grid, Testes, idx, RlStatus ? 1 : 0);
await EnviarComandoRele(Dispositivo, ReleLra, false, 1000);
- RlStatus = RlInicializado && ReleLra.StatusLeitura == Estado.Ligado;
+ RlStatus = RlInicializado && (((FirmwareRele)ReleLra.Leitura)?.Leitura ?? Estado.Desligado) == Estado.Ligado;
idx = PreencheDadosLinha(grid, Testes, idx, !RlStatus ? 0 : 1);
bool Conectado = SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Lra);
@@ -1213,7 +1213,7 @@ namespace AgroBase.Forms.IHM
var novoEstado = Ligar ? Estado.Ligado : Estado.Desligado;
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sRLE, Rele.ID, novoEstado);
await Task.Delay(Delay);
- Dispositivo.Dados.RequisitarDadosComponente(Rele.Componente, Rele.ID);
+ Dispositivo.Dados.RequisitarDadosModulo();
await Task.Delay(Delay);
}
@@ -1476,7 +1476,7 @@ namespace AgroBase.Forms.IHM
await EnviarComandoSinaleiro(Dispositivo, Sinaleiro, true, 1000);
}
- StatusLED Status = Sinaleiro.StatusLED;
+ StatusLED Status = (((FirmwareSinaleiro)Sinaleiro.Leitura)?.Leitura ?? StatusLED.Apagado);
idx = PreencheDadosLinha(grid, Testes, idx, Iniciado && Status == StatusLED.Aceso ? 1 : 0);
if (Iniciado)
@@ -1484,7 +1484,7 @@ namespace AgroBase.Forms.IHM
await EnviarComandoSinaleiro(Dispositivo, Sinaleiro, false, 1000);
}
- Status = Sinaleiro.StatusLED;
+ Status = (((FirmwareSinaleiro)Sinaleiro.Leitura)?.Leitura ?? StatusLED.Apagado);
idx = PreencheDadosLinha(grid, Testes, idx, Iniciado && Status == StatusLED.Apagado ? 0 : 1);
}
@@ -1499,7 +1499,7 @@ namespace AgroBase.Forms.IHM
Comportamento.statusLED = Ligar ? StatusLED.Aceso : StatusLED.Apagado;
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, Sinaleiro.ID, Comportamento);
await Task.Delay(Delay);
- Dispositivo.Dados.RequisitarDadosComponente(Sinaleiro.Componente, Sinaleiro.ID);
+ Dispositivo.Dados.RequisitarDadosModulo();
await Task.Delay(Delay);
}
diff --git a/AgroBase/AgroBase/Forms/IHM/frmIHM.cs b/AgroBase/AgroBase/Forms/IHM/frmIHM.cs
index 5b9b0c262..2225d13a9 100644
--- a/AgroBase/AgroBase/Forms/IHM/frmIHM.cs
+++ b/AgroBase/AgroBase/Forms/IHM/frmIHM.cs
@@ -39,7 +39,7 @@ namespace AgroBase.Forms.IHM
});
FuncoesGlobais.DefinirEventosPicBtn(picManual, "Erro ao carregar modo de controle manual!", async () =>
{
- Variaveis.OperacaoEmAndamento = OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.Manual);
+ OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.Manual);
if (Variaveis.OperacaoEmAndamento.OperacaoLiberada)
{
frmDialogoMapa frm = new frmDialogoMapa();
@@ -145,11 +145,6 @@ namespace AgroBase.Forms.IHM
}
});
- if (SerialService.DispositivosMapeados.Count == 0)
- {
- Variaveis.DispositivosConectados.Where(x => x.Dados.GetStatusConexao()).ToList().ForEach(x => x.AcaoDesconectar());
- }
-
bool mqttConectado = Variaveis.MqttService.StatusConexao();
lblMqtt.Text = "MQTT: " + (mqttConectado ? "Conectado" : "Desconectado");
lblMqtt.ForeColor = mqttConectado ? Color.Green : Color.Red;
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.Designer.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.Designer.cs
index 7c518a290..3888a6a9a 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.Designer.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.Designer.cs
@@ -28,9 +28,9 @@
///
private void InitializeComponent()
{
- System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
- System.Windows.Forms.DataVisualization.Charting.Legend legend3 = new System.Windows.Forms.DataVisualization.Charting.Legend();
- System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series();
+ System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+ System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+ System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
this.pnlCamerasSolo = new System.Windows.Forms.Panel();
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
this.pnlCameraSoloD = new System.Windows.Forms.Panel();
@@ -149,17 +149,17 @@
//
this.chartGraficos.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
- chartArea3.Name = "ChartArea1";
- this.chartGraficos.ChartAreas.Add(chartArea3);
- legend3.Name = "Legend1";
- this.chartGraficos.Legends.Add(legend3);
+ chartArea1.Name = "ChartArea1";
+ this.chartGraficos.ChartAreas.Add(chartArea1);
+ legend1.Name = "Legend1";
+ this.chartGraficos.Legends.Add(legend1);
this.chartGraficos.Location = new System.Drawing.Point(640, 7);
this.chartGraficos.Margin = new System.Windows.Forms.Padding(2);
this.chartGraficos.Name = "chartGraficos";
- series3.ChartArea = "ChartArea1";
- series3.Legend = "Legend1";
- series3.Name = "Series1";
- this.chartGraficos.Series.Add(series3);
+ series1.ChartArea = "ChartArea1";
+ series1.Legend = "Legend1";
+ series1.Name = "Series1";
+ this.chartGraficos.Series.Add(series1);
this.chartGraficos.Size = new System.Drawing.Size(591, 318);
this.chartGraficos.TabIndex = 2;
this.chartGraficos.Text = "chart1";
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs
index 406e849bc..6821ec986 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoManual.cs
@@ -391,10 +391,10 @@ namespace AgroBase.Forms.Operacoes
private void AtualizarInformacoesGerais()
{
- var AB3V = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB3V");
- var AB5V = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB5V");
- var AB7V2 = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB7V2");
- var AB12V = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB12V");
+ var AB3V = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresCorrente.FirstOrDefault(x => x.ID == "AB3V");
+ var AB5V = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresCorrente.FirstOrDefault(x => x.ID == "AB5V");
+ var AB7V2 = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresCorrente.FirstOrDefault(x => x.ID == "AB7V2");
+ var AB12V = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresCorrente.FirstOrDefault(x => x.ID == "AB12V");
gridDados.Rows[0].Cells[1].Value = Variaveis.OperacaoEmAndamento.Tempo.Hours.ToString("00") + ":" + Variaveis.OperacaoEmAndamento.Tempo.Minutes.ToString("00") + ":" + Variaveis.OperacaoEmAndamento.Tempo.Seconds.ToString("00");
gridDados.Rows[1].Cells[1].Value = TimeSpan.FromSeconds(Variaveis.OperacaoEmAndamento.DispMvd.Dados.TempoEmAtividade).ToString(@"hh\:mm\:ss");
@@ -403,14 +403,14 @@ namespace AgroBase.Forms.Operacoes
gridDados.Rows[4].Cells[1].Value = (PZEMService.Iniciado && PZEMService.UltimaLeitura != null ? Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria.ToString("00.00") : "");
gridDados.Rows[5].Cells[1].Value = (PZEMService.Iniciado && PZEMService.UltimaLeitura != null ? PZEMService.UltimaLeitura.Tensao.ToString("0.00") : "");
gridDados.Rows[6].Cells[1].Value = (PZEMService.Iniciado && PZEMService.UltimaLeitura != null ? PZEMService.UltimaLeitura.Corrente.ToString("0.00") : "");
- gridDados.Rows[7].Cells[1].Value = (AB3V != null && AB3V.Leituras != null && AB3V.Leituras.Count() > 0 ? AB3V.Leituras[0] : 0).ToString("0.00");
- gridDados.Rows[8].Cells[1].Value = (AB3V != null && AB3V.Leituras != null && AB3V.Leituras.Count() > 1 ? AB3V.Leituras[1] : 0).ToString("0.00");
- gridDados.Rows[9].Cells[1].Value = (AB5V != null && AB5V.Leituras != null && AB5V.Leituras.Count() > 0 ? AB5V.Leituras[0] : 0).ToString("0.00");
- gridDados.Rows[10].Cells[1].Value = (AB5V != null && AB5V.Leituras != null && AB5V.Leituras.Count() > 1 ? AB5V.Leituras[1] : 0).ToString("0.00");
- gridDados.Rows[11].Cells[1].Value = (AB7V2 != null && AB7V2.Leituras != null && AB7V2.Leituras.Count() > 0 ? AB7V2.Leituras[0] : 0).ToString("0.00");
- gridDados.Rows[12].Cells[1].Value = (AB7V2 != null && AB7V2.Leituras != null && AB7V2.Leituras.Count() > 1 ? AB7V2.Leituras[1] : 0).ToString("0.00");
- gridDados.Rows[13].Cells[1].Value = (AB12V != null && AB12V.Leituras != null && AB12V.Leituras.Count() > 0 ? AB12V.Leituras[0] : 0).ToString("0.00");
- gridDados.Rows[14].Cells[1].Value = (AB12V != null && AB12V.Leituras != null && AB12V.Leituras.Count() > 1 ? AB12V.Leituras[1] : 0).ToString("0.00");
+ gridDados.Rows[7].Cells[1].Value = (AB3V != null ? AB3V.BusVoltage : 0).ToString("0.00");
+ gridDados.Rows[8].Cells[1].Value = (AB3V != null ? (double)AB3V.Current : 0).ToString("0.00");
+ gridDados.Rows[9].Cells[1].Value = (AB5V != null ? AB5V.BusVoltage : 0).ToString("0.00");
+ gridDados.Rows[10].Cells[1].Value = (AB5V != null ? (double)AB5V.Current : 0).ToString("0.00");
+ gridDados.Rows[11].Cells[1].Value = (AB7V2 != null ? AB7V2.BusVoltage : 0).ToString("0.00");
+ gridDados.Rows[12].Cells[1].Value = (AB7V2 != null ? (double)AB7V2.Current : 0).ToString("0.00");
+ gridDados.Rows[13].Cells[1].Value = (AB12V != null ? AB12V.BusVoltage : 0).ToString("0.00");
+ gridDados.Rows[14].Cells[1].Value = (AB12V != null ? (double)AB12V.Current : 0).ToString("0.00");
gridDados.Rows[15].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PercentualReservatorio.ToString("00.00");
gridDados.Rows[16].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.VolumeReservatorio.ToString("0.000");
gridDados.Rows[17].Cells[1].Value = Variaveis.OperacaoEmAndamento.DispAtu.Dados.PressaoLinha.ToString("0.00");
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs
index 9f53c394e..6a8dc3e73 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmOperacaoMapaGPS.cs
@@ -53,10 +53,10 @@ namespace AgroBase.Forms.Operacoes
private void AtualizarDispositivos()
{
- chbMOVativo.Checked = Variaveis.OperacaoEmAndamento.DispMvd != null && Variaveis.OperacaoEmAndamento.DispMvd._Porta.IsOpen && Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Any(x => x.MovMotor.Inicializado);
- chbDIRativo.Checked = Variaveis.OperacaoEmAndamento.DispMvd != null && Variaveis.OperacaoEmAndamento.DispMvd._Porta.IsOpen && Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Any(x => x.DirMotor.Inicializado);
- chbATUativo.Checked = Variaveis.OperacaoEmAndamento.DispAtu != null && Variaveis.OperacaoEmAndamento.DispAtu._Porta.IsOpen;
- chbGPSativo.Checked = GPSService.PortaGPS != null && GPSService.PortaGPS.IsOpen;
+ chbMOVativo.Checked = Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.Modulos?.Any(x => x.MovMotor.Inicializado) ?? false;
+ chbDIRativo.Checked = Variaveis.OperacaoEmAndamento.DispMvd?.Dados?.Modulos?.Any(x => x.DirMotor.Inicializado) ?? false;
+ chbATUativo.Checked = Variaveis.OperacaoEmAndamento.DispAtu?.Dados.Conectado ?? false;
+ chbGPSativo.Checked = GPSService.PortaGPS?.IsOpen ?? false;
Variaveis.OperacaoEmAndamento.chartGraficos = chartGraficos;
}
diff --git a/AgroBase/AgroBase/Forms/Operacoes/frmResultadosOperacao.cs b/AgroBase/AgroBase/Forms/Operacoes/frmResultadosOperacao.cs
index aa0a4485d..1f9755a41 100644
--- a/AgroBase/AgroBase/Forms/Operacoes/frmResultadosOperacao.cs
+++ b/AgroBase/AgroBase/Forms/Operacoes/frmResultadosOperacao.cs
@@ -22,7 +22,7 @@ namespace AgroBase.Forms.Operacoes
List LogsDirecional = new List();
List LogsMovimentacao = new List();
List LogsAtuador = new List();
- List LogsSensoriamento = new List();
+ List LogsSensoriamento = new List();
List LogsPzem = new List();
List LogsWt901C = new List();
List LogsA05 = new List();
@@ -132,7 +132,7 @@ namespace AgroBase.Forms.Operacoes
LogsDirecional = JsonConvert.DeserializeObject(DeserializarDadosOperacao(ofd.FileName, data.dir ?? Enums.T_Code.Dir.ToString())).ToList();
LogsMovimentacao = JsonConvert.DeserializeObject(DeserializarDadosOperacao(ofd.FileName, data.mov ?? Enums.T_Code.Mov.ToString())).ToList();
LogsAtuador = JsonConvert.DeserializeObject(DeserializarDadosOperacao(ofd.FileName, data.atu ?? Enums.T_Code.Atu.ToString())).ToList();
- LogsSensoriamento = JsonConvert.DeserializeObject(DeserializarDadosOperacao(ofd.FileName, data.sen ?? Enums.T_Code.Sen.ToString())).ToList();
+ LogsSensoriamento = JsonConvert.DeserializeObject(DeserializarDadosOperacao(ofd.FileName, data.sen ?? Enums.T_Code.Sen.ToString())).ToList();
LogsPzem = JsonConvert.DeserializeObject(DeserializarDadosOperacao(ofd.FileName, data.pzm ?? Enums.T_Code.Pzm.ToString())).ToList();
LogsWt901C = JsonConvert.DeserializeObject(DeserializarDadosOperacao(ofd.FileName, data.wit ?? Enums.T_Code.Wit.ToString())).ToList();
LogsA05 = JsonConvert.DeserializeObject(DeserializarDadosOperacao(ofd.FileName, data.a05 ?? Enums.T_Code.A05.ToString())).ToList();
@@ -394,49 +394,49 @@ namespace AgroBase.Forms.Operacoes
new GraficoInterativoSerieModel()
{
Titulo = "V 3v3",
- Valores = LogsSensoriamento.Select(x => x?.Barramento3v3Tensao ?? 0).ToList(),
+ Valores = LogsSensoriamento.Select(x => x?.SensoresCorrente?.FirstOrDefault(y => y.ID.Contains("3v")).BusVoltage ?? 0).ToList(),
Visivel = false,
},
new GraficoInterativoSerieModel()
{
Titulo = "A 3v3",
- Valores = LogsSensoriamento.Select(x => x?.Barramento3v3Corrente ?? 0).ToList(),
+ Valores = LogsSensoriamento.Select(x => x?.SensoresCorrente?.FirstOrDefault(y => y.ID.Contains("3v")).Current ?? 0).ToList(),
Visivel = false,
},
new GraficoInterativoSerieModel()
{
Titulo = "V 5v0",
- Valores = LogsSensoriamento.Select(x => x?.Barramento5vTensao ?? 0).ToList(),
+ Valores = LogsSensoriamento.Select(x => x?.SensoresCorrente?.FirstOrDefault(y => y.ID.Contains("5v")).BusVoltage ?? 0).ToList(),
Visivel = false,
},
new GraficoInterativoSerieModel()
{
Titulo = "A 5v0",
- Valores = LogsSensoriamento.Select(x => x?.Barramento5vCorrente ?? 0).ToList(),
+ Valores = LogsSensoriamento.Select(x => x?.SensoresCorrente?.FirstOrDefault(y => y.ID.Contains("5v")).Current ?? 0).ToList(),
Visivel = false,
},
new GraficoInterativoSerieModel()
{
Titulo = "V 7v2",
- Valores = LogsSensoriamento.Select(x => x?.Barramento7v2Tensao ?? 0).ToList(),
+ Valores = LogsSensoriamento.Select(x => x?.SensoresCorrente?.FirstOrDefault(y => y.ID.Contains("7v2")).BusVoltage ?? 0).ToList(),
Visivel = false,
},
new GraficoInterativoSerieModel()
{
Titulo = "A 7v2",
- Valores = LogsSensoriamento.Select(x => x?.Barramento7v2Corrente ?? 0).ToList(),
+ Valores = LogsSensoriamento.Select(x => x?.SensoresCorrente?.FirstOrDefault(y => y.ID.Contains("7v2")).Current ?? 0).ToList(),
Visivel = false,
},
new GraficoInterativoSerieModel()
{
Titulo = "V 12v",
- Valores = LogsSensoriamento.Select(x => x?.Barramento12vTensao ?? 0).ToList(),
+ Valores = LogsSensoriamento.Select(x => x?.SensoresCorrente?.FirstOrDefault(y => y.ID.Contains("12v")).BusVoltage ?? 0).ToList(),
Visivel = true,
},
new GraficoInterativoSerieModel()
{
Titulo = "A 12v",
- Valores = LogsSensoriamento.Select(x => x?.Barramento12vCorrente ?? 0).ToList(),
+ Valores = LogsSensoriamento.Select(x => x?.SensoresCorrente?.FirstOrDefault(y => y.ID.Contains("12v")).Current ?? 0).ToList(),
Visivel = true,
},
new GraficoInterativoSerieModel()
@@ -907,10 +907,10 @@ namespace AgroBase.Forms.Operacoes
var Log = LogsMovimentacao.FirstOrDefault(x => x.Momento == MomentoAtual && x.Modulo_ID == ID);
var Log_Sen = LogsSensoriamento.FirstOrDefault(x => x.Momento == MomentoAtual);
bool freio =
- (ID.Contains("ET") && Log_Sen.AnguloFreioET > 0 && Log_Sen.AnguloFreioET < 180) ||
- (ID.Contains("DT") && Log_Sen.AnguloFreioDT > 0 && Log_Sen.AnguloFreioDT < 180) ||
- (ID.Contains("EF") && Log_Sen.AnguloFreioEF > 0 && Log_Sen.AnguloFreioEF < 180) ||
- (ID.Contains("DF") && Log_Sen.AnguloFreioDF > 0 && Log_Sen.AnguloFreioDF < 180);
+ (ID.Contains("ET") && Log_Sen.ServoFreios?.FirstOrDefault(x => x.ID.Contains("ET"))?.Angulo > 0 && Log_Sen.ServoFreios?.FirstOrDefault(x => x.ID.Contains("ET"))?.Angulo < 180) ||
+ (ID.Contains("DT") && Log_Sen.ServoFreios?.FirstOrDefault(x => x.ID.Contains("DT"))?.Angulo > 0 && Log_Sen.ServoFreios?.FirstOrDefault(x => x.ID.Contains("DT"))?.Angulo < 180) ||
+ (ID.Contains("EF") && Log_Sen.ServoFreios?.FirstOrDefault(x => x.ID.Contains("EF"))?.Angulo > 0 && Log_Sen.ServoFreios?.FirstOrDefault(x => x.ID.Contains("EF"))?.Angulo < 180) ||
+ (ID.Contains("DF") && Log_Sen.ServoFreios?.FirstOrDefault(x => x.ID.Contains("DF"))?.Angulo > 0 && Log_Sen.ServoFreios?.FirstOrDefault(x => x.ID.Contains("DF"))?.Angulo < 180);
GroupBox gpbRpm = FuncoesGlobais.FindControlRecursive(tabMovGreal, "gpbMOV_Geral_" + ID);
gpbRpm.ForeColor = !Log.Inicializado ? Color.Red : Color.Black;
@@ -983,9 +983,9 @@ namespace AgroBase.Forms.Operacoes
txtPressao.Text = LogWit.Pressao + " Pa (" + (LogWit.Pressao / 101300.0).ToString("0.00") + " atm)";
var LogSen = LogsSensoriamento.FirstOrDefault(x => x.Momento == MomentoAtual);
- pnlManual.BackColor = LogSen.StatusSinaleiroMN == Enums.StatusLED.Aceso ? Color.Yellow : Color.Gold;
- pnlAutomatico.BackColor = LogSen.StatusSinaleiroAT == Enums.StatusLED.Aceso ? Color.Yellow : Color.Gold;
- pnlOperacao.BackColor = LogSen.StatusSinaleiroOP == Enums.StatusLED.Aceso ? Color.Green : Color.DarkGreen;
+ pnlManual.BackColor = LogSen.Sinaleiros?.FirstOrDefault(x => x.ID.Contains("MN"))?.Leitura == Enums.StatusLED.Aceso ? Color.Yellow : Color.Gold;
+ pnlAutomatico.BackColor = LogSen.Sinaleiros?.FirstOrDefault(x => x.ID.Contains("AT"))?.Leitura == Enums.StatusLED.Aceso ? Color.Yellow : Color.Gold;
+ pnlOperacao.BackColor = LogSen.Sinaleiros?.FirstOrDefault(x => x.ID.Contains("OP"))?.Leitura == Enums.StatusLED.Aceso ? Color.Green : Color.DarkGreen;
var LogA05 = LogsA05.FirstOrDefault(x => x.Momento == MomentoAtual);
diff --git a/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.Designer.cs b/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.Designer.cs
index efe275261..abaa81390 100644
--- a/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.Designer.cs
+++ b/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.Designer.cs
@@ -58,10 +58,9 @@
this.cmbSoloEsq = new System.Windows.Forms.ComboBox();
this.lblCaminho = new System.Windows.Forms.Label();
this.cmbCaminho = new System.Windows.Forms.ComboBox();
- this.btnFreio = new System.Windows.Forms.Button();
- this.cmbModFreio = new System.Windows.Forms.ComboBox();
- this.label1 = new System.Windows.Forms.Label();
this.chbRequisitarDados = new System.Windows.Forms.CheckBox();
+ this.lblIP = new System.Windows.Forms.Label();
+ this.txtIP = new System.Windows.Forms.TextBox();
((System.ComponentModel.ISupportInitialize)(this.gridsTEN)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsCOR)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridsTMP)).BeginInit();
@@ -95,7 +94,7 @@
// btnSalvar
//
this.btnSalvar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.btnSalvar.Location = new System.Drawing.Point(867, 575);
+ this.btnSalvar.Location = new System.Drawing.Point(863, 566);
this.btnSalvar.Name = "btnSalvar";
this.btnSalvar.Size = new System.Drawing.Size(75, 23);
this.btnSalvar.TabIndex = 3;
@@ -213,10 +212,10 @@
//
// btnBateriaVer
//
- this.btnBateriaVer.Location = new System.Drawing.Point(8, 54);
+ this.btnBateriaVer.Location = new System.Drawing.Point(8, 59);
this.btnBateriaVer.Margin = new System.Windows.Forms.Padding(2);
this.btnBateriaVer.Name = "btnBateriaVer";
- this.btnBateriaVer.Size = new System.Drawing.Size(135, 19);
+ this.btnBateriaVer.Size = new System.Drawing.Size(135, 25);
this.btnBateriaVer.TabIndex = 16;
this.btnBateriaVer.Text = "Ver valor";
this.btnBateriaVer.UseVisualStyleBackColor = true;
@@ -226,7 +225,7 @@
//
this.cmbBateriaParametro.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cmbBateriaParametro.FormattingEnabled = true;
- this.cmbBateriaParametro.Location = new System.Drawing.Point(7, 30);
+ this.cmbBateriaParametro.Location = new System.Drawing.Point(8, 34);
this.cmbBateriaParametro.Margin = new System.Windows.Forms.Padding(2);
this.cmbBateriaParametro.Name = "cmbBateriaParametro";
this.cmbBateriaParametro.Size = new System.Drawing.Size(137, 21);
@@ -235,7 +234,7 @@
// label2
//
this.label2.AutoSize = true;
- this.label2.Location = new System.Drawing.Point(5, 15);
+ this.label2.Location = new System.Drawing.Point(5, 18);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(55, 13);
this.label2.TabIndex = 19;
@@ -243,7 +242,7 @@
//
// nudBateriaValor
//
- this.nudBateriaValor.Location = new System.Drawing.Point(8, 79);
+ this.nudBateriaValor.Location = new System.Drawing.Point(8, 88);
this.nudBateriaValor.Margin = new System.Windows.Forms.Padding(2);
this.nudBateriaValor.Name = "nudBateriaValor";
this.nudBateriaValor.Size = new System.Drawing.Size(64, 20);
@@ -252,7 +251,7 @@
//
// btnBateriaDefinir
//
- this.btnBateriaDefinir.Location = new System.Drawing.Point(76, 78);
+ this.btnBateriaDefinir.Location = new System.Drawing.Point(76, 87);
this.btnBateriaDefinir.Margin = new System.Windows.Forms.Padding(2);
this.btnBateriaDefinir.Name = "btnBateriaDefinir";
this.btnBateriaDefinir.Size = new System.Drawing.Size(67, 19);
@@ -273,17 +272,17 @@
this.gpbBateria.Margin = new System.Windows.Forms.Padding(2);
this.gpbBateria.Name = "gpbBateria";
this.gpbBateria.Padding = new System.Windows.Forms.Padding(2);
- this.gpbBateria.Size = new System.Drawing.Size(154, 121);
+ this.gpbBateria.Size = new System.Drawing.Size(154, 147);
this.gpbBateria.TabIndex = 22;
this.gpbBateria.TabStop = false;
this.gpbBateria.Text = "Bateria";
//
// btnBateriaCalibrar
//
- this.btnBateriaCalibrar.Location = new System.Drawing.Point(8, 99);
+ this.btnBateriaCalibrar.Location = new System.Drawing.Point(8, 112);
this.btnBateriaCalibrar.Margin = new System.Windows.Forms.Padding(2);
this.btnBateriaCalibrar.Name = "btnBateriaCalibrar";
- this.btnBateriaCalibrar.Size = new System.Drawing.Size(135, 19);
+ this.btnBateriaCalibrar.Size = new System.Drawing.Size(135, 23);
this.btnBateriaCalibrar.TabIndex = 22;
this.btnBateriaCalibrar.Text = "Calibrar";
this.btnBateriaCalibrar.UseVisualStyleBackColor = true;
@@ -302,17 +301,17 @@
this.gpbCameras.Margin = new System.Windows.Forms.Padding(2);
this.gpbCameras.Name = "gpbCameras";
this.gpbCameras.Padding = new System.Windows.Forms.Padding(2);
- this.gpbCameras.Size = new System.Drawing.Size(197, 121);
+ this.gpbCameras.Size = new System.Drawing.Size(197, 147);
this.gpbCameras.TabIndex = 23;
this.gpbCameras.TabStop = false;
this.gpbCameras.Text = "Câmeras";
//
// btnAtualizarCameras
//
- this.btnAtualizarCameras.Location = new System.Drawing.Point(64, 99);
+ this.btnAtualizarCameras.Location = new System.Drawing.Point(64, 112);
this.btnAtualizarCameras.Margin = new System.Windows.Forms.Padding(2);
this.btnAtualizarCameras.Name = "btnAtualizarCameras";
- this.btnAtualizarCameras.Size = new System.Drawing.Size(129, 19);
+ this.btnAtualizarCameras.Size = new System.Drawing.Size(129, 23);
this.btnAtualizarCameras.TabIndex = 26;
this.btnAtualizarCameras.Text = "Atualizar";
this.btnAtualizarCameras.UseVisualStyleBackColor = true;
@@ -372,55 +371,43 @@
this.cmbCaminho.Size = new System.Drawing.Size(129, 21);
this.cmbCaminho.TabIndex = 20;
//
- // btnFreio
- //
- this.btnFreio.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.btnFreio.Location = new System.Drawing.Point(867, 543);
- this.btnFreio.Name = "btnFreio";
- this.btnFreio.Size = new System.Drawing.Size(75, 23);
- this.btnFreio.TabIndex = 24;
- this.btnFreio.Text = "Freio";
- this.btnFreio.UseVisualStyleBackColor = true;
- this.btnFreio.Click += new System.EventHandler(this.btnFreio_Click);
- //
- // cmbModFreio
- //
- this.cmbModFreio.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
- this.cmbModFreio.FormattingEnabled = true;
- this.cmbModFreio.Location = new System.Drawing.Point(867, 500);
- this.cmbModFreio.Margin = new System.Windows.Forms.Padding(2);
- this.cmbModFreio.Name = "cmbModFreio";
- this.cmbModFreio.Size = new System.Drawing.Size(75, 21);
- this.cmbModFreio.TabIndex = 27;
- //
- // label1
- //
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(864, 485);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(42, 13);
- this.label1.TabIndex = 27;
- this.label1.Text = "Módulo";
- //
// chbRequisitarDados
//
this.chbRequisitarDados.AutoSize = true;
- this.chbRequisitarDados.Location = new System.Drawing.Point(15, 584);
+ this.chbRequisitarDados.Location = new System.Drawing.Point(853, 508);
this.chbRequisitarDados.Name = "chbRequisitarDados";
this.chbRequisitarDados.Size = new System.Drawing.Size(107, 17);
this.chbRequisitarDados.TabIndex = 28;
this.chbRequisitarDados.Text = "Requisitar Dados";
this.chbRequisitarDados.UseVisualStyleBackColor = true;
//
+ // lblIP
+ //
+ this.lblIP.AutoSize = true;
+ this.lblIP.Location = new System.Drawing.Point(850, 459);
+ this.lblIP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.lblIP.Name = "lblIP";
+ this.lblIP.Size = new System.Drawing.Size(17, 13);
+ this.lblIP.TabIndex = 145;
+ this.lblIP.Text = "IP";
+ //
+ // txtIP
+ //
+ this.txtIP.Location = new System.Drawing.Point(853, 476);
+ this.txtIP.Margin = new System.Windows.Forms.Padding(2);
+ this.txtIP.Name = "txtIP";
+ this.txtIP.Size = new System.Drawing.Size(85, 20);
+ this.txtIP.TabIndex = 144;
+ this.txtIP.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
+ //
// frmSenConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(954, 606);
+ this.ClientSize = new System.Drawing.Size(961, 606);
+ this.Controls.Add(this.lblIP);
+ this.Controls.Add(this.txtIP);
this.Controls.Add(this.chbRequisitarDados);
- this.Controls.Add(this.label1);
- this.Controls.Add(this.cmbModFreio);
- this.Controls.Add(this.btnFreio);
this.Controls.Add(this.gpbCameras);
this.Controls.Add(this.gpbBateria);
this.Controls.Add(this.lblUltrassom);
@@ -491,9 +478,8 @@
private System.Windows.Forms.ComboBox cmbCaminho;
private System.Windows.Forms.Button btnBateriaCalibrar;
private System.Windows.Forms.Button btnAtualizarCameras;
- private System.Windows.Forms.Button btnFreio;
- private System.Windows.Forms.ComboBox cmbModFreio;
- private System.Windows.Forms.Label label1;
private System.Windows.Forms.CheckBox chbRequisitarDados;
+ private System.Windows.Forms.Label lblIP;
+ private System.Windows.Forms.TextBox txtIP;
}
}
\ No newline at end of file
diff --git a/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.cs b/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.cs
index 35dd1a193..b50bd739a 100644
--- a/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.cs
+++ b/AgroBase/AgroBase/Forms/Sensoriamento/frmSenConfig.cs
@@ -4,7 +4,6 @@ using AgroBase.Models.Modules;
using AgroBase.Services;
using System;
using System.Collections.Generic;
-using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -47,12 +46,14 @@ namespace AgroBase.Forms.Sensoriamento
case T_Code.Atu:
{
Sensores = ((AtuadorModel)Disp.Dados).Sensores.ToList();
- chbRequisitarDados.Checked = false;
+ chbRequisitarDados.Checked = ((AtuadorModel)Disp.Dados).RequisitarDados;
break;
}
}
+ txtIP.Text = Disp.Dados.GetIP();
+
PopulaParametrosSensor();
PreencheParametrosSensores();
@@ -61,10 +62,6 @@ namespace AgroBase.Forms.Sensoriamento
cmbBateriaParametro.Items.Add("Carga Consumida");
cmbBateriaParametro.Items.AddRange(PZEMService.Parametros.Keys.ToArray());
cmbBateriaParametro.SelectedIndex = 0;
-
- cmbModFreio.Items.Clear();
- cmbModFreio.Items.AddRange(Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Select(x => x.Modulo_ID).ToArray());
- cmbModFreio.SelectedIndex = 0;
}
private void AtualizarCameras()
@@ -199,6 +196,7 @@ namespace AgroBase.Forms.Sensoriamento
case T_Code.Sen:
{
var _Disp = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
+ _Disp.Dados.IP = txtIP.Text;
_Disp.Dados.RequisitarDados = chbRequisitarDados.Checked;
_Disp.Dados.Sensores = Sensores.ToList();
_Disp.Dados.CameraID_Caminho = cmbCaminho.Text;
@@ -210,6 +208,8 @@ namespace AgroBase.Forms.Sensoriamento
case T_Code.Atu:
{
var _Disp = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
+ _Disp.Dados.IP = txtIP.Text;
+ _Disp.Dados.RequisitarDados = chbRequisitarDados.Checked;
_Disp.Dados.Sensores = Sensores.ToList();
_Disp.SalvarParametros(_Disp.Dados);
break;
@@ -275,30 +275,5 @@ namespace AgroBase.Forms.Sensoriamento
ModbusService.AdicionarComandoNaFila(Comando);
}
- private void btnFreio_Click(object sender, EventArgs e)
- {
- string Mod_ID = cmbModFreio.Text;
- var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.First(x => x.Modulo_ID == Mod_ID);
- var ServoFreio = Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.FirstOrDefault(x => x.ID.Contains(Modulo.Modulo_ID) && x.Inicializado);
- if (ServoFreio != null)
- {
- if (!Modulo.MovMotor.ConfigFreio.Controle)
- {
- (bool atuar, int angulo) = Modulo.MovMotor.ConfigFreio.AtualizarDadosFreio(true, 0, -1, 5);
- if (atuar)
- {
- GeneralJoystick.EnviarComandoSensoriamento(S_Code.sFRO, ServoFreio.ID, angulo);
- }
- }
- else
- {
- (bool atuar, int angulo) = Modulo.MovMotor.ConfigFreio.AtualizarDadosFreio(false);
- if (atuar)
- {
- GeneralJoystick.EnviarComandoSensoriamento(S_Code.sFRO, ServoFreio.ID, angulo);
- }
- }
- }
- }
}
}
diff --git a/AgroBase/AgroBase/Forms/frmAcompanhamento.cs b/AgroBase/AgroBase/Forms/frmAcompanhamento.cs
index da5b48bcc..fbd82a66f 100644
--- a/AgroBase/AgroBase/Forms/frmAcompanhamento.cs
+++ b/AgroBase/AgroBase/Forms/frmAcompanhamento.cs
@@ -69,24 +69,24 @@ namespace AgroBase.Forms
}
if (Variaveis.OperacaoEmAndamento.DispSen.Dados.Conectado)
{
- AtualizarDadosSensor("AB3V", lblB3V);
- AtualizarDadosSensor("AB5V", lblB5V);
- AtualizarDadosSensor("AB7V2", lblB7V2);
- AtualizarDadosSensor("AB12V", lblB12V);
+ AtualizarDadosSensorCorrente("AB3V", lblB3V);
+ AtualizarDadosSensorCorrente("AB5V", lblB5V);
+ AtualizarDadosSensorCorrente("AB7V2", lblB7V2);
+ AtualizarDadosSensorCorrente("AB12V", lblB12V);
}
}
- private void AtualizarDadosSensor(string id, Label lbl)
+ private void AtualizarDadosSensorCorrente(string id, Label lbl)
{
- var sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == id);
- double d0 = 0;
- double d1 = 0;
- if (sensor != null && sensor.Inicializado && sensor.Leituras != null && sensor.Leituras.Count() > 0)
+ var sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresCorrente.FirstOrDefault(x => x.ID == id);
+ if (sensor != null)
{
- d0 = sensor.Leituras?[0] ?? 0;
- d1 = sensor.Leituras?[1] ?? 0;
+ double d0 = (double)sensor.Current;
+ double d1 = sensor.BusVoltage;
+
+ lbl.Text = id.Replace("AB", "Barramento ") + ": " + d1.ToString("0.00") + " V " + d0.ToString("0.00") + " mA";
+ lbl.ForeColor = sensor.Iniciado ? Color.Green : Color.Red;
}
- lbl.Text = id.Replace("AB", "Barramento ") + ": " + d1.ToString("0.00") + " V " + d0.ToString("0.00") + " mA";
}
private void AtualzarDadosMovimentacao()
diff --git a/AgroBase/AgroBase/Forms/frmInstancial.cs b/AgroBase/AgroBase/Forms/frmInstancial.cs
index 670a29572..1940d6158 100644
--- a/AgroBase/AgroBase/Forms/frmInstancial.cs
+++ b/AgroBase/AgroBase/Forms/frmInstancial.cs
@@ -27,7 +27,7 @@ namespace AgroBase.Forms
public frmInstancial()
{
InitializeComponent();
- FilaService.IniciarRotinas();
+ //FilaService.IniciarRotinas();
//BLD300RService.IniciarRotinas();
//MKS057DService.IniciarRotinas();
//ModbusService.IniciarRotinas();
@@ -72,13 +72,13 @@ namespace AgroBase.Forms
control = frmIHM;
}
- tmrVarreduraDispositivos = new AsyncTaskTimerModel("tmrVarreduraDispositivos", tmrVarreduraDispositivos_Tick, SerialService.InteraloVerificacao, control);
+ tmrVarreduraDispositivos = new AsyncTaskTimerModel("tmrVarreduraDispositivos", tmrVarreduraDispositivos_Tick, SerialService.InteraloVerificacao, null, 15000);
tmrVarreduraDispositivos.Start();
}
private static async Task tmrVarreduraDispositivos_Tick()
{
- await FuncoesGlobais.SafeExecuteAsync(async () => await SerialService.RealizarVarreduraPortasUSB());
+ await SerialService.RealizarVarreduraPortasUSB();
}
private async void IniciarConexaoMqtt()
@@ -94,10 +94,7 @@ namespace AgroBase.Forms
foreach (var Disp in Variaveis.DispositivosConectados)
{
- if (Disp._Porta.IsOpen)
- {
- Disp.btnConectar_Click(new object(), new EventArgs());
- }
+ Disp.EnviarProtocolosConfiguracao(false);
Disp.SalvarParametros(Disp.Dados);
}
diff --git a/AgroBase/AgroBase/Forms/frmPrincipal.cs b/AgroBase/AgroBase/Forms/frmPrincipal.cs
index ca9d70a49..6ca55b076 100644
--- a/AgroBase/AgroBase/Forms/frmPrincipal.cs
+++ b/AgroBase/AgroBase/Forms/frmPrincipal.cs
@@ -120,21 +120,6 @@ namespace AgroBase
{
AtualizaDadosGerais();
- if (SerialService.DispositivosMapeados.Count == 0)
- {
- Variaveis.DispositivosConectados.Where(x => x.Dados.GetStatusConexao()).ToList().ForEach(x => x.AcaoDesconectar());
- }
- else
- {
- Variaveis.DispositivosConectados.ForEach(x =>
- {
- if (x.Dados.GetStatusConexao())
- {
- x.AcaoConexao();
- }
- });
- }
-
lblStripMqtt.Text = "MQTT: " + (Variaveis.MqttService.StatusConexao() ? "Conectado" : "Desconectado");
bool opLiberada = Variaveis.OperacaoEmAndamento.OperacaoLiberada;
@@ -144,30 +129,20 @@ namespace AgroBase
public void AtualizaDadosGerais()
{
- bool PrimeiraExecucao = !Variaveis.DispositivosConectados.Any();
-
- SerialService.DispositivosConexaoInicial.ForEach(Dispositivo =>
+ if (Variaveis.DispositivosConectados.Any() && pnlLateral.Controls.Count == 7)
{
- IDispositivosService dispositivoService = Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
- if (dispositivoService == null)
+ SerialService.DispositivosConexaoInicial.ForEach(Dispositivo =>
{
- dispositivoService = DispositivosServiceFactory.CreateDispositivoService(
- Dispositivo,
- "Nome: " + Enum.GetName(typeof(T_Code), Dispositivo),
- "Descrição: " + string.Join(", ", SerialService.DispositivosMapeados.Where(x => x.Dispositivo == Dispositivo).Select(x => x.Mod_ID).ToArray()),
- new SerialPort()
- );
- Variaveis.DispositivosConectados.Add(dispositivoService);
-
- Control controle = dispositivoService.InstanciarDispositivo(Variaveis.DispositivosConectados.Count - 1);
- controle.Location = new System.Drawing.Point(controle.Location.X, controle.Location.Y + (Variaveis.DispositivosConectados.Count * 50));
- pnlLateral.Controls.Add(controle);
- cmbDispositivos.Items.Add(dispositivoService._Descricao);
- }
- });
- if (PrimeiraExecucao)
- {
- Variaveis.OperacaoEmAndamento = OperacaoModel.CarregarParametrosOperacaoPadrao(ModoOperacao.Manual);
+ IDispositivosService dispositivoService = Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo);
+ if (dispositivoService != null)
+ {
+ int idx = SerialService.DispositivosConexaoInicial.IndexOf(dispositivoService.Dispositivo);
+ Control controle = dispositivoService.InstanciarDispositivo(idx);
+ controle.Location = new Point(controle.Location.X, controle.Location.Y + (idx * 50));
+ pnlLateral.Controls.Add(controle);
+ cmbDispositivos.Items.Add(dispositivoService._Descricao);
+ }
+ });
}
@@ -224,7 +199,7 @@ namespace AgroBase
private void cmbModoOperacao_SelectedIndexChanged(object sender, EventArgs e)
{
- Variaveis.OperacaoEmAndamento = OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModoOperacao.SelectedIndex);
+ OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModoOperacao.SelectedIndex);
}
private void btnIniciarOperacao_Click(object sender, EventArgs e)
diff --git a/AgroBase/AgroBase/Models/AsyncTaskTimerModel.cs b/AgroBase/AgroBase/Models/AsyncTaskTimerModel.cs
index b23a1b025..e97b07df2 100644
--- a/AgroBase/AgroBase/Models/AsyncTaskTimerModel.cs
+++ b/AgroBase/AgroBase/Models/AsyncTaskTimerModel.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
@@ -59,6 +60,8 @@ namespace AgroBase.Models
///
public TimeSpan TimeTick => endTask - beginTask;
+ private bool _Ticking = false;
+
private bool DebugMessages = true;
///
@@ -172,6 +175,21 @@ namespace AgroBase.Models
{
while (!cancellationToken.IsCancellationRequested)
{
+ lock (_timersLock)
+ {
+ if (Timers.Any(x => x.Id == "tmrVarreduraDispositivos" && !x.IsRunning))
+ {
+ Timers.First(x => x.Id == "tmrVarreduraDispositivos").Restart();
+ }
+ }
+
+ if (_Ticking)
+ {
+ return;
+ }
+
+ _Ticking = true;
+
beginTask = DateTime.Now;
try
@@ -197,6 +215,7 @@ namespace AgroBase.Models
{
// Timeout atingido
ExibirConsole($"TIMEOUT - tarefa excedeu {_timeout}ms");
+ //Restart();
}
endTask = DateTime.Now;
@@ -217,6 +236,7 @@ namespace AgroBase.Models
{
// Garante que o intervalo é respeitado entre execuções
await Task.Delay(_interval, cancellationToken);
+ _Ticking = false;
}
}
diff --git a/AgroBase/AgroBase/Models/CameraCaminhoModel.cs b/AgroBase/AgroBase/Models/CameraCaminhoModel.cs
index 8fb06ca1f..4bed48424 100644
--- a/AgroBase/AgroBase/Models/CameraCaminhoModel.cs
+++ b/AgroBase/AgroBase/Models/CameraCaminhoModel.cs
@@ -14,7 +14,6 @@ namespace AgroBase.Models
{
public class CameraCaminhoModel
{
- public AsyncTaskTimerModel tmrProcesso;
public AsyncTaskTimerModel tmrLeitura;
public Bitmap bitmapSegmentado;
@@ -47,7 +46,7 @@ namespace AgroBase.Models
public double AnguloDireito { get; set; }
public DateTime UltimoEnvio { get; set; } = DateTime.MinValue;
- private int DelayEnvio { get; set; } = 100;
+ private int DelayEnvio { get; set; } = 500;
public CameraCaminhoModel()
@@ -59,19 +58,7 @@ namespace AgroBase.Models
{
List timers = new List();
- lock (AsyncTaskTimerModel._timersLock)
- {
- timers = AsyncTaskTimerModel.Timers.Where(x => x.StackTrace.Contains("CameraCaminhoModel") && x.Id.Contains(ID)).ToList();
- }
-
- foreach (var timer in timers)
- {
- timer.Dispose();
- }
-
- tmrProcesso = new AsyncTaskTimerModel("tmrProcesso_" + ID, tmrProcesso_Tick, 500);
- tmrProcesso.Start();
-
+ tmrLeitura?.Dispose();
tmrLeitura = new AsyncTaskTimerModel("tmrLeitura_" + ID, tmrLeitura_Tick, 100);
tmrLeitura.Start();
}
@@ -81,7 +68,6 @@ namespace AgroBase.Models
try
{
tmrLeitura?.Dispose();
- tmrProcesso?.Dispose();
Iniciada = false;
Variaveis.MqttService.Topicos.Remove(camera._mqttTopico);
@@ -102,33 +88,6 @@ namespace AgroBase.Models
}
}
- private async Task tmrProcesso_Tick()
- {
- if (camera._mqttTopico != null)
- {
- var Mensagem = camera._mqttTopico.Mensagens.FirstOrDefault(y => y.Momento > camera.IniciadoEm && y.Mensagem == "OK");
- if (Mensagem != null)
- {
- camera.ProntoEm = Mensagem.Momento;
-
- if (browser == null)
- {
- Iniciada = true;
- if (panel != null)
- {
- panel.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(panel, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
- panel.BackgroundImageLayout = ImageLayout.Zoom;
- /*browser = new ChromiumWebBrowser(camera.URLcamera);
- panel.Controls.Add(browser);
- browser.Dock = DockStyle.Fill;*/
- }
- }
-
- tmrProcesso.Dispose();
- }
- }
- }
-
private async Task tmrLeitura_Tick()
{
if (Iniciada)
@@ -137,18 +96,19 @@ namespace AgroBase.Models
// Se ja passou 5 segundos sem ter enviado uma mensagem
if (UltimoEnvio.AddMilliseconds(5000) < Agora)
{
- Bitmap bitmap = null;
- lock (KinectService._lockBitmapRGB)
- {
- bitmap = (Bitmap)KinectService.bitmapRGB.Clone();
- }
- await EnviarBitmapParaProcessamento(bitmap);
+ await EnviarBitmapParaProcessamento();
}
}
}
- public async Task EnviarBitmapParaProcessamento(Bitmap bitmap)
+ public async Task EnviarBitmapParaProcessamento()
{
+ Bitmap bitmap = null;
+ lock (KinectService._lockBitmapRGB)
+ {
+ bitmap = (Bitmap)KinectService.bitmapRGB.Clone();
+ }
+
//Console.WriteLine("Enviando bitmap para segmentacao...");
// Converta o Bitmap para um array de bytes no formato JPEG
byte[] bitmapBytes;
@@ -158,13 +118,17 @@ namespace AgroBase.Models
bitmapBytes = ms.ToArray();
}
- // Publique o array de bytes via MQTT
- await Variaveis.MqttService.PublishAsync(
- Variaveis.MqttService.Topicos.First(x => x.Topico == CamerasVaraiveisModel.TopicoEnvioBitmap),
- bitmapBytes
- );
+ var topico = Variaveis.MqttService.Topicos.FirstOrDefault(x => x.Topico == CamerasVaraiveisModel.TopicoEnvioBitmap);
+ if (topico != null)
+ {
+ // Publique o array de bytes via MQTT
+ await Variaveis.MqttService.PublishAsync(
+ topico,
+ bitmapBytes
+ );
- UltimoEnvio = DateTime.Now;
+ UltimoEnvio = DateTime.Now;
+ }
}
public Bitmap ExtraiImagemDaMensagem(string message)
@@ -200,12 +164,7 @@ namespace AgroBase.Models
Task.Run(async () =>
{
await Task.Delay(DelayEnvio);
- Bitmap bitmapEnvio = null;
- lock (KinectService._lockBitmapRGB)
- {
- bitmapEnvio = (Bitmap)KinectService.bitmapRGB.Clone();
- }
- await EnviarBitmapParaProcessamento(bitmapEnvio);
+ await EnviarBitmapParaProcessamento();
});
}
diff --git a/AgroBase/AgroBase/Models/CameraModel.cs b/AgroBase/AgroBase/Models/CameraModel.cs
index 31db050b1..9fb479516 100644
--- a/AgroBase/AgroBase/Models/CameraModel.cs
+++ b/AgroBase/AgroBase/Models/CameraModel.cs
@@ -1,9 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Collections.Generic;
namespace AgroBase.Models
{
diff --git a/AgroBase/AgroBase/Models/CameraSoloModel.cs b/AgroBase/AgroBase/Models/CameraSoloModel.cs
index d3131682e..67fcad612 100644
--- a/AgroBase/AgroBase/Models/CameraSoloModel.cs
+++ b/AgroBase/AgroBase/Models/CameraSoloModel.cs
@@ -1,49 +1,17 @@
using AgroBase.Services;
using CefSharp.WinForms;
using System;
-using System.Linq;
-using System.Threading.Tasks;
using System.Windows.Forms;
namespace AgroBase.Models
{
public class CameraSoloModel
{
- public AsyncTaskTimerModel tmrProcesso;
-
public CameraSoloModel()
{
}
- public void IniciarRotinaProcesso()
- {
- tmrProcesso = new AsyncTaskTimerModel("tmrProcesso", tmrProcesso_Tick, 500);
- tmrProcesso.Start();
- }
-
- private async Task tmrProcesso_Tick()
- {
- if (camera._mqttTopico != null)
- {
- var Mensagem = camera._mqttTopico.Mensagens.FirstOrDefault(y => y.Momento > camera.IniciadoEm && y.Mensagem == "OK");
- if (Mensagem != null)
- {
- camera.ProntoEm = Mensagem.Momento;
-
- if (browser == null)
- {
- Iniciada = true;
- browser = new ChromiumWebBrowser(camera.URLcamera);
- panel.Controls.Add(browser);
- browser.Dock = DockStyle.Fill;
- }
-
- tmrProcesso.Dispose();
- }
- }
- }
-
public void DesligarCamera()
{
try
diff --git a/AgroBase/AgroBase/Models/DispositivosModel.cs b/AgroBase/AgroBase/Models/DispositivosModel.cs
new file mode 100644
index 000000000..6b1e18a7f
--- /dev/null
+++ b/AgroBase/AgroBase/Models/DispositivosModel.cs
@@ -0,0 +1,98 @@
+using AgroBase.Services;
+using System.Linq;
+using static AgroBase.Models.Enums;
+
+namespace AgroBase.Models
+{
+ public class DispositivosModel
+ {
+ }
+
+ public class DispositivoDetalhesModel
+ {
+ public string Endereco { get; set; }
+ public TipoConexao Tipo
+ {
+ get
+ {
+ if (Endereco.Contains("USB"))
+ {
+ return TipoConexao.USB;
+ }
+ else if (Endereco.Contains("COM"))
+ {
+ return TipoConexao.PortaCOM;
+ }
+ else if (Endereco.Contains("."))
+ {
+ return TipoConexao.Ethernet;
+ }
+ else
+ {
+ return TipoConexao.Desconhecido;
+ }
+ }
+ }
+ public T_Code Dispositivo { get; set; }
+ public bool Erro { get; set; }
+ public string Versao { get; set; }
+ public string Mod_ID { get; set; }
+ public bool Conectado
+ {
+ get
+ {
+ bool DispositivoConectado = false;
+
+ if (Dispositivo == T_Code.Gps)
+ {
+ DispositivoConectado = GPSService.Iniciado;
+ }
+ else if (Dispositivo == T_Code.Pzm)
+ {
+ DispositivoConectado = PZEMService.Iniciado;
+ }
+ else if (Dispositivo == T_Code.A05)
+ {
+ DispositivoConectado = UltrasonicA05Service.Iniciado;
+ }
+ else if (Dispositivo == T_Code.Lra)
+ {
+ DispositivoConectado = LoRaService.Iniciado;
+ }
+ else if (Dispositivo == T_Code.Wit)
+ {
+ DispositivoConectado = WT901CService.Iniciado;
+ }
+ else if (Dispositivo == T_Code.Knt)
+ {
+ DispositivoConectado = KinectService.Iniciado;
+ }
+ else if (Dispositivo == T_Code.Bld)
+ {
+ var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
+ DispositivoConectado = Modulo?.MovMotor?.BLD_Inicializado ?? false;
+ }
+ else if (Dispositivo == T_Code.Mks)
+ {
+ var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
+ DispositivoConectado = Modulo?.DirMotor?.MKS_Inicializado ?? false;
+ }
+ else
+ {
+ IDispositivosService dispositivoService = Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Dispositivo && x.Dados.GetIP() == Endereco);
+ if (dispositivoService != null)
+ {
+ return dispositivoService.Dados.GetStatusConexao();
+ }
+ else
+ {
+ DispositivoConectado = false;
+ }
+ }
+
+ return DispositivoConectado;
+ }
+ }
+ }
+
+}
diff --git a/AgroBase/AgroBase/Models/Enums.cs b/AgroBase/AgroBase/Models/Enums.cs
index 6392f1118..706419d0e 100644
--- a/AgroBase/AgroBase/Models/Enums.cs
+++ b/AgroBase/AgroBase/Models/Enums.cs
@@ -64,6 +64,7 @@ namespace AgroBase.Models
Cam = 112,
Knt = 113,
A05 = 114,
+ Mod = 115,
}
public enum F_Code
diff --git a/AgroBase/AgroBase/Models/GeneralJoystick.cs b/AgroBase/AgroBase/Models/GeneralJoystick.cs
index ea81bf5bb..c3c8bef60 100644
--- a/AgroBase/AgroBase/Models/GeneralJoystick.cs
+++ b/AgroBase/AgroBase/Models/GeneralJoystick.cs
@@ -64,7 +64,7 @@ namespace AgroBase
{
Func funcAtt = new Func(() =>
{
- DispCon = Variaveis.DispositivosConectados.Where(x => x._Porta.IsOpen).ToList();
+ DispCon = Variaveis.DispositivosConectados.Where(x => x.Dados.GetStatusConexao()).ToList();
frmInstancial.frmJoystick.lblDispositivo.Text = "Dispositivos: " + (DispCon.Count == 0 ? "N/A" : string.Join(", ", DispCon.Select(x => x._Descricao + " (" + Enum.GetName(typeof(T_Code), x.Dispositivo) + ")").ToArray()));
frmInstancial.frmPrincipal.cmbJoysticks.Items.Clear();
@@ -505,12 +505,6 @@ namespace AgroBase
Comando.IDcontrolar = ComandosDisp[ComandosDisp.Count - 1].IDcontrolar;
DirecaoAtual = Direcao.Parado;
Pressionado = true;
-
- var _disp = DispCon.FirstOrDefault(x => x.Dispositivo == Comando.Dispositivo);
- if (_disp != null)
- {
- _disp.LimparBufferSerial(true);
- }
}
}
// Controle de Velocidade (MOV RPM SP)
diff --git a/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs b/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs
index e10f3aa23..6452e09c6 100644
--- a/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/AtuadorModel.cs
@@ -1,4 +1,5 @@
using AgroBase.Services;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Drawing;
@@ -12,18 +13,9 @@ namespace AgroBase.Models.Modules
public class AtuadorModel : DispositivoBaseModel
{
public string Modulo_ID { get; set; } = T_Code.Atu.ToString();
+ public string IP { get; set; } = "192.168.105.13";
public bool RequisitarDados { get; set; } = false;
- private bool _MensagemConexaoRecebida { get; set; } = false;
- public bool MensagemConexaoRecebida(bool Reset = false)
- {
- if (Reset)
- {
- _MensagemConexaoRecebida = false;
- }
- return _MensagemConexaoRecebida;
- }
-
- public static int _TaxaAmostragem { get; set; } = 500;
+ public static int _TaxaAmostragem { get; set; } = 1000;
public bool Conectado { get; set; } = false;
public DateTime UltimoProtocoloRecebido { get; set; } = DateTime.MaxValue.AddDays(-1);
public static PinoutDataModel Pinout { get; set; }
@@ -36,11 +28,21 @@ namespace AgroBase.Models.Modules
public double DensidadeHerbicida { get; set; } = 1.1;
public bool AtuacaoNivelAlto { get; set; } = true;
public List BicosPulverizadores { get; set; } = new List();
- public AtuadorBombaModel BombaPressurizadora { get; set; } = new AtuadorBombaModel();
+ public List BombasPressurizadoras { get; set; } = new List();
public List Sensores { get; set; } = new List();
+ public AtuadorBombaModel BombaPressurizadora
+ {
+ get
+ {
+ return BombasPressurizadoras.FirstOrDefault();
+ }
+ }
public string ScriptDeteccaoErvas { get; set; } = PythonService.ScriptWeedDetector;
public AsyncTaskTimerModel tmrRegistrador;
+ private int _TempoReconexaoComponentes = 60;
+ private int _VezesLeituraReconexao = 0;
+ public AtuadorMensagemJsonModel DadosLeitura { get; set; } = new AtuadorMensagemJsonModel();
#region MASSA
public double _MassaRef { get; set; } = 0.8;
@@ -184,22 +186,24 @@ namespace AgroBase.Models.Modules
QuantidadeBicos = 10,
Conectado = false,
BicosPulverizadores = new List(),
- BombaPressurizadora = new AtuadorBombaModel()
+ BombasPressurizadoras = new List()
{
- ID = "BOMBA",
- Comandar = false,
- Ligado = false,
- Inicializado = false,
- Pressao = 0,
- //PressaoSP = 80,
- Testando = false,
- Funcoes = new List()
+ new AtuadorBombaModel()
{
- FuncoesPinout.ENA,
- FuncoesPinout.CS,
- FuncoesPinout.INA,
- FuncoesPinout.INB,
- FuncoesPinout.PWM,
+ ID = "BOMBA",
+ Componente = S_Code.sBMB,
+ Comandar = false,
+ Ligado = false,
+ Pressao = 0,
+ Testando = false,
+ Funcoes = new List()
+ {
+ FuncoesPinout.ENA,
+ FuncoesPinout.CS,
+ FuncoesPinout.INA,
+ FuncoesPinout.INB,
+ FuncoesPinout.PWM,
+ }
}
},
Sensores = new List()
@@ -211,7 +215,6 @@ namespace AgroBase.Models.Modules
Prioridade = 23,
Componente = S_Code.sFLX,
Aferir = false,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -228,7 +231,6 @@ namespace AgroBase.Models.Modules
Prioridade = 3,
Componente = S_Code.sMAS,
Aferir = false,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -246,7 +248,6 @@ namespace AgroBase.Models.Modules
Prioridade = 3,
Componente = S_Code.sPRS,
Aferir = false,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -268,6 +269,7 @@ namespace AgroBase.Models.Modules
Atuador.BicosPulverizadores.Add(new AtuadorBicoModel()
{
ID = "B" + (i + 1).ToString("00"),
+ Componente = S_Code.sBIC,
Posicao = i + 1,
Comandar = false,
Atuado = false,
@@ -285,18 +287,8 @@ namespace AgroBase.Models.Modules
public static void LimparDados(AtuadorModel Dados)
{
Dados.Conectado = false;
-
- Dados.BicosPulverizadores.ForEach(x =>
- {
- x.Inicializado = false;
- });
-
- Dados.Sensores.ForEach(x =>
- {
- x.Inicializado = false;
- });
-
- Dados.BombaPressurizadora.Inicializado = false;
+ Dados.DadosLeitura = new AtuadorMensagemJsonModel();
+ Dados.DadosLeitura.Momento = DateTime.MinValue;
ReiniciarLeituras(Dados);
}
@@ -305,6 +297,11 @@ namespace AgroBase.Models.Modules
{
Dados.PressaoLinha = 0;
+ Dados.Sensores.ForEach(x =>
+ {
+ x.Leitura = null;
+ });
+
Dados.BicosPulverizadores.ForEach(x =>
{
x.Atuado = false;
@@ -312,19 +309,18 @@ namespace AgroBase.Models.Modules
x.Atuacoes = 0;
x.TempoAtuado = 0;
x.InicioAtuacao = DateTime.MinValue;
+ x.Leitura = null;
});
- Dados.Sensores.ForEach(x =>
+ Dados.BombasPressurizadoras.ForEach(x =>
{
- x.Leituras = new List();
- x.ValorMinimo = 0;
- x.ValorMaximo = 0;
+ x.Leitura = null;
+ x.Pressao = 0;
+ x.BombaAtuada = false;
+ x.Ligado = false;
+ x.Potencia = 0;
});
- Dados.BombaPressurizadora.Pressao = 0;
- Dados.BombaPressurizadora.BombaAtuada = false;
- Dados.BombaPressurizadora.Ligado = false;
- Dados.BombaPressurizadora.Potencia = 0;
Dados.VolumeVazaoAferido = 0;
Dados.VolumeVazaoML = 0;
Dados.TempoAtuado = 0;
@@ -340,44 +336,90 @@ namespace AgroBase.Models.Modules
// Inicializar o dicionário
var configDictionary = new Dictionary>() { { Modulo_ID, new List() } };
- // Adicionar configurações dos Bicos Pulverizadores
- var bicosConfig = BicosPulverizadores.Where(x => x.Comandar).Select(x => x.ProtocoloConfiguracaoBico(Conectar)).ToList();
- configDictionary[Modulo_ID].AddRange(bicosConfig);
-
- // Adicionar configuração da Bomba Pressurizadora
- if (BombaPressurizadora.Comandar)
- {
- string bombaConfig = BombaPressurizadora.ProtocoloConfiguracaoBomba(Conectar);
- configDictionary[Modulo_ID].Add(bombaConfig);
- }
-
- // Adicionar configurações dos Sensores
- var sensoresConfig = Sensores.Where(x => x.Aferir).Select(x => x.ProtocoloConfiguracaoSensor(Pinout, Conectar)).ToList();
+ // Adicionar configurações dos Sensores que devem ser aferidos
+ var sensoresConfig = SensoresConfig(Conectar);
configDictionary[Modulo_ID].AddRange(sensoresConfig);
+ // Adicionar configurações dos Bicos Pulverizadores
+ var bicosConfig = BicosConfig(Conectar);
+ configDictionary[Modulo_ID].AddRange(bicosConfig);
+
+ // Adicionar configurações das Bombas Pressurizadoras
+ var bombasConfig = BombasConfig(Conectar);
+ configDictionary[Modulo_ID].AddRange(bombasConfig);
+
// Adicionar configuração do ProtocoloMOD
- string protocoloMOD =
- ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
- "MD" + SerialService.SplitParams +
- (Conectar ? "1" : "0") + SerialService.SplitParams +
- _TaxaAmostragem.ToString() + SerialService.SplitParams +
- (AtuacaoNivelAlto ? "1" : "0") + SerialService.SplitParams +
- (RequisitarDados ? "1" : "0");
-
+ var protocoloMOD = ModConfig(Conectar);
configDictionary[Modulo_ID].Add(protocoloMOD);
- configDictionary[Modulo_ID].Add(ProtocoloVerificacao(false));
-
return configDictionary;
}
-
+
+ private string ModConfig(bool Conectar)
+ {
+ string protocoloMOD =
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Mod).ToString() + SerialService.SplitParams +
+ (Conectar ? "1" : "0") + SerialService.SplitParams +
+ _TaxaAmostragem.ToString() + SerialService.SplitParams +
+ (RequisitarDados ? "1" : "0") + SerialService.SplitParams +
+ PinoutModel.PinoProtocolo(Pinout, Funcoes, SerialService.SplitParams);
+
+ return protocoloMOD;
+ }
+
+ private string[] SensoresConfig(bool Conectar)
+ {
+ var sensoresConfig = Sensores
+ .Where(x => x.Aferir && x.Inicializado != Conectar)
+ .GroupBy(x => x.Componente)
+ .Select(x =>
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Atu).ToString() + SerialService.SplitParams +
+ ((int)x.Key).ToString() + SerialService.SplitParams +
+ string.Join(SerialService.SplitConfig, x.Select(y => y.ProtocoloConfiguracao(Pinout, Conectar)))
+ ).ToArray();
+
+ return sensoresConfig;
+ }
+
+ private string[] BicosConfig(bool Conectar)
+ {
+ var relesConfig = BicosPulverizadores
+ .Where(x => x.Comandar && x.Inicializado != Conectar)
+ .GroupBy(x => x.Componente)
+ .Select(x =>
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Atu).ToString() + SerialService.SplitParams +
+ ((int)x.Key).ToString() + SerialService.SplitParams +
+ string.Join(SerialService.SplitConfig, x.Select(y => y.ProtocoloConfiguracao(Pinout, Conectar)))
+ ).ToArray();
+
+ return relesConfig;
+ }
+
+ private string[] BombasConfig(bool Conectar)
+ {
+ var servosConfig = BombasPressurizadoras
+ .Where(x => x.Comandar && x.Inicializado != Conectar)
+ .GroupBy(x => x.Componente)
+ .Select(x =>
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Atu).ToString() + SerialService.SplitParams +
+ ((int)x.Key).ToString() + SerialService.SplitParams +
+ string.Join(SerialService.SplitConfig, x.Select(y => y.ProtocoloConfiguracao(Pinout, Conectar)))
+ ).ToArray();
+
+ return servosConfig;
+ }
+
public string ProtocoloVerificacao(bool Completo)
{
if (Completo)
{
string ProtocoloCheck =
- SerialService.BeginLine +
- 0 + SerialService.SplitMessage +
+ //SerialService.BeginLine +
+ "0" + SerialService.SplitMessage +
Modulo_ID + SerialService.SplitMessage +
((int)F_Code.Chk).ToString() + SerialService.SplitMessage +
"check" +
@@ -387,278 +429,66 @@ namespace AgroBase.Models.Modules
}
else
{
- string ProtocoloCheck =
- ((int)F_Code.Chk).ToString() + SerialService.SplitMessage +
- "check";
+ string ProtocoloCheck = ((int)F_Code.Chk).ToString() + SerialService.SplitMessage + "check";
return ProtocoloCheck;
}
}
- public void RecebeProtocoloSerial(string Protocolo)
+ private string ProtocoloAquisicaoDados()
{
- UltimoProtocoloRecebido = DateTime.Now;
+ string ProtocoloReq = ((int)F_Code.Req).ToString() + SerialService.SplitMessage + "req";
+ return ProtocoloReq;
+ }
- string Mod_ID = Protocolo.Split(SerialService.SplitMessage[0])[0];
- string mensagem = Protocolo.Substring(Mod_ID.Length + 1, Protocolo.Length - Mod_ID.Length - 1);
- if (!string.IsNullOrEmpty(Protocolo) && mensagem[0].ToString() == SerialService.BeginSensor)
+ public void RecebeProtocoloModulo(string Protocolo)
+ {
+ try
{
- string[] Dados = mensagem.Replace(SerialService.BeginSensor, "").Split(SerialService.EndLine[0])[0].Split(';');
- string _id = Dados[1].Trim();
- S_Code TipoSensor = (S_Code)(int.Parse(Dados[0]));
- /*AtuadorBicoModel Bico = BicosPulverizadores.FirstOrDefault(x => x.ID.Trim() == _id);
- SensorModel Sensor = Sensores.FirstOrDefault(x => x.ID.Trim() == _id);
- AtuadorBombaModel Bomba = _id == BombaPressurizadora.ID.Trim() ? BombaPressurizadora : null;
- if (Bico == null && Sensor == null && Bomba == null)
+ if (string.IsNullOrWhiteSpace(Protocolo))
{
- if (_id == "MD")
- {
- Conectado = Dados[2] == "1";
- _MensagemConexaoRecebida = true;
- }
+ Console.WriteLine("Protocolo recebido está vazio ou nulo.");
return;
- }*/
- try
- {
- switch (TipoSensor)
- {
- /*case S_Code.sCFG:
- {
- bool Inicializado = Dados[2] == "1";
- if (Bico != null)
- {
- Bico.Inicializado = Inicializado;
- }
- if (Sensor != null)
- {
- Sensor.Inicializado = Inicializado;
- }
- if (Bomba != null)
- {
- Bomba.Inicializado = Inicializado;
- }
- break;
- }
- case S_Code.sTST:
- {
- bool Testando = Dados[1] == "1";
- if (Bico != null)
- {
- Bico.Testando = Testando;
- }
- if (Sensor != null)
- {
- Sensor.Testando = Testando;
- }
- break;
- }
- case S_Code.sBIC:
- {
- bool StatusBico = Dados[2] == "1";
- Bico.StatusBico = StatusBico;
- break;
- }
- case S_Code.sFLX:
- {
- int pulsos = 0;
- int.TryParse(Dados[2].Replace(".", ","), out pulsos);
- int tempo = 0;
- int.TryParse(Dados[3].Replace(".", ","), out tempo);
-
- _LeituraPulsos = pulsos;
- _LeituraPeriodo = tempo;
-
- if (VazaoFluxoMLpS > 0)
- {
- foreach (var bico in BicosPulverizadores.Where(x => x.Atuado))
- {
- bico.MediaNivelFluxo = VazaoFluxoMLpS / BicosPulverizadores.Count(y => y.Atuado);
- };
-
- double periodoAtual = Sensor.Leituras.Any() ? (double)_LeituraPeriodo - Sensor.Leituras[1] : (double)_LeituraPeriodo;
- VolumeVazaoML += (VazaoFluxoMLpS) * (periodoAtual / 1000);
-
- Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.HerbicidaConsumido = (VolumeVazaoML / 1000);
- }
-
- Sensor.Leituras = new List()
- {
- pulsos,
- tempo
- };
- break;
- }
- case S_Code.sMAS:
- {
- double massa = 0;
- double.TryParse(Dados[2].Replace(".", ","), out massa);
- _MassaLeitura = massa;
-
- Sensor.Leituras = new List()
- {
- massa
- };
- break;
- }
- case S_Code.sPRS:
- {
- double pressao = 0;
- double.TryParse(Dados[2].Replace(".", ","), out pressao);
- double leitura = 0;
- double.TryParse(Dados[3].Replace(".", ","), out leitura);
-
- PressaoLinha = pressao;
- _LeituraPressao = leitura;
-
- BombaPressurizadora.Pressao = PressaoLinha;
-
- Sensor.Leituras = new List()
- {
- pressao,
- };
- break;
- }
- case S_Code.sBMB:
- {
- bool Ligado = Dados[2] == "1";
- Bomba.Ligado = Ligado;
- double potencia = 0;
- double.TryParse(Dados[3].Replace(".", ","), out potencia);
- Bomba.Potencia = potencia;
- break;
- }
- */
- case S_Code.sATU:
- {
- #region BICOS
-
- BicosPulverizadores.FirstOrDefault(x => x.ID.Contains("1")).Inicializado = Dados[2] == "1";
- BicosPulverizadores.FirstOrDefault(x => x.ID.Contains("1")).StatusBico = Dados[3] == "1";
-
- BicosPulverizadores.FirstOrDefault(x => x.ID.Contains("2")).Inicializado = Dados[4] == "1";
- BicosPulverizadores.FirstOrDefault(x => x.ID.Contains("2")).StatusBico = Dados[5] == "1";
-
- BicosPulverizadores.FirstOrDefault(x => x.ID.Contains("3")).Inicializado = Dados[6] == "1";
- BicosPulverizadores.FirstOrDefault(x => x.ID.Contains("3")).StatusBico = Dados[7] == "1";
-
- BicosPulverizadores.FirstOrDefault(x => x.ID.Contains("4")).Inicializado = Dados[8] == "1";
- BicosPulverizadores.FirstOrDefault(x => x.ID.Contains("4")).StatusBico = Dados[9] == "1";
-
- #endregion
-
- #region BOMBA
-
- BombaPressurizadora.Inicializado = Dados[10] == "1";
- BombaPressurizadora.Ligado = Dados[11] == "1";
- double.TryParse(Dados[12], out double p);
- BombaPressurizadora.Potencia = p;
-
- #endregion
-
- #region FLUXO
-
- var SenFlx = Sensores.FirstOrDefault(x => x.Componente == S_Code.sFLX);
- if (SenFlx != null)
- {
- SenFlx.Inicializado = Dados[13] == "1";
- int.TryParse(Dados[14].Replace(".", ","), out int pulsos);
- int.TryParse(Dados[15].Replace(".", ","), out int tempo);
- _LeituraPulsos = pulsos;
- _LeituraPeriodo = tempo;
-
- if (VazaoFluxoMLpS > 0)
- {
- foreach (var bico in BicosPulverizadores.Where(x => x.Atuado))
- {
- bico.MediaNivelFluxo = VazaoFluxoMLpS / BicosPulverizadores.Count(y => y.Atuado);
- };
-
- double periodoAtual = SenFlx.Leituras.Any() ? (double)_LeituraPeriodo - SenFlx.Leituras[1] : (double)_LeituraPeriodo;
- VolumeVazaoML += (VazaoFluxoMLpS) * (periodoAtual / 1000);
-
- Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.HerbicidaConsumido = (VolumeVazaoML / 1000);
- }
- SenFlx.Leituras = new List()
- {
- pulsos,
- tempo
- };
-
- DefineLimitesSensor(SenFlx);
- }
-
- #endregion
-
- #region MASSA
-
- var SenMas = Sensores.FirstOrDefault(x => x.Componente == S_Code.sMAS);
- if (SenMas != null)
- {
- SenMas.Inicializado = Dados[16] == "1";
- double.TryParse(Dados[17].Replace(".", ","), out double massa);
- _MassaLeitura = massa;
-
- SenMas.Leituras = new List()
- {
- massa
- };
- }
-
- DefineLimitesSensor(SenMas);
-
- #endregion
-
- #region PRSSAO
-
- var SenPrs = Sensores.FirstOrDefault(x => x.Componente == S_Code.sPRS);
- if (SenPrs != null)
- {
- SenPrs.Inicializado = Dados[18] == "1";
- double.TryParse(Dados[19].Replace(".", ","), out double pressao);
- double.TryParse(Dados[20].Replace(".", ","), out double leitura);
-
- PressaoLinha = pressao;
- _LeituraPressao = leitura;
-
- BombaPressurizadora.Pressao = PressaoLinha;
-
- SenPrs.Leituras = new List()
- {
- pressao,
- };
-
- DefineLimitesSensor(SenPrs);
- }
-
- #endregion
-
- break;
- }
-
- }
-
- /*if (Sensor != null)
- {
- DefineLimitesSensor(Sensor);
- }*/
}
- catch (Exception ex)
+
+ Protocolo = Protocolo.Substring(0, Protocolo.Length - 1);
+
+ // Valida se o protocolo possui um formato esperado
+ if (Protocolo.Length <= 1 || !Protocolo.EndsWith("}"))
{
- Console.WriteLine(ex.Message);
+ Console.WriteLine("Protocolo recebido está em um formato inválido.");
+ return;
}
+
+ //Console.WriteLine($"JSON recebido: {Protocolo}");
+
+ // Tenta desserializar o JSON
+ var dadosLeitura = JsonConvert.DeserializeObject(Protocolo);
+ if (dadosLeitura == null)
+ {
+ Console.WriteLine("Falha ao desserializar o JSON.");
+ return;
+ }
+
+ dadosLeitura.Momento = DateTime.Now;
+
+ AtualizaDadosComponentes(dadosLeitura);
+ }
+ catch (JsonException ex)
+ {
+ Console.WriteLine($"Erro ao processar o JSON recebido: {ex.Message}");
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Erro inesperado no processamento do protocolo: {ex.Message}");
}
}
- private void DefineLimitesSensor(SensorModel Sensor)
+ private void AtualizaDadosComponentes(AtuadorMensagemJsonModel dadosLeitura)
{
- if (Sensor.Leituras[0] > Sensor.ValorMaximo)
- {
- Sensor.ValorMaximo = Sensor.Leituras[0];
- }
- else if (Sensor.Leituras[0] < Sensor.ValorMinimo)
- {
- Sensor.ValorMinimo = Sensor.Leituras[0];
- }
+ DadosLeitura = dadosLeitura;
+
+ DefineStatusConexao(Modulo_ID, true);
}
public void DefineStatusConexao(string Mod_ID, bool conecatdo)
@@ -666,11 +496,11 @@ namespace AgroBase.Models.Modules
if (Mod_ID == Modulo_ID)
{
Conectado = conecatdo;
-
- Variaveis.OperacaoEmAndamento.DispAtu.AcaoConexao();
}
}
+
+
public string GetTaxaAmostragem()
{
return _TaxaAmostragem.ToString("00000");
@@ -685,10 +515,15 @@ namespace AgroBase.Models.Modules
{
return Conectado;
}
+
+ public string GetIP()
+ {
+ return IP;
+ }
public void IniciarRegistrador()
{
- if (!tmrRegistrador?.IsRunning ?? false)
+ if (!(tmrRegistrador?.IsRunning ?? false))
{
LimparDados(this);
@@ -708,18 +543,45 @@ namespace AgroBase.Models.Modules
{
tmrRegistrador.SetInterval(_TaxaAmostragem);
+ bool _conectado = DadosLeitura.Conectado && DadosLeitura.Momento.AddMilliseconds(10 * _TaxaAmostragem) >= DateTime.Now;
+ DefineStatusConexao(Modulo_ID, _conectado);
- Conectado = UltimoProtocoloRecebido.AddMilliseconds(10 * _TaxaAmostragem) >= DateTime.Now;
+
+ if (SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Atu) && (_VezesLeituraReconexao >= _TempoReconexaoComponentes || !Conectado))
+ {
+ Variaveis.OperacaoEmAndamento.DispAtu?.EnviarProtocolosConfiguracao();
+
+ _VezesLeituraReconexao = 0;
+ }
+ else
+ {
+ _VezesLeituraReconexao++;
+ }
+
+
+ if (Conectado && RequisitarDados)
+ {
+ RequisitarDadosModulo();
+ }
}
+ public void RequisitarDadosModulo()
+ {
+ if (Variaveis.OperacaoEmAndamento.DispAtu != null)
+ {
+ string ProtocoloAquisicao = ProtocoloAquisicaoDados();
+ Variaveis.OperacaoEmAndamento.DispAtu.AdicionarMensagemFila(Modulo_ID, ProtocoloAquisicao, true, false);
+ }
+ }
+
+
public (bool, List) StatusModulosATU()
{
var Bicos = BicosPulverizadores.Where(x => x.Comandar).ToList();
var BicosComFalha = Bicos.Where(x => !x.Inicializado).ToList();
bool _bicosOperantes = !BicosComFalha.Any();
- bool _bombaOperante = BombaPressurizadora.Inicializado;
-
+ var _bomba = BombaPressurizadora;
var _sensorFluxo = Sensores.FirstOrDefault(x => x.Componente == S_Code.sFLX);
bool _sensorFluxoOperante = (!_sensorFluxo?.Aferir ?? false) || ((_sensorFluxo?.Aferir ?? false) && (_sensorFluxo?.Inicializado ?? false));
var _sensorMassa = Sensores.FirstOrDefault(x => x.Componente == S_Code.sMAS);
@@ -729,9 +591,11 @@ namespace AgroBase.Models.Modules
List ModsComFalha = BicosComFalha.Select(x => x.ID).ToList();
+ bool _bombaOperante = _bomba?.Inicializado ?? false;
+
if (!_bombaOperante)
{
- ModsComFalha.Add(BombaPressurizadora.ID);
+ ModsComFalha.Add(_bomba?.ID);
}
if (!_sensorFluxoOperante)
{
@@ -757,6 +621,8 @@ namespace AgroBase.Models.Modules
{
public string ID { get; set; }
public int Posicao { get; set; }
+ public S_Code Componente { get; set; } = S_Code.sBIC;
+ public bool AtuacaoNivelAlto { get; set; }
private bool _atuado;
public bool Atuado
{
@@ -772,56 +638,59 @@ namespace AgroBase.Models.Modules
}
}
public bool Comandar { get; set; }
- public bool Inicializado { get; set; }
public bool Testando { get; set; }
public List Funcoes { get; set; }
public bool StatusBico { get; set; }
public double MediaNivelFluxo { get; set; }
+ private FirmwareRele _leitura = null;
+ public FirmwareRele Leitura
+ {
+ get
+ {
+ _leitura = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.DadosLeitura?.BicosPulverizadores?.FirstOrDefault(x => x.ID == ID);
+ return _leitura;
+ }
+ set
+ {
+ _leitura = value;
+ }
+ }
+ public bool Inicializado
+ {
+ get
+ {
+ return Leitura?.Iniciado ?? false;
+ }
+ }
- public string ProtocoloConfiguracaoBico(bool Conectar)
+ public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
{
var _pinout = new PinoutDataModel()
{
- ExpansorGPIO = AtuadorModel.Pinout.ExpansorGPIO,
- EnderecoExpansor = AtuadorModel.Pinout.EnderecoExpansor,
- Pinos = AtuadorModel.Pinout.Pinos.ToList(),
+ ExpansorGPIO = Pinout.ExpansorGPIO,
+ EnderecoExpansor = Pinout.EnderecoExpansor,
+ Pinos = Pinout.Pinos.ToList(),
};
_pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
- string Protocolo = ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
- ID + SerialService.SplitParams +
- (Conectar ? "1" : "0") + SerialService.SplitParams +
- (Comandar ? "1" : "0") + SerialService.SplitParams +
- Posicao.ToString() + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ string Protocolo =
+ ID + SerialService.SplitSubParams +
+ (Conectar ? "1" : "0") + SerialService.SplitSubParams +
+ (AtuacaoNivelAlto ? "1" : "0") + SerialService.SplitSubParams +
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitSubParams);
return Protocolo;
}
public string ProtocoloComando()
{
- if (Comandar)
- {
- string ProtocoloBico =
- ((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
+ string ProtocoloRele =
+ ((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
ID + SerialService.SplitParams +
- (Atuado ? "1" : "0");
+ ((int)Componente) + SerialService.SplitParams +
+ (int)(StatusBico ? Estado.Ligado : Estado.Desligado);
- return ProtocoloBico;
- }
- return "";
- }
-
- public string ProtocoloTeste()
- {
- if (Comandar)
- {
- string ProtocoloBico =
- ((int)F_Code.Tst).ToString() + SerialService.SplitMessage +
- ID;
- return ProtocoloBico;
- }
- return "";
+ return ProtocoloRele;
}
@@ -863,7 +732,6 @@ namespace AgroBase.Models.Modules
Posicao = this.Posicao,
Atuado = this.Atuado,
Comandar = this.Comandar,
- Inicializado = this.Inicializado,
Testando = this.Testando,
Funcoes = this.Funcoes,
StatusBico = this.StatusBico,
@@ -878,61 +746,66 @@ namespace AgroBase.Models.Modules
{
public string ID { get; set; }
public bool BombaAtuada { get; set; }
+ public S_Code Componente { get; set; } = S_Code.sBMB;
public bool Ligado { get; set; }
public bool Comandar { get; set; }
- public bool Inicializado { get; set; }
public bool Testando { get; set; }
public List Funcoes { get; set; } = new List();
//public double PressaoSP { get; set; }
public double Pressao { get; set; }
public double Potencia { get; set; }
+ private FirmwareBombaPressurizadora _leitura = null;
+ public FirmwareBombaPressurizadora Leitura
+ {
+ get
+ {
+ _leitura = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.DadosLeitura?.BombasPressurizadoras?.FirstOrDefault(x => x.ID == ID);
+ return _leitura;
+ }
+ set
+ {
+ _leitura = value;
+ }
+ }
+ public bool Inicializado
+ {
+ get
+ {
+ return Leitura?.Iniciado ?? false;
+ }
+ }
- public string ProtocoloConfiguracaoBomba(bool Conectar)
+
+
+ public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
{
var _pinout = new PinoutDataModel()
{
- ExpansorGPIO = AtuadorModel.Pinout.ExpansorGPIO,
- EnderecoExpansor = AtuadorModel.Pinout.EnderecoExpansor,
- Pinos = AtuadorModel.Pinout.Pinos.ToList(),
+ ExpansorGPIO = Pinout.ExpansorGPIO,
+ EnderecoExpansor = Pinout.EnderecoExpansor,
+ Pinos = Pinout.Pinos.ToList(),
};
_pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
string Protocolo = ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
ID + SerialService.SplitParams +
(Conectar ? "1" : "0") + SerialService.SplitParams +
- (Comandar ? "1" : "0") + SerialService.SplitParams +
- //PressaoSP.ToString("000") + SerialService.SplitParams +
Variaveis.OperacaoEmAndamento.Controle.PressaoLinha.ToString() + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitParams);
return Protocolo;
}
public string ProtocoloComando()
{
- if (Comandar)
- {
- string ProtocoloBomba =
- ((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
- ID.PadRight(5, ' ') + SerialService.SplitParams +
- (BombaAtuada ? "1" : "0") + SerialService.SplitParams +
- //PressaoSP.ToString();
- Variaveis.OperacaoEmAndamento.Controle.PressaoLinha.ToString();
- return ProtocoloBomba;
- }
- return "";
- }
+ string ProtocoloBomba =
+ ((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
+ ID + SerialService.SplitParams +
+ ((int)Componente) + SerialService.SplitParams +
+ (int)(BombaAtuada ? Estado.Ligado : Estado.Desligado) + SerialService.SplitParams +
+ Variaveis.OperacaoEmAndamento.Controle.PressaoLinha;
- public string ProtocoloTeste()
- {
- if (Comandar)
- {
- string ProtocoloBomba =
- ((int)F_Code.Tst).ToString() + SerialService.SplitMessage +
- ID;
- return ProtocoloBomba;
- }
- return "";
+ return ProtocoloBomba;
}
@@ -943,7 +816,6 @@ namespace AgroBase.Models.Modules
ID = this.ID,
Ligado = this.Ligado,
Comandar = this.Comandar,
- Inicializado = this.Inicializado,
Testando = this.Testando,
Funcoes = this.Funcoes,
Pressao = this.Pressao,
@@ -1122,4 +994,31 @@ namespace AgroBase.Models.Modules
}
}
+
+
+
+
+
+ public class FirmwareBombaPressurizadora
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ public Estado Estado { get; set; }
+ public double Potencia { get; set; }
+ public double Pressao { get; set; }
+ }
+
+ public class AtuadorMensagemJsonModel
+ {
+ public bool Conectado { get; set; }
+ public string Mod_ID { get; set; }
+ public DateTime Momento { get; set; }
+ public List BicosPulverizadores { get; set; } = new List();
+ public List BombasPressurizadoras { get; set; } = new List();
+ public List SensoresFluxo { get; set; } = new List();
+ public List SensoresMassa { get; set; } = new List();
+ public List SensoresPressao { get; set; } = new List();
+ }
+
+
}
diff --git a/AgroBase/AgroBase/Models/Modules/DispositivoBaseModel.cs b/AgroBase/AgroBase/Models/Modules/DispositivoBaseModel.cs
index f69a7b3b4..16995d34e 100644
--- a/AgroBase/AgroBase/Models/Modules/DispositivoBaseModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/DispositivoBaseModel.cs
@@ -4,14 +4,16 @@ namespace AgroBase.Models
{
public interface DispositivoBaseModel
{
- void RecebeProtocoloSerial(string Protocolo);
+ void RecebeProtocoloModulo(string Protocolo);
void DefineStatusConexao(string Mod_ID, bool conectado);
string GetTaxaAmostragem();
void SetTaxaAmostragem(int TaxaAmostragem);
bool GetStatusConexao();
Dictionary> ProtocoloConfiguracao(bool Conectar);
+ string ProtocoloVerificacao(bool completo);
void IniciarRegistrador();
void PararRegistrador();
+ string GetIP();
}
}
diff --git a/AgroBase/AgroBase/Models/Modules/MovimentacaoUnificadoModel.cs b/AgroBase/AgroBase/Models/Modules/MovimentacaoUnificadoModel.cs
index 7886a9ed2..145c1ad9b 100644
--- a/AgroBase/AgroBase/Models/Modules/MovimentacaoUnificadoModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/MovimentacaoUnificadoModel.cs
@@ -162,7 +162,12 @@ namespace AgroBase.Models.Modules
return Config;
}
- public void RecebeProtocoloSerial(string Protocolo)
+ public string ProtocoloVerificacao(bool Completo)
+ {
+ return "";
+ }
+
+ public void RecebeProtocoloModulo(string Protocolo)
{
string Mod_ID = Protocolo.Split(SerialService.SplitMessage[0])[0];
string mensagem = Protocolo.Substring(Mod_ID.Length + 1, Protocolo.Length - Mod_ID.Length - 1);
@@ -353,8 +358,6 @@ namespace AgroBase.Models.Modules
if (Modulo != null)
{
//Modulo.Conectado = conecatdo;
-
- Variaveis.OperacaoEmAndamento.DispMvd.AcaoConexao();
}
}
@@ -373,9 +376,14 @@ namespace AgroBase.Models.Modules
return Conectado;
}
+ public string GetIP()
+ {
+ return IP_Bld;
+ }
+
public void IniciarRegistrador()
{
- if (!tmrRegistrador?.IsRunning ?? false)
+ if (!(tmrRegistrador?.IsRunning ?? false))
{
LimparDados(this);
@@ -536,7 +544,7 @@ namespace AgroBase.Models.Modules
(Conectar ? "1" : "0") + SerialService.SplitParams +
MovimentacaoUnificadaModel._TaxaAmostragem.ToString() + SerialService.SplitParams +
(RequisitarDados ? "1" : "0") + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitParams);
if (Conectar)
{
@@ -596,40 +604,45 @@ namespace AgroBase.Models.Modules
}
- public void AtualizarSensoresMotor(SensorModel Sensor)
+ public void AtualizarSensoresMotor()
{
- bool Computar = true;
- double leitura0 = Sensor.Leituras.Count() > 0 ? Sensor.Leituras[0] : 0;
- switch (Sensor.Componente)
+ var sensorTmp = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresTemperatura.FirstOrDefault(x => x.ID.Contains(Modulo_ID));
+ if (sensorTmp != null)
{
- case S_Code.sTMP:
- MovMotor.Temperatura = leitura0;
- break;
- case S_Code.sCOR:
- MovMotor.Corrente = Sensor.Leituras[0];
- MovMotor.Tensao = Sensor.Leituras[1];
- break;
- default:
- Computar = false;
- break;
+ MovMotor.Temperatura = sensorTmp.Temperatura;
+
+ AlarmeModel _Alarme = new AlarmeModel()
+ {
+ Tipo = S_Code.sTMP,
+ Valor = sensorTmp.Temperatura,
+ Maximo = sensorTmp.Temperatura > sensorTmp.LimiteMaximo,
+ Minimo = sensorTmp.Temperatura < sensorTmp.LimiteMinimo,
+ ParaMaximo = false,
+ ParaMinimo = false
+ };
+ VerificarAlarme(_Alarme);
}
-
-
- if (!Computar)
+ var sensorCor = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura.SensoresCorrente.FirstOrDefault(x => x.ID.Contains(Modulo_ID));
+ if (sensorCor != null)
{
- return;
+ MovMotor.Corrente = (double)sensorCor.Current;
+ MovMotor.Tensao = sensorCor.BusVoltage;
+
+ AlarmeModel _Alarme = new AlarmeModel()
+ {
+ Tipo = S_Code.sCOR,
+ Valor = (double)sensorCor.Current,
+ Maximo = (double)sensorCor.Current > sensorCor.LimiteMaximo,
+ Minimo = (double)sensorCor.Current < sensorCor.LimiteMinimo,
+ ParaMaximo = false,
+ ParaMinimo = false
+ };
+ VerificarAlarme(_Alarme);
}
+ }
- AlarmeModel _Alarme = new AlarmeModel()
- {
- Tipo = Sensor.Componente,
- Valor = leitura0,
- Maximo = leitura0 > Sensor.LimiteMaximo,
- Minimo = leitura0 < Sensor.LimiteMinimo,
- ParaMaximo = false,
- ParaMinimo = false
- };
-
+ private void VerificarAlarme(AlarmeModel _Alarme)
+ {
bool Adicionado = false;
var Alm = MovMotor.Alarmes.FirstOrDefault(x => x.Tipo == _Alarme.Tipo);
if (Alm == null)
@@ -843,7 +856,7 @@ namespace AgroBase.Models.Modules
NumeroPolos + SerialService.SplitParams +
Rampa + SerialService.SplitParams +
Variaveis.OperacaoEmAndamento.DispMvd.Dados.RPM_Max_MotorBLDC + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitParams);
return Protocolo;
}
@@ -1124,7 +1137,7 @@ namespace AgroBase.Models.Modules
(Conectar ? "1" : "0") + SerialService.SplitParams +
//(Estabilizar ? "1" : "0") + SerialService.SplitParams +
Angulo_Offset.ToString() + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitParams);
return Protocolo;
}
diff --git a/AgroBase/AgroBase/Models/Modules/PinoutModel.cs b/AgroBase/AgroBase/Models/Modules/PinoutModel.cs
index 8736867a6..041b59799 100644
--- a/AgroBase/AgroBase/Models/Modules/PinoutModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/PinoutModel.cs
@@ -285,7 +285,7 @@ namespace AgroBase.Models.Modules
File.WriteAllText(nomeArquivo, JsonConvert.SerializeObject(newPinout));
}
- public static string PinoProtocolo(PinoutDataModel _pinout, List _funcoes)
+ public static string PinoProtocolo(PinoutDataModel _pinout, List _funcoes, string splitparms)
{
string Pinos = "";
int i = 0;
@@ -293,22 +293,23 @@ namespace AgroBase.Models.Modules
{
if (i > 0)
{
- Pinos += SerialService.SplitParams;
+ Pinos += splitparms;
}
var pino = _pinout.Pinos.FirstOrDefault(x => x.Funcao == funcao);
if (pino != null && (pino.Barramento == TiposBarramentos.CONTROLADOR || (pino.Barramento == TiposBarramentos.EXPANSORI2C && _pinout.ExpansorGPIO)))
{
- Pinos += ((int)pino.Barramento).ToString() + SerialService.SplitParams + pino.Pino.ToString();
+ Pinos += ((int)pino.Barramento).ToString() + splitparms + pino.Pino.ToString();
}
else
{
- Pinos += ((int)TiposBarramentos.CONTROLADOR).ToString() + SerialService.SplitParams + "-1";
+ Pinos += ((int)TiposBarramentos.CONTROLADOR).ToString() + splitparms + "-1";
}
i++;
}
return Pinos;
}
+
}
public enum TiposControladores
diff --git a/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs b/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs
index 0807b9feb..608f2480f 100644
--- a/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs
+++ b/AgroBase/AgroBase/Models/Modules/SensoriamentoModel.cs
@@ -1,9 +1,9 @@
using AgroBase.Services;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
-using System.Windows.Forms;
using static AgroBase.Models.Enums;
namespace AgroBase.Models.Modules
@@ -11,6 +11,7 @@ namespace AgroBase.Models.Modules
public class SensoriamentoModel : DispositivoBaseModel
{
public string Modulo_ID { get; set; } = T_Code.Sen.ToString();
+ public string IP { get; set; } = "192.168.105.12";
public bool RequisitarDados { get; set; } = false;
private bool _MensagemConexaoRecebida { get; set; } = false;
public bool MensagemConexaoRecebida(bool Reset = false)
@@ -22,9 +23,8 @@ namespace AgroBase.Models.Modules
return _MensagemConexaoRecebida;
}
- public static int _TaxaAmostragem { get; set; } = 500;
+ public static int _TaxaAmostragem { get; set; } = 1000;
public bool Conectado { get; set; } = false;
- public DateTime UltimoProtocoloRecebido { get; set; } = DateTime.MaxValue.AddDays(-1);
public static int LogsManter { get; set; } = 60;
public static PinoutDataModel Pinout { get; set; }
public static bool ExpansorGPIO { get; set; } = false;
@@ -41,6 +41,7 @@ namespace AgroBase.Models.Modules
public List CameraID_Solo { get; set; } = new List();
public UltrasonicA05Configuracoes ConfiguracaoSensorUltrassom { get; set; }
public double BateriaCargaConsumida { get; set; }
+ public SensoriamentoMensagemJsonModel DadosLeitura { get; set; } = new SensoriamentoMensagemJsonModel();
public LoRaParametrosModel LoRaParametrosBase { get; set; } = new LoRaParametrosModel()
{
address = 0x01,
@@ -54,6 +55,8 @@ namespace AgroBase.Models.Modules
};
public AsyncTaskTimerModel tmrRegistrador;
+ private int _TempoReconexaoComponentes = 60;
+ private int _VezesLeituraReconexao = 0;
public static SensoriamentoModel CarregarParametrosIniciais()
{
@@ -110,7 +113,6 @@ namespace AgroBase.Models.Modules
Prioridade = 0,
Componente = S_Code.sTMP,
Aferir = true,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -130,7 +132,6 @@ namespace AgroBase.Models.Modules
Prioridade = 0,
Componente = S_Code.sTMP,
Aferir = true,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -150,7 +151,6 @@ namespace AgroBase.Models.Modules
Prioridade = 0,
Componente = S_Code.sTMP,
Aferir = true,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -170,7 +170,6 @@ namespace AgroBase.Models.Modules
Prioridade = 0,
Componente = S_Code.sTMP,
Aferir = true,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -211,7 +210,6 @@ namespace AgroBase.Models.Modules
Descricao = "Corrente no Barramento 5V",
Componente = S_Code.sCOR,
Aferir = true,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -253,7 +251,6 @@ namespace AgroBase.Models.Modules
Descricao = "Corrente no Barramento 12V",
Componente = S_Code.sCOR,
Aferir = true,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -274,7 +271,6 @@ namespace AgroBase.Models.Modules
Prioridade = 5,
Componente = S_Code.sTMP,
Aferir = true,
- Inicializado = false,
Testando = false,
Funcoes = new List()
{
@@ -440,22 +436,15 @@ namespace AgroBase.Models.Modules
public static void LimparDados(SensoriamentoModel Dados)
{
Dados.Conectado = false;
- Dados.UltimoProtocoloRecebido = DateTime.MaxValue.AddDays(-1);
+ Dados.DadosLeitura = new SensoriamentoMensagemJsonModel();
+ Dados.DadosLeitura.Momento = DateTime.MinValue;
Dados.Reles.ForEach(x =>
{
- x.Inicializado = false;
- });
- Dados.Sinaleiros.ForEach(x =>
- {
- x.Inicializado = false;
- });
- Dados.Sensores.ForEach(x =>
- {
- x.Inicializado = false;
+ x.StatusControle = Estado.Desligado;
});
Dados.Servos.ForEach(x =>
{
- x.Inicializado = false;
+ x._AnguloControle = 0;
});
ReiniciarLeituras(Dados);
@@ -463,26 +452,21 @@ namespace AgroBase.Models.Modules
public static void ReiniciarLeituras(SensoriamentoModel Dados)
{
- Dados.BateriaCargaConsumida = 0;
Dados.Reles.ForEach(x =>
{
- x.StatusLeitura = Estado.Desligado;
- x.StatusControle = Estado.Desligado;
+ x.Leitura = null;
});
Dados.Sinaleiros.ForEach(x =>
{
- x.StatusLED = StatusLED.Apagado;
+ x.Leitura = null;
});
Dados.Sensores.ForEach(x =>
{
- x.Leituras = new List();
- x.ValorMinimo = 0;
- x.ValorMaximo = 0;
+ x.Leitura = null;
});
Dados.Servos.ForEach(x =>
{
- x._AnguloLeitura = 0;
- x._AnguloControle = 0;
+ x.Leitura = null;
});
}
@@ -492,52 +476,108 @@ namespace AgroBase.Models.Modules
var configDictionary = new Dictionary>() { { Modulo_ID, new List() } };
// Adicionar configurações dos Sensores que devem ser aferidos
- var sensoresConfig = Sensores
- .Where(x => x.Aferir)
- .Select(x => x.ProtocoloConfiguracaoSensor(Pinout, Conectar))
- .ToList();
+ var sensoresConfig = SensoresConfig(Conectar);
configDictionary[Modulo_ID].AddRange(sensoresConfig);
// Adicionar configurações dos Sinaleiros
- var sinaleirosConfig = Sinaleiros
- .Select(x => x.ProtocoloConfiguracaoSinaleiro(Pinout, Conectar))
- .ToList();
+ var sinaleirosConfig = SinaleirosConfig(Conectar);
configDictionary[Modulo_ID].AddRange(sinaleirosConfig);
// Adicionar configurações dos Reles
- var relesConfig = Reles
- .Where(x => x.Controlar)
- .Select(x => x.ProtocoloConfiguracaoRele(Pinout, Conectar))
- .ToList();
+ var relesConfig = RelesConfig(Conectar);
configDictionary[Modulo_ID].AddRange(relesConfig);
// Adicionar configurações dos Servos
- var servosConfig = Servos
- .Where(x => x.Controlar)
- .Select(x => x.ProtocoloConfiguracaoServo(Pinout, Conectar))
- .ToList();
+ var servosConfig = ServosConfig(Conectar);
configDictionary[Modulo_ID].AddRange(servosConfig);
// Adicionar configuração do ProtocoloMOD
- string protocoloMOD =
- ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
- "MD" + SerialService.SplitParams +
- (Conectar ? "1" : "0") + SerialService.SplitParams +
- _TaxaAmostragem.ToString() + SerialService.SplitParams +
- (RequisitarDados ? "1" : "0") + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(Pinout, Funcoes);
+ var protocoloMOD = ModConfig(Conectar);
configDictionary[Modulo_ID].Add(protocoloMOD);
return configDictionary;
}
+ private string ModConfig(bool Conectar)
+ {
+ string protocoloMOD =
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Mod).ToString() + SerialService.SplitParams +
+ (Conectar ? "1" : "0") + SerialService.SplitParams +
+ _TaxaAmostragem.ToString() + SerialService.SplitParams +
+ (RequisitarDados ? "1" : "0") + SerialService.SplitParams +
+ PinoutModel.PinoProtocolo(Pinout, Funcoes, SerialService.SplitParams);
+
+ return protocoloMOD;
+ }
+
+ private string[] SensoresConfig(bool Conectar)
+ {
+ var sensoresConfig = Sensores
+ .Where(x => x.Aferir && x.Inicializado != Conectar)
+ .GroupBy(x => x.Componente)
+ .Select(x =>
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Sen).ToString() + SerialService.SplitParams +
+ ((int)x.Key).ToString() + SerialService.SplitParams +
+ string.Join(SerialService.SplitConfig, x.Select(y => y.ProtocoloConfiguracao(Pinout, Conectar)))
+ ).ToArray();
+
+ return sensoresConfig;
+ }
+
+ private string[] SinaleirosConfig(bool Conectar)
+ {
+ var sinaleirosConfig = Sinaleiros
+ .Where(x => x.Inicializado != Conectar)
+ .GroupBy(x => x.Componente)
+ .Select(x =>
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Sen).ToString() + SerialService.SplitParams +
+ ((int)x.Key).ToString() + SerialService.SplitParams +
+ string.Join(SerialService.SplitConfig, x.Select(y => y.ProtocoloConfiguracao(Pinout, Conectar)))
+ ).ToArray();
+
+ return sinaleirosConfig;
+ }
+
+ private string[] RelesConfig(bool Conectar)
+ {
+ var relesConfig = Reles
+ .Where(x => x.Controlar && x.Inicializado != Conectar)
+ .GroupBy(x => x.Componente)
+ .Select(x =>
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Sen).ToString() + SerialService.SplitParams +
+ ((int)x.Key).ToString() + SerialService.SplitParams +
+ string.Join(SerialService.SplitConfig, x.Select(y => y.ProtocoloConfiguracao(Pinout, Conectar)))
+ ).ToArray();
+
+ return relesConfig;
+ }
+
+ private string[] ServosConfig(bool Conectar)
+ {
+ var servosConfig = Servos
+ .Where(x => x.Controlar && x.Inicializado != Conectar)
+ .GroupBy(x => x.Componente)
+ .Select(x =>
+ ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
+ ((int)T_Code.Sen).ToString() + SerialService.SplitParams +
+ ((int)x.Key).ToString() + SerialService.SplitParams +
+ string.Join(SerialService.SplitConfig, x.Select(y => y.ProtocoloConfiguracao(Pinout, Conectar)))
+ ).ToArray();
+
+ return servosConfig;
+ }
+
public string ProtocoloVerificacao(bool Completo)
{
if (Completo)
{
string ProtocoloCheck =
- SerialService.BeginLine +
- 0 + SerialService.SplitMessage +
+ //SerialService.BeginLine +
+ "0" + SerialService.SplitMessage +
Modulo_ID + SerialService.SplitMessage +
((int)F_Code.Chk).ToString() + SerialService.SplitMessage +
"check" +
@@ -547,365 +587,73 @@ namespace AgroBase.Models.Modules
}
else
{
- string ProtocoloCheck =
- ((int)F_Code.Chk).ToString() + SerialService.SplitMessage +
- "check";
+ string ProtocoloCheck = ((int)F_Code.Chk).ToString() + SerialService.SplitMessage + "check";
return ProtocoloCheck;
}
}
- private string ProtocoloAquisicaoDados(S_Code Componente, string ID)
+ private string ProtocoloAquisicaoDados()
{
- string ProtocoloMotor =
- ((int)F_Code.Req).ToString() + SerialService.SplitMessage +
- ID + SerialService.SplitParams +
- ((int)Componente).ToString() + SerialService.SplitParams +
- "";
- return ProtocoloMotor;
+ string ProtocoloReq = ((int)F_Code.Req).ToString() + SerialService.SplitMessage + "req";
+ return ProtocoloReq;
}
- public void RecebeProtocoloSerial(string Protocolo)
+ public void RecebeProtocoloModulo(string Protocolo)
{
- UltimoProtocoloRecebido = DateTime.Now;
-
- string Mod_ID = Protocolo.Split(SerialService.SplitMessage[0])[0];
- string mensagem = Protocolo.Substring(Mod_ID.Length + 1, Protocolo.Length - Mod_ID.Length - 1);
- if (!string.IsNullOrEmpty(Protocolo) && mensagem[0].ToString() == SerialService.BeginSensor)
+ try
{
- string[] Dados = mensagem.Replace(SerialService.BeginSensor, "").Split(SerialService.EndLine[0])[0].Split(';');
-
- int cod = 0;
- int.TryParse((Dados[0] ?? ""), out cod);
- if (cod == 0 || Dados.Length < 3)
+ if (string.IsNullOrWhiteSpace(Protocolo))
{
+ Console.WriteLine("Protocolo recebido está vazio ou nulo.");
return;
}
- S_Code TipoSensor = (S_Code)(cod);
+ Protocolo = Protocolo.Substring(0, Protocolo.Length - 1);
- SensorModel Sensor = Sensores.FirstOrDefault(x => x.ID == (Dados[1] ?? ""));
- SensorSinaleiroModel Sinaleiro = Sinaleiros.FirstOrDefault(x => x.ID == (Dados[1] ?? ""));
- SensorReleModel Rele = Reles.FirstOrDefault(x => x.ID == (Dados[1] ?? ""));
- SensorServoModel Servo = Servos.FirstOrDefault(x => x.ID == (Dados[1] ?? ""));
-
- if (Sensor == null && Sinaleiro == null && Rele == null && Servo == null)
+ // Valida se o protocolo possui um formato esperado
+ if (Protocolo.Length <= 1 || !Protocolo.EndsWith("}"))
{
- if ((Dados[1] ?? "") == "MD")
- {
- Conectado = (Dados[2] ?? "") == "1";
- _MensagemConexaoRecebida = true;
- }
+ Console.WriteLine("Protocolo recebido está em um formato inválido.");
return;
}
- try
+
+ //Console.WriteLine($"JSON recebido: {Protocolo}");
+
+ // Tenta desserializar o JSON
+ var dadosLeitura = JsonConvert.DeserializeObject(Protocolo);
+ if (dadosLeitura == null)
{
- bool AtualizaGrafico = false;
-
- switch (TipoSensor)
- {
- case S_Code.sCFG:
- bool iniciado = (Dados[2] ?? "") == "1";
- if (Sensor != null)
- {
- Sensor.Inicializado = iniciado;
- }
- else if (Sinaleiro != null)
- {
- Sinaleiro.Inicializado = iniciado;
- }
- else if (Rele != null)
- {
- Rele.Inicializado = iniciado;
- }
- else if (Servo != null)
- {
- Servo.Inicializado = iniciado;
- }
- break;
- case S_Code.sCOR:
- {
- double vBarramento = -1;
- double.TryParse((Dados[2] ?? "").Replace(".", ","), out vBarramento);
- double vShunt = -1;
- double.TryParse((Dados[3] ?? "").Replace(".", ","), out vShunt);
- double corrente = -1;
- double.TryParse((Dados[4] ?? "").Replace(".", ","), out corrente);
- double potencia = -1;
- double.TryParse((Dados[5] ?? "").Replace(".", ","), out potencia);
-
- Sensor.Leituras = new List()
- {
- corrente,
- vBarramento,
- potencia,
- vShunt,
- };
-
- AtualizaGrafico = true;
- break;
- }
- case S_Code.sTEN:
- {
- double leitura = -1;
- double.TryParse((Dados[2] ?? "").Replace(".", ","), out leitura);
-
- double Vcc = 3.3;
- double Voffset = double.Parse(Sensor.Parametros[0][1]);
- double R1 = double.Parse(Sensor.Parametros[1][1].Replace(".", ","));
- double R2 = double.Parse(Sensor.Parametros[2][1].Replace(".", ","));
- double Razao = (R1 + R2) / (double)R2;
- double voltageV = (leitura * (Vcc / 4095.0)) + (Voffset / Razao); // Convertendo o valor ADC para tensão
- double realVoltage = voltageV * Razao;
-
- Sensor.Leituras = new List()
- {
- realVoltage,
- leitura,
- voltageV,
- };
-
- if (Sensor.Descricao.ToLower().Contains("bateria"))
- {
- //frmInstancial.frmAcompanhamento.AtualizarSensores("Tensão atual: " + realVoltage.ToString("0.00") + "V - MÃn: " + Sensor.ValorMinimo.ToString("0.00") + "V - Máx: " + Sensor.ValorMaximo.ToString("0.00") + "V");
- //Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria = (realVoltage / Sensor.LimiteMaximo) * 100;
- if (Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria < 0)
- {
- //Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria = 0;
- }
- }
-
- AtualizaGrafico = true;
-
- break;
- }
- case S_Code.sTMP:
- {
- double temp = -1;
- double.TryParse((Dados[2] ?? "").Replace(".", ","), out temp);
-
- double Tc = FuncoesMatematicas.CalcularTemperatura(temp, double.Parse(Sensor.Parametros[0][1].Replace(".", ",")));
-
- Sensor.Leituras = new List() { Tc };
-
- if (Sensor.Descricao.ToLower().Contains("bateria"))
- {
- //frmInstancial.frmAcompanhamento.AtualizarSensores(Tc.ToString("0.00") + " ºC");
- }
-
- AtualizaGrafico = true;
- break;
- }
- case S_Code.sULT:
- {
- double distancia = -1;
- double.TryParse((Dados[2] ?? "").Replace(".", ","), out distancia);
- int duracao = -1;
- int.TryParse((Dados[3] ?? ""), out duracao);
-
- Sensor.Leituras = new List()
- {
- distancia,
- duracao,
- };
-
- if (Sensor.ID == "SUESQ")
- {
- Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda = distancia;
- }
- else if (Sensor.ID == "SUDIR")
- {
- Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita = distancia;
- }
-
- AtualizaGrafico = true;
- break;
- }
- case S_Code.sMAG:
- {
- int x = -1;
- int.TryParse((Dados[2] ?? ""), out x);
- int y = -1;
- int.TryParse((Dados[3] ?? ""), out y);
- int z = -1;
- int.TryParse((Dados[4] ?? ""), out z);
- double angulo = -1;
- double.TryParse((Dados[5] ?? "").Replace(".", ","), out angulo);
-
- Sensor.Leituras = new List()
- {
- angulo,
- x,
- y,
- z,
- };
-
- Variaveis.OperacaoEmAndamento.Sensoriamento.AnguloCarroBussola = angulo;
-
- AtualizaGrafico = true;
- break;
- }
- case S_Code.sSNR:
- {
- int distancia = -1;
- int.TryParse((Dados[2] ?? ""), out distancia);
- int angulo = -1;
- int.TryParse((Dados[3] ?? ""), out angulo);
- int posicao = -1;
- int.TryParse((Dados[4] ?? ""), out posicao);
-
- Sensor.Leituras = new List()
- {
- distancia,
- angulo,
- posicao,
- };
- /*string protocolo = Dados[2];
- int posicao = -1;
- int.TryParse(protocolo.Split('_')[0], out posicao);
- var Leituras = new Dictionary();
- foreach (var leitura in protocolo.Split('_')[1].Trim().Split('-'))
- {
- if (leitura == "")
- {
- break;
- }
- int distancia = int.Parse(leitura.Split(',')[0]);
- int angulo = int.Parse(leitura.Split(',')[1]);
- Leituras.Add(angulo, distancia);
- }*/
-
- if (Sensor.ID == "SNR_F")
- {
- var posArr = Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.Deteccoes.FirstOrDefault(x => x.Posicao == posicao);
- if (posArr == null)
- {
- posArr = new SonarRegistroModel()
- {
- Posicao = posicao,
- Leituras = new List()
- };
- Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.Deteccoes.Add(posArr);
- }
- var leituras = posArr.Leituras;
-
- if (false && posicao != Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.PosicaoAtual && Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.Deteccoes.Any(x => x.Posicao == posicao))
- {
- Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.Deteccoes.First(x => x.Posicao == posicao).Leituras.Clear();
- }
-
- if (leituras.Any(x => x.Angulo == angulo))
- {
- leituras.First(x => x.Angulo == angulo).Momento = DateTime.Now;
- leituras.First(x => x.Angulo == angulo).Distancia = distancia;
- }
- else
- {
- leituras.Add(new SonarLeituraModel(angulo, distancia));
- }
- /*foreach (var leitura in Leituras)
- {
- if (leituras.Any(x => x.Angulo == leitura.Key))
- {
- leituras.First(x => x.Angulo == leitura.Key).Momento = DateTime.Now;
- leituras.First(x => x.Angulo == leitura.Key).Distancia = leitura.Value;
- }
- else
- {
- leituras.Add(new SonarLeituraModel(leitura.Key, leitura.Value));
- }
- }*/
-
-
-
- Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaEsquerda = Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.DistanciaEsquerda;
- Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaDireita = Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.DistanciaDireita;
-
- Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.PosicaoAtual = posicao;
- Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.AtualizarSonar();
-
- if (
- Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.DesvioNecessario &&
- Variaveis.OperacaoEmAndamento.Sensoriamento.SonarFrontal_old.DirecaoDesvio == Direcao.Parado &&
- Variaveis.OperacaoEmAndamento.DispMvd.Dados.Conectado
- )
- {
- GeneralJoystick.EnviaComandoMotor(Keys.Escape, T_Code.Mov);
- }
- }
-
- AtualizaGrafico = true;
- break;
- }
- case S_Code.sLED:
- Sinaleiro.Inicializado = (Dados[2] ?? "") == "1";
- Sinaleiro.StatusLED = (StatusLED)Enum.Parse(typeof(StatusLED), Dados[3]);
- break;
- case S_Code.sRLE:
- Rele.Inicializado = (Dados[2] ?? "") == "1";
- Rele.StatusLeitura = (Estado)Enum.Parse(typeof(Estado), Dados[3]);
- break;
- case S_Code.sFRO:
- Servo.Inicializado = (Dados[2] ?? "") == "1";
- int.TryParse((Dados[3] ?? ""), out int _angulo);
- Servo._AnguloLeitura = _angulo;
- break;
-
- }
-
- if (Sensor != null && Sensor.Leituras != null && Sensor.Leituras.Count() > 0)
- {
- if (Sensor.Leituras[0] > Sensor.ValorMaximo)
- {
- Sensor.ValorMaximo = Sensor.Leituras[0];
- }
- else if (Sensor.Leituras[0] < Sensor.ValorMinimo)
- {
- Sensor.ValorMinimo = Sensor.Leituras[0];
- }
-
- var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => Sensor.ID.Contains(x.Modulo_ID));
- if (Modulo != null)
- {
- Modulo.AtualizarSensoresMotor(Sensor);
- }
- }
-
- if (AtualizaGrafico)
- {
- Sensor.LogGrafico.Add(new SenSensorimanetoGrafico()
- {
- Momento = DateTime.Now,
- ComponenteID = Sensor.ID,
- Componente = Sensor.Componente,
- Leitura1 = Sensor.Leituras.Count() > 0 ? Sensor.Leituras[0] : -1,
- Leitura2 = Sensor.Leituras.Count() > 1 ? Sensor.Leituras[1] : -1,
- Leitura3 = Sensor.Leituras.Count() > 2 ? Sensor.Leituras[2] : -1,
- Leitura4 = Sensor.Leituras.Count() > 3 ? Sensor.Leituras[3] : -1,
- AlarmeMinima = Sensor.Leituras[0] < Sensor.LimiteMinimo,
- AlarmeMaxima = Sensor.Leituras[0] > Sensor.LimiteMaximo,
- });
-
- if (Sensor.LogGrafico.Count() > LogsManter)
- {
- Sensor.LogGrafico.RemoveAt(0);
- }
-
- if (Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Dir))
- {
- //((frmDirPlot)(frmPrincipal.Dispositivos.First(x => x.Dispositivo == T_Code.Dir).frmPlot)).AtualizaGrafico();
- }
-
- }
-
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
+ Console.WriteLine("Falha ao desserializar o JSON.");
+ return;
}
+ dadosLeitura.Momento = DateTime.Now;
+
+ AtualizaDadosComponentes(dadosLeitura);
+ }
+ catch (JsonException ex)
+ {
+ Console.WriteLine($"Erro ao processar o JSON recebido: {ex.Message}");
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Erro inesperado no processamento do protocolo: {ex.Message}");
+ }
+ }
+
+ private void AtualizaDadosComponentes(SensoriamentoMensagemJsonModel dadosLeitura)
+ {
+ DadosLeitura = dadosLeitura;
+
+ DefineStatusConexao(Modulo_ID, true);
+
+
+ if (Variaveis.OperacaoEmAndamento.DispMvd != null)
+ {
+ Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(Modulo => Modulo.AtualizarSensoresMotor());
}
}
@@ -914,8 +662,6 @@ namespace AgroBase.Models.Modules
if (Mod_ID == Modulo_ID)
{
Conectado = conecatdo;
-
- Variaveis.OperacaoEmAndamento.DispSen.AcaoConexao();
}
}
@@ -931,12 +677,18 @@ namespace AgroBase.Models.Modules
public bool GetStatusConexao()
{
+ Conectado = DadosLeitura.Conectado && DadosLeitura.Momento.AddMilliseconds(10 * _TaxaAmostragem) >= DateTime.Now;
return Conectado;
}
+ public string GetIP()
+ {
+ return IP;
+ }
+
public void IniciarRegistrador()
{
- if (!tmrRegistrador?.IsRunning ?? false)
+ if (!(tmrRegistrador?.IsRunning ?? false))
{
LimparDados(this);
@@ -956,44 +708,35 @@ namespace AgroBase.Models.Modules
{
tmrRegistrador.SetInterval(_TaxaAmostragem);
-
- Conectado = UltimoProtocoloRecebido.AddMilliseconds(10 * _TaxaAmostragem) >= DateTime.Now;
+ bool _conectado = DadosLeitura.Conectado && DadosLeitura.Momento.AddMilliseconds(10 * _TaxaAmostragem) >= DateTime.Now;
+ DefineStatusConexao(Modulo_ID, _conectado);
- foreach (var Sensor in Sensores.Where(x => x.Aferir && !x.Inicializado))
+ if (SerialService.DispositivosMapeados.Any(x => x.Dispositivo == T_Code.Sen) && (_VezesLeituraReconexao >= _TempoReconexaoComponentes || !Conectado))
{
- string Protocolo = Sensor.ProtocoloConfiguracaoSensor(Pinout, true);
- Variaveis.OperacaoEmAndamento.DispSen.AdicionarMensagemFila(Modulo_ID, Protocolo, true, false);
+ Variaveis.OperacaoEmAndamento.DispSen?.EnviarProtocolosConfiguracao();
+
+ _VezesLeituraReconexao = 0;
}
- foreach (var Sinaleiro in Sinaleiros.Where(x => !x.Inicializado))
+ else
{
- string Protocolo = Sinaleiro.ProtocoloConfiguracaoSinaleiro(Pinout, true);
- Variaveis.OperacaoEmAndamento.DispSen.AdicionarMensagemFila(Modulo_ID, Protocolo, true, false);
- }
- foreach (var Rele in Reles.Where(x => x.Controlar && !x.Inicializado))
- {
- string Protocolo = Rele.ProtocoloConfiguracaoRele(Pinout, true);
- Variaveis.OperacaoEmAndamento.DispSen.AdicionarMensagemFila(Modulo_ID, Protocolo, true, false);
- }
- foreach (var Servo in Servos.Where(x => x.Controlar && !x.Inicializado))
- {
- string Protocolo = Servo.ProtocoloConfiguracaoServo(Pinout, true);
- Variaveis.OperacaoEmAndamento.DispSen.AdicionarMensagemFila(Modulo_ID, Protocolo, true, false);
+ _VezesLeituraReconexao++;
}
- if (RequisitarDados)
+
+ if (Conectado && RequisitarDados)
{
- foreach (var Sensor in Sensores.Where(x => x.Aferir && x.Inicializado))
- {
- RequisitarDadosComponente(Sensor.Componente, Sensor.ID);
- }
+ RequisitarDadosModulo();
}
}
- public void RequisitarDadosComponente(S_Code Componente, string ID)
+ public void RequisitarDadosModulo()
{
- string ProtocoloAquisicao = ProtocoloAquisicaoDados(Componente, ID);
- Variaveis.OperacaoEmAndamento.DispSen.AdicionarMensagemFila(Modulo_ID, ProtocoloAquisicao, true, false);
+ if (Variaveis.OperacaoEmAndamento.DispSen != null)
+ {
+ string ProtocoloAquisicao = ProtocoloAquisicaoDados();
+ Variaveis.OperacaoEmAndamento.DispSen.AdicionarMensagemFila(Modulo_ID, ProtocoloAquisicao, true, false);
+ }
}
@@ -1037,21 +780,58 @@ namespace AgroBase.Models.Modules
public S_Code Componente { get; set; }
public bool Aferir { get; set; } = false;
public int DelayAmostragem { get; set; } = 500;
- public bool Inicializado { get; set; } = false;
+ private dynamic _leitura = null;
+ public dynamic Leitura
+ {
+ get
+ {
+ switch (Componente)
+ {
+ case S_Code.sTMP:
+ _leitura = Variaveis.OperacaoEmAndamento.DispSen?.Dados?.DadosLeitura?.SensoresTemperatura?.FirstOrDefault(x => x.ID == ID);
+ break;
+ case S_Code.sCOR:
+ _leitura = Variaveis.OperacaoEmAndamento.DispSen?.Dados?.DadosLeitura?.SensoresCorrente?.FirstOrDefault(x => x.ID == ID);
+ break;
+ case S_Code.sFLX:
+ _leitura = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.DadosLeitura?.SensoresFluxo?.FirstOrDefault(x => x.ID == ID);
+ break;
+ case S_Code.sPRS:
+ _leitura = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.DadosLeitura?.SensoresPressao?.FirstOrDefault(x => x.ID == ID);
+ break;
+ case S_Code.sMAS:
+ _leitura = Variaveis.OperacaoEmAndamento.DispAtu?.Dados?.DadosLeitura?.SensoresMassa?.FirstOrDefault(x => x.ID == ID);
+ break;
+ default:
+ _leitura = null;
+ break;
+ }
+
+ return _leitura;
+ }
+ set
+ {
+ _leitura = value;
+ }
+ }
+ public bool Inicializado
+ {
+ get
+ {
+ return Leitura?.Iniciado ?? false;
+ }
+ }
public bool Testando { get; set; } = false;
public List Funcoes { get; set; }
public List Parametros { get; set;} = new List();
public string UnidadeMedida { get; set; }
- public List Leituras { get; set; }
- public double ValorMinimo { get; set; }
- public double ValorMaximo { get; set; }
public double LimiteMaximo { get; set; }
public double LimiteMinimo { get; set; }
public List LogGrafico = new List();
- public string ProtocoloConfiguracaoSensor(PinoutDataModel Pinout, bool Conectar)
+ public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
{
var _pinout = new PinoutDataModel()
{
@@ -1061,17 +841,12 @@ namespace AgroBase.Models.Modules
};
_pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
string Protocolo =
- ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
- ID + SerialService.SplitParams +
- (Conectar ? "1" : "0") + SerialService.SplitParams +
- ((int)Componente).ToString() + SerialService.SplitParams +
- (Aferir ? "1" : "0") + SerialService.SplitParams +
- DelayAmostragem.ToString() + SerialService.SplitParams +
- Prioridade.ToString() + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ ID + SerialService.SplitSubParams +
+ (Conectar ? "1" : "0") + SerialService.SplitSubParams +
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitSubParams);
foreach (var Parametro in Parametros)
{
- Protocolo += SerialService.SplitParams + Parametro[1];
+ Protocolo += SerialService.SplitSubParams + Parametro[1];
}
return Protocolo;
}
@@ -1084,11 +859,28 @@ namespace AgroBase.Models.Modules
public S_Code Componente { get; set; }
public List Funcoes { get; set; }
public SensorSinaleiroComportamentoModel Comportamento { get; set; }
+ private FirmwareSinaleiro _leitura = null;
+ public FirmwareSinaleiro Leitura
+ {
+ get
+ {
+ _leitura = Variaveis.OperacaoEmAndamento.DispSen?.Dados?.DadosLeitura?.Sinaleiros?.FirstOrDefault(x => x.ID == ID);
+ return _leitura;
+ }
+ set
+ {
+ _leitura = value;
+ }
+ }
+ public bool Inicializado
+ {
+ get
+ {
+ return Leitura?.Iniciado ?? false;
+ }
+ }
- public bool Inicializado { get; set; }
- public StatusLED StatusLED { get; set; }
-
- public string ProtocoloConfiguracaoSinaleiro(PinoutDataModel Pinout, bool Conectar)
+ public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
{
var _pinout = new PinoutDataModel()
{
@@ -1097,10 +889,10 @@ namespace AgroBase.Models.Modules
Pinos = Pinout.Pinos.ToList(),
};
_pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
- string Protocolo = ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
- ID + SerialService.SplitParams +
- (Conectar ? "1" : "0") + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ string Protocolo =
+ ID + SerialService.SplitSubParams +
+ (Conectar ? "1" : "0") + SerialService.SplitSubParams +
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitSubParams);
return Protocolo;
}
@@ -1109,6 +901,7 @@ namespace AgroBase.Models.Modules
string ProtocoloSinaleiro =
((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
ID + SerialService.SplitParams +
+ ((int)Componente) + SerialService.SplitParams +
(int)Comportamento.statusLED + SerialService.SplitParams +
Comportamento.QtdPiscadas.ToString() + SerialService.SplitParams +
Comportamento.TempoMs.ToString() + SerialService.SplitParams +
@@ -1127,11 +920,30 @@ namespace AgroBase.Models.Modules
public List Funcoes { get; set; }
public bool Controlar { get; set; }
- public bool Inicializado { get; set; }
+ public bool AtuacaoNivelAlto { get; set; }
public Estado StatusControle { get; set; }
- public Estado StatusLeitura { get; set; }
+ private FirmwareRele _leitura = null;
+ public FirmwareRele Leitura
+ {
+ get
+ {
+ _leitura = Variaveis.OperacaoEmAndamento.DispSen?.Dados?.DadosLeitura?.Reles?.FirstOrDefault(x => x.ID == ID);
+ return _leitura;
+ }
+ set
+ {
+ _leitura = value;
+ }
+ }
+ public bool Inicializado
+ {
+ get
+ {
+ return Leitura?.Iniciado ?? false;
+ }
+ }
- public string ProtocoloConfiguracaoRele(PinoutDataModel Pinout, bool Conectar)
+ public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
{
var _pinout = new PinoutDataModel()
{
@@ -1140,10 +952,11 @@ namespace AgroBase.Models.Modules
Pinos = Pinout.Pinos.ToList(),
};
_pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
- string Protocolo = ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
- ID + SerialService.SplitParams +
- (Conectar ? "1" : "0") + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ string Protocolo =
+ ID + SerialService.SplitSubParams +
+ (Conectar ? "1" : "0") + SerialService.SplitSubParams +
+ (AtuacaoNivelAlto ? "1" : "0") + SerialService.SplitSubParams +
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitSubParams);
return Protocolo;
}
@@ -1152,6 +965,7 @@ namespace AgroBase.Models.Modules
string ProtocoloRele =
((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
ID + SerialService.SplitParams +
+ ((int)Componente) + SerialService.SplitParams +
(int)StatusControle;
return ProtocoloRele;
@@ -1167,11 +981,29 @@ namespace AgroBase.Models.Modules
public List Funcoes { get; set; }
public bool Controlar { get; set; }
- public bool Inicializado { get; set; }
public int _AnguloControle { get; set; }
- public int _AnguloLeitura { get; set; }
+ private FirmwareServoFreio _leitura = null;
+ public FirmwareServoFreio Leitura
+ {
+ get
+ {
+ _leitura = Variaveis.OperacaoEmAndamento.DispSen?.Dados?.DadosLeitura?.ServoFreios?.FirstOrDefault(x => x.ID == ID);
+ return _leitura;
+ }
+ set
+ {
+ _leitura = value;
+ }
+ }
+ public bool Inicializado
+ {
+ get
+ {
+ return Leitura?.Iniciado ?? false;
+ }
+ }
- public string ProtocoloConfiguracaoServo(PinoutDataModel Pinout, bool Conectar)
+ public string ProtocoloConfiguracao(PinoutDataModel Pinout, bool Conectar)
{
var _pinout = new PinoutDataModel()
{
@@ -1188,11 +1020,11 @@ namespace AgroBase.Models.Modules
}
_pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == ID).ToList();
- string Protocolo = ((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
- ID + SerialService.SplitParams +
- (Conectar ? "1" : "0") + SerialService.SplitParams +
- (incremental ? "1" : "0") + SerialService.SplitParams +
- PinoutModel.PinoProtocolo(_pinout, Funcoes);
+ string Protocolo =
+ ID + SerialService.SplitSubParams +
+ (Conectar ? "1" : "0") + SerialService.SplitSubParams +
+ (incremental ? "1" : "0") + SerialService.SplitSubParams +
+ PinoutModel.PinoProtocolo(_pinout, Funcoes, SerialService.SplitSubParams);
return Protocolo;
}
@@ -1201,6 +1033,7 @@ namespace AgroBase.Models.Modules
string ProtocoloFreio =
((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
ID + SerialService.SplitParams +
+ ((int)Componente) + SerialService.SplitParams +
_AnguloControle;
return ProtocoloFreio;
@@ -1277,5 +1110,203 @@ namespace AgroBase.Models.Modules
public bool AlarmeMinima { get; set; }
}
-
+
+
+ public class FirmwareSensorTemperatura
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ private int _leitura;
+ public int Leitura
+ {
+ get { return _leitura; }
+ set
+ {
+ _leitura = value;
+ AtualizarTemperatura();
+ }
+ }
+ private double _atual;
+ public double Temperatura { get { return _atual; } }
+ public double ValorMaximo { get; set; }
+ public double ValorMinimo { get; set; }
+ public double LimiteMaximo
+ {
+ get
+ {
+ var sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == ID);
+ if (sensor != null)
+ {
+ return sensor.LimiteMaximo;
+ }
+ return 0;
+ }
+ }
+ public double LimiteMinimo
+ {
+ get
+ {
+ var sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == ID);
+ if (sensor != null)
+ {
+ return sensor.LimiteMinimo;
+ }
+ return 0;
+ }
+ }
+
+ private void AtualizarTemperatura()
+ {
+ if (Variaveis.OperacaoEmAndamento.DispSen != null)
+ {
+ SensorModel Sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == ID);
+ if (Sensor != null && Sensor.Parametros.Count > 0 && Sensor.Parametros[0].Length > 1)
+ {
+ if (double.TryParse(Sensor.Parametros[0][1].Replace(".", ","), out double fatorCalibracao))
+ {
+ _atual = FuncoesMatematicas.CalcularTemperatura(_leitura, fatorCalibracao);
+
+ AtualizarExtremos();
+ }
+ else
+ {
+ Console.WriteLine($"Erro ao converter o parâmetro de calibração para o sensor {ID}");
+ }
+ }
+ }
+ }
+
+ private void AtualizarExtremos()
+ {
+ if (_atual > ValorMaximo)
+ {
+ ValorMaximo = _atual;
+ }
+ if (_atual < ValorMinimo || ValorMinimo == 0)
+ {
+ ValorMinimo = _atual;
+ }
+ }
+ }
+
+ public class FirmwareSensorCorrente
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ public double BusVoltage { get; set; }
+ public double ShuntVoltage { get; set; }
+ public double? Current
+ {
+ get
+ {
+ return _atual;
+ }
+ set
+ {
+ _atual = value ?? 0;
+
+ AtualizarExtremos();
+ }
+ }
+ public double Power { get; set; }
+
+ public double ValorMaximo { get; set; }
+ public double ValorMinimo { get; set; }
+ public double LimiteMaximo
+ {
+ get
+ {
+ var sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == ID);
+ if (sensor != null)
+ {
+ return sensor.LimiteMaximo;
+ }
+ return 0;
+ }
+ }
+ public double LimiteMinimo
+ {
+ get
+ {
+ var sensor = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == ID);
+ if (sensor != null)
+ {
+ return sensor.LimiteMinimo;
+ }
+ return 0;
+ }
+ }
+
+
+ private double _atual = 0;
+ private void AtualizarExtremos()
+ {
+ if (_atual > ValorMaximo)
+ {
+ ValorMaximo = _atual;
+ }
+ if (_atual < ValorMinimo || ValorMinimo == 0)
+ {
+ ValorMinimo = _atual;
+ }
+ }
+ }
+
+ public class FirmwareSinaleiro
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ public StatusLED Leitura { get; set; }
+ }
+
+ public class FirmwareRele
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ public Estado Leitura { get; set; }
+ }
+
+ public class FirmwareServoFreio
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ public int Angulo { get; set; }
+ }
+
+ public class FirmwareSensorFluxo
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ public int Pulsos { get; set; }
+ public int Periodo { get; set; }
+ }
+
+ public class FirmwareSensorMassa
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ public int Leitura { get; set; }
+ }
+
+ public class FirmwareSensorPressao
+ {
+ public string ID { get; set; }
+ public bool Iniciado { get; set; }
+ public int Leitura { get; set; }
+ public double Pressao { get; set; }
+ }
+
+
+ public class SensoriamentoMensagemJsonModel
+ {
+ public bool Conectado { get; set; }
+ public string Mod_ID { get; set; }
+ public DateTime Momento { get; set; }
+ public List SensoresTemperatura { get; set; } = new List();
+ public List SensoresCorrente { get; set; } = new List();
+ public List Sinaleiros { get; set; } = new List();
+ public List Reles { get; set; } = new List();
+ public List ServoFreios { get; set; } = new List();
+ }
+
}
diff --git a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs
index ba28bb4cf..2906293b9 100644
--- a/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs
+++ b/AgroBase/AgroBase/Models/Operacoes/OperacaoModel.cs
@@ -17,6 +17,7 @@ using System.Text;
using System.Windows.Forms.DataVisualization.Charting;
using AgroBase.Forms.IHM;
using OpenHardwareMonitor.Hardware;
+using CefSharp.WinForms;
namespace AgroBase.Models
{
@@ -391,7 +392,7 @@ namespace AgroBase.Models
var Parametros = JsonConvert.DeserializeObject(ParametrosJson);
- Variaveis.OperacaoEmAndamento = CarregarParametrosOperacaoPadrao(Parametros.Modo);
+ CarregarParametrosOperacaoPadrao(Parametros.Modo);
OperacaoControleModel controle = new OperacaoControleModel()
{
@@ -527,7 +528,7 @@ namespace AgroBase.Models
- public static OperacaoModel CarregarParametrosOperacaoPadrao(ModoOperacao Modo)
+ public static void CarregarParametrosOperacaoPadrao(ModoOperacao Modo)
{
var SenConectado = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Sen);
var AtuConectado = (DispositivosService)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Atu);
@@ -535,7 +536,7 @@ namespace AgroBase.Models
tmrLogs?.Stop();
- OperacaoModel OperacaoCarregar = new OperacaoModel(Modo)
+ Variaveis.OperacaoEmAndamento = new OperacaoModel(Modo)
{
Iniciado = false,
TimestampInicio = 0,
@@ -551,8 +552,8 @@ namespace AgroBase.Models
{
case ModoOperacao.Manual:
//OperacaoCarregar.frmOperacao = (Form)Activator.CreateInstance(Variaveis.OperacaoEmAndamento.OpManual.frmOperacao.GetType());
- OperacaoCarregar.frmOperacao = new frmOperacaoManual();
- OperacaoCarregar.Controle = new OperacaoControleModel()
+ Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoManual();
+ Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{
RPM_Max = 100,
RPM_Min = 15,
@@ -584,7 +585,7 @@ namespace AgroBase.Models
}
},
};
- OperacaoCarregar.ModulosMandatorios = new List()
+ Variaveis.OperacaoEmAndamento.ModulosMandatorios = new List()
{
new OperacaoModulosMandatoriosModel()
{
@@ -602,7 +603,7 @@ namespace AgroBase.Models
Mandatorio = false
}
};
- OperacaoCarregar.ParametrosMandatorios = new List()
+ Variaveis.OperacaoEmAndamento.ParametrosMandatorios = new List()
{
new OperacaoParametrosMandatoriosModel()
{
@@ -614,9 +615,9 @@ namespace AgroBase.Models
break;
case ModoOperacao.MapaGPS:
//OperacaoCarregar.frmOperacao = (Form)Activator.CreateInstance(Variaveis.OperacaoEmAndamento.OpMapaGPS.frmOperacao.GetType());
- OperacaoCarregar.frmOperacao = new frmOperacaoMapaGPS();
- OperacaoCarregar.ControleAnterior = new OperacaoControleModel();
- OperacaoCarregar.Controle = new OperacaoControleModel()
+ Variaveis.OperacaoEmAndamento.frmOperacao = new frmOperacaoMapaGPS();
+ Variaveis.OperacaoEmAndamento.ControleAnterior = new OperacaoControleModel();
+ Variaveis.OperacaoEmAndamento.Controle = new OperacaoControleModel()
{
RPM_Max = 100,
RPM_Min = 15,
@@ -648,7 +649,7 @@ namespace AgroBase.Models
},
},
};
- OperacaoCarregar.ModulosMandatorios = new List()
+ Variaveis.OperacaoEmAndamento.ModulosMandatorios = new List()
{
new OperacaoModulosMandatoriosModel()
{
@@ -686,7 +687,7 @@ namespace AgroBase.Models
Mandatorio = true,
}
};
- OperacaoCarregar.ParametrosMandatorios = new List()
+ Variaveis.OperacaoEmAndamento.ParametrosMandatorios = new List()
{
new OperacaoParametrosMandatoriosModel()
{
@@ -704,40 +705,38 @@ namespace AgroBase.Models
Mandatorio = true,
}
};
- OperacaoCarregar.OpMapaGPS.Sensoriamento = new OperacaoMapaGPSSensoriamentoModel();
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento = new OperacaoMapaGPSSensoriamentoModel();
break;
}
- OperacaoCarregar.OpMapaGPS.Sensoriamento.ReiniciarLeituras();
+ Variaveis.OperacaoEmAndamento.OpMapaGPS.Sensoriamento.ReiniciarLeituras();
- OperacaoCarregar.AtualizaListaCameras(null, new List(), false);
+ Variaveis.OperacaoEmAndamento.AtualizaListaCameras(null, new List(), false);
- if (OperacaoCarregar.DispSen != null)
+ if (Variaveis.OperacaoEmAndamento.DispSen != null)
{
- if (OperacaoCarregar.DispSen.Dados.ConfiguracaoSensorUltrassom == null)
+ if (Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom == null)
{
- OperacaoCarregar.DispSen.Dados.ConfiguracaoSensorUltrassom = UltrasonicA05Helper.CarregarConfiguracaoPadrao(ConfiguracaoSensorUltrassonico.NaoUtilizado);
+ Variaveis.OperacaoEmAndamento.DispSen.Dados.ConfiguracaoSensorUltrassom = UltrasonicA05Helper.CarregarConfiguracaoPadrao(ConfiguracaoSensorUltrassonico.NaoUtilizado);
}
- if (OperacaoCarregar.DispSen.Dados.Conectado)
+ if (Variaveis.OperacaoEmAndamento.DispSen.Dados.Conectado)
{
- OperacaoCarregar.DispSen.Dados.Sinaleiros.ForEach(x => x.Comportamento = VariaveisEquipamento.ComportamentoPorStatus(StatusOperacao.NaoIniciado));
+ Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros.ForEach(x => x.Comportamento = VariaveisEquipamento.ComportamentoPorStatus(StatusOperacao.NaoIniciado));
- OperacaoCarregar.DispSen.Dados.Sinaleiros.First(x => x.ID == (Modo == ModoOperacao.Manual ? "LEDMN" : "LEDAT")).Comportamento.statusLED = StatusLED.Aceso;
- OperacaoCarregar.DispSen.Dados.Sinaleiros.First(x => x.ID == "LEDOP").Comportamento = VariaveisEquipamento.ComportamentoPorStatus();
+ Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros.First(x => x.ID == (Modo == ModoOperacao.Manual ? "LEDMN" : "LEDAT")).Comportamento.statusLED = StatusLED.Aceso;
+ Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros.First(x => x.ID == "LEDOP").Comportamento = VariaveisEquipamento.ComportamentoPorStatus();
//OperacaoCarregar.DispSen.Dados.Sinaleiros.ForEach(x => OperacaoCarregar.DispSen.AdicionarMensagemFila(OperacaoCarregar.DispSen.Dados.Modulo_ID, x.ProtocoloComando(), true, false));
- foreach (var Sinaleiro in OperacaoCarregar.DispSen.Dados.Sinaleiros)
+ foreach (var Sinaleiro in Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros)
{
GeneralJoystick.EnviarComandoSensoriamento(S_Code.sLED, Sinaleiro.ID, Sinaleiro.Comportamento);
}
}
}
- OperacaoCarregar.Controle.Angulo = OperacaoCarregar.Controle.Angulo_Max;
- OperacaoCarregar.Controle.PercentualVelocidadeSP = OperacaoCarregar.Controle.PercentualVelocidadeMin;
-
- return OperacaoCarregar;
+ Variaveis.OperacaoEmAndamento.Controle.Angulo = Variaveis.OperacaoEmAndamento.Controle.Angulo_Max;
+ Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeSP = Variaveis.OperacaoEmAndamento.Controle.PercentualVelocidadeMin;
}
public static void SalvarOperacaoPersonalizada(OperacaoModel Operacao)
@@ -760,12 +759,13 @@ namespace AgroBase.Models
{
string modoOpStr = nomeArquivo.Split('\\')[nomeArquivo.Split('\\').Length - 1].Replace("operacao", "").Split('.')[0];
ModoOperacao modo = (ModoOperacao)Enum.Parse(typeof(ModoOperacao), modoOpStr);
- return CarregarParametrosOperacaoPadrao(modo);
+ CarregarParametrosOperacaoPadrao(modo);
+ return Variaveis.OperacaoEmAndamento;
OperacaoModel Operacao = new OperacaoModel(modo);
if (!File.Exists(nomeArquivo))
{
- Operacao = CarregarParametrosOperacaoPadrao(modo);
+ //Operacao = CarregarParametrosOperacaoPadrao(modo);
SalvarOperacaoPersonalizada(Operacao);
}
@@ -985,7 +985,7 @@ namespace AgroBase.Models
ArquivoLeitura = "ervas_" + CamNome + ".json",
browser = null,
camera = new CameraService(),
- CameraSelecionada = DispSen.Dados.CameraID_Solo[i],
+ CameraSelecionada = DispSen.Dados.CameraID_Solo.Count > i ? DispSen.Dados.CameraID_Solo[i] : null,
combo = new ComboBox(),
MaxLeituras = 10,
VideoPorta = (VariaveisPortas.CameraSolo + CamerasSolo.Count()).ToString(),
@@ -1032,7 +1032,7 @@ namespace AgroBase.Models
{
VersaoArquivoModel ArquivoVersao = VersionamentoService.ArquivoModeloWeedDetector;
- CameraSolo.IniciarRotinaProcesso();
+ //CameraSolo.IniciarRotinaProcesso();
CameraSolo.camera.IniciarCamera(
Variaveis.OperacaoEmAndamento.DispAtu.Dados.ScriptDeteccaoErvas,
@@ -1049,7 +1049,26 @@ namespace AgroBase.Models
CameraSolo.VideoPorta,
CameraSolo.VideoUrl,
CameraSolo.MqttTopico,
- CameraSolo.tmrProcesso
+ async (Mensagem) =>
+ {
+ if (Mensagem.Momento > CameraSolo.camera.IniciadoEm && Mensagem.Mensagem == "OK")
+ {
+ CameraSolo.camera.ProntoEm = Mensagem.Momento;
+
+ if (CameraSolo.browser == null)
+ {
+ CameraSolo.Iniciada = true;
+ CameraSolo.browser = new ChromiumWebBrowser(CameraSolo.camera.URLcamera);
+ CameraSolo.browser.Dock = DockStyle.Fill;
+
+ CameraSolo.panel.Invoke(new Action(() =>
+ {
+ CameraSolo.panel.Controls.Add(CameraSolo.browser);
+ CameraSolo.panel.Refresh();
+ }));
+ }
+ }
+ }
);
}
else
@@ -1084,7 +1103,35 @@ namespace AgroBase.Models
cameraCaminho.VideoPorta,
cameraCaminho.VideoUrl,
CamerasVaraiveisModel.TopicoRecebimentoBitmap,
- cameraCaminho.tmrProcesso
+ async (Mensagem) =>
+ {
+ if (Mensagem.Momento > cameraCaminho.camera.IniciadoEm && Mensagem.Mensagem == "OK")
+ {
+ cameraCaminho.camera.ProntoEm = Mensagem.Momento;
+
+ if (cameraCaminho.browser == null)
+ {
+ cameraCaminho.Iniciada = true;
+ if (cameraCaminho.panel != null)
+ {
+ cameraCaminho.panel.GetType().GetMethod("SetStyle", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Invoke(cameraCaminho.panel, new object[] { ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true });
+ cameraCaminho.panel.BackgroundImageLayout = ImageLayout.Zoom;
+ }
+ }
+ }
+ else if (Mensagem.Mensagem != "OK")
+ {
+ try
+ {
+ Bitmap bitmap = Variaveis.OperacaoEmAndamento.CameraCaminhoKinect.ExtraiImagemDaMensagem(Mensagem.Mensagem);
+ Variaveis.OperacaoEmAndamento.CameraCaminhoKinect.AtualizarBitmapTela(bitmap);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Erro ao processar a mensagem MQTT: {ex.Message}");
+ }
+ }
+ }
);
}
}
@@ -1474,7 +1521,7 @@ namespace AgroBase.Models
return;
}
- var MqttTopico = Variaveis.MqttService.Topicos.FirstOrDefault(x => x.Topico == CamerasVaraiveisModel.TopicoRecebimentoBitmap);
+ var MqttTopico = cameraCaminho.camera._mqttTopico;
if (MqttTopico != null && MqttTopico.Mensagens.Any(x => x.Momento > cameraCaminho.camera.IniciadoEm))
{
try
@@ -1933,27 +1980,17 @@ namespace AgroBase.Models
};
SalvarLog(T_Code.Atu.ToString(), logAtu, false);
- SenSensoriamentoLogModel logSen = new SenSensoriamentoLogModel()
+ var senLeitura = Variaveis.OperacaoEmAndamento.DispSen.Dados.DadosLeitura;
+ SensoriamentoMensagemJsonModel logSen = new SensoriamentoMensagemJsonModel()
{
- Momento = Agora,
- Inicializado = Variaveis.OperacaoEmAndamento.DispSen.Dados.Conectado,
- Barramento3v3Corrente = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB3V" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 0)?.Leituras?[0] ?? -1,
- Barramento3v3Tensao = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB3V" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 1)?.Leituras?[1] ?? -1,
- Barramento5vCorrente = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB5V" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 0)?.Leituras?[0] ?? -1,
- Barramento5vTensao = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB5V" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 1)?.Leituras?[1] ?? -1,
- Barramento7v2Corrente = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB7V2" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 0)?.Leituras?[0] ?? -1,
- Barramento7v2Tensao = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB7V2" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 1)?.Leituras?[1] ?? -1,
- Barramento12vCorrente = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB12V" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 0)?.Leituras?[0] ?? -1,
- Barramento12vTensao = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "AB12V" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 1)?.Leituras?[1] ?? -1,
- OrientacaoMagnetica = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.FirstOrDefault(x => x.ID == "SMAG" && x.Inicializado && x.Leituras != null && x.Leituras.Count() > 0)?.Leituras?[0] ?? -1,
- StatusSinaleiroMN = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros.FirstOrDefault(x => x.ID == "LEDMN" && x.Inicializado)?.StatusLED ?? StatusLED.Apagado,
- StatusSinaleiroAT = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros.FirstOrDefault(x => x.ID == "LEDAT" && x.Inicializado)?.StatusLED ?? StatusLED.Apagado,
- StatusSinaleiroOP = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sinaleiros.FirstOrDefault(x => x.ID == "LEDOP" && x.Inicializado)?.StatusLED ?? StatusLED.Apagado,
- StatusReleLoRa = Variaveis.OperacaoEmAndamento.DispSen.Dados.Reles.FirstOrDefault(x => x.ID == "RLLRA" && x.Inicializado)?.StatusLeitura ?? Estado.Desligado,
- AnguloFreioET = Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.FirstOrDefault(x => x.ID == "FRO_ET" && x.Inicializado)?._AnguloLeitura ?? -1,
- AnguloFreioEF = Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.FirstOrDefault(x => x.ID == "FRO_EF" && x.Inicializado)?._AnguloLeitura ?? -1,
- AnguloFreioDT = Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.FirstOrDefault(x => x.ID == "FRO_DT" && x.Inicializado)?._AnguloLeitura ?? -1,
- AnguloFreioDF = Variaveis.OperacaoEmAndamento.DispSen.Dados.Servos.FirstOrDefault(x => x.ID == "FRO_DF" && x.Inicializado)?._AnguloLeitura ?? -1,
+ Momento = Agora,
+ Conectado = senLeitura.Conectado,
+ Mod_ID = senLeitura.Mod_ID,
+ Reles = new List(senLeitura.Reles),
+ SensoresCorrente = new List(senLeitura.SensoresCorrente),
+ SensoresTemperatura = new List(senLeitura.SensoresTemperatura),
+ ServoFreios = new List(senLeitura.ServoFreios),
+ Sinaleiros = new List(senLeitura.Sinaleiros),
};
SalvarLog(T_Code.Sen.ToString(), logSen, false);
@@ -3126,29 +3163,6 @@ namespace AgroBase.Models
public double TempoAtuado { get; set; }
}
- public class SenSensoriamentoLogModel
- {
- public DateTime Momento { get; set; }
- public bool Inicializado { get; set; }
- public double Barramento3v3Tensao { get; set; }
- public double Barramento3v3Corrente { get; set; }
- public double Barramento5vTensao { get; set; }
- public double Barramento5vCorrente { get; set; }
- public double Barramento7v2Tensao { get; set; }
- public double Barramento7v2Corrente { get; set; }
- public double Barramento12vTensao { get; set; }
- public double Barramento12vCorrente { get; set; }
- public double OrientacaoMagnetica { get; set; }
- public StatusLED StatusSinaleiroMN { get; set; }
- public StatusLED StatusSinaleiroAT { get; set; }
- public StatusLED StatusSinaleiroOP { get; set; }
- public Estado StatusReleLoRa { get; set; }
- public int AnguloFreioET { get; set; }
- public int AnguloFreioEF { get; set; }
- public int AnguloFreioDT { get; set; }
- public int AnguloFreioDF { get; set; }
- }
-
public class CamSoloSensoriamentoLogModel
{
public DateTime Momento { get; set; }
diff --git a/AgroBase/AgroBase/Models/Variaveis.cs b/AgroBase/AgroBase/Models/Variaveis.cs
index 6ccd62c18..f6618f0e4 100644
--- a/AgroBase/AgroBase/Models/Variaveis.cs
+++ b/AgroBase/AgroBase/Models/Variaveis.cs
@@ -745,7 +745,22 @@ namespace AgroBase.Models
{
if (controle.InvokeRequired)
{
- await (Task)controle.Invoke(new Func(() => acao()));
+ TaskCompletionSource