ajustes na operacao manual para controle do modulo unificado
This commit is contained in:
parent
d666143af5
commit
1b6dee73b5
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -3,8 +3,36 @@
|
|||
"WorkspaceRootPath": "C:\\ZendionINC\\agrobot_base\\AgroBase\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\models\\enuns.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\enuns.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\forms\\operacoes\\frmoperacaomanual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmoperacaomanual.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\frmacompanhamento.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmacompanhamento.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\operacoes\\frmresultadosoperacao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\operacoes\\frmresultadosoperacao.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\modules\\movimentacaounificadomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\modules\\movimentacaounificadomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\services\\serialservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\serialservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|c:\\zendioninc\\agrobot_base\\agrobase\\agrobase\\forms\\frmprincipal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\forms\\frmprincipal.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\services\\dispositivosservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\services\\dispositivosservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
},
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|C:\\ZendionINC\\agrobot_base\\AgroBase\\agrobase\\models\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
|
||||
"RelativeMoniker": "D:0:0:{C54B41C0-1D21-4E3E-949E-0F86BBC86A33}|AgroBase\\AgroBase.csproj|solutionrelative:agrobase\\models\\operacoes\\operacaomodel.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
|
|
@ -14,19 +42,110 @@
|
|||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 0,
|
||||
"SelectedChildIndex": 4,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "Enuns.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Enuns.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\Enuns.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Enuns.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\Enuns.cs",
|
||||
"ViewState": "AQIAAAgAAAAAAAAAAAAxwDUAAAAMAAAA",
|
||||
"DocumentIndex": 2,
|
||||
"Title": "frmResultadosOperacao.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmResultadosOperacao.cs",
|
||||
"ViewState": "AQIAACkCAAAAAAAAAAAAAEgCAAAXAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-06-06T10:38:10.351Z",
|
||||
"WhenOpened": "2024-06-08T00:52:51.592Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 1,
|
||||
"Title": "frmAcompanhamento.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmAcompanhamento.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmAcompanhamento.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmAcompanhamento.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\frmAcompanhamento.cs",
|
||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAHEBAABMAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-06-08T00:34:52.765Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 5,
|
||||
"Title": "frmPrincipal.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmPrincipal.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\frmPrincipal.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\frmPrincipal.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\frmPrincipal.cs",
|
||||
"ViewState": "AQIAABoAAAAAAAAAAAAkwFkAAAApAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-06-07T19:57:07.232Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 4,
|
||||
"Title": "SerialService.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\SerialService.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Services\\SerialService.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\SerialService.cs",
|
||||
"RelativeToolTip": "AgroBase\\Services\\SerialService.cs",
|
||||
"ViewState": "AQIAAAEAAAAAAAAAAAAiwDkAAAAAAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-06-07T18:00:32.305Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "frmOperacaoManual.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
|
||||
"RelativeToolTip": "AgroBase\\Forms\\Operacoes\\frmOperacaoManual.cs",
|
||||
"ViewState": "AQIAAA0AAAAAAAAAAAAkwMcBAAAIAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-06-07T16:53:23.408Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 7,
|
||||
"Title": "OperacaoModel.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\Operacoes\\OperacaoModel.cs",
|
||||
"ViewState": "AQIAAOUAAAAAAAAAAAAqwCEAAAAfAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-06-07T11:12:40.207Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 3,
|
||||
"Title": "MovimentacaoUnificadoModel.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
|
||||
"RelativeToolTip": "AgroBase\\Models\\Modules\\MovimentacaoUnificadoModel.cs",
|
||||
"ViewState": "AQIAAAkAAAAAAAAAAAAqwB8AAABLAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-06-06T18:02:19.931Z",
|
||||
"EditorCaption": ""
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 6,
|
||||
"Title": "DispositivosService.cs",
|
||||
"DocumentMoniker": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\DispositivosService.cs",
|
||||
"RelativeDocumentMoniker": "AgroBase\\Services\\DispositivosService.cs",
|
||||
"ToolTip": "C:\\ZendionINC\\agrobot_base\\AgroBase\\AgroBase\\Services\\DispositivosService.cs",
|
||||
"RelativeToolTip": "AgroBase\\Services\\DispositivosService.cs",
|
||||
"ViewState": "AQIAADQAAAAAAAAAAAA7wNwAAAAhAAAA",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
|
||||
"WhenOpened": "2024-06-06T17:38:48.095Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -359,6 +359,7 @@
|
|||
<Compile Include="Models\Enuns.cs" />
|
||||
<Compile Include="Models\GeneralJoystick.cs" />
|
||||
<Compile Include="Models\Modules\MovimentacaoModel.cs" />
|
||||
<Compile Include="Models\Modules\MovimentacaoUnificadoModel.cs" />
|
||||
<Compile Include="Models\Modules\PinoutModel.cs" />
|
||||
<Compile Include="Models\Modules\SensoriamentoModel.cs" />
|
||||
<Compile Include="Models\Modules\WT901C485\WitSdk\Device\Connector\Entity\SerialPortConfig.cs" />
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ namespace AgroBase.Forms.Atuador
|
|||
private void EnviarProtocoloComandoBomba()
|
||||
{
|
||||
string Protocolo = DispAtu.Dados.BombaPressurizadora.ProtocoloComando();
|
||||
DispAtu.AdicionarMensagemFila(Protocolo);
|
||||
DispAtu.AdicionarMensagemFila(DispAtu.Dados.Modulo_ID, Protocolo);
|
||||
}
|
||||
|
||||
private void nudPressaoSP_ValueChanged(object sender, EventArgs e)
|
||||
|
|
@ -202,7 +202,7 @@ namespace AgroBase.Forms.Atuador
|
|||
{
|
||||
Bico.Atuado = !DispAtu.Dados.AtuacaoNivelAlto;
|
||||
string Protocolo = Bico.ProtocoloComando();
|
||||
DispAtu.AdicionarMensagemFila(Protocolo);
|
||||
DispAtu.AdicionarMensagemFila(DispAtu.Dados.Modulo_ID, Protocolo);
|
||||
|
||||
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Invalidate();
|
||||
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Controls.OfType<Label>().First(x => x.Name == "lblCmd_" + ID).Text = "Comando: Desligado";
|
||||
|
|
@ -218,7 +218,7 @@ namespace AgroBase.Forms.Atuador
|
|||
{
|
||||
Bico.Atuado = DispAtu.Dados.AtuacaoNivelAlto;
|
||||
string Protocolo = Bico.ProtocoloComando();
|
||||
DispAtu.AdicionarMensagemFila(Protocolo);
|
||||
DispAtu.AdicionarMensagemFila(DispAtu.Dados.Modulo_ID, Protocolo);
|
||||
|
||||
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Invalidate();
|
||||
pnlBicos.Controls.OfType<Panel>().First(x => x.Name == "pnlB_" + ID).Controls.OfType<Label>().First(x => x.Name == "lblCmd_" + ID).Text = "Comando: Ligado";
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ namespace AgroBase.Forms.Direcional
|
|||
{
|
||||
var Motor = ((DirecionalModel)Dispositivo.Dados).Motores.FirstOrDefault(x => x.ID == ID);
|
||||
string Comando = Motor.ProtocoloComando(Direcao.Parado, true);
|
||||
Dispositivo.AdicionarMensagemFila(Comando);
|
||||
Dispositivo.AdicionarMensagemFila(((DirecionalModel)Dispositivo.Dados).Modulo_ID, Comando);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace AgroBase.Forms.Movimentacao
|
|||
|
||||
private void frmMovConfig_Load(object sender, EventArgs e)
|
||||
{
|
||||
nudDiametroRoda.Value = Convert.ToInt32(MovimentacaoModel.DiametroRoda * 1000);
|
||||
nudDiametroRoda.Value = Convert.ToInt32(VariaveisEquipamento.DiametroRoda * 1000);
|
||||
|
||||
if (Disp == null)
|
||||
{
|
||||
|
|
@ -130,7 +130,7 @@ namespace AgroBase.Forms.Movimentacao
|
|||
|
||||
private void nudDiametroRoda_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
MovimentacaoModel.DiametroRoda = Convert.ToInt32(nudDiametroRoda.Value) / 1000;
|
||||
VariaveisEquipamento.DiametroRoda = Convert.ToInt32(nudDiametroRoda.Value) / 1000;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ namespace AgroBase.Forms
|
|||
foreach (var Motor in DispMov.Dados.Motores)
|
||||
{
|
||||
string ProtocoloMotor = Motor.ProtocoloTeste();
|
||||
DispMov.AdicionarMensagemFila(ProtocoloMotor);
|
||||
DispMov.AdicionarMensagemFila(DispMov.Dados.Modulo_ID, ProtocoloMotor);
|
||||
System.Threading.Thread.Sleep(10);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -28,9 +28,9 @@
|
|||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
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();
|
||||
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();
|
||||
this.pnlCamerasSolo = new System.Windows.Forms.Panel();
|
||||
this.pnlCameraSoloE = new System.Windows.Forms.Panel();
|
||||
this.picCameraSoloE = new System.Windows.Forms.PictureBox();
|
||||
|
|
@ -89,7 +89,6 @@
|
|||
this.lblCorrente = new System.Windows.Forms.Label();
|
||||
this.lblRPM = new System.Windows.Forms.Label();
|
||||
this.lblVelocidade = new System.Windows.Forms.Label();
|
||||
this.lblPotencia = new System.Windows.Forms.Label();
|
||||
this.lblKmh = new System.Windows.Forms.Label();
|
||||
this.pnlCamerasSolo.SuspendLayout();
|
||||
this.pnlCameraSoloE.SuspendLayout();
|
||||
|
|
@ -119,19 +118,19 @@
|
|||
this.pnlCamerasSolo.BackColor = System.Drawing.Color.White;
|
||||
this.pnlCamerasSolo.Controls.Add(this.pnlCameraSoloE);
|
||||
this.pnlCamerasSolo.Controls.Add(this.pnlCameraSoloD);
|
||||
this.pnlCamerasSolo.Location = new System.Drawing.Point(31, 404);
|
||||
this.pnlCamerasSolo.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlCamerasSolo.Location = new System.Drawing.Point(23, 328);
|
||||
this.pnlCamerasSolo.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlCamerasSolo.Name = "pnlCamerasSolo";
|
||||
this.pnlCamerasSolo.Size = new System.Drawing.Size(784, 226);
|
||||
this.pnlCamerasSolo.Size = new System.Drawing.Size(588, 184);
|
||||
this.pnlCamerasSolo.TabIndex = 0;
|
||||
//
|
||||
// pnlCameraSoloE
|
||||
//
|
||||
this.pnlCameraSoloE.Controls.Add(this.picCameraSoloE);
|
||||
this.pnlCameraSoloE.Location = new System.Drawing.Point(3, 2);
|
||||
this.pnlCameraSoloE.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlCameraSoloE.Location = new System.Drawing.Point(2, 2);
|
||||
this.pnlCameraSoloE.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlCameraSoloE.Name = "pnlCameraSoloE";
|
||||
this.pnlCameraSoloE.Size = new System.Drawing.Size(385, 219);
|
||||
this.pnlCameraSoloE.Size = new System.Drawing.Size(289, 178);
|
||||
this.pnlCameraSoloE.TabIndex = 24;
|
||||
//
|
||||
// picCameraSoloE
|
||||
|
|
@ -139,9 +138,9 @@
|
|||
this.picCameraSoloE.BackColor = System.Drawing.SystemColors.ButtonFace;
|
||||
this.picCameraSoloE.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.picCameraSoloE.Location = new System.Drawing.Point(0, 0);
|
||||
this.picCameraSoloE.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.picCameraSoloE.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.picCameraSoloE.Name = "picCameraSoloE";
|
||||
this.picCameraSoloE.Size = new System.Drawing.Size(385, 219);
|
||||
this.picCameraSoloE.Size = new System.Drawing.Size(289, 178);
|
||||
this.picCameraSoloE.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.picCameraSoloE.TabIndex = 1;
|
||||
this.picCameraSoloE.TabStop = false;
|
||||
|
|
@ -149,10 +148,10 @@
|
|||
// pnlCameraSoloD
|
||||
//
|
||||
this.pnlCameraSoloD.Controls.Add(this.picCameraSoloD);
|
||||
this.pnlCameraSoloD.Location = new System.Drawing.Point(395, 2);
|
||||
this.pnlCameraSoloD.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlCameraSoloD.Location = new System.Drawing.Point(296, 2);
|
||||
this.pnlCameraSoloD.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlCameraSoloD.Name = "pnlCameraSoloD";
|
||||
this.pnlCameraSoloD.Size = new System.Drawing.Size(385, 219);
|
||||
this.pnlCameraSoloD.Size = new System.Drawing.Size(289, 178);
|
||||
this.pnlCameraSoloD.TabIndex = 23;
|
||||
//
|
||||
// picCameraSoloD
|
||||
|
|
@ -160,9 +159,9 @@
|
|||
this.picCameraSoloD.BackColor = System.Drawing.SystemColors.ButtonFace;
|
||||
this.picCameraSoloD.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.picCameraSoloD.Location = new System.Drawing.Point(0, 0);
|
||||
this.picCameraSoloD.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.picCameraSoloD.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.picCameraSoloD.Name = "picCameraSoloD";
|
||||
this.picCameraSoloD.Size = new System.Drawing.Size(385, 219);
|
||||
this.picCameraSoloD.Size = new System.Drawing.Size(289, 178);
|
||||
this.picCameraSoloD.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.picCameraSoloD.TabIndex = 1;
|
||||
this.picCameraSoloD.TabStop = false;
|
||||
|
|
@ -171,10 +170,10 @@
|
|||
//
|
||||
this.pnlAtuadores.BackColor = System.Drawing.Color.White;
|
||||
this.pnlAtuadores.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.pnlAtuadores.Location = new System.Drawing.Point(31, 638);
|
||||
this.pnlAtuadores.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlAtuadores.Location = new System.Drawing.Point(23, 518);
|
||||
this.pnlAtuadores.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlAtuadores.Name = "pnlAtuadores";
|
||||
this.pnlAtuadores.Size = new System.Drawing.Size(784, 155);
|
||||
this.pnlAtuadores.Size = new System.Drawing.Size(589, 127);
|
||||
this.pnlAtuadores.TabIndex = 1;
|
||||
this.pnlAtuadores.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAtuadores_Paint);
|
||||
//
|
||||
|
|
@ -182,10 +181,10 @@
|
|||
//
|
||||
this.btnIniciarOperacao.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnIniciarOperacao.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnIniciarOperacao.Location = new System.Drawing.Point(1492, 720);
|
||||
this.btnIniciarOperacao.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnIniciarOperacao.Location = new System.Drawing.Point(1119, 585);
|
||||
this.btnIniciarOperacao.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnIniciarOperacao.Name = "btnIniciarOperacao";
|
||||
this.btnIniciarOperacao.Size = new System.Drawing.Size(151, 65);
|
||||
this.btnIniciarOperacao.Size = new System.Drawing.Size(113, 53);
|
||||
this.btnIniciarOperacao.TabIndex = 25;
|
||||
this.btnIniciarOperacao.Text = "Iniciar Operação";
|
||||
this.btnIniciarOperacao.UseVisualStyleBackColor = true;
|
||||
|
|
@ -195,18 +194,18 @@
|
|||
//
|
||||
this.chartGraficos.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
chartArea1.Name = "ChartArea1";
|
||||
this.chartGraficos.ChartAreas.Add(chartArea1);
|
||||
legend1.Name = "Legend1";
|
||||
this.chartGraficos.Legends.Add(legend1);
|
||||
this.chartGraficos.Location = new System.Drawing.Point(853, 9);
|
||||
this.chartGraficos.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
chartArea3.Name = "ChartArea1";
|
||||
this.chartGraficos.ChartAreas.Add(chartArea3);
|
||||
legend3.Name = "Legend1";
|
||||
this.chartGraficos.Legends.Add(legend3);
|
||||
this.chartGraficos.Location = new System.Drawing.Point(640, 7);
|
||||
this.chartGraficos.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chartGraficos.Name = "chartGraficos";
|
||||
series1.ChartArea = "ChartArea1";
|
||||
series1.Legend = "Legend1";
|
||||
series1.Name = "Series1";
|
||||
this.chartGraficos.Series.Add(series1);
|
||||
this.chartGraficos.Size = new System.Drawing.Size(788, 391);
|
||||
series3.ChartArea = "ChartArea1";
|
||||
series3.Legend = "Legend1";
|
||||
series3.Name = "Series1";
|
||||
this.chartGraficos.Series.Add(series3);
|
||||
this.chartGraficos.Size = new System.Drawing.Size(591, 318);
|
||||
this.chartGraficos.TabIndex = 2;
|
||||
this.chartGraficos.Text = "chart1";
|
||||
//
|
||||
|
|
@ -214,8 +213,9 @@
|
|||
//
|
||||
this.lblDir_EF.AutoSize = true;
|
||||
this.lblDir_EF.Location = new System.Drawing.Point(1, 1);
|
||||
this.lblDir_EF.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDir_EF.Name = "lblDir_EF";
|
||||
this.lblDir_EF.Size = new System.Drawing.Size(53, 16);
|
||||
this.lblDir_EF.Size = new System.Drawing.Size(45, 13);
|
||||
this.lblDir_EF.TabIndex = 9;
|
||||
this.lblDir_EF.Text = "EF 000º";
|
||||
//
|
||||
|
|
@ -223,8 +223,9 @@
|
|||
//
|
||||
this.lblDir_DF.AutoSize = true;
|
||||
this.lblDir_DF.Location = new System.Drawing.Point(1, 1);
|
||||
this.lblDir_DF.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDir_DF.Name = "lblDir_DF";
|
||||
this.lblDir_DF.Size = new System.Drawing.Size(54, 16);
|
||||
this.lblDir_DF.Size = new System.Drawing.Size(46, 13);
|
||||
this.lblDir_DF.TabIndex = 10;
|
||||
this.lblDir_DF.Text = "DF 000º";
|
||||
//
|
||||
|
|
@ -232,8 +233,9 @@
|
|||
//
|
||||
this.lblDir_DT.AutoSize = true;
|
||||
this.lblDir_DT.Location = new System.Drawing.Point(1, 2);
|
||||
this.lblDir_DT.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDir_DT.Name = "lblDir_DT";
|
||||
this.lblDir_DT.Size = new System.Drawing.Size(55, 16);
|
||||
this.lblDir_DT.Size = new System.Drawing.Size(47, 13);
|
||||
this.lblDir_DT.TabIndex = 11;
|
||||
this.lblDir_DT.Text = "DT 000º";
|
||||
//
|
||||
|
|
@ -241,8 +243,9 @@
|
|||
//
|
||||
this.lblDir_ET.AutoSize = true;
|
||||
this.lblDir_ET.Location = new System.Drawing.Point(1, 2);
|
||||
this.lblDir_ET.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDir_ET.Name = "lblDir_ET";
|
||||
this.lblDir_ET.Size = new System.Drawing.Size(54, 16);
|
||||
this.lblDir_ET.Size = new System.Drawing.Size(46, 13);
|
||||
this.lblDir_ET.TabIndex = 12;
|
||||
this.lblDir_ET.Text = "ET 000º";
|
||||
//
|
||||
|
|
@ -255,11 +258,11 @@
|
|||
this.tabControl1.Controls.Add(this.tabInformacoes);
|
||||
this.tabControl1.Controls.Add(this.tabDeteccoes);
|
||||
this.tabControl1.Controls.Add(this.tabPulverizador);
|
||||
this.tabControl1.Location = new System.Drawing.Point(853, 407);
|
||||
this.tabControl1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabControl1.Location = new System.Drawing.Point(640, 331);
|
||||
this.tabControl1.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(628, 386);
|
||||
this.tabControl1.Size = new System.Drawing.Size(471, 314);
|
||||
this.tabControl1.TabIndex = 17;
|
||||
//
|
||||
// tabMapa
|
||||
|
|
@ -274,64 +277,69 @@
|
|||
this.tabMapa.Controls.Add(this.pnlAnguloGPS);
|
||||
this.tabMapa.Controls.Add(this.pnlAnguloMagnetometro);
|
||||
this.tabMapa.Controls.Add(this.lblMagnetometro);
|
||||
this.tabMapa.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabMapa.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabMapa.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabMapa.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabMapa.Name = "tabMapa";
|
||||
this.tabMapa.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabMapa.Size = new System.Drawing.Size(620, 357);
|
||||
this.tabMapa.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabMapa.Size = new System.Drawing.Size(463, 288);
|
||||
this.tabMapa.TabIndex = 0;
|
||||
this.tabMapa.Text = "Mapa";
|
||||
//
|
||||
// lblGPSprecisao
|
||||
//
|
||||
this.lblGPSprecisao.AutoSize = true;
|
||||
this.lblGPSprecisao.Location = new System.Drawing.Point(5, 143);
|
||||
this.lblGPSprecisao.Location = new System.Drawing.Point(4, 116);
|
||||
this.lblGPSprecisao.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblGPSprecisao.Name = "lblGPSprecisao";
|
||||
this.lblGPSprecisao.Size = new System.Drawing.Size(105, 16);
|
||||
this.lblGPSprecisao.Size = new System.Drawing.Size(86, 13);
|
||||
this.lblGPSprecisao.TabIndex = 31;
|
||||
this.lblGPSprecisao.Text = "Precisão: 0,00 m";
|
||||
//
|
||||
// lblGPSaltitude
|
||||
//
|
||||
this.lblGPSaltitude.AutoSize = true;
|
||||
this.lblGPSaltitude.Location = new System.Drawing.Point(5, 175);
|
||||
this.lblGPSaltitude.Location = new System.Drawing.Point(4, 142);
|
||||
this.lblGPSaltitude.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblGPSaltitude.Name = "lblGPSaltitude";
|
||||
this.lblGPSaltitude.Size = new System.Drawing.Size(88, 16);
|
||||
this.lblGPSaltitude.Size = new System.Drawing.Size(74, 13);
|
||||
this.lblGPSaltitude.TabIndex = 30;
|
||||
this.lblGPSaltitude.Text = "Altitude: 0,0 m";
|
||||
//
|
||||
// lblGPSvelocidade
|
||||
//
|
||||
this.lblGPSvelocidade.AutoSize = true;
|
||||
this.lblGPSvelocidade.Location = new System.Drawing.Point(5, 159);
|
||||
this.lblGPSvelocidade.Location = new System.Drawing.Point(4, 129);
|
||||
this.lblGPSvelocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblGPSvelocidade.Name = "lblGPSvelocidade";
|
||||
this.lblGPSvelocidade.Size = new System.Drawing.Size(92, 16);
|
||||
this.lblGPSvelocidade.Size = new System.Drawing.Size(80, 13);
|
||||
this.lblGPSvelocidade.TabIndex = 29;
|
||||
this.lblGPSvelocidade.Text = "Vel.: 0,00 km/h";
|
||||
//
|
||||
// lblGPSsatelites
|
||||
//
|
||||
this.lblGPSsatelites.AutoSize = true;
|
||||
this.lblGPSsatelites.Location = new System.Drawing.Point(5, 127);
|
||||
this.lblGPSsatelites.Location = new System.Drawing.Point(4, 103);
|
||||
this.lblGPSsatelites.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblGPSsatelites.Name = "lblGPSsatelites";
|
||||
this.lblGPSsatelites.Size = new System.Drawing.Size(67, 16);
|
||||
this.lblGPSsatelites.Size = new System.Drawing.Size(54, 13);
|
||||
this.lblGPSsatelites.TabIndex = 28;
|
||||
this.lblGPSsatelites.Text = "0 satélites";
|
||||
//
|
||||
// pnlMapa
|
||||
//
|
||||
this.pnlMapa.Location = new System.Drawing.Point(139, 2);
|
||||
this.pnlMapa.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlMapa.Location = new System.Drawing.Point(104, 2);
|
||||
this.pnlMapa.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlMapa.Name = "pnlMapa";
|
||||
this.pnlMapa.Size = new System.Drawing.Size(479, 352);
|
||||
this.pnlMapa.Size = new System.Drawing.Size(359, 286);
|
||||
this.pnlMapa.TabIndex = 0;
|
||||
//
|
||||
// lblGPS
|
||||
//
|
||||
this.lblGPS.AutoSize = true;
|
||||
this.lblGPS.Location = new System.Drawing.Point(5, 2);
|
||||
this.lblGPS.Location = new System.Drawing.Point(4, 2);
|
||||
this.lblGPS.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblGPS.Name = "lblGPS";
|
||||
this.lblGPS.Size = new System.Drawing.Size(35, 16);
|
||||
this.lblGPS.Size = new System.Drawing.Size(29, 13);
|
||||
this.lblGPS.TabIndex = 19;
|
||||
this.lblGPS.Text = "GPS";
|
||||
//
|
||||
|
|
@ -340,10 +348,10 @@
|
|||
this.pnlAnguloGPS.BackColor = System.Drawing.Color.White;
|
||||
this.pnlAnguloGPS.BackgroundImage = global::AgroBase.Properties.Resources.rosa_dos_ventos;
|
||||
this.pnlAnguloGPS.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||
this.pnlAnguloGPS.Location = new System.Drawing.Point(9, 22);
|
||||
this.pnlAnguloGPS.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlAnguloGPS.Location = new System.Drawing.Point(7, 18);
|
||||
this.pnlAnguloGPS.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlAnguloGPS.Name = "pnlAnguloGPS";
|
||||
this.pnlAnguloGPS.Size = new System.Drawing.Size(104, 103);
|
||||
this.pnlAnguloGPS.Size = new System.Drawing.Size(78, 84);
|
||||
this.pnlAnguloGPS.TabIndex = 18;
|
||||
this.pnlAnguloGPS.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAnguloGPS_Paint);
|
||||
//
|
||||
|
|
@ -352,30 +360,31 @@
|
|||
this.pnlAnguloMagnetometro.BackColor = System.Drawing.Color.White;
|
||||
this.pnlAnguloMagnetometro.BackgroundImage = global::AgroBase.Properties.Resources.rosa_dos_ventos;
|
||||
this.pnlAnguloMagnetometro.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||
this.pnlAnguloMagnetometro.Location = new System.Drawing.Point(9, 250);
|
||||
this.pnlAnguloMagnetometro.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlAnguloMagnetometro.Location = new System.Drawing.Point(7, 203);
|
||||
this.pnlAnguloMagnetometro.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlAnguloMagnetometro.Name = "pnlAnguloMagnetometro";
|
||||
this.pnlAnguloMagnetometro.Size = new System.Drawing.Size(104, 103);
|
||||
this.pnlAnguloMagnetometro.Size = new System.Drawing.Size(78, 84);
|
||||
this.pnlAnguloMagnetometro.TabIndex = 20;
|
||||
this.pnlAnguloMagnetometro.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlAnguloMagnetometro_Paint);
|
||||
//
|
||||
// lblMagnetometro
|
||||
//
|
||||
this.lblMagnetometro.AutoSize = true;
|
||||
this.lblMagnetometro.Location = new System.Drawing.Point(5, 231);
|
||||
this.lblMagnetometro.Location = new System.Drawing.Point(4, 188);
|
||||
this.lblMagnetometro.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblMagnetometro.Name = "lblMagnetometro";
|
||||
this.lblMagnetometro.Size = new System.Drawing.Size(94, 16);
|
||||
this.lblMagnetometro.Size = new System.Drawing.Size(75, 13);
|
||||
this.lblMagnetometro.TabIndex = 21;
|
||||
this.lblMagnetometro.Text = "Magnetômetro";
|
||||
//
|
||||
// tabInformacoes
|
||||
//
|
||||
this.tabInformacoes.Controls.Add(this.gridDados);
|
||||
this.tabInformacoes.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabInformacoes.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabInformacoes.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabInformacoes.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabInformacoes.Name = "tabInformacoes";
|
||||
this.tabInformacoes.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabInformacoes.Size = new System.Drawing.Size(620, 357);
|
||||
this.tabInformacoes.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabInformacoes.Size = new System.Drawing.Size(463, 288);
|
||||
this.tabInformacoes.TabIndex = 1;
|
||||
this.tabInformacoes.Text = "Informações";
|
||||
this.tabInformacoes.UseVisualStyleBackColor = true;
|
||||
|
|
@ -384,22 +393,22 @@
|
|||
//
|
||||
this.gridDados.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.gridDados.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.gridDados.Location = new System.Drawing.Point(3, 2);
|
||||
this.gridDados.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.gridDados.Location = new System.Drawing.Point(2, 2);
|
||||
this.gridDados.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.gridDados.Name = "gridDados";
|
||||
this.gridDados.RowHeadersWidth = 51;
|
||||
this.gridDados.RowTemplate.Height = 24;
|
||||
this.gridDados.Size = new System.Drawing.Size(614, 353);
|
||||
this.gridDados.Size = new System.Drawing.Size(459, 284);
|
||||
this.gridDados.TabIndex = 0;
|
||||
//
|
||||
// tabDeteccoes
|
||||
//
|
||||
this.tabDeteccoes.Controls.Add(this.pnlDeteccoesRua);
|
||||
this.tabDeteccoes.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabDeteccoes.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabDeteccoes.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabDeteccoes.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabDeteccoes.Name = "tabDeteccoes";
|
||||
this.tabDeteccoes.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabDeteccoes.Size = new System.Drawing.Size(620, 357);
|
||||
this.tabDeteccoes.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabDeteccoes.Size = new System.Drawing.Size(463, 288);
|
||||
this.tabDeteccoes.TabIndex = 2;
|
||||
this.tabDeteccoes.Text = "Detecção rua";
|
||||
this.tabDeteccoes.UseVisualStyleBackColor = true;
|
||||
|
|
@ -408,18 +417,18 @@
|
|||
//
|
||||
this.pnlDeteccoesRua.Controls.Add(this.picSonar);
|
||||
this.pnlDeteccoesRua.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pnlDeteccoesRua.Location = new System.Drawing.Point(3, 2);
|
||||
this.pnlDeteccoesRua.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlDeteccoesRua.Location = new System.Drawing.Point(2, 2);
|
||||
this.pnlDeteccoesRua.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlDeteccoesRua.Name = "pnlDeteccoesRua";
|
||||
this.pnlDeteccoesRua.Size = new System.Drawing.Size(614, 353);
|
||||
this.pnlDeteccoesRua.Size = new System.Drawing.Size(459, 284);
|
||||
this.pnlDeteccoesRua.TabIndex = 0;
|
||||
//
|
||||
// picSonar
|
||||
//
|
||||
this.picSonar.Location = new System.Drawing.Point(17, 16);
|
||||
this.picSonar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.picSonar.Location = new System.Drawing.Point(13, 13);
|
||||
this.picSonar.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.picSonar.Name = "picSonar";
|
||||
this.picSonar.Size = new System.Drawing.Size(579, 320);
|
||||
this.picSonar.Size = new System.Drawing.Size(434, 260);
|
||||
this.picSonar.TabIndex = 0;
|
||||
this.picSonar.TabStop = false;
|
||||
//
|
||||
|
|
@ -429,11 +438,11 @@
|
|||
this.tabPulverizador.Controls.Add(this.nudPressaoSP);
|
||||
this.tabPulverizador.Controls.Add(this.btnDesligarBomba);
|
||||
this.tabPulverizador.Controls.Add(this.btnLigarBomba);
|
||||
this.tabPulverizador.Location = new System.Drawing.Point(4, 25);
|
||||
this.tabPulverizador.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabPulverizador.Location = new System.Drawing.Point(4, 22);
|
||||
this.tabPulverizador.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabPulverizador.Name = "tabPulverizador";
|
||||
this.tabPulverizador.Padding = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.tabPulverizador.Size = new System.Drawing.Size(620, 357);
|
||||
this.tabPulverizador.Padding = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.tabPulverizador.Size = new System.Drawing.Size(463, 288);
|
||||
this.tabPulverizador.TabIndex = 3;
|
||||
this.tabPulverizador.Text = "Pulverizador";
|
||||
this.tabPulverizador.UseVisualStyleBackColor = true;
|
||||
|
|
@ -442,24 +451,25 @@
|
|||
//
|
||||
this.lblPressaoSP.AutoSize = true;
|
||||
this.lblPressaoSP.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblPressaoSP.Location = new System.Drawing.Point(24, 14);
|
||||
this.lblPressaoSP.Location = new System.Drawing.Point(18, 11);
|
||||
this.lblPressaoSP.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblPressaoSP.Name = "lblPressaoSP";
|
||||
this.lblPressaoSP.Size = new System.Drawing.Size(89, 16);
|
||||
this.lblPressaoSP.Size = new System.Drawing.Size(72, 13);
|
||||
this.lblPressaoSP.TabIndex = 29;
|
||||
this.lblPressaoSP.Text = "Pressão SP";
|
||||
//
|
||||
// nudPressaoSP
|
||||
//
|
||||
this.nudPressaoSP.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.nudPressaoSP.Location = new System.Drawing.Point(24, 33);
|
||||
this.nudPressaoSP.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.nudPressaoSP.Location = new System.Drawing.Point(18, 27);
|
||||
this.nudPressaoSP.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.nudPressaoSP.Maximum = new decimal(new int[] {
|
||||
200,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.nudPressaoSP.Name = "nudPressaoSP";
|
||||
this.nudPressaoSP.Size = new System.Drawing.Size(105, 22);
|
||||
this.nudPressaoSP.Size = new System.Drawing.Size(79, 19);
|
||||
this.nudPressaoSP.TabIndex = 28;
|
||||
this.nudPressaoSP.TextAlign = System.Windows.Forms.HorizontalAlignment.Center;
|
||||
this.nudPressaoSP.ValueChanged += new System.EventHandler(this.nudPressaoSP_ValueChanged);
|
||||
|
|
@ -467,10 +477,10 @@
|
|||
// btnDesligarBomba
|
||||
//
|
||||
this.btnDesligarBomba.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnDesligarBomba.Location = new System.Drawing.Point(325, 21);
|
||||
this.btnDesligarBomba.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnDesligarBomba.Location = new System.Drawing.Point(244, 17);
|
||||
this.btnDesligarBomba.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnDesligarBomba.Name = "btnDesligarBomba";
|
||||
this.btnDesligarBomba.Size = new System.Drawing.Size(139, 34);
|
||||
this.btnDesligarBomba.Size = new System.Drawing.Size(104, 28);
|
||||
this.btnDesligarBomba.TabIndex = 27;
|
||||
this.btnDesligarBomba.Text = "Desligar Bomba";
|
||||
this.btnDesligarBomba.UseVisualStyleBackColor = true;
|
||||
|
|
@ -479,10 +489,10 @@
|
|||
// btnLigarBomba
|
||||
//
|
||||
this.btnLigarBomba.Font = new System.Drawing.Font("Microsoft Sans Serif", 7.8F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.btnLigarBomba.Location = new System.Drawing.Point(157, 21);
|
||||
this.btnLigarBomba.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnLigarBomba.Location = new System.Drawing.Point(118, 17);
|
||||
this.btnLigarBomba.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnLigarBomba.Name = "btnLigarBomba";
|
||||
this.btnLigarBomba.Size = new System.Drawing.Size(139, 34);
|
||||
this.btnLigarBomba.Size = new System.Drawing.Size(104, 28);
|
||||
this.btnLigarBomba.TabIndex = 26;
|
||||
this.btnLigarBomba.Text = "Ligar Bomba";
|
||||
this.btnLigarBomba.UseVisualStyleBackColor = true;
|
||||
|
|
@ -491,10 +501,10 @@
|
|||
// pnlCameraRua
|
||||
//
|
||||
this.pnlCameraRua.Controls.Add(this.picCameraRua);
|
||||
this.pnlCameraRua.Location = new System.Drawing.Point(187, 28);
|
||||
this.pnlCameraRua.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlCameraRua.Location = new System.Drawing.Point(140, 23);
|
||||
this.pnlCameraRua.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlCameraRua.Name = "pnlCameraRua";
|
||||
this.pnlCameraRua.Size = new System.Drawing.Size(476, 352);
|
||||
this.pnlCameraRua.Size = new System.Drawing.Size(357, 286);
|
||||
this.pnlCameraRua.TabIndex = 22;
|
||||
//
|
||||
// picCameraRua
|
||||
|
|
@ -502,9 +512,9 @@
|
|||
this.picCameraRua.BackColor = System.Drawing.SystemColors.ButtonFace;
|
||||
this.picCameraRua.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.picCameraRua.Location = new System.Drawing.Point(0, 0);
|
||||
this.picCameraRua.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.picCameraRua.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.picCameraRua.Name = "picCameraRua";
|
||||
this.picCameraRua.Size = new System.Drawing.Size(476, 352);
|
||||
this.picCameraRua.Size = new System.Drawing.Size(357, 286);
|
||||
this.picCameraRua.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
|
||||
this.picCameraRua.TabIndex = 0;
|
||||
this.picCameraRua.TabStop = false;
|
||||
|
|
@ -516,19 +526,19 @@
|
|||
this.pnlDir_EF.Controls.Add(this.btnRef_EF);
|
||||
this.pnlDir_EF.Controls.Add(this.lblDir_EF);
|
||||
this.pnlDir_EF.Location = new System.Drawing.Point(0, 0);
|
||||
this.pnlDir_EF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlDir_EF.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlDir_EF.Name = "pnlDir_EF";
|
||||
this.pnlDir_EF.Size = new System.Drawing.Size(200, 199);
|
||||
this.pnlDir_EF.Size = new System.Drawing.Size(150, 162);
|
||||
this.pnlDir_EF.TabIndex = 23;
|
||||
//
|
||||
// chbLivre_EF
|
||||
//
|
||||
this.chbLivre_EF.AutoSize = true;
|
||||
this.chbLivre_EF.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.chbLivre_EF.Location = new System.Drawing.Point(135, 177);
|
||||
this.chbLivre_EF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbLivre_EF.Location = new System.Drawing.Point(101, 144);
|
||||
this.chbLivre_EF.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbLivre_EF.Name = "chbLivre_EF";
|
||||
this.chbLivre_EF.Size = new System.Drawing.Size(58, 20);
|
||||
this.chbLivre_EF.Size = new System.Drawing.Size(49, 17);
|
||||
this.chbLivre_EF.TabIndex = 17;
|
||||
this.chbLivre_EF.Text = "Livre";
|
||||
this.chbLivre_EF.UseVisualStyleBackColor = true;
|
||||
|
|
@ -536,20 +546,20 @@
|
|||
// chbCmd_EF
|
||||
//
|
||||
this.chbCmd_EF.AutoSize = true;
|
||||
this.chbCmd_EF.Location = new System.Drawing.Point(4, 177);
|
||||
this.chbCmd_EF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbCmd_EF.Location = new System.Drawing.Point(3, 144);
|
||||
this.chbCmd_EF.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbCmd_EF.Name = "chbCmd_EF";
|
||||
this.chbCmd_EF.Size = new System.Drawing.Size(83, 20);
|
||||
this.chbCmd_EF.Size = new System.Drawing.Size(68, 17);
|
||||
this.chbCmd_EF.TabIndex = 15;
|
||||
this.chbCmd_EF.Text = "Controlar";
|
||||
this.chbCmd_EF.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnRef_EF
|
||||
//
|
||||
this.btnRef_EF.Location = new System.Drawing.Point(148, 2);
|
||||
this.btnRef_EF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnRef_EF.Location = new System.Drawing.Point(111, 2);
|
||||
this.btnRef_EF.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnRef_EF.Name = "btnRef_EF";
|
||||
this.btnRef_EF.Size = new System.Drawing.Size(49, 23);
|
||||
this.btnRef_EF.Size = new System.Drawing.Size(37, 19);
|
||||
this.btnRef_EF.TabIndex = 13;
|
||||
this.btnRef_EF.Text = "REF";
|
||||
this.btnRef_EF.UseVisualStyleBackColor = true;
|
||||
|
|
@ -560,20 +570,20 @@
|
|||
this.pnlDir_ET.Controls.Add(this.chbCmd_ET);
|
||||
this.pnlDir_ET.Controls.Add(this.btnRef_ET);
|
||||
this.pnlDir_ET.Controls.Add(this.lblDir_ET);
|
||||
this.pnlDir_ET.Location = new System.Drawing.Point(0, 199);
|
||||
this.pnlDir_ET.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlDir_ET.Location = new System.Drawing.Point(0, 162);
|
||||
this.pnlDir_ET.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlDir_ET.Name = "pnlDir_ET";
|
||||
this.pnlDir_ET.Size = new System.Drawing.Size(200, 199);
|
||||
this.pnlDir_ET.Size = new System.Drawing.Size(150, 162);
|
||||
this.pnlDir_ET.TabIndex = 24;
|
||||
//
|
||||
// chbLivre_ET
|
||||
//
|
||||
this.chbLivre_ET.AutoSize = true;
|
||||
this.chbLivre_ET.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.chbLivre_ET.Location = new System.Drawing.Point(135, 177);
|
||||
this.chbLivre_ET.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbLivre_ET.Location = new System.Drawing.Point(101, 144);
|
||||
this.chbLivre_ET.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbLivre_ET.Name = "chbLivre_ET";
|
||||
this.chbLivre_ET.Size = new System.Drawing.Size(58, 20);
|
||||
this.chbLivre_ET.Size = new System.Drawing.Size(49, 17);
|
||||
this.chbLivre_ET.TabIndex = 16;
|
||||
this.chbLivre_ET.Text = "Livre";
|
||||
this.chbLivre_ET.UseVisualStyleBackColor = true;
|
||||
|
|
@ -581,20 +591,20 @@
|
|||
// chbCmd_ET
|
||||
//
|
||||
this.chbCmd_ET.AutoSize = true;
|
||||
this.chbCmd_ET.Location = new System.Drawing.Point(4, 177);
|
||||
this.chbCmd_ET.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbCmd_ET.Location = new System.Drawing.Point(3, 144);
|
||||
this.chbCmd_ET.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbCmd_ET.Name = "chbCmd_ET";
|
||||
this.chbCmd_ET.Size = new System.Drawing.Size(83, 20);
|
||||
this.chbCmd_ET.Size = new System.Drawing.Size(68, 17);
|
||||
this.chbCmd_ET.TabIndex = 15;
|
||||
this.chbCmd_ET.Text = "Controlar";
|
||||
this.chbCmd_ET.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnRef_ET
|
||||
//
|
||||
this.btnRef_ET.Location = new System.Drawing.Point(148, 2);
|
||||
this.btnRef_ET.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnRef_ET.Location = new System.Drawing.Point(111, 2);
|
||||
this.btnRef_ET.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnRef_ET.Name = "btnRef_ET";
|
||||
this.btnRef_ET.Size = new System.Drawing.Size(49, 23);
|
||||
this.btnRef_ET.Size = new System.Drawing.Size(37, 19);
|
||||
this.btnRef_ET.TabIndex = 13;
|
||||
this.btnRef_ET.Text = "REF";
|
||||
this.btnRef_ET.UseVisualStyleBackColor = true;
|
||||
|
|
@ -605,20 +615,20 @@
|
|||
this.pnlDir_DT.Controls.Add(this.chbCmd_DT);
|
||||
this.pnlDir_DT.Controls.Add(this.btnRef_DT);
|
||||
this.pnlDir_DT.Controls.Add(this.lblDir_DT);
|
||||
this.pnlDir_DT.Location = new System.Drawing.Point(648, 199);
|
||||
this.pnlDir_DT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlDir_DT.Location = new System.Drawing.Point(486, 162);
|
||||
this.pnlDir_DT.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlDir_DT.Name = "pnlDir_DT";
|
||||
this.pnlDir_DT.Size = new System.Drawing.Size(200, 199);
|
||||
this.pnlDir_DT.Size = new System.Drawing.Size(150, 162);
|
||||
this.pnlDir_DT.TabIndex = 24;
|
||||
//
|
||||
// chbLivre_DT
|
||||
//
|
||||
this.chbLivre_DT.AutoSize = true;
|
||||
this.chbLivre_DT.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.chbLivre_DT.Location = new System.Drawing.Point(135, 177);
|
||||
this.chbLivre_DT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbLivre_DT.Location = new System.Drawing.Point(101, 144);
|
||||
this.chbLivre_DT.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbLivre_DT.Name = "chbLivre_DT";
|
||||
this.chbLivre_DT.Size = new System.Drawing.Size(58, 20);
|
||||
this.chbLivre_DT.Size = new System.Drawing.Size(49, 17);
|
||||
this.chbLivre_DT.TabIndex = 19;
|
||||
this.chbLivre_DT.Text = "Livre";
|
||||
this.chbLivre_DT.UseVisualStyleBackColor = true;
|
||||
|
|
@ -626,20 +636,20 @@
|
|||
// chbCmd_DT
|
||||
//
|
||||
this.chbCmd_DT.AutoSize = true;
|
||||
this.chbCmd_DT.Location = new System.Drawing.Point(4, 177);
|
||||
this.chbCmd_DT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbCmd_DT.Location = new System.Drawing.Point(3, 144);
|
||||
this.chbCmd_DT.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbCmd_DT.Name = "chbCmd_DT";
|
||||
this.chbCmd_DT.Size = new System.Drawing.Size(83, 20);
|
||||
this.chbCmd_DT.Size = new System.Drawing.Size(68, 17);
|
||||
this.chbCmd_DT.TabIndex = 13;
|
||||
this.chbCmd_DT.Text = "Controlar";
|
||||
this.chbCmd_DT.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnRef_DT
|
||||
//
|
||||
this.btnRef_DT.Location = new System.Drawing.Point(148, 2);
|
||||
this.btnRef_DT.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnRef_DT.Location = new System.Drawing.Point(111, 2);
|
||||
this.btnRef_DT.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnRef_DT.Name = "btnRef_DT";
|
||||
this.btnRef_DT.Size = new System.Drawing.Size(49, 23);
|
||||
this.btnRef_DT.Size = new System.Drawing.Size(37, 19);
|
||||
this.btnRef_DT.TabIndex = 12;
|
||||
this.btnRef_DT.Text = "REF";
|
||||
this.btnRef_DT.UseVisualStyleBackColor = true;
|
||||
|
|
@ -650,20 +660,20 @@
|
|||
this.pnlDir_DF.Controls.Add(this.chbCmd_DF);
|
||||
this.pnlDir_DF.Controls.Add(this.btnRef_DF);
|
||||
this.pnlDir_DF.Controls.Add(this.lblDir_DF);
|
||||
this.pnlDir_DF.Location = new System.Drawing.Point(648, 0);
|
||||
this.pnlDir_DF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.pnlDir_DF.Location = new System.Drawing.Point(486, 0);
|
||||
this.pnlDir_DF.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.pnlDir_DF.Name = "pnlDir_DF";
|
||||
this.pnlDir_DF.Size = new System.Drawing.Size(200, 199);
|
||||
this.pnlDir_DF.Size = new System.Drawing.Size(150, 162);
|
||||
this.pnlDir_DF.TabIndex = 24;
|
||||
//
|
||||
// chbLivre_DF
|
||||
//
|
||||
this.chbLivre_DF.AutoSize = true;
|
||||
this.chbLivre_DF.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
this.chbLivre_DF.Location = new System.Drawing.Point(135, 177);
|
||||
this.chbLivre_DF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbLivre_DF.Location = new System.Drawing.Point(101, 144);
|
||||
this.chbLivre_DF.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbLivre_DF.Name = "chbLivre_DF";
|
||||
this.chbLivre_DF.Size = new System.Drawing.Size(58, 20);
|
||||
this.chbLivre_DF.Size = new System.Drawing.Size(49, 17);
|
||||
this.chbLivre_DF.TabIndex = 18;
|
||||
this.chbLivre_DF.Text = "Livre";
|
||||
this.chbLivre_DF.UseVisualStyleBackColor = true;
|
||||
|
|
@ -671,20 +681,20 @@
|
|||
// chbCmd_DF
|
||||
//
|
||||
this.chbCmd_DF.AutoSize = true;
|
||||
this.chbCmd_DF.Location = new System.Drawing.Point(4, 177);
|
||||
this.chbCmd_DF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbCmd_DF.Location = new System.Drawing.Point(3, 144);
|
||||
this.chbCmd_DF.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbCmd_DF.Name = "chbCmd_DF";
|
||||
this.chbCmd_DF.Size = new System.Drawing.Size(83, 20);
|
||||
this.chbCmd_DF.Size = new System.Drawing.Size(68, 17);
|
||||
this.chbCmd_DF.TabIndex = 14;
|
||||
this.chbCmd_DF.Text = "Controlar";
|
||||
this.chbCmd_DF.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// btnRef_DF
|
||||
//
|
||||
this.btnRef_DF.Location = new System.Drawing.Point(148, 2);
|
||||
this.btnRef_DF.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.btnRef_DF.Location = new System.Drawing.Point(111, 2);
|
||||
this.btnRef_DF.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.btnRef_DF.Name = "btnRef_DF";
|
||||
this.btnRef_DF.Size = new System.Drawing.Size(49, 23);
|
||||
this.btnRef_DF.Size = new System.Drawing.Size(37, 19);
|
||||
this.btnRef_DF.TabIndex = 13;
|
||||
this.btnRef_DF.Text = "REF";
|
||||
this.btnRef_DF.UseVisualStyleBackColor = true;
|
||||
|
|
@ -693,9 +703,10 @@
|
|||
//
|
||||
this.lblDistanciaEsquerda.AutoSize = true;
|
||||
this.lblDistanciaEsquerda.Font = new System.Drawing.Font("Mongolian Baiti", 9.25F, System.Drawing.FontStyle.Bold);
|
||||
this.lblDistanciaEsquerda.Location = new System.Drawing.Point(205, 9);
|
||||
this.lblDistanciaEsquerda.Location = new System.Drawing.Point(154, 7);
|
||||
this.lblDistanciaEsquerda.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDistanciaEsquerda.Name = "lblDistanciaEsquerda";
|
||||
this.lblDistanciaEsquerda.Size = new System.Drawing.Size(184, 16);
|
||||
this.lblDistanciaEsquerda.Size = new System.Drawing.Size(161, 14);
|
||||
this.lblDistanciaEsquerda.TabIndex = 26;
|
||||
this.lblDistanciaEsquerda.Text = "Distancia Esq: 00.00 cm";
|
||||
//
|
||||
|
|
@ -703,19 +714,20 @@
|
|||
//
|
||||
this.lblDistanciaDireita.AutoSize = true;
|
||||
this.lblDistanciaDireita.Font = new System.Drawing.Font("Mongolian Baiti", 9F, System.Drawing.FontStyle.Bold);
|
||||
this.lblDistanciaDireita.Location = new System.Drawing.Point(452, 9);
|
||||
this.lblDistanciaDireita.Location = new System.Drawing.Point(339, 7);
|
||||
this.lblDistanciaDireita.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblDistanciaDireita.Name = "lblDistanciaDireita";
|
||||
this.lblDistanciaDireita.Size = new System.Drawing.Size(179, 16);
|
||||
this.lblDistanciaDireita.Size = new System.Drawing.Size(143, 13);
|
||||
this.lblDistanciaDireita.TabIndex = 27;
|
||||
this.lblDistanciaDireita.Text = "Distancia Dir: 00.00 cm";
|
||||
//
|
||||
// chbSonar
|
||||
//
|
||||
this.chbSonar.AutoSize = true;
|
||||
this.chbSonar.Location = new System.Drawing.Point(303, 383);
|
||||
this.chbSonar.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.chbSonar.Location = new System.Drawing.Point(227, 311);
|
||||
this.chbSonar.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.chbSonar.Name = "chbSonar";
|
||||
this.chbSonar.Size = new System.Drawing.Size(229, 20);
|
||||
this.chbSonar.Size = new System.Drawing.Size(183, 17);
|
||||
this.chbSonar.TabIndex = 28;
|
||||
this.chbSonar.Text = "Desvio de obstáculos automático";
|
||||
this.chbSonar.UseVisualStyleBackColor = true;
|
||||
|
|
@ -724,9 +736,10 @@
|
|||
//
|
||||
this.lblTensao.AutoSize = true;
|
||||
this.lblTensao.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblTensao.Location = new System.Drawing.Point(1481, 432);
|
||||
this.lblTensao.Location = new System.Drawing.Point(1111, 351);
|
||||
this.lblTensao.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblTensao.Name = "lblTensao";
|
||||
this.lblTensao.Size = new System.Drawing.Size(164, 46);
|
||||
this.lblTensao.Size = new System.Drawing.Size(136, 37);
|
||||
this.lblTensao.TabIndex = 29;
|
||||
this.lblTensao.Text = "42,00 V";
|
||||
//
|
||||
|
|
@ -734,9 +747,10 @@
|
|||
//
|
||||
this.lblCorrente.AutoSize = true;
|
||||
this.lblCorrente.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblCorrente.Location = new System.Drawing.Point(1481, 478);
|
||||
this.lblCorrente.Location = new System.Drawing.Point(1111, 388);
|
||||
this.lblCorrente.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblCorrente.Name = "lblCorrente";
|
||||
this.lblCorrente.Size = new System.Drawing.Size(164, 46);
|
||||
this.lblCorrente.Size = new System.Drawing.Size(134, 37);
|
||||
this.lblCorrente.TabIndex = 30;
|
||||
this.lblCorrente.Text = "10,00 A";
|
||||
//
|
||||
|
|
@ -744,9 +758,10 @@
|
|||
//
|
||||
this.lblRPM.AutoSize = true;
|
||||
this.lblRPM.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblRPM.Location = new System.Drawing.Point(1481, 524);
|
||||
this.lblRPM.Location = new System.Drawing.Point(1111, 426);
|
||||
this.lblRPM.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblRPM.Name = "lblRPM";
|
||||
this.lblRPM.Size = new System.Drawing.Size(170, 46);
|
||||
this.lblRPM.Size = new System.Drawing.Size(137, 37);
|
||||
this.lblRPM.TabIndex = 31;
|
||||
this.lblRPM.Text = "45 RPM";
|
||||
//
|
||||
|
|
@ -754,39 +769,30 @@
|
|||
//
|
||||
this.lblVelocidade.AutoSize = true;
|
||||
this.lblVelocidade.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblVelocidade.Location = new System.Drawing.Point(1481, 570);
|
||||
this.lblVelocidade.Location = new System.Drawing.Point(1111, 463);
|
||||
this.lblVelocidade.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblVelocidade.Name = "lblVelocidade";
|
||||
this.lblVelocidade.Size = new System.Drawing.Size(124, 46);
|
||||
this.lblVelocidade.Size = new System.Drawing.Size(101, 37);
|
||||
this.lblVelocidade.TabIndex = 32;
|
||||
this.lblVelocidade.Text = "10,00";
|
||||
//
|
||||
// lblPotencia
|
||||
//
|
||||
this.lblPotencia.AutoSize = true;
|
||||
this.lblPotencia.Font = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.lblPotencia.Location = new System.Drawing.Point(1481, 616);
|
||||
this.lblPotencia.Name = "lblPotencia";
|
||||
this.lblPotencia.Size = new System.Drawing.Size(125, 46);
|
||||
this.lblPotencia.TabIndex = 33;
|
||||
this.lblPotencia.Text = "100%";
|
||||
//
|
||||
// lblKmh
|
||||
//
|
||||
this.lblKmh.AutoSize = true;
|
||||
this.lblKmh.Location = new System.Drawing.Point(1611, 591);
|
||||
this.lblKmh.Location = new System.Drawing.Point(1208, 480);
|
||||
this.lblKmh.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||
this.lblKmh.Name = "lblKmh";
|
||||
this.lblKmh.Size = new System.Drawing.Size(36, 16);
|
||||
this.lblKmh.Size = new System.Drawing.Size(32, 13);
|
||||
this.lblKmh.TabIndex = 20;
|
||||
this.lblKmh.Text = "km/h";
|
||||
//
|
||||
// frmOperacaoManual
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.BackColor = System.Drawing.Color.White;
|
||||
this.ClientSize = new System.Drawing.Size(1657, 799);
|
||||
this.ClientSize = new System.Drawing.Size(1243, 649);
|
||||
this.Controls.Add(this.lblKmh);
|
||||
this.Controls.Add(this.lblPotencia);
|
||||
this.Controls.Add(this.lblVelocidade);
|
||||
this.Controls.Add(this.lblRPM);
|
||||
this.Controls.Add(this.lblCorrente);
|
||||
|
|
@ -804,7 +810,7 @@
|
|||
this.Controls.Add(this.chartGraficos);
|
||||
this.Controls.Add(this.pnlAtuadores);
|
||||
this.Controls.Add(this.pnlCamerasSolo);
|
||||
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
|
||||
this.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
|
||||
this.Name = "frmOperacaoManual";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "Operação Manual";
|
||||
|
|
@ -902,7 +908,6 @@
|
|||
private System.Windows.Forms.Label lblCorrente;
|
||||
private System.Windows.Forms.Label lblRPM;
|
||||
private System.Windows.Forms.Label lblVelocidade;
|
||||
private System.Windows.Forms.Label lblPotencia;
|
||||
private System.Windows.Forms.Label lblKmh;
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ using AForge.Video;
|
|||
using System.Drawing.Drawing2D;
|
||||
using System.Windows.Forms.DataVisualization.Charting;
|
||||
using AgroBase.Services;
|
||||
using Emgu.CV;
|
||||
|
||||
namespace AgroBase.Forms.Operacoes
|
||||
{
|
||||
|
|
@ -22,6 +23,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
{
|
||||
Timer tmrLeitura;
|
||||
DateTime UltimoComandoDir = DateTime.Now;
|
||||
GraficoInterativoModel graficoMovGeral;
|
||||
|
||||
public frmOperacaoManual()
|
||||
{
|
||||
|
|
@ -49,6 +51,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
PopularInformacoesGerais();
|
||||
InicializarMapa();
|
||||
PopularBicos();
|
||||
InicializarGraficos();
|
||||
|
||||
tmrLeitura = new Timer() { Interval = 500 };
|
||||
tmrLeitura.Tick += tmrLeitura_Tick;
|
||||
|
|
@ -124,8 +127,8 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
lblTensao.Text = PZEMService.UltimaLeitura.Tensao.ToString("0.00") + " v";
|
||||
lblCorrente.Text = PZEMService.UltimaLeitura.Corrente.ToString("0.00") + " A";
|
||||
lblRPM.Text = Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.Average(x => x.RPM).ToString("0") + " rpm";
|
||||
lblVelocidade.Text = Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.Average(x => x.VelocidadeInstantanea).ToString("0.00");
|
||||
lblRPM.Text = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Average(x => x.MovMotor.RPM).ToString("0") + " rpm";
|
||||
lblVelocidade.Text = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Average(x => x.MovMotor.VelocidadeInstantanea).ToString("0.00");
|
||||
|
||||
chbSonar.Enabled = Variaveis.OperacaoEmAndamento.DispSen.Dados.Sensores.Any(x => x.Componente == S_Code.sSNR && x.Inicializado);
|
||||
if (!chbSonar.Enabled)
|
||||
|
|
@ -142,9 +145,9 @@ namespace AgroBase.Forms.Operacoes
|
|||
GeneralJoystick.Angulo *= -1;
|
||||
direcaoDesvio = Direcao.Baixo;
|
||||
}
|
||||
Variaveis.OperacaoEmAndamento.DispDir.Dados.Motores.ForEach(Motor =>
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ForEach(Modulo =>
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispDir.AdicionarMensagemFila(Motor.ProtocoloComando(direcaoDesvio));
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.AdicionarMensagemFila(Modulo.Modulo_ID, Modulo.DirMotor.ProtocoloComando(direcaoDesvio));
|
||||
});
|
||||
UltimoComandoDir = DateTime.Now;
|
||||
}
|
||||
|
|
@ -184,9 +187,9 @@ namespace AgroBase.Forms.Operacoes
|
|||
private void DefinirStatusInicialChb(CheckBox chbCmd, CheckBox chbLivre)
|
||||
{
|
||||
string ID = chbCmd.Name.Split('_')[1];
|
||||
var Motor = Variaveis.OperacaoEmAndamento.DispDir.Dados.Motores.FirstOrDefault(x => x.ID == ID);
|
||||
chbCmd.Checked = Motor.Controlar;
|
||||
chbLivre.Checked = Motor.Livre;
|
||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == ID);
|
||||
chbCmd.Checked = Modulo.DirMotor.Controlar;
|
||||
chbLivre.Checked = Modulo.DirMotor.Livre;
|
||||
}
|
||||
|
||||
private void pnlDir_Paint(object sender, PaintEventArgs e)
|
||||
|
|
@ -196,17 +199,12 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
private void DesenharGraficos(object sender, PaintEventArgs e)
|
||||
{
|
||||
if (!Variaveis.DispositivosConectados.Any(d => d.Dispositivo == T_Code.Dir))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Panel pnl = (Panel)sender;
|
||||
string ID = pnl.Name.Replace("pnlDir_", "");
|
||||
|
||||
var Motor = ((DirecionalModel)Variaveis.DispositivosConectados.FirstOrDefault(d => d.Dispositivo == T_Code.Dir).Dados).Motores.FirstOrDefault(m => m.ID == ID);
|
||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(m => m.Modulo_ID == ID);
|
||||
Label lblAngulo = pnl.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lblDir_" + ID);
|
||||
lblAngulo.Text = ID + " " + ((Motor.Sentido_SP == Sentido.Antihorario ? -1 : 1) * Motor.Angulo).ToString("000") + "º";
|
||||
lblAngulo.Text = ID + " " + ((Modulo.DirMotor.Sentido_SP == Sentido.Antihorario ? -1 : 1) * Modulo.DirMotor.Angulo).ToString("000") + "º";
|
||||
|
||||
// Use o objeto Graphics para desenhar a representação do motor
|
||||
Graphics g = e.Graphics;
|
||||
|
|
@ -221,7 +219,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
|
||||
// Desenhe a linha externa (set point)
|
||||
double setPointAngleInRadians = (Motor.Sentido_SP == Sentido.Antihorario ? -1 : 1) * ((Motor.Angulo_SP * Math.PI) / 180);
|
||||
double setPointAngleInRadians = (Modulo.DirMotor.Sentido_SP == Sentido.Antihorario ? -1 : 1) * ((Modulo.DirMotor.Angulo_SP * Math.PI) / 180);
|
||||
int setPointX = centerX + (int)((radius + 10) * Math.Sin(setPointAngleInRadians));
|
||||
int setPointY = centerY - (int)((radius + 10) * Math.Cos(setPointAngleInRadians));
|
||||
g.DrawLine(Pens.Green, centerX, centerY, setPointX, setPointY);
|
||||
|
|
@ -229,7 +227,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
// Desenhe a seta que indica o sentido
|
||||
int arrowLength = 15; // Comprimento da seta
|
||||
|
||||
if (Motor.Sentido_SP == Sentido.Horario)
|
||||
if (Modulo.DirMotor.Sentido_SP == Sentido.Horario)
|
||||
{
|
||||
// Desenhe uma seta para a direita (sentido horário)
|
||||
Point arrowStart = new Point(setPointX, setPointY);
|
||||
|
|
@ -259,13 +257,13 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
|
||||
// Desenhe uma linha para representar a posição do eixo do motor
|
||||
double angleInRadians = (Motor.Angulo * Math.PI) / 180;
|
||||
double angleInRadians = (Modulo.DirMotor.Angulo * Math.PI) / 180;
|
||||
int x = centerX + (int)(radius * Math.Sin(angleInRadians));
|
||||
int y = centerY - (int)(radius * Math.Cos(angleInRadians));
|
||||
g.DrawLine(Pens.Red, centerX, centerY, x, y);
|
||||
|
||||
// Desenhe a seta que indica o sentido
|
||||
if (Motor.Sentido == Sentido.Horario)
|
||||
if (Modulo.DirMotor.Sentido == Sentido.Horario)
|
||||
{
|
||||
// Desenhe uma seta para a direita (sentido horário)
|
||||
Point arrowStart = new Point(x, y);
|
||||
|
|
@ -304,11 +302,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
int yA = centerY - (int)((radius) * Math.Cos(angle)); // Adicione 20 para afastar do círculo principal
|
||||
|
||||
Rectangle rect = new Rectangle(xA - radiusCircle, yA - radiusCircle, 2 * radiusCircle, 2 * radiusCircle);
|
||||
bool Acionado =
|
||||
Motor.Ref000 && i == 0 ||
|
||||
Motor.Ref090 && i == 1 ||
|
||||
Motor.Ref180 && i == 2 ||
|
||||
Motor.Ref270 && i == 3;
|
||||
bool Acionado = false;
|
||||
using (SolidBrush brush = new SolidBrush(Acionado ? Color.Red : Color.DarkRed))
|
||||
{
|
||||
g.FillEllipse(brush, rect);
|
||||
|
|
@ -351,26 +345,26 @@ namespace AgroBase.Forms.Operacoes
|
|||
private void btnRef_Click(object sender, EventArgs e)
|
||||
{
|
||||
string ID = ((Button)sender).Name.Replace("btnRef_", "");
|
||||
var Dispositivo = Variaveis.OperacaoEmAndamento.DispDir;
|
||||
var Motor = Dispositivo.Dados.Motores.FirstOrDefault(x => x.ID == ID);
|
||||
string Comando = Motor.ProtocoloComando(Direcao.Parado, true);
|
||||
Dispositivo.AdicionarMensagemFila(Comando);
|
||||
var Dispositivo = Variaveis.OperacaoEmAndamento.DispMvd;
|
||||
var Modulo = Dispositivo.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == ID);
|
||||
var Comando = Modulo.DirMotor.ProtocoloComando(Direcao.Parado);
|
||||
Dispositivo.AdicionarMensagemFila(Modulo.Modulo_ID, Comando);
|
||||
}
|
||||
|
||||
private void chbCmd_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
string ID = ((CheckBox)sender).Name.Replace("chbCmd_", "");
|
||||
var Dispositivo = Variaveis.OperacaoEmAndamento.DispDir;
|
||||
var Motor = Dispositivo.Dados.Motores.FirstOrDefault(x => x.ID == ID);
|
||||
Motor.Controlar = ((CheckBox)sender).Checked;
|
||||
var Dispositivo = Variaveis.OperacaoEmAndamento.DispMvd;
|
||||
var Modulo = Dispositivo.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == ID);
|
||||
Modulo.DirMotor.Controlar = ((CheckBox)sender).Checked;
|
||||
}
|
||||
|
||||
private void chbLivre_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
string ID = ((CheckBox)sender).Name.Replace("chbLivre_", "");
|
||||
var Dispositivo = Variaveis.OperacaoEmAndamento.DispDir;
|
||||
var Motor = Dispositivo.Dados.Motores.FirstOrDefault(x => x.ID == ID);
|
||||
Motor.Livre = ((CheckBox)sender).Checked;
|
||||
var Dispositivo = Variaveis.OperacaoEmAndamento.DispMvd;
|
||||
var Modulo = Dispositivo.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == ID);
|
||||
Modulo.DirMotor.Livre = ((CheckBox)sender).Checked;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
@ -461,15 +455,71 @@ namespace AgroBase.Forms.Operacoes
|
|||
|
||||
#region Graficos
|
||||
|
||||
private void InicializarGraficos()
|
||||
{
|
||||
//var Logs = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.SelectMany(x => x.MovMotor.LogGrafico).ToList();
|
||||
var Logs = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == "ET").MovMotor.LogGrafico.ToList();
|
||||
var Momentos = Logs.Select(x => x.Momento.ToString("mm:ss:fff")).ToList();
|
||||
graficoMovGeral = new GraficoInterativoModel(chartGraficos, Momentos, new List<GraficoInterativoSerieModel>()
|
||||
{
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "RPM SP",
|
||||
Valores = Logs.Select(x => Convert.ToDouble(x.RPM_SP)).ToList(),
|
||||
Visivel = true,
|
||||
MostrarValor = true
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "RPM",
|
||||
Valores = Logs.Select(x => x.RPM).ToList(),
|
||||
Visivel = true,
|
||||
MostrarValor = true
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "Temperatura",
|
||||
Valores = Logs.Select(x => x.Temperatura).ToList(),
|
||||
Visivel = true,
|
||||
MostrarValor = true
|
||||
},
|
||||
/*new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "EF",
|
||||
Valores = Logs.Where(x => x.Modulo_ID == "EF").Select(x => x.RPM).ToList(),
|
||||
Visivel = true,
|
||||
MostrarValor = true
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "DT",
|
||||
Valores = Logs.Where(x => x.Modulo_ID == "DT").Select(x => x.RPM).ToList(),
|
||||
Visivel = true,
|
||||
MostrarValor = true
|
||||
},
|
||||
new GraficoInterativoSerieModel()
|
||||
{
|
||||
Titulo = "DF",
|
||||
Valores = Logs.Where(x => x.Modulo_ID == "DF").Select(x => x.RPM).ToList(),
|
||||
Visivel = true,
|
||||
MostrarValor = true
|
||||
},*/
|
||||
});
|
||||
}
|
||||
|
||||
private void AtualizarGrafico()
|
||||
{
|
||||
MovSensorimanetoGrafico Log = null;
|
||||
var Logs = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.SelectMany(x => x.MovMotor.LogGrafico);
|
||||
int idx = Logs.Count() > 59 ? 60 : Logs.Count() - 1;
|
||||
graficoMovGeral.AtualizarDados(idx);
|
||||
|
||||
var Motor = Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.FirstOrDefault(x => x.ID == "ET" && x.LogGrafico.Any());
|
||||
/*MvdMotorMOVSensorimanetoGrafico Log = null;
|
||||
|
||||
if (Motor.LogGrafico.Count > 0)
|
||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == "ET" && x.MovMotor.LogGrafico.Any());
|
||||
|
||||
if (Modulo.MovMotor.LogGrafico.Count > 0)
|
||||
{
|
||||
Log = Motor.LogGrafico.Last();
|
||||
Log = Modulo.MovMotor.LogGrafico.Last();
|
||||
}
|
||||
|
||||
double Minimo = 0;
|
||||
|
|
@ -478,7 +528,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
Chart chart = chartGraficos;
|
||||
chart.Titles.Clear();
|
||||
//chart.Titles.Add("Acompanhamento");
|
||||
var Logs = (Motor.LogGrafico.Count > MovimentacaoModel.LogsManter ? Motor.LogGrafico.Skip(Math.Max(0, Motor.LogGrafico.Count - MovimentacaoModel.LogsManter)).Take(MovimentacaoModel.LogsManter).ToList() : Motor.LogGrafico).Where(log => log.ComponenteID == Motor.ID).ToList();
|
||||
var Logs = (Modulo.MovMotor.LogGrafico.Count > MovimentacaoModel.LogsManter ? Modulo.MovMotor.LogGrafico.Skip(Math.Max(0, Modulo.MovMotor.LogGrafico.Count - MovimentacaoModel.LogsManter)).Take(MovimentacaoModel.LogsManter).ToList() : Modulo.MovMotor.LogGrafico).Where(log => log.Modulo_ID == Modulo.Modulo_ID).ToList();
|
||||
chart.Series.Clear();
|
||||
List<string> Momentos = Logs.Select(x => x.Momento.ToString("mm:ss:fff")).ToList();
|
||||
|
||||
|
|
@ -496,6 +546,13 @@ namespace AgroBase.Forms.Operacoes
|
|||
Minimo = Logs.Min(x => x.RPM_SP) < Minimo ? Logs.Min(x => x.RPM_SP) : Minimo;
|
||||
Maximo = Logs.Max(x => x.RPM_SP) > Maximo ? Logs.Max(x => x.RPM_SP) : Maximo;
|
||||
|
||||
var serieRPM = new Series("RPM: " + (Log != null ? Log.RPM : 0));
|
||||
serieRPM.Points.DataBindXY(Momentos, Logs.Select(x => x.RPM).ToList());
|
||||
serieRPM.ChartType = SeriesChartType.Spline;
|
||||
chart.Series.Add(serieRPM);
|
||||
Minimo = Logs.Min(x => x.RPM) < Minimo ? Logs.Min(x => x.RPM) : Minimo;
|
||||
Maximo = Logs.Max(x => x.RPM) > Maximo ? Logs.Max(x => x.RPM) : Maximo;
|
||||
|
||||
var serieTemperatura = new Series("Temperatura: " + (Log != null ? Log.Temperatura : 0));
|
||||
serieTemperatura.Points.DataBindXY(Momentos, Logs.Select(x => x.Temperatura).ToList());
|
||||
serieTemperatura.ChartType = SeriesChartType.Line;
|
||||
|
|
@ -509,7 +566,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
}
|
||||
|
||||
chart.ChartAreas[0].AxisY.Minimum = Minimo - 5;
|
||||
chart.ChartAreas[0].AxisY.Maximum = Maximo + 5;
|
||||
chart.ChartAreas[0].AxisY.Maximum = Maximo + 5;*/
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
@ -550,7 +607,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
private void AtualizarInformacoesGerais()
|
||||
{
|
||||
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.DispMov.Dados.TempoEmAtividade).ToString(@"hh\:mm\:ss");
|
||||
gridDados.Rows[1].Cells[1].Value = TimeSpan.FromSeconds(Variaveis.OperacaoEmAndamento.DispMvd.Dados.TempoEmAtividade).ToString(@"hh\:mm\:ss");
|
||||
gridDados.Rows[2].Cells[1].Value = Variaveis.OperacaoEmAndamento.Sensoriamento.VelocidadeMedia.ToString("0.00");
|
||||
gridDados.Rows[3].Cells[1].Value = Variaveis.OperacaoEmAndamento.Sensoriamento.DistanciaPercorrida.Sum().ToString("0.00");
|
||||
gridDados.Rows[4].Cells[1].Value = (PZEMService.Iniciado && PZEMService.UltimaLeitura != null ? Variaveis.OperacaoEmAndamento.Sensoriamento.PorcentagemBateria.ToString("00.00") : "");
|
||||
|
|
@ -637,7 +694,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
{
|
||||
Bico.Atuado = Bico.Atuado ? !Variaveis.OperacaoEmAndamento.DispAtu.Dados.AtuacaoNivelAlto : Variaveis.OperacaoEmAndamento.DispAtu.Dados.AtuacaoNivelAlto;
|
||||
string Protocolo = Bico.ProtocoloComando();
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.AdicionarMensagemFila(Protocolo);
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.AdicionarMensagemFila(Variaveis.OperacaoEmAndamento.DispAtu.Dados.Modulo_ID, Protocolo);
|
||||
|
||||
pnlAtuadores.Controls.OfType<Label>().First(x => x.Name == "lblCmd_" + ID).Text = "Comando: " + (Bico.Atuado ? "Ligado" : "Desligado");
|
||||
btn.Text = Bico.Atuado ? "Desligar" : "Ligar";
|
||||
|
|
@ -665,7 +722,7 @@ namespace AgroBase.Forms.Operacoes
|
|||
private void EnviarProtocoloComandoBomba()
|
||||
{
|
||||
string Protocolo = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BombaPressurizadora.ProtocoloComando();
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.AdicionarMensagemFila(Protocolo);
|
||||
Variaveis.OperacaoEmAndamento.DispAtu.AdicionarMensagemFila(Variaveis.OperacaoEmAndamento.DispAtu.Dados.Modulo_ID, Protocolo);
|
||||
}
|
||||
|
||||
private void pnlAtuadores_Paint(object sender, PaintEventArgs e)
|
||||
|
|
@ -740,9 +797,8 @@ namespace AgroBase.Forms.Operacoes
|
|||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ using System.Data;
|
|||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.DataVisualization.Charting;
|
||||
|
|
@ -60,18 +61,13 @@ namespace AgroBase.Forms
|
|||
|
||||
private void PreencherOpcoes()
|
||||
{
|
||||
var DispCon = Variaveis.DispositivosConectados.Where(x => x.Dispositivo == T_Code.Dir).ToList();
|
||||
foreach (var Dispositivo in DispCon)
|
||||
foreach (var Modulo in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos)
|
||||
{
|
||||
foreach (var Motor in ((DirecionalModel)Dispositivo.Dados).Motores)
|
||||
{
|
||||
CheckBox chbControlar = pnlFundo.Controls.OfType<CheckBox>().FirstOrDefault(ctrl => ctrl.Name == "chb" + Motor.ID + "Controlar");
|
||||
chbControlar.Checked = Motor.Controlar;
|
||||
CheckBox chbLivre = pnlFundo.Controls.OfType<CheckBox>().FirstOrDefault(ctrl => ctrl.Name == "chb" + Motor.ID + "Livre");
|
||||
chbLivre.Checked = Motor.Livre;
|
||||
}
|
||||
CheckBox chbControlar = pnlFundo.Controls.OfType<CheckBox>().FirstOrDefault(ctrl => ctrl.Name == "chb" + Modulo.Modulo_ID + "Controlar");
|
||||
chbControlar.Checked = Modulo.DirMotor.Controlar;
|
||||
CheckBox chbLivre = pnlFundo.Controls.OfType<CheckBox>().FirstOrDefault(ctrl => ctrl.Name == "chb" + Modulo.Modulo_ID + "Livre");
|
||||
chbLivre.Checked = Modulo.DirMotor.Livre;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void AtualizaGrafico()
|
||||
|
|
@ -94,50 +90,46 @@ namespace AgroBase.Forms
|
|||
|
||||
private void AtualzarDadosMovimentacao()
|
||||
{
|
||||
var DispMov = (DispositivosService<MovimentacaoModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x._Porta.IsOpen && x.Dispositivo == T_Code.Mov);
|
||||
if (DispMov == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (chartEF.InvokeRequired)
|
||||
{
|
||||
chartEF.Invoke(new Action(AtualizaGrafico));
|
||||
}
|
||||
else
|
||||
{
|
||||
lblTempoConectado.Text = "Tempo conectado: " + TimeSpan.FromSeconds(DispMov.TempoConectado).ToString(@"hh\:mm\:ss") + " hrs";
|
||||
lblTempoEmMovimento.Text = "Tempo em movimento: " + TimeSpan.FromSeconds(DispMov.Dados.TempoEmAtividade).ToString(@"hh\:mm\:ss") + " hrs";
|
||||
lblDistanciaTotal.Text = "Distancia percorrida total: " + DispMov.Dados.DistanciaPercorridaTotal.ToString("0.00") + " m";
|
||||
lblDistanciaParcial.Text = "Distancia percorrida parcial: " + DispMov.Dados.DistanciaPercorridaParcial.ToString("0.00") + " m";
|
||||
|
||||
foreach (var Motor in DispMov.Dados.Motores.Where(x => x.Comandar))
|
||||
{
|
||||
Label lblTitulo = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lblM_" + Motor.ID);
|
||||
lblTitulo.ForeColor = Motor.Comandar ? Motor.Inicializado ? Color.Green : Color.Red : Color.Black;
|
||||
lblTitulo.Text = lblTitulo.Text.Split(' ')[0] + " (" + Motor.ID + ") - Alm: " + Motor.CodigoAlarme;
|
||||
Label lblM_RPMSP = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_RPMSP");
|
||||
lblM_RPMSP.Text = "RPM SP: " + Motor.RPM_SP.ToString("0.00");
|
||||
Label lblM_RPM = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_RPM");
|
||||
lblM_RPM.Text = "RPM: " + Motor.RPM.ToString("0.00");
|
||||
Label lblM_Velocidade = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_Velocidade");
|
||||
lblM_Velocidade.Text = "Velocidade: " + Motor.VelocidadeInstantanea.ToString("0.00") + " Km/h";
|
||||
Label lblM_SentidoSP = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_SentidoSP");
|
||||
lblM_SentidoSP.Text = "Sentido SP: " + Enum.GetName(typeof(Sentido), Motor.Sentido_SP);
|
||||
Label lblM_Sentido = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_Sentido");
|
||||
lblM_Sentido.Text = "Sentido: " + Enum.GetName(typeof(Sentido), Motor.Sentido);
|
||||
Label lblM_Temperatura = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_Temperatura");
|
||||
lblM_Temperatura.Text = "Temperatura: " + Motor.Temperatura.ToString("0.00") + "ºC";
|
||||
lblM_Temperatura.ForeColor = Motor.Alarmes.Any(x => x.Tipo == S_Code.sTMP && (x.Maximo || x.Minimo)) ? Color.Red : Color.Black;
|
||||
Label lblM_Corrente = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_Corrente");
|
||||
lblM_Corrente.Text = "Corrente: " + Motor.Corrente_Max.ToString("0.00") + "A";
|
||||
Label lblM_Tensao = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Motor.ID + "M_Tensao");
|
||||
lblTensao.Text = "Tensão: " + Motor.Tensao.ToString("0.00") + "V";
|
||||
var DispMvd = Variaveis.OperacaoEmAndamento.DispMvd;
|
||||
|
||||
MovSensorimanetoGrafico Log = null;
|
||||
if (Motor.LogGrafico.Count > 0)
|
||||
lblTempoConectado.Text = "Tempo conectado: " + TimeSpan.FromSeconds(DispMvd.TempoConectado).ToString(@"hh\:mm\:ss") + " hrs";
|
||||
lblTempoEmMovimento.Text = "Tempo em movimento: " + TimeSpan.FromSeconds(DispMvd.Dados.TempoEmAtividade).ToString(@"hh\:mm\:ss") + " hrs";
|
||||
lblDistanciaTotal.Text = "Distancia percorrida total: " + DispMvd.Dados.DistanciaPercorridaTotal.ToString("0.00") + " m";
|
||||
lblDistanciaParcial.Text = "Distancia percorrida parcial: " + DispMvd.Dados.DistanciaPercorridaParcial.ToString("0.00") + " m";
|
||||
|
||||
foreach (var Modulo in DispMvd.Dados.Modulos.Where(x => x.MovMotor.Comandar))
|
||||
{
|
||||
Label lblTitulo = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lblM_" + Modulo.MovMotor.ID);
|
||||
lblTitulo.ForeColor = Modulo.MovMotor.Comandar ? Modulo.MovMotor.Inicializado ? Color.Green : Color.Red : Color.Black;
|
||||
lblTitulo.Text = lblTitulo.Text.Split(' ')[0] + " (" + Modulo.MovMotor.ID + ") - Alm: " + Modulo.MovMotor.CodigoAlarme;
|
||||
Label lblM_RPMSP = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Modulo.MovMotor.ID + "M_RPMSP");
|
||||
lblM_RPMSP.Text = "RPM SP: " + Modulo.MovMotor.RPM_SP.ToString("0.00");
|
||||
Label lblM_RPM = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Modulo.MovMotor.ID + "M_RPM");
|
||||
lblM_RPM.Text = "RPM: " + Modulo.MovMotor.RPM.ToString("0.00");
|
||||
Label lblM_Velocidade = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Modulo.MovMotor.ID + "M_Velocidade");
|
||||
lblM_Velocidade.Text = "Velocidade: " + Modulo.MovMotor.VelocidadeInstantanea.ToString("0.00") + " Km/h";
|
||||
Label lblM_SentidoSP = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Modulo.MovMotor.ID + "M_SentidoSP");
|
||||
lblM_SentidoSP.Text = "Sentido SP: " + Enum.GetName(typeof(Sentido), Modulo.MovMotor.Sentido_SP);
|
||||
Label lblM_Sentido = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Modulo.MovMotor.ID + "M_Sentido");
|
||||
lblM_Sentido.Text = "Sentido: " + Enum.GetName(typeof(Sentido), Modulo.MovMotor.Sentido);
|
||||
Label lblM_Temperatura = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Modulo.MovMotor.ID + "M_Temperatura");
|
||||
lblM_Temperatura.Text = "Temperatura: " + Modulo.MovMotor.Temperatura.ToString("0.00") + "ºC";
|
||||
lblM_Temperatura.ForeColor = Modulo.MovMotor.CodigoAlarme > 0 ? Color.Red : Color.Black;
|
||||
Label lblM_Corrente = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Modulo.MovMotor.ID + "M_Corrente");
|
||||
lblM_Corrente.Text = "Corrente: " + Modulo.MovMotor.Corrente_Max.ToString("0.00") + "A";
|
||||
Label lblM_Tensao = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + Modulo.MovMotor.ID + "M_Tensao");
|
||||
lblTensao.Text = "Tensão: " + Modulo.MovMotor.Tensao.ToString("0.00") + "V";
|
||||
|
||||
MvdMotorMOVSensorimanetoGrafico Log = null;
|
||||
if (Modulo.MovMotor.LogGrafico.Count > 0)
|
||||
{
|
||||
Log = Motor.LogGrafico[Motor.LogGrafico.Count - 1];
|
||||
Log = Modulo.MovMotor.LogGrafico[Modulo.MovMotor.LogGrafico.Count - 1];
|
||||
}
|
||||
|
||||
double Minimo = 0;
|
||||
|
|
@ -146,10 +138,10 @@ namespace AgroBase.Forms
|
|||
|
||||
try
|
||||
{
|
||||
Chart chart = (Chart)(pnlFundo.Controls.Find("chart" + Motor.ID, false).First());
|
||||
Chart chart = (Chart)(pnlFundo.Controls.Find("chart" + Modulo.Modulo_ID, false).First());
|
||||
chart.Titles.Clear();
|
||||
chart.Titles.Add(Motor.Descricao);
|
||||
var Logs = (Motor.LogGrafico.Count > MovimentacaoModel.LogsManter ? Motor.LogGrafico.Skip(Math.Max(0, Motor.LogGrafico.Count - MovimentacaoModel.LogsManter)).Take(MovimentacaoModel.LogsManter).ToList() : Motor.LogGrafico).Where(log => log.ComponenteID == Motor.ID).ToList();
|
||||
chart.Titles.Add(Modulo.MovMotor.ID);
|
||||
var Logs = (Modulo.MovMotor.LogGrafico.Count > MovimentacaoModel.LogsManter ? Modulo.MovMotor.LogGrafico.Skip(Math.Max(0, Modulo.MovMotor.LogGrafico.Count - MovimentacaoModel.LogsManter)).Take(MovimentacaoModel.LogsManter).ToList() : Modulo.MovMotor.LogGrafico).Where(log => log.Modulo_ID == Modulo.Modulo_ID).ToList();
|
||||
chart.Series.Clear();
|
||||
List<string> Momentos = Logs.Select(x => x.Momento.ToString("mm:ss:fff")).ToList();
|
||||
|
||||
|
|
@ -200,23 +192,18 @@ namespace AgroBase.Forms
|
|||
|
||||
private void DesenharGraficos(object sender, PaintEventArgs e)
|
||||
{
|
||||
if (!Variaveis.DispositivosConectados.Any(d => d.Dispositivo == T_Code.Dir))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
PictureBox pic = (PictureBox)sender;
|
||||
string ID = pic.Name.Replace("pic", "");
|
||||
|
||||
var Motor = ((DirecionalModel)Variaveis.DispositivosConectados.FirstOrDefault(d => d.Dispositivo == T_Code.Dir).Dados).Motores.FirstOrDefault(m => m.ID == ID);
|
||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(m => m.Modulo_ID == ID);
|
||||
Label lblA_SP = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + ID + "A_SP");
|
||||
lblA_SP.Text = "Angulo SP: " + ((Motor.Sentido_SP == Sentido.Antihorario ? -1 : 1) * Motor.Angulo_SP).ToString("000") + "º";
|
||||
lblA_SP.Text = "Angulo SP: " + ((Modulo.DirMotor.Sentido_SP == Sentido.Antihorario ? -1 : 1) * Modulo.DirMotor.Angulo_SP).ToString("000") + "º";
|
||||
Label lblA = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + ID + "A");
|
||||
lblA.Text = "Angulo: " + Motor.Angulo.ToString("000") + "º";
|
||||
lblA.Text = "Angulo: " + Modulo.DirMotor.Angulo.ToString("000") + "º";
|
||||
Label lblA_SentidoSP = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + ID + "A_SentidoSP");
|
||||
lblA_SentidoSP.Text = "Sentido SP: " + Enum.GetName(typeof(Sentido), Motor.Sentido_SP);
|
||||
lblA_SentidoSP.Text = "Sentido SP: " + Enum.GetName(typeof(Sentido), Modulo.DirMotor.Sentido_SP);
|
||||
Label lblA_Sentido = pnlFundo.Controls.OfType<Label>().FirstOrDefault(ctrl => ctrl.Name == "lbl" + ID + "A_Sentido");
|
||||
lblA_Sentido.Text = "Sentido: " + Enum.GetName(typeof(Sentido), Motor.Sentido);
|
||||
lblA_Sentido.Text = "Sentido: " + Enum.GetName(typeof(Sentido), Modulo.DirMotor.Sentido);
|
||||
|
||||
// Use o objeto Graphics para desenhar a representação do motor
|
||||
Graphics g = e.Graphics;
|
||||
|
|
@ -231,7 +218,7 @@ namespace AgroBase.Forms
|
|||
|
||||
|
||||
// Desenhe a linha externa (set point)
|
||||
double setPointAngleInRadians = (Motor.Sentido_SP == Sentido.Antihorario ? -1 : 1) * ((Motor.Angulo_SP * Math.PI) / 180);
|
||||
double setPointAngleInRadians = (Modulo.DirMotor.Sentido_SP == Sentido.Antihorario ? -1 : 1) * ((Modulo.DirMotor.Angulo_SP * Math.PI) / 180);
|
||||
int setPointX = centerX + (int)((radius + 10) * Math.Sin(setPointAngleInRadians));
|
||||
int setPointY = centerY - (int)((radius + 10) * Math.Cos(setPointAngleInRadians));
|
||||
g.DrawLine(Pens.Green, centerX, centerY, setPointX, setPointY);
|
||||
|
|
@ -239,7 +226,7 @@ namespace AgroBase.Forms
|
|||
// Desenhe a seta que indica o sentido
|
||||
int arrowLength = 15; // Comprimento da seta
|
||||
|
||||
if (Motor.Sentido_SP == Sentido.Horario)
|
||||
if (Modulo.DirMotor.Sentido_SP == Sentido.Horario)
|
||||
{
|
||||
// Desenhe uma seta para a direita (sentido horário)
|
||||
Point arrowStart = new Point(setPointX, setPointY);
|
||||
|
|
@ -269,13 +256,13 @@ namespace AgroBase.Forms
|
|||
|
||||
|
||||
// Desenhe uma linha para representar a posição do eixo do motor
|
||||
double angleInRadians = (Motor.Angulo * Math.PI) / 180;
|
||||
double angleInRadians = (Modulo.DirMotor.Angulo * Math.PI) / 180;
|
||||
int x = centerX + (int)(radius * Math.Sin(angleInRadians));
|
||||
int y = centerY - (int)(radius * Math.Cos(angleInRadians));
|
||||
g.DrawLine(Pens.Red, centerX, centerY, x, y);
|
||||
|
||||
// Desenhe a seta que indica o sentido
|
||||
if (Motor.Sentido == Sentido.Horario)
|
||||
if (Modulo.DirMotor.Sentido == Sentido.Horario)
|
||||
{
|
||||
// Desenhe uma seta para a direita (sentido horário)
|
||||
Point arrowStart = new Point(x, y);
|
||||
|
|
@ -313,11 +300,7 @@ namespace AgroBase.Forms
|
|||
int yA = centerY - (int)((radius) * Math.Cos(angle)); // Adicione 20 para afastar do círculo principal
|
||||
|
||||
Rectangle rect = new Rectangle(xA - radiusCircle, yA - radiusCircle, 2 * radiusCircle, 2 * radiusCircle);
|
||||
bool Acionado =
|
||||
Motor.Ref000 && i == 0 ||
|
||||
Motor.Ref090 && i == 1 ||
|
||||
Motor.Ref180 && i == 2 ||
|
||||
Motor.Ref270 && i == 3;
|
||||
bool Acionado = false;
|
||||
using (SolidBrush brush = new SolidBrush(Acionado ? Color.Red : Color.DarkRed))
|
||||
{
|
||||
g.FillEllipse(brush, rect);
|
||||
|
|
@ -360,13 +343,9 @@ namespace AgroBase.Forms
|
|||
private void btnReferenciar_Click(object sender, EventArgs e)
|
||||
{
|
||||
string ID = ((Button)sender).Name.Substring(3, 2);
|
||||
var DispCon = Variaveis.DispositivosConectados.Where(x => x._Porta.IsOpen && x.Dispositivo == T_Code.Dir).ToList();
|
||||
foreach (var Dispositivo in DispCon)
|
||||
{
|
||||
var Motor = ((DirecionalModel)Dispositivo.Dados).Motores.FirstOrDefault(x => x.ID == ID);
|
||||
string Comando = Motor.ProtocoloComando(Direcao.Parado, true);
|
||||
Dispositivo.AdicionarMensagemFila(Comando);
|
||||
}
|
||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == ID);
|
||||
string Comando = Modulo.DirMotor.ProtocoloComando(Direcao.Parado);
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.AdicionarMensagemFila(Modulo.Modulo_ID, Comando);
|
||||
}
|
||||
|
||||
private void btnReverter_Click(object sender, EventArgs e)
|
||||
|
|
@ -384,23 +363,15 @@ namespace AgroBase.Forms
|
|||
private void ChbLivre_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
string ID = ((CheckBox)sender).Name.Substring(3, 2);
|
||||
var DispCon = Variaveis.DispositivosConectados.Where(x => x._Porta.IsOpen && x.Dispositivo == T_Code.Dir).ToList();
|
||||
foreach (var Dispositivo in DispCon)
|
||||
{
|
||||
var Motor = ((DirecionalModel)Dispositivo.Dados).Motores.FirstOrDefault(x => x.ID == ID);
|
||||
Motor.Livre = ((CheckBox)sender).Checked;
|
||||
}
|
||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == ID);
|
||||
Modulo.DirMotor.Livre = ((CheckBox)sender).Checked;
|
||||
}
|
||||
|
||||
private void ChbControlar_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
string ID = ((CheckBox)sender).Name.Substring(3, 2);
|
||||
var DispCon = Variaveis.DispositivosConectados.Where(x => x._Porta.IsOpen && x.Dispositivo == T_Code.Dir).ToList();
|
||||
foreach (var Dispositivo in DispCon)
|
||||
{
|
||||
var Motor = ((DirecionalModel)Dispositivo.Dados).Motores.FirstOrDefault(x => x.ID == ID);
|
||||
Motor.Controlar = ((CheckBox)sender).Checked;
|
||||
}
|
||||
var Modulo = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.FirstOrDefault(x => x.Modulo_ID == ID);
|
||||
Modulo.DirMotor.Controlar = ((CheckBox)sender).Checked;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace AgroBase.Forms
|
|||
public frmInstancial()
|
||||
{
|
||||
InitializeComponent();
|
||||
FilaService.Inicializar(true);
|
||||
FilaService.Inicializar();
|
||||
}
|
||||
|
||||
private void frmInstancial_Shown(object sender, EventArgs e)
|
||||
|
|
|
|||
|
|
@ -155,12 +155,38 @@ namespace AgroBase.Forms
|
|||
}).ToList());
|
||||
break;
|
||||
}
|
||||
case T_Code.Mvd:
|
||||
{
|
||||
DispositivosService<MovimentacaoUnificadaModel> Disp = (DispositivosService<MovimentacaoUnificadaModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == TipoDisp);
|
||||
|
||||
if (Disp == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.Text = "Pinout - Movimentação Unificado";
|
||||
|
||||
Funcoes = ModuloMvdModel.Funcoes.ToList();
|
||||
Pinout = ModuloMvdModel.Pinout;
|
||||
Dispositivos = new List<DispositivoDataModel>();
|
||||
Dispositivos.Add(new DispositivoDataModel()
|
||||
{
|
||||
ID = Disp.Dados.Modulos.First().MovMotor.ID,
|
||||
Funcoes = Disp.Dados.Modulos.First().MovMotor.Funcoes
|
||||
});
|
||||
Dispositivos.Add(new DispositivoDataModel()
|
||||
{
|
||||
ID = Disp.Dados.Modulos.First().DirMotor.ID,
|
||||
Funcoes = Disp.Dados.Modulos.First().DirMotor.Funcoes
|
||||
});
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
chbMCP1.Checked = Pinout.ExpansorGPIO;
|
||||
txtMCP1.Text = Pinout.EnderecoExpansor;
|
||||
|
||||
Funcoes.ForEach(x => Pinos.Add(Enum.GetName(typeof(FuncoesPinout), x)));
|
||||
Funcoes.ForEach(x => Pinos.Add(TipoDisp.ToString() + " " + Enum.GetName(typeof(FuncoesPinout), x)));
|
||||
|
||||
foreach (var Dispositivo in Dispositivos)
|
||||
{
|
||||
|
|
@ -183,7 +209,7 @@ namespace AgroBase.Forms
|
|||
cmb.Enabled = (Selecionado.Barramento == TiposBarramentos.CONTROLADOR && Selecionado.Habilitado) || (Selecionado.Barramento == TiposBarramentos.EXPANSORI2C && chbMCP1.Checked);
|
||||
if (Selecionado.Habilitado)
|
||||
{
|
||||
cmb.SelectedItem = (Selecionado.Funcao != FuncoesPinout.Geral ? Selecionado.ComponenteID + " " : "") + Enum.GetName(typeof(FuncoesPinout), Selecionado.Funcao);
|
||||
cmb.SelectedItem = Selecionado.ComponenteID + " " + Enum.GetName(typeof(FuncoesPinout), Selecionado.Funcao);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -243,6 +269,9 @@ namespace AgroBase.Forms
|
|||
case T_Code.Atu:
|
||||
AtuadorModel.Pinout = Pinout;
|
||||
break;
|
||||
case T_Code.Mvd:
|
||||
ModuloMvdModel.Pinout = Pinout;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,6 +31,9 @@ namespace AgroBase
|
|||
public partial class frmPrincipal : Form
|
||||
{
|
||||
|
||||
public static bool Fechando = false;
|
||||
|
||||
|
||||
public frmPrincipal()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
|
@ -54,6 +57,8 @@ namespace AgroBase
|
|||
|
||||
private async Task EncerrarProcessos()
|
||||
{
|
||||
Fechando = true;
|
||||
|
||||
foreach (var Disp in Variaveis.DispositivosConectados)
|
||||
{
|
||||
if (Disp._Porta.IsOpen)
|
||||
|
|
@ -69,7 +74,7 @@ namespace AgroBase
|
|||
Disp.SalvarParametros(Disp.Dados);
|
||||
}
|
||||
|
||||
while (!FilaService.Liberado && FilaService.FeatureAtivada)
|
||||
while (!FilaService.Liberado)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
}
|
||||
|
|
@ -166,7 +171,7 @@ namespace AgroBase
|
|||
SerialService.DispositivosMapeados
|
||||
.Select(x => new ListViewItem()
|
||||
{
|
||||
Text = x.PortaCOM + " - " + Enum.GetName(typeof(T_Code), x.Dispositivo) + " v" + x.Versao + " - " +
|
||||
Text = x.PortaCOM + " - " + Enum.GetName(typeof(T_Code), x.Dispositivo) + " v" + x.Versao + " (" + x.Mod_ID + ") - " +
|
||||
(x.Dispositivo == T_Code.Gps ? (GPSService.Iniciado ? "Conectado" : "Desconectado") :
|
||||
x.Dispositivo == T_Code.Pzm ? (PZEMService.Iniciado ? "Conectado" : "Desconectado") :
|
||||
x.Dispositivo == T_Code.Lra ? (LoRaService.Iniciado ? "Conectado" : "Desconectado") :
|
||||
|
|
@ -185,15 +190,16 @@ namespace AgroBase
|
|||
Variaveis.OperacaoEmAndamento.DispAtu == null && Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Atu) ||
|
||||
Variaveis.OperacaoEmAndamento.DispDir == null && Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Dir) ||
|
||||
Variaveis.OperacaoEmAndamento.DispMov == null && Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Mov) ||
|
||||
Variaveis.OperacaoEmAndamento.DispMvd == null && Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Mvd) ||
|
||||
Variaveis.OperacaoEmAndamento.DispSen == null && Variaveis.DispositivosConectados.Any(x => x.Dispositivo == T_Code.Sen)
|
||||
)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento = OperacaoModel.CarregarParametrosOperacaoPadrao((ModoOperacao)cmbModoOperacao.SelectedIndex);
|
||||
}
|
||||
|
||||
if (Variaveis.OperacaoEmAndamento.DispMov != null && Convert.ToInt32(Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.Average(x => x.RPM_Max)) != trkRPM.Maximum)
|
||||
if (Variaveis.OperacaoEmAndamento.DispMvd != null && Convert.ToInt32(Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Average(x => x.MovMotor.RPM_Max)) != trkRPM.Maximum)
|
||||
{
|
||||
trkRPM.Maximum = Convert.ToInt32(Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.Average(x => x.RPM_Max));
|
||||
trkRPM.Maximum = Convert.ToInt32(Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Average(x => x.MovMotor.RPM_Max));
|
||||
trkKmh.Maximum = Convert.ToInt32(MovimentacaoModel.CalculaVelocidadeRPM(trkRPM.Maximum));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,6 +56,7 @@ namespace AgroBase.Models
|
|||
Lra = 106,
|
||||
Wit = 107,
|
||||
Bld = 108,
|
||||
Mvd = 109,
|
||||
}
|
||||
|
||||
public enum F_Code
|
||||
|
|
@ -67,6 +68,7 @@ namespace AgroBase.Models
|
|||
Cmd = 293,
|
||||
Err = 404,
|
||||
Msg = 655,
|
||||
Req = 887,
|
||||
}
|
||||
|
||||
public enum S_Code
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ namespace AgroBase
|
|||
public static bool Pressionado = false;
|
||||
public static List<IDispositivosService> DispCon;
|
||||
|
||||
public static int RPM { get; set; } = 30;
|
||||
public static int RPM { get; set; } = 60;
|
||||
public static double Angulo { get; set; } = 20;
|
||||
public static int Velocidade { get; set; } = 50;
|
||||
|
||||
|
|
@ -490,14 +490,14 @@ namespace AgroBase
|
|||
else if (Comando.Comando == Keys.Add)
|
||||
{
|
||||
Comando.Dispositivo = T_Code.Mov;
|
||||
DirecaoAtual = MovimentacaoModel.UltimaDirecao;
|
||||
DirecaoAtual = MovimentacaoUnificadaModel.UltimaDirecao;
|
||||
frmInstancial.frmPrincipal.AtualizaRPM(frmInstancial.frmPrincipal.trkRPM.Value + 1);
|
||||
Pressionado = true;
|
||||
}
|
||||
else if (Comando.Comando == Keys.Subtract)
|
||||
{
|
||||
Comando.Dispositivo = T_Code.Mov;
|
||||
DirecaoAtual = MovimentacaoModel.UltimaDirecao;
|
||||
DirecaoAtual = MovimentacaoUnificadaModel.UltimaDirecao;
|
||||
frmInstancial.frmPrincipal.AtualizaRPM(frmInstancial.frmPrincipal.trkRPM.Value - 1);
|
||||
Pressionado = true;
|
||||
}
|
||||
|
|
@ -576,34 +576,35 @@ namespace AgroBase
|
|||
|
||||
for (int i = 0; i < 1; i++)
|
||||
{
|
||||
List<string> Protocolos = new List<string>();
|
||||
var Protocolos = new Dictionary<string, string>();
|
||||
IDispositivosService Dispositivo = default(IDispositivosService);
|
||||
switch (Comando.Dispositivo)
|
||||
{
|
||||
case T_Code.Mov:
|
||||
{
|
||||
Protocolos = Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.Select(x => x.ProtocoloComando(DirecaoAtual)).ToList();
|
||||
Dispositivo = Variaveis.OperacaoEmAndamento.DispMov;
|
||||
Protocolos = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ToDictionary(x => x.Modulo_ID, x => x.MovMotor.ProtocoloComando(DirecaoAtual));
|
||||
Dispositivo = Variaveis.OperacaoEmAndamento.DispMvd;
|
||||
break;
|
||||
}
|
||||
case T_Code.Dir:
|
||||
{
|
||||
Protocolos = Variaveis.OperacaoEmAndamento.DispDir.Dados.Motores.Select(x => x.ProtocoloComando(DirecaoAtual)).ToList();
|
||||
Dispositivo = Variaveis.OperacaoEmAndamento.DispDir;
|
||||
Protocolos = Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.ToDictionary(x => x.Modulo_ID, x => x.DirMotor.ProtocoloComando(DirecaoAtual));
|
||||
Dispositivo = Variaveis.OperacaoEmAndamento.DispMvd;
|
||||
break;
|
||||
}
|
||||
case T_Code.Atu:
|
||||
{
|
||||
var Bico = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.FirstOrDefault(x => x.ID == Comando.IDcontrolar);
|
||||
/*var Bico = Variaveis.OperacaoEmAndamento.DispAtu.Dados.BicosPulverizadores.FirstOrDefault(x => x.ID == Comando.IDcontrolar);
|
||||
Bico.Atuado = Comando.Comando == Keys.Escape ? false : true;
|
||||
Protocolos.Add(Bico.ProtocoloComando());
|
||||
Dispositivo = Variaveis.OperacaoEmAndamento.DispAtu;
|
||||
ModuloID = Variaveis.OperacaoEmAndamento.DispAtu.Dados.Modulo_ID;*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
foreach (var ProtocoloMotor in Protocolos)
|
||||
{
|
||||
Dispositivo.AdicionarMensagemFila(ProtocoloMotor);
|
||||
Dispositivo.AdicionarMensagemFila(ProtocoloMotor.Key, ProtocoloMotor.Value);
|
||||
Task.Delay(10);
|
||||
Console.WriteLine(ProtocoloMotor);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
public int Id { get; set; }
|
||||
public T_Code Dispositivo { get; set; }
|
||||
public string ID_Modulo { get; set; }
|
||||
public string Mensagem { get;set; }
|
||||
public DateTime AdicionadoEm { get; set; }
|
||||
public bool Enviado { get; set; }
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
public class AtuadorModel : DispositivoBaseModel
|
||||
{
|
||||
public string Modulo_ID { get; set; } = T_Code.Atu.ToString();
|
||||
|
||||
private bool _MensagemConexaoRecebida { get; set; } = false;
|
||||
public bool MensagemConexaoRecebida(bool Reset = false)
|
||||
{
|
||||
|
|
@ -239,19 +241,34 @@ namespace AgroBase.Models.Modules
|
|||
return Atuador;
|
||||
}
|
||||
|
||||
public List<string> ProtocoloConfiguracao(bool Conectar)
|
||||
public Dictionary<string, List<string>> ProtocoloConfiguracao(bool Conectar)
|
||||
{
|
||||
List<string> Config = BicosPulverizadores.Select(x => x.ProtocoloConfiguracaoBico(Conectar)).ToList();
|
||||
Config.Add(BombaPressurizadora.ProtocoloConfiguracaoBomba(Conectar));
|
||||
Config.AddRange(Sensores.Select(x => x.ProtocoloConfiguracaoSensor(Pinout, Conectar)).ToList());
|
||||
string ProtocoloMOD =
|
||||
// Inicializar o dicionário
|
||||
var configDictionary = new Dictionary<string, List<string>>();
|
||||
|
||||
// Adicionar configurações dos Bicos Pulverizadores
|
||||
var bicosConfig = BicosPulverizadores.Select(x => x.ProtocoloConfiguracaoBico(Conectar)).ToList();
|
||||
configDictionary.Add(Modulo_ID, bicosConfig);
|
||||
|
||||
// Adicionar configuração da Bomba Pressurizadora
|
||||
var bombaConfig = new List<string> { BombaPressurizadora.ProtocoloConfiguracaoBomba(Conectar) };
|
||||
configDictionary.Add(Modulo_ID, bombaConfig);
|
||||
|
||||
// Adicionar configurações dos Sensores
|
||||
var sensoresConfig = Sensores.Select(x => x.ProtocoloConfiguracaoSensor(Pinout, Conectar)).ToList();
|
||||
configDictionary.Add(Modulo_ID, sensoresConfig);
|
||||
|
||||
// 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");
|
||||
Config.Add(ProtocoloMOD);
|
||||
return Config;
|
||||
var protocoloMODConfig = new List<string> { protocoloMOD };
|
||||
configDictionary.Add(Modulo_ID, protocoloMODConfig);
|
||||
|
||||
return configDictionary;
|
||||
}
|
||||
|
||||
public void RecebeProtocoloSerial(string Protocolo)
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
public class DirecionalModel : DispositivoBaseModel
|
||||
{
|
||||
public string Modulo_ID { get; set; } = T_Code.Dir.ToString();
|
||||
|
||||
private bool _MensagemConexaoRecebida { get; set; } = false;
|
||||
public bool MensagemConexaoRecebida(bool Reset = false)
|
||||
{
|
||||
|
|
@ -138,20 +140,26 @@ namespace AgroBase.Models.Modules
|
|||
};
|
||||
}
|
||||
|
||||
public List<string> ProtocoloConfiguracao(bool Conectar)
|
||||
public Dictionary<string, List<string>> ProtocoloConfiguracao(bool Conectar)
|
||||
{
|
||||
List<string> Config = Motores.Select(x => x.ProtocoloConfiguracaoMotor(Conectar)).ToList();
|
||||
string ProtocoloMOD =
|
||||
// Inicializar o dicionário
|
||||
var configDictionary = new Dictionary<string, List<string>>();
|
||||
|
||||
// Adicionar configurações dos Motores
|
||||
var motoresConfig = Motores.Select(x => x.ProtocoloConfiguracaoMotor(Conectar)).ToList();
|
||||
configDictionary.Add(Modulo_ID, motoresConfig);
|
||||
|
||||
// Adicionar configuração do ProtocoloMOD
|
||||
string protocoloMOD =
|
||||
((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
|
||||
"MD" + SerialService.SplitParams +
|
||||
(Conectar ? "1" : "0") + SerialService.SplitParams +
|
||||
_TaxaAmostragem.ToString("00000"); // + SerialService.SplitParams +
|
||||
//(AA_Ref000 ? "1" : "0") + SerialService.SplitParams +
|
||||
//(AA_Ref090 ? "1" : "0") + SerialService.SplitParams +
|
||||
//(AA_Ref270 ? "1" : "0") + SerialService.SplitParams +
|
||||
//PinoutModel.PinoProtocolo(Pinout, Funcoes);
|
||||
Config.Add(ProtocoloMOD);
|
||||
return Config;
|
||||
_TaxaAmostragem.ToString("00000");
|
||||
|
||||
var protocoloMODConfig = new List<string> { protocoloMOD };
|
||||
configDictionary.Add(Modulo_ID, protocoloMODConfig);
|
||||
|
||||
return configDictionary;
|
||||
}
|
||||
|
||||
public void RecebeProtocoloSerial(string Protocolo)
|
||||
|
|
|
|||
|
|
@ -10,12 +10,11 @@ namespace AgroBase.Models
|
|||
{
|
||||
public interface DispositivoBaseModel
|
||||
{
|
||||
bool MensagemConexaoRecebida(bool Reset = false);
|
||||
void RecebeProtocoloSerial(string Protocolo);
|
||||
string GetTaxaAmostragem();
|
||||
void SetTaxaAmostragem(int TaxaAmostragem);
|
||||
bool GetStatusConexao();
|
||||
List<string> ProtocoloConfiguracao(bool Conectar);
|
||||
Dictionary<string, List<string>> ProtocoloConfiguracao(bool Conectar);
|
||||
void IniciarRegistrador();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ namespace AgroBase.Models
|
|||
{
|
||||
public class MovimentacaoModel : DispositivoBaseModel
|
||||
{
|
||||
public string Modulo_ID { get; set; } = T_Code.Mov.ToString();
|
||||
|
||||
private bool _MensagemConexaoRecebida { get; set; } = false;
|
||||
public bool MensagemConexaoRecebida(bool Reset = false)
|
||||
{
|
||||
|
|
@ -31,7 +33,6 @@ namespace AgroBase.Models
|
|||
public static int NumPolos { get; set; } = 0;
|
||||
public static int Rampa { get; set; } = 0;
|
||||
public static int RPM_Max { get; set; } = 0;
|
||||
public static double DiametroRoda { get; set; } = 0.3556;
|
||||
|
||||
public static int LogsManter { get; set; } = 60;
|
||||
public static PinoutDataModel Pinout { get; set; }
|
||||
|
|
@ -116,16 +117,28 @@ namespace AgroBase.Models
|
|||
};
|
||||
}
|
||||
|
||||
public List<string> ProtocoloConfiguracao(bool Conectar)
|
||||
public Dictionary<string, List<string>> ProtocoloConfiguracao(bool Conectar)
|
||||
{
|
||||
List<string> Config = Motores.Where(x => x.Comandar).Select(x => x.ProtocoloConfiguracaoMotor(Conectar)).ToList();
|
||||
string ProtocoloMOD =
|
||||
// Inicializar o dicionário
|
||||
var configDictionary = new Dictionary<string, List<string>>();
|
||||
|
||||
// Adicionar configurações dos Motores que devem ser comandados
|
||||
var motoresConfig = Motores
|
||||
.Where(x => x.Comandar)
|
||||
.Select(x => x.ProtocoloConfiguracaoMotor(Conectar))
|
||||
.ToList();
|
||||
configDictionary.Add(Modulo_ID, motoresConfig);
|
||||
|
||||
// Adicionar configuração do ProtocoloMOD
|
||||
string protocoloMOD =
|
||||
((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
|
||||
"MD" + SerialService.SplitParams +
|
||||
(Conectar ? "1" : "0") + SerialService.SplitParams +
|
||||
"MD" + SerialService.SplitParams +
|
||||
(Conectar ? "1" : "0") + SerialService.SplitParams +
|
||||
_TaxaAmostragem.ToString();
|
||||
Config.Add(ProtocoloMOD);
|
||||
return Config;
|
||||
var protocoloMODConfig = new List<string> { protocoloMOD };
|
||||
configDictionary.Add(Modulo_ID, protocoloMODConfig);
|
||||
|
||||
return configDictionary;
|
||||
}
|
||||
|
||||
public void RecebeProtocoloSerial(string Protocolo)
|
||||
|
|
@ -296,13 +309,13 @@ namespace AgroBase.Models
|
|||
|
||||
public static double CalculaVelocidadeRPM(double RPM)
|
||||
{
|
||||
double VelocidadeInstantanea = Math.Round((Math.PI * DiametroRoda * 60 * RPM) / 1000, 2); // Km/h
|
||||
double VelocidadeInstantanea = Math.Round((Math.PI * VariaveisEquipamento.DiametroRoda * 60 * RPM) / 1000, 2); // Km/h
|
||||
return VelocidadeInstantanea;
|
||||
}
|
||||
|
||||
public static double CalculaRPMVelocidade(double Velocidade)
|
||||
{
|
||||
double RPM = Math.Round((Velocidade * 1000) / (Math.PI * DiametroRoda * 60), 2);
|
||||
double RPM = Math.Round((Velocidade * 1000) / (Math.PI * VariaveisEquipamento.DiametroRoda * 60), 2);
|
||||
return RPM;
|
||||
}
|
||||
|
||||
|
|
@ -484,7 +497,7 @@ namespace AgroBase.Models
|
|||
|
||||
if (Inicializado && (!AlarmeAnterior || Adicionado) && AlarmeAtual) // Motor iniciado, Não estava em alarme anteriormente ou foi adicionado agora, alarme atual
|
||||
{
|
||||
Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mov).AdicionarMensagemFila(ProtocoloComando(Direcao.Frente, true));
|
||||
Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mov).AdicionarMensagemFila(Variaveis.OperacaoEmAndamento.DispMov.Dados.Modulo_ID, ProtocoloComando(Direcao.Frente, true));
|
||||
}
|
||||
|
||||
Alm.Valor = _Alarme.Valor;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,606 @@
|
|||
using AgroBase.Comum;
|
||||
using AgroBase.Services;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static AgroBase.Models.Enuns;
|
||||
|
||||
namespace AgroBase.Models.Modules
|
||||
{
|
||||
public class MovimentacaoUnificadaModel : DispositivoBaseModel
|
||||
{
|
||||
private bool _conectado = false;
|
||||
public bool Conectado
|
||||
{
|
||||
get
|
||||
{
|
||||
return Modulos.Any(x => x.Conectado);
|
||||
}
|
||||
set
|
||||
{
|
||||
_conectado = value;
|
||||
}
|
||||
}
|
||||
|
||||
public static int _TaxaAmostragem { get; set; } = 1000;
|
||||
public List<ModuloMvdModel> Modulos { get; set; } = new List<ModuloMvdModel>();
|
||||
|
||||
public static Direcao UltimaDirecao { get; set; } = Direcao.Parado;
|
||||
public double DistanciaPercorridaOperacao { get; set; } = 0;
|
||||
public int TempoEmAtividade { get; set; } = 0;
|
||||
public double DistanciaPercorridaTotal { get; set; } = 0;
|
||||
public double DistanciaPercorridaParcial { get; set; } = 0;
|
||||
|
||||
|
||||
public static MovimentacaoUnificadaModel CarregarParametrosIniciais()
|
||||
{
|
||||
return new MovimentacaoUnificadaModel()
|
||||
{
|
||||
Modulos = new List<ModuloMvdModel>()
|
||||
{
|
||||
new ModuloMvdModel()
|
||||
{
|
||||
Modulo_ID = "ET",
|
||||
MovMotor = MvdMotorBLDC.CarregarParametrosIniciais(),
|
||||
DirMotor = MvdMotorPasso.CarregarParametrosIniciais(),
|
||||
},
|
||||
new ModuloMvdModel()
|
||||
{
|
||||
Modulo_ID = "EF",
|
||||
MovMotor = MvdMotorBLDC.CarregarParametrosIniciais(),
|
||||
DirMotor = MvdMotorPasso.CarregarParametrosIniciais()
|
||||
},
|
||||
new ModuloMvdModel()
|
||||
{
|
||||
Modulo_ID = "DT",
|
||||
MovMotor = MvdMotorBLDC.CarregarParametrosIniciais(),
|
||||
DirMotor = MvdMotorPasso.CarregarParametrosIniciais()
|
||||
},
|
||||
new ModuloMvdModel()
|
||||
{
|
||||
Modulo_ID = "DF",
|
||||
MovMotor = MvdMotorBLDC.CarregarParametrosIniciais(),
|
||||
DirMotor = MvdMotorPasso.CarregarParametrosIniciais()
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
public Dictionary<string, List<string>> ProtocoloConfiguracao(bool Conectar)
|
||||
{
|
||||
var Config = Modulos.Where(x => x.MovMotor.Comandar || x.DirMotor.Comandar).ToDictionary(x => x.Modulo_ID, x => x.ProtocoloConfiguracao(Conectar).ToList());
|
||||
return Config;
|
||||
}
|
||||
|
||||
public void RecebeProtocoloSerial(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);
|
||||
|
||||
if (!string.IsNullOrEmpty(Protocolo) && mensagem[0].ToString() == SerialService.BeginSensor)
|
||||
{
|
||||
try
|
||||
{
|
||||
string[] Dados = mensagem.Replace(SerialService.BeginSensor, "").Split(SerialService.EndLine[0])[0].Split(';');
|
||||
S_Code TipoSensor = (S_Code)(int.Parse(Dados[0]));
|
||||
string _IDcomponente = Dados[1];
|
||||
|
||||
ModuloMvdModel Modulo = Modulos.FirstOrDefault(x => x.Modulo_ID == Mod_ID);
|
||||
|
||||
if (Modulo == null)
|
||||
{
|
||||
Console.WriteLine("Módulo " + Mod_ID + " não encontrado!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (_IDcomponente == Modulo.Modulo_ID)
|
||||
{
|
||||
Modulo.Conectado = Dados[2] == "1";
|
||||
|
||||
DispositivosService<MovimentacaoUnificadaModel> Disp = (DispositivosService<MovimentacaoUnificadaModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd);
|
||||
Disp.AcaoConexao().ConfigureAwait(false);
|
||||
|
||||
if (Modulo.Conectado)
|
||||
{
|
||||
LoopAquisicaoDados().ConfigureAwait(false);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
switch (TipoSensor)
|
||||
{
|
||||
case S_Code.sBLD:
|
||||
{
|
||||
double rpm = 0;
|
||||
double.TryParse(Dados[2].Replace(".", ","), out rpm);
|
||||
Modulo.MovMotor.RPM = rpm;
|
||||
double temperatura = 0;
|
||||
double.TryParse(Dados[3].Replace(".", ","), out temperatura);
|
||||
temperatura = FuncoesMatematicas.CalcularTemperatura(temperatura, -1.038);
|
||||
Modulo.MovMotor.Temperatura = temperatura;
|
||||
double tensao = 0;
|
||||
double.TryParse(Dados[4].Replace(".", ","), out tensao);
|
||||
Modulo.MovMotor.Tensao = tensao;
|
||||
double corrente_max = 0;
|
||||
double.TryParse(Dados[5].Replace(".", ","), out corrente_max);
|
||||
corrente_max = FuncoesMatematicas.Map(corrente_max, 15780, 16799, 0, 20.6);
|
||||
Modulo.MovMotor.Corrente_Max = corrente_max;
|
||||
bool ligado = Dados[6] == "1";
|
||||
Modulo.MovMotor.Ligado = ligado;
|
||||
int sentido = 0;
|
||||
int.TryParse(Dados[7], out sentido);
|
||||
Modulo.MovMotor.Sentido = (Sentido)sentido;
|
||||
bool freio = Dados[8] == "1";
|
||||
Modulo.MovMotor.Freio = freio;
|
||||
int codAlarme = 0;
|
||||
int.TryParse(Dados[9], out codAlarme);
|
||||
Modulo.MovMotor.CodigoAlarme = codAlarme;
|
||||
double tempDriver = 0;
|
||||
double.TryParse(Dados[10].Replace(".", ","), out tempDriver);
|
||||
tempDriver = FuncoesMatematicas.CalcularTemperatura(tempDriver, 0);
|
||||
Modulo.MovMotor.TemperaturaDriver = tempDriver;
|
||||
|
||||
Modulo.MovMotor.LogGrafico.Add(new MvdMotorMOVSensorimanetoGrafico()
|
||||
{
|
||||
Momento = DateTime.Now,
|
||||
Modulo_ID = Modulo.Modulo_ID,
|
||||
RPM_SP = Modulo.MovMotor.RPM_SP,
|
||||
RPM = Modulo.MovMotor.RPM,
|
||||
Corrente = Modulo.MovMotor.Corrente,
|
||||
Sentido = Modulo.MovMotor.Sentido,
|
||||
Temperatura = Modulo.MovMotor.Temperatura,
|
||||
TemperaturaDriver = Modulo.MovMotor.TemperaturaDriver,
|
||||
Tensao = Modulo.MovMotor.Tensao,
|
||||
Velocidade = Modulo.MovMotor.VelocidadeInstantanea
|
||||
});
|
||||
|
||||
break;
|
||||
}
|
||||
case S_Code.sENC:
|
||||
{
|
||||
int _sentido = 0;
|
||||
int.TryParse(Dados[2].ToString(), out _sentido);
|
||||
Modulo.DirMotor.Sentido = (Sentido)_sentido;
|
||||
int _angulo = 0;
|
||||
int.TryParse(Dados[3].ToString(), out _angulo);
|
||||
Modulo.DirMotor.Angulo = _angulo;
|
||||
|
||||
break;
|
||||
}
|
||||
case S_Code.sCFG:
|
||||
{
|
||||
bool Inicializado = Dados[2] == "1";
|
||||
if (_IDcomponente == Modulo.MovMotor.ID)
|
||||
{
|
||||
Modulo.MovMotor.Inicializado = Inicializado;
|
||||
}
|
||||
else if (_IDcomponente == Modulo.DirMotor.ID)
|
||||
{
|
||||
Modulo.DirMotor.Inicializado = Inicializado;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public string GetTaxaAmostragem()
|
||||
{
|
||||
return _TaxaAmostragem.ToString("00000");
|
||||
}
|
||||
|
||||
public void SetTaxaAmostragem(int TaxaAmostragem)
|
||||
{
|
||||
_TaxaAmostragem = TaxaAmostragem;
|
||||
}
|
||||
|
||||
public bool GetStatusConexao()
|
||||
{
|
||||
return Modulos.Any(x => x.Conectado);
|
||||
}
|
||||
|
||||
public void IniciarRegistrador()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private async Task LoopAquisicaoDados()
|
||||
{
|
||||
if (Conectado)
|
||||
{
|
||||
await Task.Delay(_TaxaAmostragem);
|
||||
|
||||
Modulos.ForEach(x =>
|
||||
{
|
||||
if (x.MovMotor.Inicializado)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.AdicionarMensagemFila(x.Modulo_ID, x.MovMotor.ProtocoloAquisicaoDados());
|
||||
}
|
||||
if (x.DirMotor.Inicializado)
|
||||
{
|
||||
Variaveis.OperacaoEmAndamento.DispMvd.AdicionarMensagemFila(x.Modulo_ID, x.DirMotor.ProtocoloAquisicaoDados());
|
||||
}
|
||||
});
|
||||
|
||||
if (UltimaDirecao != Direcao.Parado)
|
||||
{
|
||||
TempoEmAtividade++;
|
||||
double VelocidadeMedia = Modulos.Average(x => x.MovMotor.VelocidadeInstantanea * 1000 / 3600);
|
||||
DistanciaPercorridaTotal += 1 * VelocidadeMedia;
|
||||
DistanciaPercorridaParcial += (UltimaDirecao == Direcao.Frente ? 1 : UltimaDirecao == Direcao.Tras ? -1 : 0) * VelocidadeMedia;
|
||||
DistanciaPercorridaOperacao += 1 * VelocidadeMedia;
|
||||
}
|
||||
|
||||
await LoopAquisicaoDados();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class ModuloMvdModel
|
||||
{
|
||||
public string Modulo_ID { get; set; }
|
||||
public bool Disponivel { get; set; }
|
||||
|
||||
|
||||
public bool Conectado { get; set; } = false;
|
||||
|
||||
public MvdMotorBLDC MovMotor { get; set; }
|
||||
public MvdMotorPasso DirMotor { get; set; }
|
||||
|
||||
public static PinoutDataModel Pinout { get; set; }
|
||||
public static List<FuncoesPinout> Funcoes { get; set; } = new List<FuncoesPinout>()
|
||||
{
|
||||
FuncoesPinout.TX,
|
||||
FuncoesPinout.RX,
|
||||
FuncoesPinout.ModbusDI,
|
||||
FuncoesPinout.ModbusRO,
|
||||
FuncoesPinout.ModbusDE_RE
|
||||
};
|
||||
|
||||
|
||||
public List<string> ProtocoloConfiguracao(bool Conectar)
|
||||
{
|
||||
List<string> Config = new List<string>();
|
||||
|
||||
var _pinout = new PinoutDataModel()
|
||||
{
|
||||
ExpansorGPIO = Pinout.ExpansorGPIO,
|
||||
EnderecoExpansor = Pinout.EnderecoExpansor,
|
||||
Pinos = Pinout.Pinos.ToList(),
|
||||
};
|
||||
_pinout.Pinos = _pinout.Pinos.Where(x => x.ComponenteID == T_Code.Mvd.ToString()).ToList();
|
||||
string ProtocoloMOD =
|
||||
((int)F_Code.Cfg).ToString() + SerialService.SplitMessage +
|
||||
Modulo_ID + SerialService.SplitParams +
|
||||
(Conectar ? "1" : "0") + SerialService.SplitParams +
|
||||
MovimentacaoUnificadaModel._TaxaAmostragem.ToString() + SerialService.SplitParams +
|
||||
PinoutModel.PinoProtocolo(_pinout, Funcoes);
|
||||
|
||||
if (Conectar)
|
||||
{
|
||||
Config.Add(ProtocoloMOD);
|
||||
}
|
||||
|
||||
if (MovMotor.Comandar)
|
||||
{
|
||||
Config.Add(MovMotor.ProtocoloConfiguracao(Conectar));
|
||||
}
|
||||
if (DirMotor.Comandar)
|
||||
{
|
||||
Config.Add(DirMotor.ProtocoloConfiguracao(Conectar));
|
||||
}
|
||||
|
||||
if (!Conectar)
|
||||
{
|
||||
Config.Add(ProtocoloMOD);
|
||||
}
|
||||
|
||||
return Config;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class MvdMotorBLDC
|
||||
{
|
||||
public string ID { get; set; } = T_Code.Mov.ToString();
|
||||
|
||||
// SETs
|
||||
public string Endereco { get; set; } = "0x01";
|
||||
public bool Ligado { get; set; } = false;
|
||||
public bool Freio { get; set; } = false;
|
||||
public int CodigoAlarme { get; set; } = 0;
|
||||
public int RPM_SP { get; set; } = 0;
|
||||
public Sentido Sentido_SP { get; set; } = Sentido.Parado;
|
||||
public int NumeroPolos { get; set; } = 2;
|
||||
public int Rampa { get; set; } = 0;
|
||||
public int RPM_Max { get; set; } = 800;
|
||||
|
||||
|
||||
// GETs
|
||||
public double RPM { get; set; } = 0;
|
||||
public Sentido Sentido { get; set; } = Sentido.Parado;
|
||||
public double Temperatura { get; set; } = 0;
|
||||
public double TemperaturaDriver { get; set; } = 0;
|
||||
public double Tensao { get; set; } = 0;
|
||||
public double Corrente_Max { get; set; } = 0;
|
||||
public double Corrente { get; set; } = 0;
|
||||
|
||||
public double VelocidadeInstantanea
|
||||
{
|
||||
get
|
||||
{
|
||||
return MovimentacaoModel.CalculaVelocidadeRPM(RPM);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public bool Comandar { get; set; } = false;
|
||||
public bool Alarme { get; set; } = false;
|
||||
public bool Inicializado { get; set; } = false;
|
||||
|
||||
|
||||
public ConfiguracaoSentidoMotor ConfigSentidos { get; set; }
|
||||
public List<FuncoesPinout> Funcoes { get; set; }
|
||||
|
||||
public List<MvdMotorMOVSensorimanetoGrafico> LogGrafico { get; set; } = new List<MvdMotorMOVSensorimanetoGrafico>();
|
||||
|
||||
|
||||
public static MvdMotorBLDC CarregarParametrosIniciais()
|
||||
{
|
||||
return new MvdMotorBLDC()
|
||||
{
|
||||
ID = T_Code.Mov.ToString(),
|
||||
Endereco = "0x01",
|
||||
ConfigSentidos = new ConfiguracaoSentidoMotor()
|
||||
{
|
||||
Direita = Sentido.Antihorario,
|
||||
Esquerda = Sentido.Horario,
|
||||
Frente = Sentido.Horario,
|
||||
Tras = Sentido.Antihorario
|
||||
},
|
||||
Funcoes = new List<FuncoesPinout>()
|
||||
{
|
||||
FuncoesPinout.TMP
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public string ProtocoloConfiguracao(bool Conectar)
|
||||
{
|
||||
var _pinout = new PinoutDataModel()
|
||||
{
|
||||
ExpansorGPIO = ModuloMvdModel.Pinout.ExpansorGPIO,
|
||||
EnderecoExpansor = ModuloMvdModel.Pinout.EnderecoExpansor,
|
||||
Pinos = ModuloMvdModel.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 +
|
||||
Endereco + SerialService.SplitParams +
|
||||
NumeroPolos + SerialService.SplitParams +
|
||||
Rampa + SerialService.SplitParams +
|
||||
RPM_Max + SerialService.SplitParams +
|
||||
PinoutModel.PinoProtocolo(_pinout, Funcoes);
|
||||
|
||||
return Protocolo;
|
||||
}
|
||||
|
||||
public string ProtocoloComando(Direcao DirecaoAtual, bool CmdAlarme = false)
|
||||
{
|
||||
if (Inicializado && Comandar && (!Alarme || CmdAlarme))
|
||||
{
|
||||
if (!CmdAlarme)
|
||||
{
|
||||
MovimentacaoUnificadaModel.UltimaDirecao = DirecaoAtual;
|
||||
}
|
||||
|
||||
RPM_SP =
|
||||
DirecaoAtual == Direcao.Parado || CmdAlarme ? 0 :
|
||||
GeneralJoystick.RPM;
|
||||
|
||||
switch (DirecaoAtual)
|
||||
{
|
||||
case Direcao.Frente:
|
||||
Sentido_SP = ConfigSentidos.Frente;
|
||||
break;
|
||||
case Direcao.Tras:
|
||||
Sentido_SP = ConfigSentidos.Tras;
|
||||
break;
|
||||
case Direcao.Esquerda:
|
||||
Sentido_SP = ConfigSentidos.Esquerda;
|
||||
break;
|
||||
case Direcao.Direita:
|
||||
Sentido_SP = ConfigSentidos.Direita;
|
||||
break;
|
||||
case Direcao.Parado:
|
||||
default:
|
||||
Sentido_SP = ConfigSentidos.Parado;
|
||||
break;
|
||||
}
|
||||
|
||||
string ProtocoloMotor = "";
|
||||
|
||||
ProtocoloMotor =
|
||||
((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
|
||||
ID + SerialService.SplitParams +
|
||||
((int)Sentido_SP).ToString() + SerialService.SplitParams +
|
||||
RPM_SP.ToString() + SerialService.SplitParams +
|
||||
(Freio ? "1" : "0");
|
||||
|
||||
return ProtocoloMotor;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public string ProtocoloAquisicaoDados()
|
||||
{
|
||||
if (Inicializado)
|
||||
{
|
||||
string ProtocoloMotor =
|
||||
((int)F_Code.Req).ToString() + SerialService.SplitMessage +
|
||||
ID + SerialService.SplitParams +
|
||||
"";
|
||||
|
||||
return ProtocoloMotor;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class MvdMotorPasso
|
||||
{
|
||||
public string ID { get; set; } = T_Code.Dir.ToString();
|
||||
|
||||
// SETs
|
||||
public Sentido Sentido_SP { get; set; } = Sentido.Parado;
|
||||
public double Angulo_SP { get; set; } = 0;
|
||||
public int Velocidade { get; set; } = 50;
|
||||
public double Angulo_Offset { get; set; } = 0;
|
||||
public bool Estabilizar { get; set; } = false;
|
||||
public bool Livre { get; set; } = false;
|
||||
|
||||
// GETs
|
||||
public Sentido Sentido { get; set; } = Sentido.Parado;
|
||||
public double Angulo { get; set; } = 0;
|
||||
|
||||
|
||||
public bool Comandar { get; set; } = false;
|
||||
public bool Controlar { get; set; } = false;
|
||||
public bool Inicializado { get; set; } = false;
|
||||
|
||||
|
||||
public ConfiguracaoSentidoMotor ConfigSentidos { get; set; }
|
||||
public List<FuncoesPinout> Funcoes { get; set; }
|
||||
|
||||
|
||||
public static MvdMotorPasso CarregarParametrosIniciais()
|
||||
{
|
||||
return new MvdMotorPasso()
|
||||
{
|
||||
ID = T_Code.Dir.ToString(),
|
||||
ConfigSentidos = new ConfiguracaoSentidoMotor()
|
||||
{
|
||||
Direita = Sentido.Antihorario,
|
||||
Esquerda = Sentido.Horario,
|
||||
Frente = Sentido.Parado,
|
||||
Tras = Sentido.Parado
|
||||
},
|
||||
Funcoes = new List<FuncoesPinout>()
|
||||
{
|
||||
FuncoesPinout.PUL,
|
||||
FuncoesPinout.DIR,
|
||||
FuncoesPinout.ENA,
|
||||
FuncoesPinout.EncoderAbsoluto
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
public string ProtocoloConfiguracao(bool Conectar)
|
||||
{
|
||||
var _pinout = new PinoutDataModel()
|
||||
{
|
||||
ExpansorGPIO = ModuloMvdModel.Pinout.ExpansorGPIO,
|
||||
EnderecoExpansor = ModuloMvdModel.Pinout.EnderecoExpansor,
|
||||
Pinos = ModuloMvdModel.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 +
|
||||
(Estabilizar ? "1" : "0") + SerialService.SplitParams +
|
||||
Angulo_Offset.ToString() + SerialService.SplitParams +
|
||||
PinoutModel.PinoProtocolo(_pinout, Funcoes);
|
||||
|
||||
return Protocolo;
|
||||
}
|
||||
|
||||
public string ProtocoloComando(Direcao Direcao)
|
||||
{
|
||||
if (Inicializado && Comandar && (Controlar))
|
||||
{
|
||||
Sentido_SP =
|
||||
Direcao == Direcao.Cima ? ConfigSentidos.Direita :
|
||||
Direcao == Direcao.Baixo ? ConfigSentidos.Esquerda :
|
||||
!Livre && Sentido_SP == Sentido.Horario ? Sentido.Antihorario :
|
||||
!Livre && Sentido_SP == Sentido.Antihorario ? Sentido.Horario :
|
||||
Sentido.Parado;
|
||||
|
||||
Angulo_SP = Livre ? -1 : (Direcao != Direcao.Cima && Direcao != Direcao.Baixo) ? 0 : GeneralJoystick.Angulo;
|
||||
Velocidade = GeneralJoystick.Velocidade;
|
||||
|
||||
string ProtocoloMotor =
|
||||
((int)F_Code.Cmd).ToString() + SerialService.SplitMessage +
|
||||
ID + SerialService.SplitParams +
|
||||
((int)Sentido_SP).ToString() + SerialService.SplitParams +
|
||||
Angulo_SP.ToString() + SerialService.SplitParams +
|
||||
Velocidade.ToString();
|
||||
return ProtocoloMotor;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public string ProtocoloAquisicaoDados()
|
||||
{
|
||||
if (Inicializado)
|
||||
{
|
||||
string ProtocoloMotor =
|
||||
((int)F_Code.Req).ToString() + SerialService.SplitMessage +
|
||||
ID + SerialService.SplitParams +
|
||||
"";
|
||||
|
||||
return ProtocoloMotor;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public class MvdMotorMOVSensorimanetoGrafico
|
||||
{
|
||||
public DateTime Momento { get; set; }
|
||||
public string Modulo_ID { get; set; }
|
||||
public int RPM_SP { get; set; }
|
||||
public double RPM { get; set; }
|
||||
public double Temperatura { get; set; }
|
||||
public double TemperaturaDriver { get; set; }
|
||||
public Sentido Sentido { get; set; }
|
||||
public double Velocidade { get; set; }
|
||||
public double Tensao { get; set; }
|
||||
public double Corrente { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -186,8 +186,8 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 99, ComponenteID = "", Descricao = "1", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 98, ComponenteID = "", Descricao = "2", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 36, ComponenteID = "", Descricao = "3", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 39, ComponenteID = "", Descricao = "4", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 36, ComponenteID = "", Descricao = "3", Funcao = FuncoesPinout.NaoConectado, Habilitado = false },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 39, ComponenteID = "", Descricao = "4", Funcao = FuncoesPinout.NaoConectado, Habilitado = false },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 34, ComponenteID = "", Descricao = "5", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 35, ComponenteID = "", Descricao = "6", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 32, ComponenteID = "", Descricao = "7", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
|
|
@ -217,8 +217,8 @@ namespace AgroBase.Models.Modules
|
|||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 19, ComponenteID = "", Descricao = "37", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 95, ComponenteID = "", Descricao = "38", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 21, ComponenteID = "", Descricao = "39", Funcao = FuncoesPinout.NaoConectado, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 3, ComponenteID = "", Descricao = "40", Funcao = FuncoesPinout.RX, Habilitado = false },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 1, ComponenteID = "", Descricao = "41", Funcao = FuncoesPinout.TX, Habilitado = false },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 3, ComponenteID = "", Descricao = "40", Funcao = FuncoesPinout.RX, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 1, ComponenteID = "", Descricao = "41", Funcao = FuncoesPinout.TX, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 22, ComponenteID = "", Descricao = "42", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 23, ComponenteID = "", Descricao = "43", Funcao = FuncoesPinout.Desabilitado, Habilitado = true },
|
||||
new PinoutModel() { Controlador = TiposControladores.ESP32_WROVER, Barramento = TiposBarramentos.CONTROLADOR, Pino = 94, ComponenteID = "", Descricao = "44", Funcao = FuncoesPinout.Desabilitado, Habilitado = false },
|
||||
|
|
@ -357,7 +357,10 @@ namespace AgroBase.Models.Modules
|
|||
Sinaleiro,
|
||||
ServoX,
|
||||
ServoY,
|
||||
EncoderAbsoluto
|
||||
EncoderAbsoluto,
|
||||
ModbusDI,
|
||||
ModbusRO,
|
||||
ModbusDE_RE
|
||||
}
|
||||
|
||||
public static class PinoutUtils
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ namespace AgroBase.Models.Modules
|
|||
{
|
||||
public class SensoriamentoModel : DispositivoBaseModel
|
||||
{
|
||||
public string Modulo_ID { get; set; } = T_Code.Sen.ToString();
|
||||
|
||||
private bool _MensagemConexaoRecebida { get; set; } = false;
|
||||
public bool MensagemConexaoRecebida(bool Reset = false)
|
||||
{
|
||||
|
|
@ -359,18 +361,35 @@ namespace AgroBase.Models.Modules
|
|||
};
|
||||
}
|
||||
|
||||
public List<string> ProtocoloConfiguracao(bool Conectar)
|
||||
public Dictionary<string, List<string>> ProtocoloConfiguracao(bool Conectar)
|
||||
{
|
||||
List<string> Config = Sensores.Where(x => x.Aferir).Select(x => x.ProtocoloConfiguracaoSensor(Pinout, Conectar)).ToList();
|
||||
Config.AddRange(Sinaleiros.Select(x => x.ProtocoloConfiguracaoSinaleiro(Pinout, Conectar)).ToList());
|
||||
string ProtocoloMOD =
|
||||
// Inicializar o dicionário
|
||||
var configDictionary = new Dictionary<string, List<string>>();
|
||||
|
||||
// Adicionar configurações dos Sensores que devem ser aferidos
|
||||
var sensoresConfig = Sensores
|
||||
.Where(x => x.Aferir)
|
||||
.Select(x => x.ProtocoloConfiguracaoSensor(Pinout, Conectar))
|
||||
.ToList();
|
||||
configDictionary.Add(Modulo_ID, sensoresConfig);
|
||||
|
||||
// Adicionar configurações dos Sinaleiros
|
||||
var sinaleirosConfig = Sinaleiros
|
||||
.Select(x => x.ProtocoloConfiguracaoSinaleiro(Pinout, Conectar))
|
||||
.ToList();
|
||||
configDictionary.Add(Modulo_ID, sinaleirosConfig);
|
||||
|
||||
// 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 +
|
||||
PinoutModel.PinoProtocolo(Pinout, Funcoes);
|
||||
Config.Add(ProtocoloMOD);
|
||||
return Config;
|
||||
var protocoloMODConfig = new List<string> { protocoloMOD };
|
||||
configDictionary.Add(Modulo_ID, protocoloMODConfig);
|
||||
|
||||
return configDictionary;
|
||||
}
|
||||
|
||||
public void RecebeProtocoloSerial(string Protocolo)
|
||||
|
|
@ -621,7 +640,7 @@ namespace AgroBase.Models.Modules
|
|||
foreach (var _motor in Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores)
|
||||
{
|
||||
string ProtocoloParada = _motor.ProtocoloComando(Direcao.Frente, true);
|
||||
Variaveis.OperacaoEmAndamento.DispMov.AdicionarMensagemFila(ProtocoloParada);
|
||||
Variaveis.OperacaoEmAndamento.DispMov.AdicionarMensagemFila(Variaveis.OperacaoEmAndamento.DispMov.Dados.Modulo_ID, ProtocoloParada);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ namespace AgroBase.Models.Operacoes
|
|||
null;
|
||||
foreach (var ProtocoloMotor in Protocolos)
|
||||
{
|
||||
Dispositivo.AdicionarMensagemFila(ProtocoloMotor);
|
||||
//Dispositivo.AdicionarMensagemFila(ProtocoloMotor);
|
||||
System.Threading.Thread.Sleep(10);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -89,6 +89,7 @@ namespace AgroBase.Models
|
|||
public ModoOperacao Modo { get; set; }
|
||||
public OperacaoMapaGPSModel OpMapaGPS { get; set; } = new OperacaoMapaGPSModel();
|
||||
public OperacaoManualModel OpManual { get; set; } = new OperacaoManualModel();
|
||||
public DispositivosService<MovimentacaoUnificadaModel> DispMvd { get; set; }
|
||||
public DispositivosService<SensoriamentoModel> DispSen { get; set; }
|
||||
public DispositivosService<MovimentacaoModel> DispMov { get; set; }
|
||||
public DispositivosService<DirecionalModel> DispDir { get; set; }
|
||||
|
|
@ -257,6 +258,8 @@ namespace AgroBase.Models
|
|||
var DirConectado = (DispositivosService<DirecionalModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Dir);
|
||||
var AtuConectado = (DispositivosService<AtuadorModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Atu);
|
||||
|
||||
var MvdConectado = (DispositivosService<MovimentacaoUnificadaModel>)Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == T_Code.Mvd);
|
||||
|
||||
Variaveis.OperacaoEmAndamento.tmrLogs.Stop();
|
||||
|
||||
OperacaoModel OperacaoCarregar = new OperacaoModel(Modo)
|
||||
|
|
@ -268,6 +271,7 @@ namespace AgroBase.Models
|
|||
DispDir = DirConectado,
|
||||
DispMov = MovConectado,
|
||||
DispSen = SenConectado,
|
||||
DispMvd = MvdConectado,
|
||||
Sensoriamento = new OperacaoSensoriamentoLogModel(),
|
||||
};
|
||||
|
||||
|
|
@ -300,13 +304,8 @@ namespace AgroBase.Models
|
|||
{
|
||||
new OperacaoModulosMandatoriosModel()
|
||||
{
|
||||
Dispositivo = T_Code.Mov,
|
||||
Mandatorio = false,
|
||||
},
|
||||
new OperacaoModulosMandatoriosModel()
|
||||
{
|
||||
Dispositivo = T_Code.Dir,
|
||||
Mandatorio = false,
|
||||
Dispositivo = T_Code.Mvd,
|
||||
Mandatorio = true,
|
||||
},
|
||||
};
|
||||
OperacaoCarregar.ParametrosMandatorios = new List<OperacaoParametrosMandatoriosModel>()
|
||||
|
|
@ -419,7 +418,7 @@ namespace AgroBase.Models
|
|||
OperacaoCarregar.DispSen.Dados.Sinaleiros.First(x => x.ID == "LEDOP").Comportamento = Variaveis.ComportamentoPorStatus();
|
||||
|
||||
|
||||
OperacaoCarregar.DispSen.Dados.Sinaleiros.ForEach(x => OperacaoCarregar.DispSen.AdicionarMensagemFila(x.ProtocoloComando()));
|
||||
OperacaoCarregar.DispSen.Dados.Sinaleiros.ForEach(x => OperacaoCarregar.DispSen.AdicionarMensagemFila(Variaveis.OperacaoEmAndamento.DispSen.Dados.Modulo_ID, x.ProtocoloComando()));
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -474,18 +473,10 @@ namespace AgroBase.Models
|
|||
TempoAguardando = DateTime.Now;
|
||||
TimestampFim = 0;
|
||||
Mapa.IdxRuaAtual = 0;
|
||||
if (DispMov != null)
|
||||
if (DispMvd != null)
|
||||
{
|
||||
DispMov.Dados.DistanciaPercorridaOperacao = 0;
|
||||
DispMov.Dados.TempoEmAtividade = 0;
|
||||
}
|
||||
if (DispDir != null)
|
||||
{
|
||||
DispDir.Dados.Motores.ForEach(x =>
|
||||
{
|
||||
x.Referenciado = false;
|
||||
x.Referenciando = false;
|
||||
});
|
||||
DispMvd.Dados.DistanciaPercorridaOperacao = 0;
|
||||
DispMvd.Dados.TempoEmAtividade = 0;
|
||||
}
|
||||
Sensoriamento.DistanciaPercorrida = new List<double>();
|
||||
if (Modo == ModoOperacao.MapaGPS)
|
||||
|
|
@ -543,7 +534,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
DispAtu.Dados.BombaPressurizadora.BombaAtuada = false;
|
||||
string Protocolo = DispAtu.Dados.BombaPressurizadora.ProtocoloComando();
|
||||
DispAtu.AdicionarMensagemFila(Protocolo);
|
||||
DispAtu.AdicionarMensagemFila(DispAtu.Dados.Modulo_ID, Protocolo);
|
||||
}
|
||||
|
||||
Iniciado = false;
|
||||
|
|
@ -566,7 +557,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
DispAtu.Dados.BombaPressurizadora.BombaAtuada = true;
|
||||
string Protocolo = DispAtu.Dados.BombaPressurizadora.ProtocoloComando();
|
||||
DispAtu.AdicionarMensagemFila(Protocolo);
|
||||
DispAtu.AdicionarMensagemFila(DispAtu.Dados.Modulo_ID, Protocolo);
|
||||
}
|
||||
|
||||
await Task.Delay(5000);
|
||||
|
|
@ -578,31 +569,17 @@ namespace AgroBase.Models
|
|||
if (Bico.Inicializado)
|
||||
{
|
||||
Bico.Atuado = true;
|
||||
DispAtu.AdicionarMensagemFila(Bico.ProtocoloComando());
|
||||
DispAtu.AdicionarMensagemFila(DispAtu.Dados.Modulo_ID, Bico.ProtocoloComando());
|
||||
|
||||
await Task.Delay(1000);
|
||||
|
||||
Bico.Atuado = false;
|
||||
DispAtu.AdicionarMensagemFila(Bico.ProtocoloComando());
|
||||
DispAtu.AdicionarMensagemFila(DispAtu.Dados.Modulo_ID, Bico.ProtocoloComando());
|
||||
}
|
||||
}
|
||||
|
||||
await Task.Delay(1000);
|
||||
}
|
||||
|
||||
// Referenciar o direcional
|
||||
if (DispDir != null)
|
||||
{
|
||||
foreach (var Motor in DispDir.Dados.Motores)
|
||||
{
|
||||
DispDir.AdicionarMensagemFila(Motor.ProtocoloComando(Direcao.Parado, true));
|
||||
|
||||
while (Motor.Referenciando)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -635,7 +612,7 @@ namespace AgroBase.Models
|
|||
DistanciaPercorrida = new List<double>(Sensoriamento.DistanciaPercorrida),
|
||||
PorcentagemBateria = Sensoriamento.PorcentagemBateria,
|
||||
AnguloCarroBussola = Sensoriamento.AnguloCarroBussola,
|
||||
TempoMovimento = DispMov.Dados.TempoEmAtividade,
|
||||
TempoMovimento = DispMvd.Dados.TempoEmAtividade,
|
||||
StatusOperacao = _EtapaAtual,
|
||||
StatusCarro = OpMapaGPS.ReferencialRuaGPS.StatusAtual,
|
||||
ErvasIdentificadas = OpMapaGPS.Sensoriamento.AtuacoesPorBico.Sum(),
|
||||
|
|
@ -669,41 +646,23 @@ namespace AgroBase.Models
|
|||
};
|
||||
SalvarLog(T_Code.Gps.ToString(), logGps, Fim);
|
||||
|
||||
DispDir.Dados.Motores.ForEach(Motor =>
|
||||
DispMvd.Dados.Modulos.ForEach(Modulo =>
|
||||
{
|
||||
DirSensoriamentoLogModel log = new DirSensoriamentoLogModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
ComponenteID = Motor.ID,
|
||||
Inicializado = Motor.Inicializado,
|
||||
Controlar = Motor.Controlar,
|
||||
Angulo_SP = Motor.Angulo_SP,
|
||||
Angulo = Motor.Angulo,
|
||||
Sentido_SP = Motor.Sentido_SP,
|
||||
Sentido = Motor.Sentido,
|
||||
Velocidade = Motor.Velocidade,
|
||||
};
|
||||
SalvarLog(DispDir.Dispositivo.ToString(), log, false);
|
||||
});
|
||||
|
||||
DispMov.Dados.Motores.ForEach(Motor =>
|
||||
{
|
||||
MovSensoriamentoLogModel log = new MovSensoriamentoLogModel()
|
||||
MvdSensoriamentoLogModel log = new MvdSensoriamentoLogModel()
|
||||
{
|
||||
Momento = Agora,
|
||||
ComponenteID = Motor.ID,
|
||||
Inicializado = Motor.Inicializado,
|
||||
Alarme = Motor.Alarme,
|
||||
RPM_SP = Motor.RPM_SP,
|
||||
RPM = Motor.RPM,
|
||||
Corrente = Motor.Corrente,
|
||||
Temperatura = Motor.Temperatura,
|
||||
Tensao = Motor.Tensao,
|
||||
Sentido_SP = Motor.Sentido_SP,
|
||||
Sentido = Motor.Sentido,
|
||||
Velocidade = Motor.VelocidadeInstantanea,
|
||||
Modulo_ID = Modulo.MovMotor.ID,
|
||||
Inicializado = Modulo.MovMotor.Inicializado,
|
||||
RPM_SP = Modulo.MovMotor.RPM_SP,
|
||||
RPM = Modulo.MovMotor.RPM,
|
||||
Corrente = Modulo.MovMotor.Corrente,
|
||||
Temperatura = Modulo.MovMotor.Temperatura,
|
||||
Tensao = Modulo.MovMotor.Tensao,
|
||||
Sentido_SP = Modulo.MovMotor.Sentido_SP,
|
||||
Sentido = Modulo.MovMotor.Sentido,
|
||||
Velocidade = Modulo.MovMotor.VelocidadeInstantanea,
|
||||
};
|
||||
SalvarLog(DispMov.Dispositivo.ToString(), log, false);
|
||||
SalvarLog(DispMvd.Dispositivo.ToString(), log, false);
|
||||
});
|
||||
|
||||
AtuSensoriamentoLogModel logAtu = new AtuSensoriamentoLogModel()
|
||||
|
|
@ -817,8 +776,8 @@ namespace AgroBase.Models
|
|||
PercentualBateria = Math.Round(Sensoriamento.PorcentagemBateria, 2),
|
||||
PercentualReservatorio = Math.Round(DispAtu.Dados.PercentualReservatorio, 2),
|
||||
PressaoLinha = Math.Round(DispAtu.Dados.PressaoLinha, 2),
|
||||
Temperatura = Math.Round(DispMov.Dados.Motores.Average(x => x.Temperatura), 2),
|
||||
Velocidade = Math.Round(DispMov.Dados.Motores.Average(x => x.VelocidadeInstantanea), 2),
|
||||
Temperatura = Math.Round(DispMvd.Dados.Modulos.Average(x => x.MovMotor.Temperatura), 2),
|
||||
Velocidade = Math.Round(DispMvd.Dados.Modulos.Average(x => x.MovMotor.VelocidadeInstantanea), 2),
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -913,7 +872,7 @@ namespace AgroBase.Models
|
|||
DispSen.Dados.Sinaleiros.FirstOrDefault(x => x.ID == "LEDAT").Comportamento.statusLED = Modo == ModoOperacao.MapaGPS ? StatusLED.Aceso : StatusLED.Apagado;
|
||||
DispSen.Dados.Sinaleiros.FirstOrDefault(x => x.ID == "LEDMN").Comportamento.statusLED = Modo == ModoOperacao.Manual ? StatusLED.Aceso : StatusLED.Apagado;
|
||||
|
||||
DispSen.Dados.Sinaleiros.ForEach(x => DispSen.AdicionarMensagemFila(x.ProtocoloComando()));
|
||||
DispSen.Dados.Sinaleiros.ForEach(x => DispSen.AdicionarMensagemFila(DispSen.Dados.Modulo_ID, x.ProtocoloComando()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1029,7 +988,7 @@ namespace AgroBase.Models
|
|||
{
|
||||
get
|
||||
{
|
||||
return Variaveis.OperacaoEmAndamento.DispMov.Dados.Motores.Average(x => x.VelocidadeInstantanea);
|
||||
return Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos.Average(x => x.MovMotor.VelocidadeInstantanea);
|
||||
}
|
||||
}
|
||||
public double PorcentagemBateria { get; set; } = 0;
|
||||
|
|
@ -1197,4 +1156,20 @@ namespace AgroBase.Models
|
|||
}
|
||||
|
||||
|
||||
public class MvdSensoriamentoLogModel
|
||||
{
|
||||
public DateTime Momento { get; set; }
|
||||
public string Modulo_ID { get; set; }
|
||||
public bool Inicializado { get; set; }
|
||||
public double RPM_SP { get; set; }
|
||||
public double RPM { get; set; }
|
||||
public double Velocidade { get; set; }
|
||||
public Sentido Sentido_SP { get; set; }
|
||||
public Sentido Sentido { get; set; }
|
||||
public double Temperatura { get; set; }
|
||||
public double Corrente { get; set; }
|
||||
public double Tensao { get; set; }
|
||||
public int CodAlarme { get; set; }
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace AgroBase.Models
|
|||
public static List<IDispositivosService> DispositivosConectados { get; set; } = new List<IDispositivosService>();
|
||||
public static OperacaoModel OperacaoEmAndamento { get; set; } = new OperacaoModel(ModoOperacao.Manual);
|
||||
public static MqttService MqttService { get; set; } = new MqttService("localhost", 1883);
|
||||
public static List<T_Code> DispositivosConexaoInicial = new List<T_Code>() { T_Code.Dir, T_Code.Mov, T_Code.Atu, T_Code.Sen };
|
||||
public static List<T_Code> DispositivosConexaoInicial = new List<T_Code>() { T_Code.Mvd, T_Code.Atu, T_Code.Sen };
|
||||
public static SensorSinaleiroComportamentoModel ComportamentoPorStatus(StatusOperacao? _status = null)
|
||||
{
|
||||
if (_status == null)
|
||||
|
|
@ -120,6 +120,7 @@ namespace AgroBase.Models
|
|||
public static class VariaveisEquipamento
|
||||
{
|
||||
public static double Largura { get; } = 80;
|
||||
public static double DiametroRoda { get; set; } = 0.3556;
|
||||
public static double BateriaMax { get; set; } = 20;
|
||||
public static LoRaParametrosModel ComunicacaoLoRaBaseConfig { get; set; } = new LoRaParametrosModel()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ using System.Collections.Generic;
|
|||
using System.IO;
|
||||
using System.IO.Ports;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using static AgroBase.Models.Enuns;
|
||||
|
||||
|
|
@ -33,7 +34,6 @@ namespace AgroBase.Comum
|
|||
public Button btnAtualizar { get; set; }
|
||||
public TextBox txtEnvios { get; set; }
|
||||
public RichTextBox txaConsole { get; set; }
|
||||
public Timer tmrConexao { get; set; }
|
||||
public int _index { get; set; }
|
||||
public List<DispositivoLogModel> Logs { get; set; } = new List<DispositivoLogModel>();
|
||||
public T Dados { get; set; } = new T();
|
||||
|
|
@ -163,7 +163,18 @@ namespace AgroBase.Comum
|
|||
|
||||
LimparBufferSerial(false);
|
||||
|
||||
_Porta.Close();
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
_Porta.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Log ou trate a exceção conforme necessário
|
||||
MessageBox.Show($"Erro ao fechar a porta serial: {ex.Message}");
|
||||
}
|
||||
});
|
||||
|
||||
lblStatus.Text = StatusPorta();
|
||||
|
||||
|
|
@ -180,15 +191,7 @@ namespace AgroBase.Comum
|
|||
{
|
||||
if (!_Porta.IsOpen || string.IsNullOrEmpty(Dados))
|
||||
{
|
||||
//Console.WriteLine("Dados não enviados: " + Dados + " - Porta " + _Porta.PortName + " aberta " + _Porta.IsOpen);
|
||||
if (FilaService.FeatureAtivada)
|
||||
{
|
||||
throw new Exception("A porta " + _Porta.PortName + " não está aberta");
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
throw new Exception("A porta " + _Porta.PortName + " não está aberta");
|
||||
}
|
||||
|
||||
AtualizarConsole("> " + DateTime.Now.ToString("HH:mm:ss:fff") + " - " + Dados);
|
||||
|
|
@ -211,11 +214,11 @@ namespace AgroBase.Comum
|
|||
}
|
||||
}
|
||||
|
||||
public void AdicionarMensagemFila(string Dados)
|
||||
public void AdicionarMensagemFila(string Mod_ID, string mensagem)
|
||||
{
|
||||
if (PortaCOM() != "")
|
||||
{
|
||||
FilaService.AdicionarMensagemFila(Dispositivo, Dados);
|
||||
FilaService.AdicionarMensagemFila(Mod_ID, Dispositivo, mensagem);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -251,6 +254,11 @@ namespace AgroBase.Comum
|
|||
|
||||
AtuadorModel.Pinout = PinoutModel.CarregarPinout(Variaveis.CaminhoParametros + "pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
|
||||
break;
|
||||
case T_Code.Mvd:
|
||||
Dados = CarregarParametros(MovimentacaoUnificadaModel.CarregarParametrosIniciais());
|
||||
|
||||
ModuloMvdModel.Pinout = PinoutModel.CarregarPinout(Variaveis.CaminhoParametros + "pinout" + Enum.GetName(typeof(T_Code), Dispositivo) + ".pin");
|
||||
break;
|
||||
default:
|
||||
Dados = default(T);
|
||||
break;
|
||||
|
|
@ -412,6 +420,17 @@ namespace AgroBase.Comum
|
|||
clbDispositivos.SetItemChecked(clbDispositivos.Items.Count - 1, Sensor.Aferir);
|
||||
}
|
||||
}
|
||||
else if (Dados is MovimentacaoUnificadaModel mvdModel && Dispositivo == T_Code.Mvd)
|
||||
{
|
||||
clbDispositivos.Items.Clear();
|
||||
foreach (var modulo in mvdModel.Modulos)
|
||||
{
|
||||
clbDispositivos.Items.Add(modulo.Modulo_ID + " " + modulo.MovMotor.ID.ToString());
|
||||
clbDispositivos.SetItemChecked(clbDispositivos.Items.Count - 1, modulo.MovMotor.Comandar);
|
||||
clbDispositivos.Items.Add(modulo.Modulo_ID + " " + modulo.DirMotor.ID.ToString());
|
||||
clbDispositivos.SetItemChecked(clbDispositivos.Items.Count - 1, modulo.DirMotor.Comandar);
|
||||
}
|
||||
}
|
||||
clbDispositivos.ItemCheck -= clbDispositivos_ItemCheck;
|
||||
clbDispositivos.ItemCheck += clbDispositivos_ItemCheck;
|
||||
|
||||
|
|
@ -456,13 +475,6 @@ namespace AgroBase.Comum
|
|||
Size = new System.Drawing.Size() { Height = 141, Width = 300 },
|
||||
ReadOnly = true
|
||||
};
|
||||
tmrConexao = new Timer()
|
||||
{
|
||||
Interval = 1000,
|
||||
Enabled = false
|
||||
};
|
||||
tmrConexao.Tick -= TmrConexao_Tick;
|
||||
tmrConexao.Tick += TmrConexao_Tick;
|
||||
tmrLimpeza = new Timer()
|
||||
{
|
||||
Interval = 1000,
|
||||
|
|
@ -549,16 +561,6 @@ namespace AgroBase.Comum
|
|||
}
|
||||
}
|
||||
|
||||
private void TmrConexao_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (!FilaService.ExistemMensagensPendentesEnvio(Dispositivo) && Dados.MensagemConexaoRecebida())
|
||||
{
|
||||
AcaoConexao();
|
||||
Dados.MensagemConexaoRecebida(true);
|
||||
tmrConexao.Enabled = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void TmrLimpeza_Tick(object sender, EventArgs e)
|
||||
{
|
||||
if (Ticks % 5 == 0)
|
||||
|
|
@ -669,10 +671,31 @@ namespace AgroBase.Comum
|
|||
}
|
||||
}
|
||||
break;
|
||||
case T_Code.Mvd:
|
||||
if (Dados is MovimentacaoUnificadaModel mvdModel)
|
||||
{
|
||||
mvdModel.Modulos.ForEach(x =>
|
||||
{
|
||||
x.MovMotor.Comandar = false;
|
||||
x.DirMotor.Comandar = false;
|
||||
});
|
||||
foreach (var Item in ((CheckedListBox)sender).CheckedItems)
|
||||
{
|
||||
if (mvdModel.Modulos.Any(x => (x.Modulo_ID + " " + x.MovMotor.ID) == Item.ToString()))
|
||||
{
|
||||
mvdModel.Modulos.FirstOrDefault(x => x.Modulo_ID == Item.ToString().Split(' ')[0] && x.MovMotor.ID == Item.ToString().Split(' ')[1]).MovMotor.Comandar = true;
|
||||
}
|
||||
else if (mvdModel.Modulos.Any(x => (x.Modulo_ID + " " + x.DirMotor.ID) == Item.ToString()))
|
||||
{
|
||||
mvdModel.Modulos.FirstOrDefault(x => x.Modulo_ID == Item.ToString().Split(' ')[0] && x.DirMotor.ID == Item.ToString().Split(' ')[1]).DirMotor.Comandar = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
var Config = Dados.ProtocoloConfiguracao(true);
|
||||
frmInstancial.frmPrincipal.lblStripErro.Text = Config[Config.Count - 1];
|
||||
frmInstancial.frmPrincipal.lblStripErro.Text = Config.Any() ? Config.FirstOrDefault().Value.FirstOrDefault() : "";
|
||||
}
|
||||
|
||||
private void nudAmostragem_ValueChanged(object sender, EventArgs e)
|
||||
|
|
@ -710,7 +733,9 @@ namespace AgroBase.Comum
|
|||
{
|
||||
if (e.KeyCode == Keys.Enter && txtEnvios.Text != "")
|
||||
{
|
||||
AdicionarMensagemFila(txtEnvios.Text);
|
||||
string modId = txtEnvios.Text.Split('¬')[0];
|
||||
string mensagem = txtEnvios.Text.Split('¬')[1];
|
||||
AdicionarMensagemFila(modId, mensagem);
|
||||
txtEnvios.Text = "";
|
||||
txtEnvios.Focus();
|
||||
}
|
||||
|
|
@ -738,22 +763,21 @@ namespace AgroBase.Comum
|
|||
return;
|
||||
}
|
||||
|
||||
if (Dispositivo == T_Code.Vzo)
|
||||
{
|
||||
Dispositivo = (T_Code)(int.Parse(Recebido.Substring(0, 3)));
|
||||
lblStatus.Invoke((Action)(() => lblStatus.Text = StatusPorta() + " - " + Enum.GetName(typeof(T_Code), Dispositivo)));
|
||||
}
|
||||
string mensagem = "";
|
||||
|
||||
if (FilaService.FeatureAtivada)
|
||||
if (Recebido.Contains(SerialService.SplitMessage))
|
||||
{
|
||||
if (Recebido.Length >= 3 && int.TryParse(Recebido.Substring(0, 3), out int val))
|
||||
string Mod_ID = Recebido.Split(SerialService.SplitMessage[0])[0];
|
||||
mensagem = Recebido.Substring(Mod_ID.Length + 1, Recebido.Length - Mod_ID.Length - 1);
|
||||
|
||||
if (mensagem.Length >= 3 && int.TryParse(mensagem.Substring(0, 3), out int val))
|
||||
{
|
||||
F_Code funcao = (F_Code)(val);
|
||||
if (funcao == F_Code.Msg)
|
||||
{
|
||||
try
|
||||
{
|
||||
int _id = int.Parse(Recebido.Split(';')[1]);
|
||||
int _id = int.Parse(mensagem.Split(SerialService.SplitParams[0])[1]);
|
||||
FilaService.MarcarMensagemRecebida(_id);
|
||||
}
|
||||
catch
|
||||
|
|
@ -773,7 +797,7 @@ namespace AgroBase.Comum
|
|||
|
||||
AtualizarConsole("< " + DateTime.Now.ToString("HH:mm:ss:fff") + " - " + Recebido);
|
||||
|
||||
if (Recebido[0].ToString() == SerialService.BeginSensor && !EqualityComparer<T>.Default.Equals(Dados, default(T)))
|
||||
if (mensagem != "" && mensagem[0].ToString() == SerialService.BeginSensor && !EqualityComparer<T>.Default.Equals(Dados, default(T)))
|
||||
{
|
||||
Dados.RecebeProtocoloSerial(Recebido);
|
||||
}
|
||||
|
|
@ -781,7 +805,7 @@ namespace AgroBase.Comum
|
|||
|
||||
public void btnConectar_Click(object sender, EventArgs e)
|
||||
{
|
||||
List<string> Config = new List<string>();
|
||||
var Config = new Dictionary<string, List<string>>();
|
||||
|
||||
if (_Porta.IsOpen)
|
||||
{
|
||||
|
|
@ -790,10 +814,9 @@ namespace AgroBase.Comum
|
|||
Config = Dados.ProtocoloConfiguracao(false);
|
||||
foreach (var ProtocoloConfiguracao in Config)
|
||||
{
|
||||
if (ProtocoloConfiguracao != "")
|
||||
if (ProtocoloConfiguracao.Key != "" && ProtocoloConfiguracao.Value.Any())
|
||||
{
|
||||
AdicionarMensagemFila(ProtocoloConfiguracao);
|
||||
//System.Threading.Thread.Sleep(100);
|
||||
ProtocoloConfiguracao.Value.ForEach(x => AdicionarMensagemFila(ProtocoloConfiguracao.Key, x));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -806,20 +829,24 @@ namespace AgroBase.Comum
|
|||
Config = Dados.ProtocoloConfiguracao(true);
|
||||
foreach (var ProtocoloConfiguracao in Config)
|
||||
{
|
||||
if (ProtocoloConfiguracao != "")
|
||||
if (ProtocoloConfiguracao.Key != "" && ProtocoloConfiguracao.Value.Any())
|
||||
{
|
||||
AdicionarMensagemFila(ProtocoloConfiguracao);
|
||||
//System.Threading.Thread.Sleep(100);
|
||||
ProtocoloConfiguracao.Value.ForEach(x => AdicionarMensagemFila(ProtocoloConfiguracao.Key, x));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
GeneralJoystick.AtualizaDispositivo();
|
||||
tmrConexao.Enabled = true;
|
||||
//tmrConexao.Enabled = true;
|
||||
}
|
||||
|
||||
public void AcaoConexao()
|
||||
public async Task AcaoConexao()
|
||||
{
|
||||
while (FilaService.ExistemMensagensPendentesEnvio(Dispositivo) || FilaService.ExistemMensagensPendentesResposta(Dispositivo))
|
||||
{
|
||||
await Task.Delay(300);
|
||||
}
|
||||
|
||||
if (!Dados.GetStatusConexao())
|
||||
{
|
||||
if (DesconectarPortaSerial())
|
||||
|
|
@ -835,30 +862,49 @@ namespace AgroBase.Comum
|
|||
|
||||
public void AcaoDesconectar()
|
||||
{
|
||||
cmbPorta.Enabled = true;
|
||||
cmbBaudRate.Enabled = true;
|
||||
btnAtualizar.Enabled = true;
|
||||
nudAmostragem.Enabled = true;
|
||||
txtEnvios.ReadOnly = true;
|
||||
txtEnvios.Text = "";
|
||||
btnConectar.Text = "Conectar";
|
||||
// Verifica se a invocação é necessária
|
||||
if (cmbPorta.InvokeRequired)
|
||||
{
|
||||
// Invoca a ação na thread de UI
|
||||
cmbPorta.Invoke(new Action(AcaoDesconectar));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Código que altera as propriedades dos componentes
|
||||
cmbPorta.Enabled = true;
|
||||
cmbBaudRate.Enabled = true;
|
||||
btnAtualizar.Enabled = true;
|
||||
nudAmostragem.Enabled = true;
|
||||
txtEnvios.ReadOnly = true;
|
||||
txtEnvios.Text = "";
|
||||
btnConectar.Text = "Conectar";
|
||||
|
||||
tmrLimpeza.Enabled = false;
|
||||
tmrLimpeza.Enabled = false;
|
||||
|
||||
SalvarLog();
|
||||
SalvarLog();
|
||||
}
|
||||
}
|
||||
|
||||
public void AcaoConectar()
|
||||
{
|
||||
cmbPorta.Enabled = false;
|
||||
cmbBaudRate.Enabled = false;
|
||||
btnAtualizar.Enabled = false;
|
||||
nudAmostragem.Enabled = false;
|
||||
txtEnvios.ReadOnly = false;
|
||||
txtEnvios.Text = "";
|
||||
btnConectar.Text = "Desconectar";
|
||||
|
||||
tmrLimpeza.Enabled = true;
|
||||
// Verifica se a invocação é necessária
|
||||
if (cmbPorta.InvokeRequired)
|
||||
{
|
||||
// Invoca a ação na thread de UI
|
||||
cmbPorta.Invoke(new Action(AcaoConectar));
|
||||
}
|
||||
else
|
||||
{
|
||||
// Código que altera as propriedades dos componentes
|
||||
cmbPorta.Enabled = false;
|
||||
cmbBaudRate.Enabled = false;
|
||||
btnAtualizar.Enabled = false;
|
||||
nudAmostragem.Enabled = false;
|
||||
txtEnvios.ReadOnly = false;
|
||||
txtEnvios.Text = "";
|
||||
btnConectar.Text = "Desconectar";
|
||||
tmrLimpeza.Enabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnAtualizar_Click(object sender, EventArgs e)
|
||||
|
|
@ -882,7 +928,7 @@ namespace AgroBase.Comum
|
|||
}
|
||||
|
||||
|
||||
public T CarregarParametros(object empty)
|
||||
public T CarregarParametros(dynamic empty)
|
||||
{
|
||||
string nomeArquivo = Variaveis.CaminhoParametros + "parameters" + Enum.GetName(typeof(T_Code), Dispositivo) + ".par";
|
||||
if (!File.Exists(nomeArquivo))
|
||||
|
|
|
|||
|
|
@ -53,6 +53,15 @@ namespace AgroBase.Services
|
|||
_Porta = porta,
|
||||
_CriadoEm = DateTime.Now,
|
||||
};
|
||||
case T_Code.Mvd:
|
||||
return new DispositivosService<MovimentacaoUnificadaModel>
|
||||
{
|
||||
Dispositivo = tipoDispositivo,
|
||||
_Nome = nome,
|
||||
_Descricao = descricao,
|
||||
_Porta = porta,
|
||||
_CriadoEm = DateTime.Now,
|
||||
};
|
||||
default:
|
||||
throw new ArgumentException("Tipo de dispositivo não reconhecido.");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ namespace AgroBase.Services
|
|||
public class FilaService
|
||||
{
|
||||
private static List<MensagemFilaModel> MensagensFila;
|
||||
public static bool FeatureAtivada = false;
|
||||
public static bool Liberado
|
||||
{
|
||||
get
|
||||
|
|
@ -22,23 +21,22 @@ namespace AgroBase.Services
|
|||
}
|
||||
|
||||
|
||||
public static void Inicializar(bool Ativado)
|
||||
public static void Inicializar()
|
||||
{
|
||||
MensagensFila = new List<MensagemFilaModel>();
|
||||
|
||||
|
||||
EnviarMensagensLoop().ConfigureAwait(false);
|
||||
|
||||
FeatureAtivada = Ativado;
|
||||
}
|
||||
|
||||
public static void AdicionarMensagemFila(T_Code Dispositivo, string Mensagem)
|
||||
public static void AdicionarMensagemFila(string Modulo_ID, T_Code Dispositivo, string Mensagem)
|
||||
{
|
||||
if (Mensagem != "")
|
||||
{
|
||||
MensagensFila.Add(new MensagemFilaModel()
|
||||
{
|
||||
Id = MensagensFila.Count + 1,
|
||||
ID_Modulo = Modulo_ID,
|
||||
Dispositivo = Dispositivo,
|
||||
Mensagem = Mensagem,
|
||||
AdicionadoEm = DateTime.Now,
|
||||
|
|
@ -82,34 +80,24 @@ namespace AgroBase.Services
|
|||
var Dispositivo = Variaveis.DispositivosConectados.FirstOrDefault(x => x.Dispositivo == Mensagem.Dispositivo);
|
||||
if (Dispositivo != null)
|
||||
{
|
||||
if (FeatureAtivada)
|
||||
{
|
||||
try
|
||||
{
|
||||
Dispositivo.EnviarDadosSerial(
|
||||
SerialService.BeginLine +
|
||||
Mensagem.Id +
|
||||
SerialService.SplitMessage +
|
||||
Mensagem.Mensagem +
|
||||
SerialService.EndLine
|
||||
);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Erro ao enviar mensagem para o dispositivo " + Dispositivo.Dispositivo.ToString() + " - " + ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
try
|
||||
{
|
||||
Dispositivo.EnviarDadosSerial(
|
||||
Mensagem.Mensagem +
|
||||
SerialService.BeginLine +
|
||||
Mensagem.Id +
|
||||
SerialService.SplitMessage +
|
||||
Mensagem.ID_Modulo +
|
||||
SerialService.SplitMessage +
|
||||
Mensagem.Mensagem +
|
||||
SerialService.EndLine
|
||||
);
|
||||
MarcarMensagemRecebida(Mensagem.Id);
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Erro ao enviar mensagem para o dispositivo " + Dispositivo.Dispositivo.ToString() + " - " + ex.Message);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
@ -122,6 +110,11 @@ namespace AgroBase.Services
|
|||
return MensagensFila.Any(x => x.Dispositivo == Dispositivo && !x.Enviado);
|
||||
}
|
||||
|
||||
public static bool ExistemMensagensPendentesResposta(T_Code Dispositivo)
|
||||
{
|
||||
return MensagensFila.Any(x => x.Dispositivo == Dispositivo && x.Enviado && !x.Recebido);
|
||||
}
|
||||
|
||||
private static bool FilaLiberada(T_Code Dispositivo)
|
||||
{
|
||||
// Consulta mensagens do dispositivo
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace AgroBase.Services
|
|||
void AcaoDesconectar();
|
||||
void SalvarParametros(DispositivoBaseModel dados);
|
||||
void LimparBufferSerial(bool LimparConsole);
|
||||
void AdicionarMensagemFila(string Protocolo);
|
||||
void AdicionarMensagemFila(string Mod_ID, string Protocolo);
|
||||
void EnviarDadosSerial(string Protocolo);
|
||||
void btnConectar_Click(object sender, EventArgs e);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@ namespace AgroBase.Services
|
|||
public static string BeginSensor = "#";
|
||||
public static string SplitMessage = ";";
|
||||
public static string SplitParams = ",";
|
||||
public static string ProtocoloCheck = BeginLine + SplitMessage + 0 + SplitMessage + ((int)F_Code.Chk).ToString() + SplitMessage + "check" + EndLine;
|
||||
public static List<T_Code> DispositivosMotores = new List<T_Code>() { T_Code.Mov, T_Code.Dir };
|
||||
|
||||
public class DispositivoDetalhesModel
|
||||
|
|
@ -30,12 +29,10 @@ namespace AgroBase.Services
|
|||
public T_Code Dispositivo { get; set; }
|
||||
public bool Erro { get; set; }
|
||||
public int Versao { get; set; }
|
||||
public string Mod_ID { get; set; }
|
||||
}
|
||||
|
||||
public static List<DispositivoDetalhesModel> DispositivosMapeados = new List<DispositivoDetalhesModel>();
|
||||
public static List<SerialPort> PortasAguardandoResposta = new List<SerialPort>();
|
||||
public static List<SerialPort> PortasComErro = new List<SerialPort>();
|
||||
public static List<SerialPort> PortasDesconhecidas = new List<SerialPort>();
|
||||
private static Dictionary<string, int> TentativasPortas = new Dictionary<string, int>();
|
||||
private static bool VarreduraEmAndamento = false;
|
||||
|
||||
|
|
@ -49,60 +46,66 @@ namespace AgroBase.Services
|
|||
|
||||
VarreduraEmAndamento = true;
|
||||
|
||||
PortasAguardandoResposta.ForEach(Porta =>
|
||||
{
|
||||
PortasComErro.Add(Porta);
|
||||
});
|
||||
|
||||
await ProcessarPortasComErroAsync();
|
||||
|
||||
var dispositivosMapeados = DispositivosMapeados.ToList();
|
||||
|
||||
var Portas = SerialPort.GetPortNames();
|
||||
var PortasNaoMapeadas = Portas.Where(x => !dispositivosMapeados.Select(y => y.PortaCOM).Contains(x) && !PortasComErro.Select(y => y.PortName).Contains(x) && !PortasDesconhecidas.Select(y => y.PortName).Contains(x)).ToList();
|
||||
var PortasNaoMapeadas = Portas.Where(x => !dispositivosMapeados.Select(y => y.PortaCOM).Contains(x)).ToList();
|
||||
|
||||
for (int i = 0; i < PortasNaoMapeadas.Count(); i++)
|
||||
{
|
||||
string PortaCom = PortasNaoMapeadas[i].ToString();
|
||||
SerialPort _Porta = new SerialPort() { PortName = PortaCom, BaudRate = 115200 };
|
||||
_Porta.DataReceived -= _Porta_DataReceived;
|
||||
_Porta.DataReceived += _Porta_DataReceived;
|
||||
string CodigoTest = ProtocoloCheck;
|
||||
|
||||
bool PortaDispositivoProprio = false;
|
||||
|
||||
try
|
||||
{
|
||||
_Porta.Open();
|
||||
_Porta.Write(CodigoTest);
|
||||
PortasAguardandoResposta.Add(_Porta);
|
||||
|
||||
foreach (var Modulo in Variaveis.OperacaoEmAndamento.DispMvd.Dados.Modulos)
|
||||
{
|
||||
string ProtocoloCheck =
|
||||
BeginLine +
|
||||
0 + SplitMessage +
|
||||
Modulo.Modulo_ID + SplitMessage +
|
||||
((int)F_Code.Chk).ToString() + SplitMessage +
|
||||
"check" +
|
||||
EndLine;
|
||||
|
||||
_Porta.Write(ProtocoloCheck);
|
||||
|
||||
await Task.Delay(1000);
|
||||
|
||||
PortaDispositivoProprio = ProcessarRespostaDispositivo(_Porta);
|
||||
|
||||
if (!PortaDispositivoProprio)
|
||||
{
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_Porta.Close();
|
||||
Console.WriteLine(ex.Message.ToString());
|
||||
PortasComErro.Add(_Porta);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_Porta.Close();
|
||||
}
|
||||
|
||||
if (!PortaDispositivoProprio)
|
||||
{
|
||||
await TentarIdentificarDispositivo(_Porta);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var DispositivosRemovidos = dispositivosMapeados.Where(x => !Portas.Contains(x.PortaCOM)).ToList();
|
||||
foreach (var Dispositivo in DispositivosRemovidos)
|
||||
{
|
||||
DispositivosMapeados.Remove(Dispositivo);
|
||||
}
|
||||
|
||||
Portas = SerialPort.GetPortNames();
|
||||
PortasDesconhecidas.ForEach(x =>
|
||||
{
|
||||
if (!Portas.Contains(x.PortName))
|
||||
{
|
||||
PortasDesconhecidas.Remove(x);
|
||||
}
|
||||
});
|
||||
PortasComErro.ForEach(x =>
|
||||
{
|
||||
if (!Portas.Contains(x.PortName))
|
||||
{
|
||||
PortasComErro.Remove(x);
|
||||
}
|
||||
});
|
||||
|
||||
if (!Variaveis.CaminhoSistema.Contains("AgroMonitor"))
|
||||
{
|
||||
AtualizarDispositivos();
|
||||
|
|
@ -111,6 +114,64 @@ namespace AgroBase.Services
|
|||
VarreduraEmAndamento = false;
|
||||
}
|
||||
|
||||
private static bool ProcessarRespostaDispositivo(SerialPort Porta)
|
||||
{
|
||||
string Recebido = Porta.ReadLine();
|
||||
|
||||
if (Recebido.Length > 2)
|
||||
{
|
||||
if (Recebido.Contains("$GPTXT"))
|
||||
{
|
||||
GPSService.AtualizarPortaCOM(Porta);
|
||||
return false;
|
||||
}
|
||||
|
||||
T_Code Dispositivo = T_Code.Vzo;
|
||||
F_Code Verificacao = F_Code.Nda;
|
||||
int Versao = 0;
|
||||
|
||||
var Dados = Recebido.Split(';');
|
||||
|
||||
string Mod_ID = Dados[0];
|
||||
|
||||
int code = 0;
|
||||
int.TryParse(Dados[1], out code);
|
||||
if (code == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if ((F_Code)code == F_Code.Msg)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
Dispositivo = (T_Code)(int.Parse(Dados[1]));
|
||||
|
||||
int.TryParse(Dados[2], out int check);
|
||||
Verificacao = (F_Code)check;
|
||||
|
||||
int.TryParse(Dados[3], out int versao);
|
||||
Versao = versao;
|
||||
|
||||
if (Dispositivo != T_Code.Vzo && !DispositivosMapeados.Any(x => x.Dispositivo == Dispositivo && x.Mod_ID == Mod_ID))
|
||||
{
|
||||
DispositivosMapeados.Add(new DispositivoDetalhesModel()
|
||||
{
|
||||
PortaCOM = Porta.PortName,
|
||||
Dispositivo = Dispositivo,
|
||||
Erro = Verificacao == F_Code.Err,
|
||||
Versao = Versao,
|
||||
Mod_ID = Mod_ID,
|
||||
});
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void AtualizarDispositivos()
|
||||
{
|
||||
Variaveis.DispositivosConexaoInicial.ForEach(Dispositivo =>
|
||||
|
|
@ -145,7 +206,7 @@ namespace AgroBase.Services
|
|||
dispositivoService = DispositivosServiceFactory.CreateDispositivoService(
|
||||
Dispositivo,
|
||||
"Nome: " + Enum.GetName(typeof(T_Code), Dispositivo),
|
||||
"Descrição: " + Enum.GetName(typeof(T_Code), Dispositivo),
|
||||
"Descrição: " + string.Join(", ", DispositivosMapeados.Where(x => x.Dispositivo == Dispositivo).Select(x => x.Mod_ID).ToArray()),
|
||||
new SerialPort()
|
||||
);
|
||||
Variaveis.DispositivosConectados.Add(dispositivoService);
|
||||
|
|
@ -169,90 +230,6 @@ namespace AgroBase.Services
|
|||
});
|
||||
}
|
||||
|
||||
private static void _Porta_DataReceived(object sender, SerialDataReceivedEventArgs e)
|
||||
{
|
||||
var Porta = ((SerialPort)sender);
|
||||
try
|
||||
{
|
||||
string Recebido = Porta.ReadLine();
|
||||
if (Recebido.Length > 2)
|
||||
{
|
||||
if (Recebido.Contains("$GPTXT"))
|
||||
{
|
||||
GPSService.AtualizarPortaCOM(Porta);
|
||||
return;
|
||||
}
|
||||
|
||||
T_Code Dispositivo = T_Code.Vzo;
|
||||
F_Code Verificacao = F_Code.Nda;
|
||||
int Versao = 0;
|
||||
|
||||
var Dados = Recebido.Split(';');
|
||||
int code = 0;
|
||||
int.TryParse(Dados[0], out code);
|
||||
if (code == 0)
|
||||
{
|
||||
//Porta.Close();
|
||||
return;
|
||||
}
|
||||
|
||||
if ((F_Code)code == F_Code.Msg)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Dispositivo = (T_Code)(int.Parse(Dados[0]));
|
||||
|
||||
int.TryParse(Dados[1], out int check);
|
||||
Verificacao = (F_Code)check;
|
||||
|
||||
int.TryParse(Dados[2], out int versao);
|
||||
Versao = versao;
|
||||
|
||||
if (Dispositivo != T_Code.Vzo)
|
||||
{
|
||||
DispositivosMapeados.Add(new DispositivoDetalhesModel()
|
||||
{
|
||||
PortaCOM = Porta.PortName,
|
||||
Dispositivo = Dispositivo,
|
||||
Erro = Verificacao == F_Code.Err,
|
||||
Versao = Versao,
|
||||
});
|
||||
}
|
||||
|
||||
Porta.Close();
|
||||
PortasAguardandoResposta.Remove(Porta);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine("Erro ao receber dados da porta " + Porta.PortName);
|
||||
}
|
||||
}
|
||||
|
||||
private static async Task ProcessarPortasComErroAsync()
|
||||
{
|
||||
List<SerialPort> PortasSucesso = new List<SerialPort>();
|
||||
|
||||
foreach (var Porta in PortasComErro)
|
||||
{
|
||||
Porta.DataReceived -= _Porta_DataReceived;
|
||||
PortasAguardandoResposta.Remove(Porta);
|
||||
|
||||
Porta.Close();
|
||||
SerialPort porta = new SerialPort() { PortName = Porta.PortName };
|
||||
|
||||
bool encontrada = await TentarIdentificarDispositivo(porta);
|
||||
if (encontrada)
|
||||
{
|
||||
PortasSucesso.Add(Porta);
|
||||
}
|
||||
}
|
||||
|
||||
PortasSucesso.ForEach(x => PortasComErro.Remove(x));
|
||||
PortasDesconhecidas.ForEach(x => PortasComErro.Remove(x));
|
||||
}
|
||||
|
||||
private static async Task<bool> TentarIdentificarDispositivo(SerialPort porta)
|
||||
{
|
||||
// Método para tentar identificar dispositivos que não respondem ao comando de verificação padrão
|
||||
|
|
|
|||
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
[{"Momento":"2024-06-07T10:19:00.7567428-03:00","Protocolo":"@1;ET;258;Mov,1,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:19:02.8986621-03:00","Protocolo":"ET;655,1,$\r","Enviado":false},{"Momento":"2024-06-07T10:19:02.899659-03:00","Protocolo":"@2;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:19:02.9192525-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:19:03.0296029-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T10:19:11.643249-03:00","Protocolo":"@3;ET;258;Mov,0,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:19:11.643249-03:00","Protocolo":"ET;655,3,$\r","Enviado":false},{"Momento":"2024-06-07T10:19:11.6716499-03:00","Protocolo":"@4;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:19:11.6909813-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:19:11.8015245-03:00","Protocolo":"ET;655,4,$\r","Enviado":false},{"Momento":"2024-06-07T10:19:11.8101444-03:00","Protocolo":"@2;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:19:11.8289208-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:19:11.9393706-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T10:19:21.5438894-03:00","Protocolo":"@5;ET;258;Mov,0,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:19:21.5494348-03:00","Protocolo":"ET;655,5,$\r","Enviado":false},{"Momento":"2024-06-07T10:19:21.5576103-03:00","Protocolo":"@6;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:19:21.5761178-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:19:21.6863065-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T10:19:22.5660101-03:00","Protocolo":"@2;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:19:22.5855793-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:19:22.6963176-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T10:19:23.5784944-03:00","Protocolo":"@6;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:19:23.5979611-03:00","Protocolo":"ET;655,2,$\r","Enviado":false},{"Momento":"2024-06-07T10:19:23.7081852-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:20:30.458566-03:00","Protocolo":"ET;655,7,$\r","Enviado":false},{"Momento":"2024-06-07T10:20:30.4595631-03:00","Protocolo":"@7;ET;258;Mov,0,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:20:30.5085453-03:00","Protocolo":"@8;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:20:30.5266812-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:20:30.637599-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T10:20:31.5164541-03:00","Protocolo":"@6;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:20:31.5352411-03:00","Protocolo":"ET;655,8,$\r","Enviado":false},{"Momento":"2024-06-07T10:20:31.6454978-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:23:10.3637392-03:00","Protocolo":"@9;ET;258;Mov,1,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:23:10.3657426-03:00","Protocolo":"ET;655,9,$\r","Enviado":false},{"Momento":"2024-06-07T10:23:10.3946572-03:00","Protocolo":"@10;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:23:10.3981422-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:23:10.5093541-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T10:23:11.4173492-03:00","Protocolo":"@6;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:23:11.4337655-03:00","Protocolo":"ET;655,10,$\r","Enviado":false},{"Momento":"2024-06-07T10:23:11.5452119-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
[{"Momento":"2024-06-07T10:29:21.9414866-03:00","Protocolo":"@1;ET;258;Mov,0,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:29:21.9449644-03:00","Protocolo":"ET;655,1,$\r","Enviado":false},{"Momento":"2024-06-07T10:29:21.9777686-03:00","Protocolo":"@2;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:29:21.9891662-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T10:29:22.0950311-03:00","Protocolo":"ET;655,2,$\r","Enviado":false},{"Momento":"2024-06-07T10:29:44.1110057-03:00","Protocolo":"@3;ET;258;Mov,1,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:29:44.1120411-03:00","Protocolo":"ET;655,3,$\r","Enviado":false},{"Momento":"2024-06-07T10:29:44.1327763-03:00","Protocolo":"@4;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:29:44.1425888-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:29:44.2537742-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T10:29:52.7409467-03:00","Protocolo":"@5;ET;258;Mov,0,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:29:52.7468069-03:00","Protocolo":"ET;655,5,$\r","Enviado":false},{"Momento":"2024-06-07T10:29:52.776594-03:00","Protocolo":"@6;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:29:52.7944984-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T10:29:52.9041746-03:00","Protocolo":"ET;655,6,$\r","Enviado":false},{"Momento":"2024-06-07T10:29:52.9081855-03:00","Protocolo":"@4;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:29:52.9191028-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:29:53.0309257-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T10:29:58.4935761-03:00","Protocolo":"@7;ET;258;Mov,0,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:29:58.4990416-03:00","Protocolo":"ET;655,7,$\r","Enviado":false},{"Momento":"2024-06-07T10:29:58.5201786-03:00","Protocolo":"@8;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:29:58.537846-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T10:29:58.6480533-03:00","Protocolo":"ET;655,8,$\r","Enviado":false},{"Momento":"2024-06-07T10:29:58.6566895-03:00","Protocolo":"@4;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:29:58.6656008-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:29:58.7759516-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T10:32:46.8941913-03:00","Protocolo":"@9;ET;258;Mov,0,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:32:49.0580319-03:00","Protocolo":"@10;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:32:52.9087459-03:00","Protocolo":"ET;655,9,$\r","Enviado":false},{"Momento":"2024-06-07T10:32:56.9898814-03:00","Protocolo":"@4;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:33:06.6620787-03:00","Protocolo":"@10;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:33:09.1966239-03:00","Protocolo":"@4;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:33:09.2196141-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
[{"Momento":"2024-06-07T13:41:07.0939406-03:00","Protocolo":"@1;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:41:07.1033709-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:41:07.1043795-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T13:41:10.0161009-03:00","Protocolo":"@2;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:41:10.0299322-03:00","Protocolo":"ET;655,1,$\r","Enviado":false},{"Momento":"2024-06-07T13:41:10.5725141-03:00","Protocolo":"ET;Mov Iniciado\r","Enviado":false},{"Momento":"2024-06-07T13:41:10.5837098-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T13:41:11.0938485-03:00","Protocolo":"ET;655,2,$\r","Enviado":false},{"Momento":"2024-06-07T13:41:11.9651559-03:00","Protocolo":"ET;#544;Mov;0.00;1485.50;16927.93;16810.32;0;0;0;0;16869.83$\r","Enviado":false},{"Momento":"2024-06-07T13:41:13.3697428-03:00","Protocolo":"ET;#544;Mov;0.00;2805.49;16927.93;16810.32;0;0;0;0;16870.93$\r","Enviado":false},{"Momento":"2024-06-07T13:41:14.6512034-03:00","Protocolo":"@3;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:41:14.6670435-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false}
|
||||
|
|
@ -0,0 +1 @@
|
|||
[{"Momento":"2024-06-07T13:44:02.8094408-03:00","Protocolo":"@1;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:44:02.819613-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:44:02.819613-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T13:44:02.9308586-03:00","Protocolo":"ET;655,1,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:02.9593175-03:00","Protocolo":"@2;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:44:02.9666583-03:00","Protocolo":"ET;Mov ja inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:44:02.977334-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T13:44:03.4884299-03:00","Protocolo":"ET;655,2,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:09.7527294-03:00","Protocolo":"@3;ET;258;Mov,0,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:44:09.7591174-03:00","Protocolo":"ET;Mov Desligado\r","Enviado":false},{"Momento":"2024-06-07T13:44:09.7704566-03:00","Protocolo":"ET;#211;Mov;0$\r","Enviado":false},{"Momento":"2024-06-07T13:44:10.2809432-03:00","Protocolo":"ET;655,3,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:10.2962733-03:00","Protocolo":"@4;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:44:10.3129782-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T13:44:15.7959636-03:00","Protocolo":"@5;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:44:15.8048394-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:44:15.806829-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T13:44:15.9166935-03:00","Protocolo":"ET;655,5,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:15.9289522-03:00","Protocolo":"@6;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:44:16.4900628-03:00","Protocolo":"ET;Mov Iniciado\r","Enviado":false},{"Momento":"2024-06-07T13:44:16.5012716-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T13:44:16.9404142-03:00","Protocolo":"@4;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:44:17.0123161-03:00","Protocolo":"ET;655,6,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:17.034168-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T13:44:25.7538454-03:00","Protocolo":"@7;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:44:25.7626209-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:44:25.7654826-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T13:44:25.8738244-03:00","Protocolo":"ET;655,7,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:25.8871732-03:00","Protocolo":"@8;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:44:25.8953795-03:00","Protocolo":"ET;Mov ja inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:44:25.9058531-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T13:44:26.4168348-03:00","Protocolo":"ET;655,8,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:26.4236132-03:00","Protocolo":"@4;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:44:26.4408385-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T13:44:36.7185304-03:00","Protocolo":"@9;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:44:36.7270081-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:44:36.7295529-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T13:44:36.8391395-03:00","Protocolo":"ET;655,9,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:36.8461429-03:00","Protocolo":"@10;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:44:36.8530812-03:00","Protocolo":"ET;Mov ja inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:44:36.8633369-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T13:44:37.3741238-03:00","Protocolo":"ET;655,10,$\r","Enviado":false},{"Momento":"2024-06-07T13:44:37.384193-03:00","Protocolo":"@4;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:44:37.4004422-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false}
|
||||
|
|
@ -0,0 +1 @@
|
|||
[{"Momento":"2024-06-07T13:47:44.0898317-03:00","Protocolo":"@1;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:47:44.0985317-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:47:44.0995515-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T13:47:44.211852-03:00","Protocolo":"ET;655,1,$\r","Enviado":false},{"Momento":"2024-06-07T13:47:44.2292313-03:00","Protocolo":"@2;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:47:44.2361537-03:00","Protocolo":"ET;Mov ja inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:47:44.2470803-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T13:47:47.0721696-03:00","Protocolo":"ET;655,2,$\r","Enviado":false},{"Momento":"2024-06-07T13:47:52.3061034-03:00","Protocolo":"@3;ET;258;Mov,0,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:47:52.312692-03:00","Protocolo":"ET;Mov Desligado\r","Enviado":false},{"Momento":"2024-06-07T13:47:52.3238706-03:00","Protocolo":"ET;#211;Mov;0$\r","Enviado":false},{"Momento":"2024-06-07T13:47:52.8350419-03:00","Protocolo":"ET;655,3,$\r","Enviado":false},{"Momento":"2024-06-07T13:47:52.8421798-03:00","Protocolo":"@4;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:47:52.8589938-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T13:47:55.3267545-03:00","Protocolo":"@5;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:47:55.3354593-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:47:55.3375422-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T13:47:55.4463493-03:00","Protocolo":"ET;655,5,$\r","Enviado":false},{"Momento":"2024-06-07T13:47:55.4538121-03:00","Protocolo":"@6;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:47:56.0165413-03:00","Protocolo":"ET;Mov Iniciado\r","Enviado":false},{"Momento":"2024-06-07T13:47:56.0257241-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T13:47:56.4634269-03:00","Protocolo":"@4;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:47:56.5369539-03:00","Protocolo":"ET;655,6,$\r","Enviado":false},{"Momento":"2024-06-07T13:47:56.5587692-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
[{"Momento":"2024-06-07T12:57:09.014698-03:00","Protocolo":"@1;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T12:57:09.0250104-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T12:57:09.0260137-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T12:57:09.1362495-03:00","Protocolo":"ET;655,1,$\r","Enviado":false},{"Momento":"2024-06-07T12:57:09.1537885-03:00","Protocolo":"@2;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T12:57:09.8258305-03:00","Protocolo":"ET;Mov Iniciado\r","Enviado":false},{"Momento":"2024-06-07T12:57:09.8360206-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T12:57:10.348348-03:00","Protocolo":"ET;655,2,$\r","Enviado":false},{"Momento":"2024-06-07T12:57:11.1080516-03:00","Protocolo":"ET;#544;Mov;0.00;1508.50;16927.10;16810.32;0;0;0;0;16861.64$\r","Enviado":false},{"Momento":"2024-06-07T12:57:12.5114433-03:00","Protocolo":"ET;#544;Mov;0.00;2894.65;16927.88;16810.32;0;0;0;0;16861.64$\r","Enviado":false},{"Momento":"2024-06-07T12:57:13.915405-03:00","Protocolo":"ET;#544;Mov;0.00;3026.18;16927.88;16806.26;0;0;0;0;16861.64$\r","Enviado":false},{"Momento":"2024-06-07T12:57:15.3191419-03:00","Protocolo":"ET;#544;Mov;0.00;3008.47;16927.88;16810.32;0;0;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T12:57:16.7237549-03:00","Protocolo":"ET;#544;Mov;0.00;3027.97;16927.88;16810.32;0;0;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T12:57:18.1274748-03:00","Protocolo":"ET;#544;Mov;0.00;3033.70;16927.88;16810.32;0;0;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T12:57:19.531252-03:00","Protocolo":"ET;#544;Mov;0.00;3036.19;16927.88;16810.32;0;0;0;0;16858.36$\r","Enviado":false},{"Momento":"2024-06-07T12:57:20.9349053-03:00","Protocolo":"ET;#544;Mov;0.00;3039.43;16927.10;16806.26;0;0;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T12:57:22.3392774-03:00","Protocolo":"ET;#544;Mov;0.00;3040.68;16927.10;16810.32;0;0;0;0;16859.45$\r","Enviado":false},{"Momento":"2024-06-07T12:57:23.7421391-03:00","Protocolo":"ET;#544;Mov;118.00;3026.61;16927.10;16806.26;0;0;0;0;16858.36$\r","Enviado":false},{"Momento":"2024-06-07T12:57:25.1463172-03:00","Protocolo":"ET;#544;Mov;96.00;3023.45;16927.10;16806.26;0;0;0;0;16862.82$\r","Enviado":false},{"Momento":"2024-06-07T12:57:26.5505755-03:00","Protocolo":"ET;#544;Mov;0.00;3041.47;16927.10;16806.26;0;0;0;0;16862.82$\r","Enviado":false},{"Momento":"2024-06-07T12:57:27.4760132-03:00","Protocolo":"@3;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T12:57:27.4923982-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T12:57:27.6029329-03:00","Protocolo":"ET;655,3,$\r","Enviado":false},{"Momento":"2024-06-07T12:57:27.6186708-03:00","Protocolo":"@4;ET;258;Mov,0,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T12:57:27.6260613-03:00","Protocolo":"ET;Mov Desligado\r","Enviado":false},{"Momento":"2024-06-07T12:57:27.6375083-03:00","Protocolo":"ET;#211;Mov;0$\r","Enviado":false},{"Momento":"2024-06-07T12:57:28.1473917-03:00","Protocolo":"ET;655,4,$\r","Enviado":false},{"Momento":"2024-06-07T12:57:35.2684546-03:00","Protocolo":"@5;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T12:57:35.278513-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T12:57:35.27994-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T12:57:35.3887551-03:00","Protocolo":"ET;655,5,$\r","Enviado":false},{"Momento":"2024-06-07T12:57:35.4022145-03:00","Protocolo":"@6;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T12:57:35.9639217-03:00","Protocolo":"ET;Mov Iniciado\r","Enviado":false},{"Momento":"2024-06-07T12:57:35.9747111-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T12:57:36.4851108-03:00","Protocolo":"ET;655,6,$\r","Enviado":false},{"Momento":"2024-06-07T12:57:37.3560714-03:00","Protocolo":"ET;#544;Mov;0.00;1580.50;16927.10;16810.32;0;0;0;0;16861.73$\r","Enviado":false},{"Momento":"2024-06-07T12:57:38.7605767-03:00","Protocolo":"ET;#544;Mov;0.00;2855.28;16927.10;16810.32;0;0;0;0;16862.82$\r","Enviado":false},{"Momento":"2024-06-07T12:57:40.1634786-03:00","Protocolo":"ET;#544;Mov;0.00;2986.89;16927.10;16810.32;0;0;0;0;16861.73$\r","Enviado":false}
|
||||
|
|
@ -0,0 +1 @@
|
|||
[{"Momento":"2024-06-07T10:58:31.4582469-03:00","Protocolo":"@1;ET;258;Mov,1,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:58:31.4653367-03:00","Protocolo":"ET;655,1,$\r","Enviado":false},{"Momento":"2024-06-07T10:58:31.489977-03:00","Protocolo":"@2;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:58:31.5088194-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:58:31.6199059-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T10:58:39.8875215-03:00","Protocolo":"@3;ET;258;Mov,0,0x01,2,0,800,0,32$","Enviado":true},{"Momento":"2024-06-07T10:58:39.8931453-03:00","Protocolo":"ET;655,3,$\r","Enviado":false},{"Momento":"2024-06-07T10:58:39.9093502-03:00","Protocolo":"@4;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:58:39.9264409-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T10:58:40.038104-03:00","Protocolo":"ET;655,4,$\r","Enviado":false},{"Momento":"2024-06-07T10:58:40.0431694-03:00","Protocolo":"@2;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T10:58:40.0528972-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T10:58:40.1631986-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false}
|
||||
|
|
@ -0,0 +1 @@
|
|||
[{"Momento":"2024-06-07T13:00:03.6861111-03:00","Protocolo":"@1;ET;258;ET,1,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:00:03.690535-03:00","Protocolo":"Modbus Inicializado\r","Enviado":false},{"Momento":"2024-06-07T13:00:03.6915321-03:00","Protocolo":"ET;#211;ET;1$\r","Enviado":false},{"Momento":"2024-06-07T13:00:03.8007944-03:00","Protocolo":"ET;655,1,$\r","Enviado":false},{"Momento":"2024-06-07T13:00:03.8123468-03:00","Protocolo":"@2;ET;258;Mov,1,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:00:04.3740376-03:00","Protocolo":"ET;Mov Iniciado\r","Enviado":false},{"Momento":"2024-06-07T13:00:04.3840929-03:00","Protocolo":"ET;#211;Mov;1$\r","Enviado":false},{"Momento":"2024-06-07T13:00:04.8950264-03:00","Protocolo":"ET;655,2,$\r","Enviado":false},{"Momento":"2024-06-07T13:00:05.8764405-03:00","Protocolo":"ET;#544;Mov;0.00;1468.50;16930.51;16810.32;1;2;0;0;16862.82$\r","Enviado":false},{"Momento":"2024-06-07T13:00:07.3906728-03:00","Protocolo":"ET;#544;Mov;0.00;2857.84;16929.98;16806.26;1;2;0;0;16860.63$\r","Enviado":false},{"Momento":"2024-06-07T13:00:08.9049228-03:00","Protocolo":"ET;#544;Mov;0.00;3016.72;16929.98;16810.32;1;2;0;0;16861.73$\r","Enviado":false},{"Momento":"2024-06-07T13:00:10.4188933-03:00","Protocolo":"ET;#544;Mov;0.00;3038.21;16929.98;16810.32;1;2;0;0;16862.82$\r","Enviado":false},{"Momento":"2024-06-07T13:00:11.9337142-03:00","Protocolo":"ET;#544;Mov;0.00;3133.40;16929.98;16810.32;1;2;0;0;16861.73$\r","Enviado":false},{"Momento":"2024-06-07T13:00:13.4481534-03:00","Protocolo":"ET;#544;Mov;0.00;3076.86;16927.88;16810.32;1;2;0;0;16861.73$\r","Enviado":false},{"Momento":"2024-06-07T13:00:14.9622189-03:00","Protocolo":"ET;#544;Mov;0.00;3062.71;16929.98;16810.32;1;2;0;0;16861.73$\r","Enviado":false},{"Momento":"2024-06-07T13:00:16.4775783-03:00","Protocolo":"ET;#544;Mov;0.00;3073.49;16929.98;16806.26;1;2;0;0;16861.73$\r","Enviado":false},{"Momento":"2024-06-07T13:00:17.9908497-03:00","Protocolo":"ET;#544;Mov;0.00;3070.56;16929.98;16810.32;1;2;0;0;16861.73$\r","Enviado":false},{"Momento":"2024-06-07T13:00:19.5051094-03:00","Protocolo":"ET;#544;Mov;0.00;3063.39;16930.51;16806.26;1;2;0;0;16862.82$\r","Enviado":false},{"Momento":"2024-06-07T13:00:21.0200562-03:00","Protocolo":"ET;#544;Mov;0.00;3049.98;16929.98;16806.26;1;2;0;0;16862.82$\r","Enviado":false},{"Momento":"2024-06-07T13:00:40.3781815-03:00","Protocolo":"ET;#544;Mov;0.00;3052.10;16930.51;16810.32;1;2;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T13:00:41.7811603-03:00","Protocolo":"ET;#544;Mov;0.00;3095.21;16929.98;16806.26;1;2;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T13:00:41.7890225-03:00","Protocolo":"ET;#544;Mov;0.00;3088.05;16929.98;16806.26;1;2;0;0;16858.36$\r","Enviado":false},{"Momento":"2024-06-07T13:00:41.7920177-03:00","Protocolo":"ET;#544;Mov;0.00;3083.80;16929.98;16806.26;1;2;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T13:00:41.7950075-03:00","Protocolo":"ET;#544;Mov;0.00;3053.85;16929.98;16810.32;1;2;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T13:00:41.8035577-03:00","Protocolo":"ET;#544;Mov;0.00;3048.30;16929.98;16806.26;1;2;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T13:00:42.2258452-03:00","Protocolo":"ET;#544;Mov;0.00;3053.46;16929.98;16810.32;1;2;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T13:00:43.7401862-03:00","Protocolo":"ET;#544;Mov;0.00;3050.74;16930.51;16810.32;1;2;0;0;16861.64$\r","Enviado":false},{"Momento":"2024-06-07T13:00:45.2556089-03:00","Protocolo":"ET;#544;Mov;0.00;3048.66;16929.98;16806.26;1;2;0;0;16860.55$\r","Enviado":false},{"Momento":"2024-06-07T13:00:46.7153507-03:00","Protocolo":"@3;ET;258;ET,0,500,0,1,0,3,0,17,0,16,0,4$","Enviado":true},{"Momento":"2024-06-07T13:00:46.7328502-03:00","Protocolo":"ET;#211;ET;0$\r","Enviado":false},{"Momento":"2024-06-07T13:00:46.8433372-03:00","Protocolo":"ET;655,3,$\r","Enviado":false},{"Momento":"2024-06-07T13:00:46.8506091-03:00","Protocolo":"@4;ET;258;Mov,0,0x01,2,0,800,0,34$","Enviado":true},{"Momento":"2024-06-07T13:00:46.8573631-03:00","Protocolo":"ET;Mov Desligado\r","Enviado":false},{"Momento":"2024-06-07T13:00:46.8676336-03:00","Protocolo":"ET;#211;Mov;0$\r","Enviado":false},{"Momento":"2024-06-07T13:00:47.3787482-03:00","Protocolo":"ET;655,4,$\r","Enviado":false}
|
||||
|
|
@ -1 +1 @@
|
|||
{"Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"CapacidadeReservatorio":30.0,"AtuacaoNivelAlto":true,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":34.42987713140743},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":14.876485059544191},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.103588945512129},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.437319738098896},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"BombaPressurizadora":{"ID":"BOMBA","BombaAtuada":false,"Ligado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[14,35,36,37,5],"PressaoSP":85.0,"Pressao":82.01,"Potencia":0.0},"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":25222.0,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":[1117263.12],"ValorMinimo":-1.281631101976581E+32,"ValorMaximo":2.8836731440342142E+24,"LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","Leituras":[82.01],"ValorMinimo":0.0,"ValorMaximo":127.63,"LimiteMaximo":120.0,"LimiteMinimo":60.0}],"PercentualInicioPulverizacao":0.3,"ScriptDeteccaoErvas":"weed-detector-v7.py","_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"_MassaLeitura":1117263.12,"MassaReservatorio":15.236908365395459,"VolumeReservatorio":14.511341300376627,"PercentualReservatorio":48.371137667922085,"VolumeVazaoAferido":102.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"_LeituraPulsos":0,"_LeituraPeriodo":0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"_LeituraPressao":2631.0,"PressaoLinha":82.01,"PressaoLinhaCalc":82.0030336996337}
|
||||
{"Modulo_ID":"Atu","Conectado":false,"QuantidadeBicos":4,"DensidadeHerbicida":1.05,"CapacidadeReservatorio":30.0,"AtuacaoNivelAlto":true,"BicosPulverizadores":[{"ID":"B01","Posicao":1,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":34.42987713140743},{"ID":"B02","Posicao":2,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":14.876485059544191},{"ID":"B03","Posicao":3,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.103588945512129},{"ID":"B04","Posicao":4,"Atuado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":18.437319738098896},{"ID":"B05","Posicao":5,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B06","Posicao":6,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B07","Posicao":7,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B08","Posicao":8,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B09","Posicao":9,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0},{"ID":"B10","Posicao":10,"Atuado":false,"Comandar":false,"Inicializado":false,"Testando":false,"Funcoes":[21],"StatusBico":false,"MediaNivelFluxo":0.0}],"BombaPressurizadora":{"ID":"BOMBA","BombaAtuada":false,"Ligado":false,"Comandar":true,"Inicializado":false,"Testando":false,"Funcoes":[14,35,36,37,5],"PressaoSP":85.0,"Pressao":82.01,"Potencia":0.0},"Sensores":[{"LogGrafico":[],"ID":"FLXLN","Prioridade":23,"Descricao":"Fluxo na linha principal","Componente":198,"Aferir":true,"DelayAmostragem":300,"Inicializado":false,"Testando":false,"Funcoes":[25],"Parametros":[],"UnidadeMedida":"mL/s","Leituras":[0.0,0.0],"ValorMinimo":0.0,"ValorMaximo":25222.0,"LimiteMaximo":0.0,"LimiteMinimo":0.0},{"LogGrafico":[],"ID":"MASRS","Prioridade":3,"Descricao":"Massa do reservatório de herbicida","Componente":532,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[22,23],"Parametros":[],"UnidadeMedida":"Kg","Leituras":[1117263.12],"ValorMinimo":-1.281631101976581E+32,"ValorMaximo":2.8836731440342142E+24,"LimiteMaximo":50.0,"LimiteMinimo":5.0},{"LogGrafico":[],"ID":"PRSLN","Prioridade":3,"Descricao":"Pressão na linha principal","Componente":333,"Aferir":true,"DelayAmostragem":1000,"Inicializado":false,"Testando":false,"Funcoes":[24],"Parametros":[["Vmin","000.00"],["Vmax","004.50"],["Pmax","174.04"]],"UnidadeMedida":"psi","Leituras":[82.01],"ValorMinimo":0.0,"ValorMaximo":127.63,"LimiteMaximo":120.0,"LimiteMinimo":60.0}],"PercentualInicioPulverizacao":0.3,"ScriptDeteccaoErvas":"weed-detector-v7.py","_MassaRef":0.8,"_MassaLeituraRef":40876.37,"_MassaLeituraExtra":1895800.0,"_MassaLeitura":1117263.12,"MassaReservatorio":15.236908365395459,"VolumeReservatorio":14.511341300376627,"PercentualReservatorio":48.371137667922085,"VolumeVazaoAferido":102.0,"_FluxoMlRef":102.0,"_FluxoPulsoRef":80.0,"_LeituraPulsos":0,"_LeituraPeriodo":0,"VazaoFluxoMLpS":0.0,"VolumeVazaoML":0.0,"_PressaoVmin":0.0,"_PressaoVmax":4.5,"_PressaoMax":174.045,"_LeituraPressao":2631.0,"PressaoLinha":82.01,"PressaoLinhaCalc":82.0030336996337}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
|||
{"ExpansorGPIO":false,"EnderecoExpansor":"","Pinos":[{"Controlador":1,"Barramento":0,"Pino":99,"Descricao":"1","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":98,"Descricao":"2","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":36,"Descricao":"3","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":39,"Descricao":"4","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":34,"Descricao":"5","Funcao":12,"Habilitado":true,"ComponenteID":"Mov"},{"Controlador":1,"Barramento":0,"Pino":35,"Descricao":"6","Funcao":41,"Habilitado":true,"ComponenteID":"Dir"},{"Controlador":1,"Barramento":0,"Pino":32,"Descricao":"7","Funcao":14,"Habilitado":true,"ComponenteID":"Dir"},{"Controlador":1,"Barramento":0,"Pino":33,"Descricao":"8","Funcao":9,"Habilitado":true,"ComponenteID":"Dir"},{"Controlador":1,"Barramento":0,"Pino":25,"Descricao":"9","Funcao":13,"Habilitado":true,"ComponenteID":"Dir"},{"Controlador":1,"Barramento":0,"Pino":26,"Descricao":"10","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":27,"Descricao":"11","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":14,"Descricao":"12","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":12,"Descricao":"13","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":97,"Descricao":"14","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":13,"Descricao":"15","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":9,"Descricao":"16","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":10,"Descricao":"17","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":11,"Descricao":"18","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":96,"Descricao":"19","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":6,"Descricao":"26","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":7,"Descricao":"27","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":8,"Descricao":"28","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":15,"Descricao":"29","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":2,"Descricao":"30","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":0,"Descricao":"31","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":4,"Descricao":"32","Funcao":44,"Habilitado":true,"ComponenteID":"Mvd"},{"Controlador":1,"Barramento":0,"Pino":16,"Descricao":"33","Funcao":43,"Habilitado":true,"ComponenteID":"Mvd"},{"Controlador":1,"Barramento":0,"Pino":17,"Descricao":"34","Funcao":42,"Habilitado":true,"ComponenteID":"Mvd"},{"Controlador":1,"Barramento":0,"Pino":5,"Descricao":"35","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":18,"Descricao":"36","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":19,"Descricao":"37","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":95,"Descricao":"38","Funcao":0,"Habilitado":false,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":21,"Descricao":"39","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":3,"Descricao":"40","Funcao":3,"Habilitado":true,"ComponenteID":"Mvd"},{"Controlador":1,"Barramento":0,"Pino":1,"Descricao":"41","Funcao":2,"Habilitado":true,"ComponenteID":"Mvd"},{"Controlador":1,"Barramento":0,"Pino":22,"Descricao":"42","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":23,"Descricao":"43","Funcao":0,"Habilitado":true,"ComponenteID":""},{"Controlador":1,"Barramento":0,"Pino":94,"Descricao":"44","Funcao":0,"Habilitado":false,"ComponenteID":""}]}
|
||||
|
|
@ -25,7 +25,7 @@
|
|||
<meta name="viewport" content="width=device-width,
|
||||
initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
|
||||
<style>
|
||||
#map_459afd82b51d20eef5f835f948f180a0 {
|
||||
#map_8b586f11575e819f69488b3cb1e07185 {
|
||||
position: relative;
|
||||
width: 100.0%;
|
||||
height: 100.0%;
|
||||
|
|
@ -39,14 +39,14 @@
|
|||
<body>
|
||||
|
||||
|
||||
<div class="folium-map" id="map_459afd82b51d20eef5f835f948f180a0" ></div>
|
||||
<div class="folium-map" id="map_8b586f11575e819f69488b3cb1e07185" ></div>
|
||||
|
||||
</body>
|
||||
<script>
|
||||
|
||||
|
||||
var map_459afd82b51d20eef5f835f948f180a0 = L.map(
|
||||
"map_459afd82b51d20eef5f835f948f180a0",
|
||||
var map_8b586f11575e819f69488b3cb1e07185 = L.map(
|
||||
"map_8b586f11575e819f69488b3cb1e07185",
|
||||
{
|
||||
center: [0.0, 0.0],
|
||||
crs: L.CRS.EPSG3857,
|
||||
|
|
@ -60,13 +60,13 @@
|
|||
|
||||
|
||||
|
||||
var tile_layer_accc0020d010bc302c3d24b743a95dc6 = L.tileLayer(
|
||||
var tile_layer_a637a965e96688db341ceb0d0bccfa80 = L.tileLayer(
|
||||
"https://tile.openstreetmap.org/{z}/{x}/{y}.png",
|
||||
{"attribution": "\u0026copy; \u003ca href=\"https://www.openstreetmap.org/copyright\"\u003eOpenStreetMap\u003c/a\u003e contributors", "detectRetina": false, "maxNativeZoom": 19, "maxZoom": 19, "minZoom": 0, "noWrap": false, "opacity": 1, "subdomains": "abc", "tms": false}
|
||||
);
|
||||
|
||||
|
||||
tile_layer_accc0020d010bc302c3d24b743a95dc6.addTo(map_459afd82b51d20eef5f835f948f180a0);
|
||||
tile_layer_a637a965e96688db341ceb0d0bccfa80.addTo(map_8b586f11575e819f69488b3cb1e07185);
|
||||
|
||||
</script>
|
||||
|
||||
|
|
@ -87,7 +87,7 @@
|
|||
}
|
||||
trajeto_json_add({"features": []});
|
||||
|
||||
trajeto_json.addTo(map_459afd82b51d20eef5f835f948f180a0);
|
||||
trajeto_json.addTo(map_8b586f11575e819f69488b3cb1e07185);
|
||||
|
||||
function adicionarGeometria(novaGeometria) {
|
||||
trajeto_json.addData(novaGeometria);
|
||||
|
|
@ -145,7 +145,7 @@
|
|||
|
||||
var marcadorDinamico = L.marker([0, 0], {
|
||||
icon: customIcon
|
||||
}).addTo(map_459afd82b51d20eef5f835f948f180a0);
|
||||
}).addTo(map_8b586f11575e819f69488b3cb1e07185);
|
||||
|
||||
// Conectar ao broker MQTT
|
||||
const client = mqtt.connect('ws://localhost:9001'); // Use wss para conexão segura
|
||||
|
|
@ -183,7 +183,7 @@
|
|||
marcadorDinamico.setRotationAngle(angulo);
|
||||
|
||||
adicionarCoordenada("Tj", [novaLongitude, novaLatitude]);
|
||||
map_459afd82b51d20eef5f835f948f180a0.setView(novaPosicao, map_459afd82b51d20eef5f835f948f180a0.getZoom());
|
||||
map_8b586f11575e819f69488b3cb1e07185.setView(novaPosicao, map_8b586f11575e819f69488b3cb1e07185.getZoom());
|
||||
});
|
||||
|
||||
function calcularOrientacao(P1latitude, P1longitude, P2latitude, P2longitude) {
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
fd547cec450dd4e7cc70eb5c8487b1e9776deeb08c0f3d1efb1d416ed404d584
|
||||
3ecf17375a3098315637453bf91621393469c9e74c20f06fcd13d32858384541
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -23,6 +23,7 @@ enum F_Code {
|
|||
Cmd = 293,
|
||||
Err = 404,
|
||||
Msg = 655,
|
||||
Req = 887,
|
||||
};
|
||||
|
||||
enum S_Code {
|
||||
|
|
|
|||
|
|
@ -8,10 +8,19 @@
|
|||
#ifndef ModbusService
|
||||
#define ModbusService
|
||||
|
||||
// Fila para armazenar mensagens Modbus
|
||||
QueueHandle_t modbusQueue;
|
||||
TaskHandle_t modbusTaskHandle = NULL;
|
||||
// Definir prioridades
|
||||
#define PRIORITY_HIGH 1
|
||||
#define PRIORITY_LOW 0
|
||||
|
||||
HardwareSerial SerialDriver(1);
|
||||
#define RXD1 16
|
||||
#define TXD1 17
|
||||
#define DE_RE_PIN 4 // Pino para DE e RE
|
||||
long ModbusBaudRate = 9600;
|
||||
int RXD1 = 16;
|
||||
int TXD1 = 17;
|
||||
int DE_RE_PIN = 4;
|
||||
|
||||
bool Debug = false;
|
||||
|
||||
class ModbusGetResponse {
|
||||
|
|
@ -25,10 +34,6 @@ class ModbusGetResponse {
|
|||
ModbusGetResponse() : _address(0), _command_code(0), _num_registers(0), _value(0.0) {}
|
||||
};
|
||||
|
||||
// Definir prioridades
|
||||
#define PRIORITY_HIGH 1
|
||||
#define PRIORITY_LOW 0
|
||||
|
||||
// Estrutura para armazenar dados da mensagem Modbus
|
||||
struct ModbusMessage {
|
||||
uint8_t slaveAddress;
|
||||
|
|
@ -42,9 +47,6 @@ struct ModbusMessage {
|
|||
bool waitCallback;
|
||||
};
|
||||
|
||||
// Fila para armazenar mensagens Modbus
|
||||
QueueHandle_t modbusQueue;
|
||||
|
||||
// Função para calcular CRC16
|
||||
uint16_t calculateCRC(const uint8_t* data, uint8_t length) {
|
||||
uint16_t crc = 0xFFFF;
|
||||
|
|
@ -161,23 +163,52 @@ void processModbusQueue(void* pvParameters) {
|
|||
|
||||
|
||||
// Função para inicializar o Modbus
|
||||
void InicializarModbus(bool _debug = false) {
|
||||
SerialDriver.begin(9600, SERIAL_8N2, RXD1, TXD1);
|
||||
void InicializarModbus(bool iniciar, int _rx, int _tx, int _md, long _baudRate = 9600, bool _debug = false) {
|
||||
// Se a comunicação serial já estiver inicializada, encerre-a
|
||||
if (SerialDriver) {
|
||||
SerialDriver.end();
|
||||
}
|
||||
|
||||
// Se a fila já estiver criada, delete-a
|
||||
if (modbusQueue != NULL) {
|
||||
vQueueDelete(modbusQueue);
|
||||
modbusQueue = NULL;
|
||||
}
|
||||
|
||||
// Se a tarefa já estiver criada, delete-a
|
||||
if (modbusTaskHandle != NULL) {
|
||||
vTaskDelete(modbusTaskHandle);
|
||||
modbusTaskHandle = NULL;
|
||||
}
|
||||
|
||||
if (!iniciar) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Inicializar os novos pinos
|
||||
RXD1 = _rx;
|
||||
TXD1 = _tx;
|
||||
DE_RE_PIN = _md;
|
||||
ModbusBaudRate = _baudRate;
|
||||
|
||||
// Inicializar a comunicação serial
|
||||
SerialDriver.begin(ModbusBaudRate, SERIAL_8N2, RXD1, TXD1);
|
||||
Serial.println("Modbus Inicializado");
|
||||
|
||||
// Configurar o pino DE/RE
|
||||
pinMode(DE_RE_PIN, OUTPUT);
|
||||
digitalWrite(DE_RE_PIN, LOW); // Inicialmente em modo de recepção
|
||||
|
||||
Debug = _debug;
|
||||
|
||||
// Criar a fila de mensagens Modbus
|
||||
modbusQueue = xQueueCreate(10, sizeof(ModbusMessage));
|
||||
modbusQueue = xQueueCreate(100, sizeof(ModbusMessage));
|
||||
if (modbusQueue == NULL) {
|
||||
Serial.println("Erro ao criar a fila de mensagens Modbus");
|
||||
}
|
||||
|
||||
// Criar a tarefa de processamento da fila
|
||||
xTaskCreate(processModbusQueue, "ProcessModbusQueue", 4096, NULL, 1, NULL);
|
||||
xTaskCreate(processModbusQueue, "ProcessModbusQueue", 4096, NULL, 1, &modbusTaskHandle);
|
||||
}
|
||||
|
||||
// Função para construir o comando Modbus
|
||||
|
|
|
|||
|
|
@ -7,43 +7,18 @@
|
|||
const char BeginLine = '@';
|
||||
const char EndLine = '$';
|
||||
const char BeginSensor = '#';
|
||||
const char* SplitMessage = ";";
|
||||
const char* SplitParams = ",";
|
||||
const int MAX_PROTOCOLS = 20;
|
||||
|
||||
class ProtocoloSerial {
|
||||
public:
|
||||
F_Code funcao;
|
||||
String Mod_ID;
|
||||
String protocolo;
|
||||
int idMensagem;
|
||||
};
|
||||
|
||||
int LerBufferSerial(ProtocoloSerial (&protocolos)[MAX_PROTOCOLS]) {
|
||||
int protocolCount = 0; // Contador de protocolos
|
||||
if (Serial.available() > 0) {
|
||||
String protocoloAtual = "";
|
||||
F_Code _funcaoAtual = Nda;
|
||||
|
||||
while (Serial.available()) {
|
||||
char entrada = (char)Serial.read();
|
||||
if (entrada == EndLine) {
|
||||
if (protocoloAtual.length() > 0 && protocolCount < MAX_PROTOCOLS) {
|
||||
protocolos[protocolCount].funcao = _funcaoAtual;
|
||||
protocolos[protocolCount].protocolo = protocoloAtual;
|
||||
protocoloAtual = ""; // Reseta o protocolo atual
|
||||
_funcaoAtual = Nda;
|
||||
protocolCount++;
|
||||
}
|
||||
} else {
|
||||
protocoloAtual += entrada;
|
||||
}
|
||||
if (protocoloAtual.length() == 3 && _funcaoAtual == Nda) {
|
||||
_funcaoAtual = (F_Code)(protocoloAtual.toInt());
|
||||
protocoloAtual = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
return protocolCount; // Retorna o número de protocolos lidos
|
||||
}
|
||||
|
||||
std::vector<String> SplitString(String message, const char *delimiter) {
|
||||
std::vector<String> partes;
|
||||
char messageArray[256];
|
||||
|
|
@ -56,7 +31,7 @@ std::vector<String> SplitString(String message, const char *delimiter) {
|
|||
return partes;
|
||||
}
|
||||
|
||||
std::vector<ProtocoloSerial> LerBufferSerialFila() {
|
||||
std::vector<ProtocoloSerial> LerBufferSerialFila(String Mod_ID) {
|
||||
std::vector<ProtocoloSerial> protocolos;
|
||||
|
||||
if (Serial.available() > 0) {
|
||||
|
|
@ -73,13 +48,16 @@ std::vector<ProtocoloSerial> LerBufferSerialFila() {
|
|||
ProtocoloIniciado = false;
|
||||
|
||||
if (protocoloAtual.length() > 0) {
|
||||
std::vector<String> partes = SplitString(protocoloAtual, (char*)";");
|
||||
if (partes.size() == 3) {
|
||||
std::vector<String> partes = SplitString(protocoloAtual, SplitMessage);
|
||||
if (partes.size() == 4) {
|
||||
ProtocoloSerial objeto;
|
||||
objeto.idMensagem = partes[0].toInt();
|
||||
objeto.funcao = (F_Code)(partes[1].toInt());
|
||||
objeto.protocolo = partes[2];
|
||||
protocolos.push_back(objeto);
|
||||
objeto.Mod_ID = partes[1];
|
||||
objeto.funcao = (F_Code)(partes[2].toInt());
|
||||
objeto.protocolo = partes[3];
|
||||
if (Mod_ID == objeto.Mod_ID) {
|
||||
protocolos.push_back(objeto);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
@ -95,8 +73,8 @@ std::vector<ProtocoloSerial> LerBufferSerialFila() {
|
|||
|
||||
|
||||
|
||||
void EnviarDadosSerial(String ID, String Mensagem) {
|
||||
String ProtocoloEnvio = ID + ";" + Mensagem;
|
||||
void EnviarDadosSerial(String Mod_ID, String Mensagem) {
|
||||
String ProtocoloEnvio = Mod_ID + SplitMessage + Mensagem;
|
||||
Serial.println(ProtocoloEnvio);
|
||||
Serial.flush();
|
||||
vTaskDelay(pdMS_TO_TICKS(10));
|
||||
|
|
@ -104,8 +82,8 @@ void EnviarDadosSerial(String ID, String Mensagem) {
|
|||
|
||||
String MontarProtocoloMensagemRecebida(int idMensagem) {
|
||||
String protocolo =
|
||||
(String)Msg + ";" +
|
||||
(String)idMensagem + ";" +
|
||||
(String)Msg + SplitParams +
|
||||
(String)idMensagem + SplitParams +
|
||||
EndLine;
|
||||
return protocolo;
|
||||
}
|
||||
|
|
@ -179,12 +157,10 @@ String MontarDadosProtocoloEncoder(Sentido sentido, int angulo, bool ref0, bool
|
|||
return Protocolo;
|
||||
}
|
||||
|
||||
String MontarDadosProtocoloEncoderAbsoluto(Sentido sentido, int angulo, bool referenciando, bool referenciado) {
|
||||
String MontarDadosProtocoloEncoderAbsoluto(Sentido sentido, int angulo) {
|
||||
String Protocolo =
|
||||
(String)sentido + ";" +
|
||||
(String)angulo + ";" +
|
||||
(referenciando ? "1" : "0") + ";" +
|
||||
(referenciado ? "1" : "0");
|
||||
(String)angulo;
|
||||
return Protocolo;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\ModbusService.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\utils.h"
|
||||
#include "C:\ZendionInc\agrobot_base\Firmware\Modulos\Pinout.h"
|
||||
#include <HardwareSerial.h>
|
||||
#include <SimpleKalmanFilter.h>
|
||||
|
||||
#define D_Code Mvd
|
||||
|
|
@ -15,10 +14,13 @@
|
|||
String Mod_ID = "";
|
||||
int Cod_Alarme = 0;
|
||||
|
||||
#define _pinoLED RGB_BUILTIN
|
||||
#define _pinoAddr0 36
|
||||
#define _pinoAddr1 39
|
||||
|
||||
int _pinModbusRX = 16;
|
||||
int _pinModbusTX = 17;
|
||||
int _pinModbusMD = 4;
|
||||
|
||||
void AtualizarEnderecoModulo() {
|
||||
bool A0 = digitalRead(_pinoAddr0) == 1;
|
||||
bool A1 = digitalRead(_pinoAddr1) == 1;
|
||||
|
|
@ -44,13 +46,13 @@ int _TaxaAmostragem = 500;
|
|||
|
||||
class MotorBLDC {
|
||||
public:
|
||||
String _ID = (String)Mov;
|
||||
String _ID = "Mov";
|
||||
|
||||
bool Iniciado = false;
|
||||
bool Testando = false;
|
||||
|
||||
PinoModel _pinoTMP;
|
||||
SimpleKalmanFilter* tempKalman;
|
||||
SimpleKalmanFilter* tempKalman = nullptr;
|
||||
|
||||
byte _endereco;
|
||||
int _numPolos;
|
||||
|
|
@ -85,14 +87,12 @@ class MotorBLDC {
|
|||
|
||||
Iniciado = ConfigurarDriver();
|
||||
|
||||
if (_pinoTMP.Definido()) {
|
||||
_pinoTMP.Conectar();
|
||||
tempKalman = new (std::nothrow) SimpleKalmanFilter(2, 2, 0.01);
|
||||
}
|
||||
|
||||
if (Iniciado) {
|
||||
if (_pinoTMP.Definido()) {
|
||||
_pinoTMP.Conectar();
|
||||
tempKalman = new SimpleKalmanFilter(2, 2, 0.01);
|
||||
}
|
||||
|
||||
xTaskCreatePinnedToCore(&MotorBLDC::MovTaskWrapper, "MovTask", 5000, this, 20, &MovTaskHandle, tskNO_AFFINITY);
|
||||
|
||||
AtualizarDadosControle(true);
|
||||
|
||||
EnviarDadosSerial(Mod_ID, _ID + " Iniciado");
|
||||
|
|
@ -108,14 +108,12 @@ class MotorBLDC {
|
|||
return;
|
||||
}
|
||||
|
||||
// Parar a execução das tarefas
|
||||
vTaskDelete(MovTaskHandle);
|
||||
|
||||
// Redefinir as configurações para os valores iniciais
|
||||
_pinoTMP.Desconectar();
|
||||
|
||||
// Outras redefinições de variáveis de estado, se necessário
|
||||
delete tempKalman;
|
||||
tempKalman = nullptr;
|
||||
|
||||
EnviarDadosSerial(Mod_ID, _ID + " Desligado");
|
||||
|
||||
|
|
@ -126,6 +124,61 @@ class MotorBLDC {
|
|||
AtualizarDadosControle(true);
|
||||
}
|
||||
|
||||
void AtualizarDadosControle(bool reset = false) {
|
||||
if (!Iniciado) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (reset) {
|
||||
_Ligado = false;
|
||||
_Freio = false;
|
||||
_SentidoSP = Parado;
|
||||
_RPM_SP = 0;
|
||||
}
|
||||
|
||||
if (_SentidoSP != Parado && _SentidoSP != _Sentido) {
|
||||
int std = EnviarComandoModbus(_endereco, 0x06, 0x006D, _SentidoSP == Horario ? 1 : 0)._value;
|
||||
_Sentido = !Ligado ? Parado : std == 0 ? Horario : Antihorario;
|
||||
}
|
||||
if (_RPM_SP != RPM_SP) {
|
||||
RPM_SP = EnviarComandoModbus(_endereco, 0x06, 0x0056, _RPM_SP)._value;
|
||||
}
|
||||
if (_Freio != Freio) {
|
||||
Freio = EnviarComandoModbus(_endereco, 0x06, 0x006A, _Freio ? 1 : 0)._value == 1;
|
||||
}
|
||||
if (_Ligado != Ligado) {
|
||||
Ligado = EnviarComandoModbus(_endereco, 0x06, 0x0066, _Ligado ? 1 : 0)._value == 1;
|
||||
}
|
||||
|
||||
/*if (_SentidoSP != Parado && _SentidoSP != _Sentido) {
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x006D, _SentidoSP == Horario ? 1 : 0, false);
|
||||
}
|
||||
if (_RPM_SP != RPM_SP) {
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x0056, _RPM_SP, false);
|
||||
}
|
||||
if (_Freio != Freio) {
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x006A, _Freio ? 1 : 0, false);
|
||||
}
|
||||
if (_Ligado != Ligado) {
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x0066, _Ligado ? 1 : 0, false);
|
||||
}*/
|
||||
|
||||
/*EnviarComandoModbus(_endereco, 0x06, 0x006D, _SentidoSP == Horario ? 1 : 0, false);
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x0056, _RPM_SP, false);
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x006A, _Freio ? 1 : 0, false);
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x0066, _Ligado ? 1 : 0, false);*/
|
||||
|
||||
}
|
||||
|
||||
void RequisitarDados() {
|
||||
AferirDadosDriver();
|
||||
AferirTemperatura();
|
||||
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sBLD, _ID, MontarDadosProtocoloBLD(RPM, Temperatura, Tensao, CorrenteMax, Ligado, _Sentido, Freio, CodAlarme, TemperaturaDriver)));
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
ModbusGetResponse EnviarComandoModbus(byte endereco, byte funcao, byte registro, int valor, bool aguardarResposta = true) {
|
||||
const int maxTentativas = 2;
|
||||
int tentativas = 0;
|
||||
|
|
@ -212,87 +265,6 @@ class MotorBLDC {
|
|||
return false;
|
||||
}
|
||||
|
||||
void AtualizarDadosControle(bool reset = false) {
|
||||
if (!Iniciado) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (reset) {
|
||||
_Ligado = false;
|
||||
_Freio = false;
|
||||
_SentidoSP = Parado;
|
||||
_RPM_SP = 0;
|
||||
}
|
||||
|
||||
/*if (_SentidoSP != Parado && _SentidoSP != _Sentido) {
|
||||
int std = EnviarComandoModbus(_endereco, 0x06, 0x006D, _SentidoSP == Horario ? 1 : 0)._value;
|
||||
_Sentido = !Ligado ? Parado : std == 0 ? Horario : Antihorario;
|
||||
}
|
||||
if (_RPM_SP != RPM_SP) {
|
||||
RPM_SP = EnviarComandoModbus(_endereco, 0x06, 0x0056, _RPM_SP)._value;
|
||||
}
|
||||
if (_Freio != Freio) {
|
||||
Freio = EnviarComandoModbus(_endereco, 0x06, 0x006A, _Freio ? 1 : 0)._value == 1;
|
||||
}
|
||||
if (_Ligado != Ligado) {
|
||||
Ligado = EnviarComandoModbus(_endereco, 0x06, 0x0066, _Ligado ? 1 : 0)._value == 1;
|
||||
}*/
|
||||
|
||||
if (_SentidoSP != Parado && _SentidoSP != _Sentido) {
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x006D, _SentidoSP == Horario ? 1 : 0, false);
|
||||
}
|
||||
if (_RPM_SP != RPM_SP) {
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x0056, _RPM_SP, false);
|
||||
}
|
||||
if (_Freio != Freio) {
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x006A, _Freio ? 1 : 0, false);
|
||||
}
|
||||
if (_Ligado != Ligado) {
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x0066, _Ligado ? 1 : 0, false);
|
||||
}
|
||||
|
||||
/*EnviarComandoModbus(_endereco, 0x06, 0x006D, _SentidoSP == Horario ? 1 : 0, false);
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x0056, _RPM_SP, false);
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x006A, _Freio ? 1 : 0, false);
|
||||
EnviarComandoModbus(_endereco, 0x06, 0x0066, _Ligado ? 1 : 0, false);*/
|
||||
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
TaskHandle_t MovTaskHandle = NULL;
|
||||
static void MovTaskWrapper(void *pvParameters) {
|
||||
MotorBLDC *motor = static_cast<MotorBLDC*>(pvParameters);
|
||||
motor->MovTask();
|
||||
}
|
||||
|
||||
void MovTask() {
|
||||
unsigned long firstMilis = millis();
|
||||
while (1)
|
||||
{
|
||||
if (!Conectado) {
|
||||
// Caso não esteja conectado, aguarda 1 segundo até a próxima verificação, liberando uso de CPU
|
||||
vTaskDelay(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
long intMillis = (millis() - firstMilis);
|
||||
|
||||
// A cada _TaxaAmostragem, enviar os dados para o software
|
||||
if (intMillis >= _TaxaAmostragem) {
|
||||
|
||||
AferirTemperatura();
|
||||
AferirDadosDriver();
|
||||
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sBLD, _ID, MontarDadosProtocoloBLD(RPM, Temperatura, Tensao, CorrenteMax, Ligado, _Sentido, Freio, CodAlarme, TemperaturaDriver)));
|
||||
firstMilis = millis();
|
||||
}
|
||||
|
||||
// Aguarda metade do menor período possível entre leituras
|
||||
vTaskDelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
void AferirDadosDriver() {
|
||||
RPM_SP = EnviarComandoModbus(_endereco, 0x03, 0x0056, 1)._value;
|
||||
RPM = EnviarComandoModbus(_endereco, 0x03, 0x005F, 1)._value;
|
||||
|
|
@ -313,7 +285,216 @@ class MotorBLDC {
|
|||
|
||||
};
|
||||
|
||||
class MotorPasso {
|
||||
public:
|
||||
String _ID = "Dir";
|
||||
int _canal = 0;
|
||||
|
||||
bool Iniciado = false;
|
||||
bool Testando = false;
|
||||
|
||||
// Definições
|
||||
PinoModel _pinoENA;
|
||||
PinoModel _pinoDIR;
|
||||
PinoModel _pinoPUL;
|
||||
PinoModel _pinoEncoder;
|
||||
|
||||
SimpleKalmanFilter* encoderKalman = nullptr;
|
||||
|
||||
// Consumo
|
||||
double _Angulo;
|
||||
Sentido _Sentido;
|
||||
|
||||
// Entrada de dados
|
||||
double _Angulo_SP;
|
||||
int _Angulo_Offset = 0;
|
||||
Sentido _Sentido_SP = Parado;
|
||||
bool _MotorLigado = false;
|
||||
bool _Estabilizar = true;
|
||||
double _frequencia = 4000;
|
||||
|
||||
int FrequenciaMaxima = 10000;
|
||||
int dutyCycle = 512;
|
||||
|
||||
|
||||
void Inicializar() {
|
||||
if (Iniciado) {
|
||||
EnviarDadosSerial(Mod_ID, _ID + " ja inicializado");
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
return;
|
||||
}
|
||||
|
||||
if (_pinoPUL.Definido()) {
|
||||
AtualizarPWM();
|
||||
}
|
||||
_pinoENA.Conectar(true);
|
||||
_pinoDIR.Conectar(false);
|
||||
_pinoEncoder.Conectar();
|
||||
|
||||
_Angulo_SP = 0;
|
||||
_MotorLigado = false;
|
||||
|
||||
encoderKalman = new (std::nothrow) SimpleKalmanFilter(1, 2, 0.01);
|
||||
|
||||
xTaskCreatePinnedToCore(&MotorPasso::DirTaskWrapper, "DirTask", 5000, this, 18, &DirTaskHandle, tskNO_AFFINITY);
|
||||
|
||||
EnviarDadosSerial(Mod_ID, _ID + " Iniciado");
|
||||
|
||||
Iniciado = true;
|
||||
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
}
|
||||
|
||||
void AtualizarPWM() {
|
||||
ledcSetup(_canal, _frequencia, 10);
|
||||
ledcAttachPin(_pinoPUL.num, _canal);
|
||||
ledcWrite(_canal, dutyCycle);
|
||||
}
|
||||
|
||||
void Desligar() {
|
||||
if (!Iniciado) {
|
||||
EnviarDadosSerial(Mod_ID, _ID + " nao esta inicializado");
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
return;
|
||||
}
|
||||
|
||||
// Parar a execução das tarefas
|
||||
vTaskDelete(DirTaskHandle);
|
||||
|
||||
delete encoderKalman;
|
||||
encoderKalman = nullptr;
|
||||
|
||||
// Redefinir as configurações para os valores iniciais
|
||||
_pinoENA.Desconectar();
|
||||
_pinoDIR.Desconectar();
|
||||
_pinoPUL.Desconectar();
|
||||
_pinoEncoder.Desconectar();
|
||||
|
||||
|
||||
EnviarDadosSerial(Mod_ID, _ID + " Desligado");
|
||||
|
||||
Iniciado = false;
|
||||
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, _ID, Iniciado ? "1" : "0"));
|
||||
}
|
||||
|
||||
void RequisitarDados() {
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sENC, _ID, MontarDadosProtocoloEncoderAbsoluto(_Sentido, _Angulo)));
|
||||
}
|
||||
|
||||
|
||||
private:
|
||||
|
||||
double _Margem = 0.5;
|
||||
double _AgMin = 380;
|
||||
double _AgMax = 3430;
|
||||
int RefMin = -90;
|
||||
int RefMax = 90;
|
||||
|
||||
double _anguloAnterior = 0;
|
||||
double _anguloAtual = 0;
|
||||
double _taxaMudancaAngulo = 0;
|
||||
|
||||
TaskHandle_t DirTaskHandle = NULL;
|
||||
static void DirTaskWrapper(void *pvParameters) {
|
||||
MotorPasso* motor = static_cast<MotorPasso*>(pvParameters);
|
||||
motor->DirTask();
|
||||
}
|
||||
|
||||
void DirTask() {
|
||||
unsigned long previousMillisRampa = millis();
|
||||
|
||||
while (true) {
|
||||
if (!Conectado) {
|
||||
vTaskDelay(1000);
|
||||
continue;
|
||||
}
|
||||
|
||||
AferirPosicao();
|
||||
DefinirSentidoDeGiro();
|
||||
VerificarAnguloSP();
|
||||
Atualizar();
|
||||
|
||||
vTaskDelay(1);
|
||||
}
|
||||
}
|
||||
|
||||
void AferirPosicao() {
|
||||
if (_pinoEncoder.Definido()) {
|
||||
int leitura = _pinoEncoder.get();
|
||||
float leituraNormalizada = encoderKalman->updateEstimate(leitura);
|
||||
double _angulo = fmap(leituraNormalizada, _AgMin, _AgMax, RefMin, RefMax);
|
||||
|
||||
double angulo_com_offset = _angulo - _Angulo_Offset;
|
||||
|
||||
// Normaliza o ângulo para o intervalo de -90 a 90 graus
|
||||
while (angulo_com_offset > RefMax) angulo_com_offset -= 180;
|
||||
while (angulo_com_offset < RefMin) angulo_com_offset += 180;
|
||||
|
||||
_Angulo = angulo_com_offset;
|
||||
}
|
||||
}
|
||||
|
||||
void DefinirSentidoDeGiro() {
|
||||
_anguloAtual = _Angulo;
|
||||
|
||||
// Calcular a taxa de mudança do ângulo
|
||||
_taxaMudancaAngulo = (_anguloAtual - _anguloAnterior) / (1.0 / 1000.0); // Supondo que a leitura é feita a cada 1 ms
|
||||
|
||||
if (_MotorLigado) {
|
||||
if (_taxaMudancaAngulo > 0) {
|
||||
_Sentido = Horario;
|
||||
} else if (_taxaMudancaAngulo < 0) {
|
||||
_Sentido = Antihorario;
|
||||
} else {
|
||||
_Sentido = Parado;
|
||||
}
|
||||
} else {
|
||||
_Sentido = Parado;
|
||||
}
|
||||
|
||||
_anguloAnterior = _anguloAtual;
|
||||
}
|
||||
|
||||
unsigned long previousMillisCorrecao = millis();
|
||||
void VerificarAnguloSP() {
|
||||
bool ModoSP = (_Angulo_SP > -1);
|
||||
if (_MotorLigado) {
|
||||
double AnguloComparar = ModoSP ? _Angulo_SP : RefMax;
|
||||
if (_Sentido_SP == Horario && _Angulo >= AnguloComparar) {
|
||||
_MotorLigado = false;
|
||||
}
|
||||
else if (_Sentido_SP == Antihorario && _Angulo <= (AnguloComparar * -1)) {
|
||||
_MotorLigado = false;
|
||||
}
|
||||
}
|
||||
else if (ModoSP) {
|
||||
if (millis() - previousMillisCorrecao >= _TaxaAmostragem) {
|
||||
previousMillisCorrecao = millis();
|
||||
|
||||
bool NoRangeZero = (_Angulo >= -_Margem && _Angulo <= _Margem);
|
||||
bool NoRangeSP = (_Angulo >= (_Angulo_SP - _Margem) && _Angulo <= (_Angulo_SP + _Margem));
|
||||
if (_Angulo_SP == 0 && !NoRangeZero && _Estabilizar) {
|
||||
_Sentido_SP = _Angulo > 0 ? Antihorario : Horario;
|
||||
_MotorLigado = true;
|
||||
}
|
||||
else if (!NoRangeSP) {
|
||||
_MotorLigado = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Atualizar() {
|
||||
_pinoENA.set(!_MotorLigado);
|
||||
_pinoDIR.set(_Sentido_SP != Antihorario);
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
|
||||
MotorBLDC MotorMOV;
|
||||
MotorPasso MotorDIR;
|
||||
|
||||
void setup() {
|
||||
pinMode(_pinoAddr0, INPUT);
|
||||
|
|
@ -321,81 +502,140 @@ void setup() {
|
|||
|
||||
AtualizarEnderecoModulo();
|
||||
|
||||
Serial.begin(_baudRate);
|
||||
Serial.begin(_baudRate, SERIAL_8N1, 1, 3);
|
||||
|
||||
delay(10);
|
||||
|
||||
InicializarModbus();
|
||||
}
|
||||
|
||||
void loop() {
|
||||
std::vector<ProtocoloSerial> protocolos = LerBufferSerialFila();
|
||||
std::vector<ProtocoloSerial> protocolos = LerBufferSerialFila(Mod_ID);
|
||||
|
||||
for (int i = 0; i < protocolos.size(); i++) {
|
||||
ProcessarProtocolo(protocolos[i].protocolo, protocolos[i].funcao, protocolos[i].idMensagem);
|
||||
ProcessarProtocolo(protocolos[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void ProcessarProtocolo(String Protocolo, F_Code _funcao, int idMensagem) {
|
||||
|
||||
if (_funcao == Chk) {
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloVerificacao(D_Code, VERSION));
|
||||
void ProcessarProtocolo(ProtocoloSerial Mensagem) {
|
||||
switch (Mensagem.funcao) {
|
||||
case Chk:
|
||||
ProcessarChk(Mensagem);
|
||||
break;
|
||||
case Cfg:
|
||||
ProcessarCfg(Mensagem);
|
||||
break;
|
||||
case Cmd:
|
||||
ProcessarCmd(Mensagem);
|
||||
break;
|
||||
case Req:
|
||||
ProcessarReq(Mensagem);
|
||||
break;
|
||||
}
|
||||
/*else if (_funcao == Cfg) {
|
||||
std::vector<String> Partes = SplitString(Protocolo, (char*)",");
|
||||
|
||||
String ID = Partes[0];
|
||||
bool Conectar = Partes[1] == "1";
|
||||
if (ID == "MD") {
|
||||
_TaxaAmostragem = Partes[2].toInt();
|
||||
|
||||
EnviarDadosSerial(MontarProtocoloSensor(sCFG, "MD", Conectar ? "1" : "0"));
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloMensagemRecebida(Mensagem.idMensagem));
|
||||
}
|
||||
|
||||
vTaskDelay(pdMS_TO_TICKS(100));
|
||||
void ProcessarChk(ProtocoloSerial Mensagem) {
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloVerificacao(D_Code, VERSION));
|
||||
}
|
||||
|
||||
Conectado = Conectar;
|
||||
void ProcessarCfg(ProtocoloSerial Mensagem) {
|
||||
std::vector<String> Partes = SplitString(Mensagem.protocolo, SplitParams);
|
||||
|
||||
String ID = Partes[0];
|
||||
bool Conectar = Partes[1] == "1";
|
||||
|
||||
if (ID == Mod_ID) {
|
||||
_TaxaAmostragem = Partes[2].toInt();
|
||||
TiposBarramentos txB = (TiposBarramentos)Partes[3].toInt();
|
||||
int txP = Partes[4].toInt();
|
||||
TiposBarramentos rxB = (TiposBarramentos)Partes[5].toInt();
|
||||
int rxP = Partes[6].toInt();
|
||||
TiposBarramentos MtxB = (TiposBarramentos)Partes[7].toInt();
|
||||
int MtxP = Partes[8].toInt();
|
||||
TiposBarramentos MrxB = (TiposBarramentos)Partes[9].toInt();
|
||||
int MrxP = Partes[10].toInt();
|
||||
TiposBarramentos MmdB = (TiposBarramentos)Partes[11].toInt();
|
||||
int MmdP = Partes[12].toInt();
|
||||
_pinModbusMD = MmdP;
|
||||
_pinModbusRX = MrxP;
|
||||
_pinModbusTX = MtxP;
|
||||
|
||||
InicializarModbus(Conectar, _pinModbusRX, _pinModbusTX, _pinModbusMD);
|
||||
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloSensor(sCFG, Mod_ID, Conectar ? "1" : "0"));
|
||||
|
||||
vTaskDelay(100);
|
||||
|
||||
Conectado = Conectar;
|
||||
}
|
||||
else if (ID == MotorMOV._ID) {
|
||||
if (Conectar) {
|
||||
MotorMOV._endereco = stringToByte(Partes[2]);
|
||||
MotorMOV._numPolos = Partes[3].toInt();
|
||||
MotorMOV._rampa = Partes[4].toInt();
|
||||
MotorMOV._rpmMax = Partes[5].toInt();
|
||||
MotorMOV._pinoTMP = PinoModel(Partes[7].toInt(), (TiposBarramentos)Partes[6].toInt(), _INPUT, ANALOGICO);
|
||||
|
||||
MotorMOV.Inicializar();
|
||||
}
|
||||
else {
|
||||
int canal = Partes[2].toInt();
|
||||
String addr = Partes[3];
|
||||
int num_polos = Partes[4].toInt();
|
||||
int rampa = Partes[5].toInt();
|
||||
int rpm_max = Partes[6].toInt();
|
||||
TiposBarramentos tmpB = (TiposBarramentos)Partes[7].toInt();
|
||||
int tmp = Partes[8].toInt();
|
||||
|
||||
MotorBLDC* _motor = MotorPorID(ID);
|
||||
if (Conectar) {
|
||||
_motor->_canal = canal;
|
||||
_motor->_endereco = stringToByte(addr);
|
||||
_motor->_numPolos = num_polos;
|
||||
_motor->_rampa = rampa;
|
||||
_motor->_rpmMax = rpm_max;
|
||||
_motor->_pinoTMP = PinoModel(tmp, tmpB, _INPUT, ANALOGICO);
|
||||
|
||||
_motor->Inicializar();
|
||||
}
|
||||
else {
|
||||
_motor->Desligar();
|
||||
}
|
||||
vTaskDelay(pdMS_TO_TICKS(500));
|
||||
MotorMOV.Desligar();
|
||||
}
|
||||
|
||||
vTaskDelay(500);
|
||||
}
|
||||
else if (_funcao == Cmd) {
|
||||
std::vector<String> Partes = SplitString(Protocolo, (char*)",");
|
||||
else if (ID == MotorDIR._ID) {
|
||||
if (Conectar) {
|
||||
MotorDIR._Estabilizar = Partes[2] == "1";
|
||||
MotorDIR._Angulo_Offset = Partes[3].toInt();
|
||||
MotorDIR._pinoPUL = PinoModel(Partes[5].toInt(), (TiposBarramentos)Partes[4].toInt(), _PWM);
|
||||
MotorDIR._pinoDIR = PinoModel(Partes[7].toInt(), (TiposBarramentos)Partes[6].toInt(), _OUTPUT);
|
||||
MotorDIR._pinoENA = PinoModel(Partes[9].toInt(), (TiposBarramentos)Partes[8].toInt(), _OUTPUT);
|
||||
MotorDIR._pinoEncoder = PinoModel(Partes[11].toInt(), (TiposBarramentos)Partes[10].toInt(), _INPUT, ANALOGICO);
|
||||
|
||||
String ID = Partes[0];
|
||||
|
||||
MotorBLDC* _motor = MotorPorID(ID);
|
||||
|
||||
_motor->_SentidoSP = (Sentido)Partes[1].toInt();
|
||||
_motor->_Ligado = _motor->_SentidoSP != Parado;
|
||||
_motor->_RPM_SP = Partes[2].toInt();
|
||||
_motor->_Freio = Partes[3] == "1";
|
||||
|
||||
_motor->AtualizarDadosControle();
|
||||
}*/
|
||||
|
||||
EnviarDadosSerial(Mod_ID, MontarProtocoloMensagemRecebida(idMensagem));
|
||||
MotorDIR.Inicializar();
|
||||
}
|
||||
else {
|
||||
MotorDIR.Desligar();
|
||||
}
|
||||
|
||||
vTaskDelay(500);
|
||||
}
|
||||
}
|
||||
|
||||
void ProcessarCmd(ProtocoloSerial Mensagem) {
|
||||
std::vector<String> Partes = SplitString(Mensagem.protocolo, SplitParams);
|
||||
|
||||
String ID = Partes[0];
|
||||
|
||||
if (ID == MotorMOV._ID) {
|
||||
MotorMOV._SentidoSP = (Sentido)Partes[1].toInt();
|
||||
MotorMOV._Ligado = MotorMOV._SentidoSP != Parado;
|
||||
MotorMOV._RPM_SP = Partes[2].toInt();
|
||||
MotorMOV._Freio = Partes[3] == "1";
|
||||
|
||||
MotorMOV.AtualizarDadosControle();
|
||||
}
|
||||
else if (ID == MotorDIR._ID) {
|
||||
MotorDIR._Sentido_SP = (Sentido)Partes[1].toInt();
|
||||
MotorDIR._Angulo_SP = Partes[2].toInt();
|
||||
MotorDIR._frequencia = (Partes[3].toInt() / 100.0) * MotorDIR.FrequenciaMaxima;
|
||||
|
||||
MotorDIR.AtualizarPWM();
|
||||
|
||||
MotorDIR._MotorLigado = MotorDIR._Sentido_SP != Parado;
|
||||
}
|
||||
}
|
||||
|
||||
void ProcessarReq(ProtocoloSerial Mensagem) {
|
||||
std::vector<String> Partes = SplitString(Mensagem.protocolo, SplitParams);
|
||||
|
||||
String ID = Partes[0];
|
||||
|
||||
if (ID == MotorMOV._ID) {
|
||||
MotorMOV.RequisitarDados();
|
||||
}
|
||||
else if (ID == MotorDIR._ID) {
|
||||
MotorDIR.RequisitarDados();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue