ligado tela Operacao Movimento e Pulverizador
This commit is contained in:
parent
f74e93f978
commit
6337847fce
|
|
@ -384,6 +384,9 @@
|
||||||
<Compile Include="Forms\frmPinout.Designer.cs">
|
<Compile Include="Forms\frmPinout.Designer.cs">
|
||||||
<DependentUpon>frmPinout.cs</DependentUpon>
|
<DependentUpon>frmPinout.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Controls\HmiAgitatorModeSelector.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Forms\IHM\Controls\HmiAttitudeIndicator.cs">
|
<Compile Include="Forms\IHM\Controls\HmiAttitudeIndicator.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
@ -396,6 +399,12 @@
|
||||||
<Compile Include="Forms\IHM\Controls\HmiCameraSelector.cs">
|
<Compile Include="Forms\IHM\Controls\HmiCameraSelector.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Controls\HmiCompactCheckRow.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Controls\HmiCompactNumericField.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Forms\IHM\Controls\HmiCompassControl.cs">
|
<Compile Include="Forms\IHM\Controls\HmiCompassControl.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
@ -408,6 +417,9 @@
|
||||||
<Compile Include="Forms\IHM\Controls\HmiMetricTile.cs">
|
<Compile Include="Forms\IHM\Controls\HmiMetricTile.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Controls\HmiModeSelector.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Forms\IHM\Controls\HmiModuleBadge.cs">
|
<Compile Include="Forms\IHM\Controls\HmiModuleBadge.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
@ -432,9 +444,15 @@
|
||||||
<Compile Include="Forms\IHM\Controls\HmiNumericField.cs">
|
<Compile Include="Forms\IHM\Controls\HmiNumericField.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Controls\HmiNumericParameterCard.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Forms\IHM\Controls\HmiOperationTabButton.cs">
|
<Compile Include="Forms\IHM\Controls\HmiOperationTabButton.cs">
|
||||||
<SubType>Component</SubType>
|
<SubType>Component</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Controls\HmiParameterSliderRow.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Forms\IHM\Controls\HmiParameterToggleRow.cs">
|
<Compile Include="Forms\IHM\Controls\HmiParameterToggleRow.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
@ -501,6 +519,30 @@
|
||||||
<Compile Include="Forms\IHM\Operacao\HmiCompactMetricCard.Designer.cs">
|
<Compile Include="Forms\IHM\Operacao\HmiCompactMetricCard.Designer.cs">
|
||||||
<DependentUpon>HmiCompactMetricCard.cs</DependentUpon>
|
<DependentUpon>HmiCompactMetricCard.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosAtuador.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosAtuador.Designer.cs">
|
||||||
|
<DependentUpon>ucParametrosAtuador.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosDirecional.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosDirecional.Designer.cs">
|
||||||
|
<DependentUpon>ucParametrosDirecional.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosMapa.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosMapa.Designer.cs">
|
||||||
|
<DependentUpon>ucParametrosMapa.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosMovimento.cs">
|
||||||
|
<SubType>UserControl</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Forms\IHM\Operacao\Parametros\ucParametrosMovimento.Designer.cs">
|
||||||
|
<DependentUpon>ucParametrosMovimento.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Forms\IHM\Operacao\ucOperacaoMovimentacao.cs">
|
<Compile Include="Forms\IHM\Operacao\ucOperacaoMovimentacao.cs">
|
||||||
<SubType>UserControl</SubType>
|
<SubType>UserControl</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,131 @@
|
||||||
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros.Controls
|
||||||
|
{
|
||||||
|
[DefaultEvent("SelectedModeChanged")]
|
||||||
|
public class HmiAgitatorModeSelector : UserControl
|
||||||
|
{
|
||||||
|
private readonly Button _btnSemAgitacao;
|
||||||
|
private readonly Button _btnContinuo;
|
||||||
|
private readonly Button _btnIntermitente;
|
||||||
|
|
||||||
|
private string _selectedMode = "Continuo";
|
||||||
|
|
||||||
|
public event EventHandler SelectedModeChanged;
|
||||||
|
|
||||||
|
public HmiAgitatorModeSelector()
|
||||||
|
{
|
||||||
|
DoubleBuffered = true;
|
||||||
|
BackColor = Color.Transparent;
|
||||||
|
Margin = Padding.Empty;
|
||||||
|
Padding = Padding.Empty;
|
||||||
|
MinimumSize = new Size(260, 44);
|
||||||
|
|
||||||
|
TableLayoutPanel layout = new TableLayoutPanel
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ColumnCount = 3,
|
||||||
|
RowCount = 1,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
layout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33F));
|
||||||
|
layout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33F));
|
||||||
|
layout.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.34F));
|
||||||
|
layout.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
_btnSemAgitacao = CriarBotao("Sem agitação");
|
||||||
|
_btnContinuo = CriarBotao("Contínuo");
|
||||||
|
_btnIntermitente = CriarBotao("Intermitente");
|
||||||
|
|
||||||
|
layout.Controls.Add(_btnSemAgitacao, 0, 0);
|
||||||
|
layout.Controls.Add(_btnContinuo, 1, 0);
|
||||||
|
layout.Controls.Add(_btnIntermitente, 2, 0);
|
||||||
|
|
||||||
|
Controls.Add(layout);
|
||||||
|
|
||||||
|
_btnSemAgitacao.Click += delegate { SelectedMode = "SemAgitacao"; };
|
||||||
|
_btnContinuo.Click += delegate { SelectedMode = "Continuo"; };
|
||||||
|
_btnIntermitente.Click += delegate { SelectedMode = "Intermitente"; };
|
||||||
|
|
||||||
|
AtualizarAparencia();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Button CriarBotao(string texto)
|
||||||
|
{
|
||||||
|
Button button = new Button
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = HmiTheme.SurfaceRaised,
|
||||||
|
ForeColor = HmiTheme.TextMuted,
|
||||||
|
FlatStyle = FlatStyle.Flat,
|
||||||
|
Font = new Font("Segoe UI", 7.6F, FontStyle.Bold),
|
||||||
|
Text = texto,
|
||||||
|
TextAlign = ContentAlignment.MiddleCenter,
|
||||||
|
Cursor = Cursors.Hand,
|
||||||
|
Margin = new Padding(2),
|
||||||
|
UseVisualStyleBackColor = false
|
||||||
|
};
|
||||||
|
|
||||||
|
button.FlatAppearance.BorderSize = 1;
|
||||||
|
button.FlatAppearance.BorderColor = HmiTheme.Border;
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarAparencia()
|
||||||
|
{
|
||||||
|
AplicarEstado(_btnSemAgitacao, _selectedMode == "SemAgitacao");
|
||||||
|
AplicarEstado(_btnContinuo, _selectedMode == "Continuo");
|
||||||
|
AplicarEstado(_btnIntermitente, _selectedMode == "Intermitente");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AplicarEstado(Button button, bool selecionado)
|
||||||
|
{
|
||||||
|
if (selecionado)
|
||||||
|
{
|
||||||
|
button.BackColor = Color.FromArgb(31, 91, 43);
|
||||||
|
button.ForeColor = HmiTheme.Success;
|
||||||
|
button.FlatAppearance.BorderColor = HmiTheme.Success;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
button.BackColor = HmiTheme.SurfaceRaised;
|
||||||
|
button.ForeColor = HmiTheme.TextMuted;
|
||||||
|
button.FlatAppearance.BorderColor = HmiTheme.Border;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
[DefaultValue("Continuo")]
|
||||||
|
public string SelectedMode
|
||||||
|
{
|
||||||
|
get { return _selectedMode; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
string novo;
|
||||||
|
|
||||||
|
if (string.Equals(value, "SemAgitacao", StringComparison.OrdinalIgnoreCase))
|
||||||
|
novo = "SemAgitacao";
|
||||||
|
else if (string.Equals(value, "Intermitente", StringComparison.OrdinalIgnoreCase))
|
||||||
|
novo = "Intermitente";
|
||||||
|
else
|
||||||
|
novo = "Continuo";
|
||||||
|
|
||||||
|
if (_selectedMode == novo)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_selectedMode = novo;
|
||||||
|
AtualizarAparencia();
|
||||||
|
|
||||||
|
if (SelectedModeChanged != null)
|
||||||
|
SelectedModeChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,201 @@
|
||||||
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros.Controls
|
||||||
|
{
|
||||||
|
[DefaultEvent("CheckedChanged")]
|
||||||
|
public class HmiCompactCheckRow : UserControl
|
||||||
|
{
|
||||||
|
private readonly TableLayoutPanel _layout;
|
||||||
|
private readonly Label _lblTitulo;
|
||||||
|
private readonly CheckBox _check;
|
||||||
|
|
||||||
|
public event EventHandler CheckedChanged;
|
||||||
|
|
||||||
|
public HmiCompactCheckRow()
|
||||||
|
{
|
||||||
|
SetStyle(
|
||||||
|
ControlStyles.AllPaintingInWmPaint |
|
||||||
|
ControlStyles.OptimizedDoubleBuffer |
|
||||||
|
ControlStyles.ResizeRedraw |
|
||||||
|
ControlStyles.UserPaint,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
DoubleBuffered = true;
|
||||||
|
BackColor = HmiTheme.SurfaceRaised;
|
||||||
|
Cursor = Cursors.Hand;
|
||||||
|
Height = 54;
|
||||||
|
MinimumSize = new Size(150, 44);
|
||||||
|
Margin = new Padding(3);
|
||||||
|
Padding = new Padding(9, 5, 7, 5);
|
||||||
|
|
||||||
|
_layout = new TableLayoutPanel
|
||||||
|
{
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ColumnCount = 2,
|
||||||
|
RowCount = 1,
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_layout.ColumnStyles.Add(
|
||||||
|
new ColumnStyle(SizeType.Percent, 100F)
|
||||||
|
);
|
||||||
|
|
||||||
|
_layout.ColumnStyles.Add(
|
||||||
|
new ColumnStyle(SizeType.Absolute, 42F)
|
||||||
|
);
|
||||||
|
|
||||||
|
_layout.RowStyles.Add(
|
||||||
|
new RowStyle(SizeType.Percent, 100F)
|
||||||
|
);
|
||||||
|
|
||||||
|
_lblTitulo = new Label
|
||||||
|
{
|
||||||
|
AutoEllipsis = true,
|
||||||
|
AutoSize = false,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
Cursor = Cursors.Hand,
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
Font = new Font(
|
||||||
|
"Segoe UI",
|
||||||
|
8F,
|
||||||
|
FontStyle.Bold
|
||||||
|
),
|
||||||
|
ForeColor = HmiTheme.Text,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = new Padding(2, 0, 4, 0),
|
||||||
|
Text = "Parâmetro",
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft
|
||||||
|
};
|
||||||
|
|
||||||
|
_check = CriarCheck();
|
||||||
|
|
||||||
|
_layout.Controls.Add(_lblTitulo, 0, 0);
|
||||||
|
_layout.Controls.Add(_check, 1, 0);
|
||||||
|
|
||||||
|
Controls.Add(_layout);
|
||||||
|
|
||||||
|
_check.CheckedChanged += Check_CheckedChanged;
|
||||||
|
|
||||||
|
_lblTitulo.Click += AlternarPorClique;
|
||||||
|
_layout.Click += AlternarPorClique;
|
||||||
|
Click += AlternarPorClique;
|
||||||
|
|
||||||
|
AtualizarAparencia();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static CheckBox CriarCheck()
|
||||||
|
{
|
||||||
|
CheckBox check = new CheckBox
|
||||||
|
{
|
||||||
|
Anchor = AnchorStyles.None,
|
||||||
|
Appearance = Appearance.Button,
|
||||||
|
AutoSize = false,
|
||||||
|
BackColor = Color.FromArgb(30, 90, 46),
|
||||||
|
Checked = true,
|
||||||
|
Cursor = Cursors.Hand,
|
||||||
|
Dock = DockStyle.None,
|
||||||
|
FlatStyle = FlatStyle.Flat,
|
||||||
|
Font = new Font(
|
||||||
|
"Segoe UI Symbol",
|
||||||
|
9F,
|
||||||
|
FontStyle.Bold
|
||||||
|
),
|
||||||
|
ForeColor = HmiTheme.Success,
|
||||||
|
Height = 30,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty,
|
||||||
|
Text = "✓",
|
||||||
|
TextAlign = ContentAlignment.MiddleCenter,
|
||||||
|
UseVisualStyleBackColor = false,
|
||||||
|
Width = 34
|
||||||
|
};
|
||||||
|
|
||||||
|
check.FlatAppearance.BorderSize = 1;
|
||||||
|
check.FlatAppearance.BorderColor = HmiTheme.Success;
|
||||||
|
check.FlatAppearance.CheckedBackColor =
|
||||||
|
Color.FromArgb(30, 90, 46);
|
||||||
|
|
||||||
|
check.FlatAppearance.MouseDownBackColor =
|
||||||
|
Color.FromArgb(37, 108, 55);
|
||||||
|
|
||||||
|
check.FlatAppearance.MouseOverBackColor =
|
||||||
|
Color.FromArgb(34, 100, 51);
|
||||||
|
|
||||||
|
return check;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AlternarPorClique(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
_check.Checked = !_check.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Check_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AtualizarAparencia();
|
||||||
|
|
||||||
|
if (CheckedChanged != null)
|
||||||
|
CheckedChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarAparencia()
|
||||||
|
{
|
||||||
|
if (_check.Checked)
|
||||||
|
{
|
||||||
|
_check.Text = "✓";
|
||||||
|
_check.ForeColor = HmiTheme.Success;
|
||||||
|
_check.BackColor = Color.FromArgb(30, 90, 46);
|
||||||
|
_check.FlatAppearance.BorderColor = HmiTheme.Success;
|
||||||
|
|
||||||
|
_lblTitulo.ForeColor = HmiTheme.Text;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_check.Text = "×";
|
||||||
|
_check.ForeColor = HmiTheme.Danger;
|
||||||
|
_check.BackColor = HmiTheme.Surface;
|
||||||
|
_check.FlatAppearance.BorderColor = HmiTheme.Danger;
|
||||||
|
|
||||||
|
_lblTitulo.ForeColor = HmiTheme.TextMuted;
|
||||||
|
}
|
||||||
|
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Conteúdo")]
|
||||||
|
public string Titulo
|
||||||
|
{
|
||||||
|
get { return _lblTitulo.Text; }
|
||||||
|
set { _lblTitulo.Text = value ?? string.Empty; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
[DefaultValue(true)]
|
||||||
|
public bool Checked
|
||||||
|
{
|
||||||
|
get { return _check.Checked; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_check.Checked == value)
|
||||||
|
{
|
||||||
|
AtualizarAparencia();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_check.Checked = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Browsable(false)]
|
||||||
|
public CheckBox CheckBox
|
||||||
|
{
|
||||||
|
get { return _check; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,381 @@
|
||||||
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Globalization;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros.Controls
|
||||||
|
{
|
||||||
|
[DefaultEvent("ValueChanged")]
|
||||||
|
public class HmiCompactNumericField : UserControl
|
||||||
|
{
|
||||||
|
private readonly TableLayoutPanel _root;
|
||||||
|
private readonly Label _lblTitulo;
|
||||||
|
private readonly TableLayoutPanel _valueLayout;
|
||||||
|
private readonly Button _btnDiminuir;
|
||||||
|
private readonly TextBox _txtValor;
|
||||||
|
private readonly Button _btnAumentar;
|
||||||
|
private readonly Label _lblUnidade;
|
||||||
|
|
||||||
|
private decimal _value;
|
||||||
|
private decimal _minimum;
|
||||||
|
private decimal _maximum = 100M;
|
||||||
|
private decimal _increment = 1M;
|
||||||
|
private int _decimalPlaces;
|
||||||
|
|
||||||
|
public event EventHandler ValueChanged;
|
||||||
|
|
||||||
|
public HmiCompactNumericField()
|
||||||
|
{
|
||||||
|
SetStyle(
|
||||||
|
ControlStyles.AllPaintingInWmPaint |
|
||||||
|
ControlStyles.OptimizedDoubleBuffer |
|
||||||
|
ControlStyles.ResizeRedraw |
|
||||||
|
ControlStyles.UserPaint,
|
||||||
|
true);
|
||||||
|
|
||||||
|
DoubleBuffered = true;
|
||||||
|
BackColor = HmiTheme.SurfaceRaised;
|
||||||
|
Margin = new Padding(3);
|
||||||
|
Padding = new Padding(7, 5, 7, 5);
|
||||||
|
MinimumSize = new Size(105, 62);
|
||||||
|
|
||||||
|
_root = new TableLayoutPanel
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ColumnCount = 1,
|
||||||
|
RowCount = 2,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_root.ColumnStyles.Add(
|
||||||
|
new ColumnStyle(SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
_root.RowStyles.Add(
|
||||||
|
new RowStyle(SizeType.Absolute, 22F));
|
||||||
|
|
||||||
|
_root.RowStyles.Add(
|
||||||
|
new RowStyle(SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
_lblTitulo = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
AutoSize = false,
|
||||||
|
AutoEllipsis = true,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.TextMuted,
|
||||||
|
Font = new Font("Segoe UI", 6.8F, FontStyle.Bold),
|
||||||
|
Text = "Parâmetro",
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_valueLayout = new TableLayoutPanel
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ColumnCount = 4,
|
||||||
|
RowCount = 1,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_valueLayout.ColumnStyles.Add(
|
||||||
|
new ColumnStyle(SizeType.Absolute, 34F));
|
||||||
|
|
||||||
|
_valueLayout.ColumnStyles.Add(
|
||||||
|
new ColumnStyle(SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
_valueLayout.ColumnStyles.Add(
|
||||||
|
new ColumnStyle(SizeType.Absolute, 34F));
|
||||||
|
|
||||||
|
_valueLayout.ColumnStyles.Add(
|
||||||
|
new ColumnStyle(SizeType.Absolute, 34F));
|
||||||
|
|
||||||
|
_valueLayout.RowStyles.Add(
|
||||||
|
new RowStyle(SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
_btnDiminuir = CriarBotaoValor("−");
|
||||||
|
_btnAumentar = CriarBotaoValor("+");
|
||||||
|
|
||||||
|
_txtValor = new TextBox
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = HmiTheme.Surface,
|
||||||
|
ForeColor = HmiTheme.Text,
|
||||||
|
BorderStyle = BorderStyle.FixedSingle,
|
||||||
|
Font = new Font("Segoe UI", 9F, FontStyle.Bold),
|
||||||
|
TextAlign = HorizontalAlignment.Center,
|
||||||
|
ReadOnly = true,
|
||||||
|
ShortcutsEnabled = false,
|
||||||
|
TabStop = false,
|
||||||
|
Margin = new Padding(3, 1, 3, 1)
|
||||||
|
};
|
||||||
|
|
||||||
|
_lblUnidade = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
AutoSize = false,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.TextMuted,
|
||||||
|
Font = new Font("Segoe UI", 7F, FontStyle.Bold),
|
||||||
|
Text = "%",
|
||||||
|
TextAlign = ContentAlignment.MiddleCenter,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_valueLayout.Controls.Add(_btnDiminuir, 0, 0);
|
||||||
|
_valueLayout.Controls.Add(_txtValor, 1, 0);
|
||||||
|
_valueLayout.Controls.Add(_btnAumentar, 2, 0);
|
||||||
|
_valueLayout.Controls.Add(_lblUnidade, 3, 0);
|
||||||
|
|
||||||
|
_root.Controls.Add(_lblTitulo, 0, 0);
|
||||||
|
_root.Controls.Add(_valueLayout, 0, 1);
|
||||||
|
|
||||||
|
Controls.Add(_root);
|
||||||
|
|
||||||
|
_btnDiminuir.Click += delegate
|
||||||
|
{
|
||||||
|
Value -= Increment;
|
||||||
|
};
|
||||||
|
|
||||||
|
_btnAumentar.Click += delegate
|
||||||
|
{
|
||||||
|
Value += Increment;
|
||||||
|
};
|
||||||
|
|
||||||
|
AtualizarTexto();
|
||||||
|
AtualizarBotoes();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Button CriarBotaoValor(string texto)
|
||||||
|
{
|
||||||
|
Button button = new Button
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = HmiTheme.Surface,
|
||||||
|
ForeColor = HmiTheme.Info,
|
||||||
|
FlatStyle = FlatStyle.Flat,
|
||||||
|
Font = new Font("Segoe UI", 12F, FontStyle.Bold),
|
||||||
|
Text = texto,
|
||||||
|
TextAlign = ContentAlignment.MiddleCenter,
|
||||||
|
Cursor = Cursors.Hand,
|
||||||
|
Margin = new Padding(1),
|
||||||
|
Padding = Padding.Empty,
|
||||||
|
TabStop = false,
|
||||||
|
UseVisualStyleBackColor = false
|
||||||
|
};
|
||||||
|
|
||||||
|
button.FlatAppearance.BorderSize = 1;
|
||||||
|
button.FlatAppearance.BorderColor = HmiTheme.Border;
|
||||||
|
button.FlatAppearance.MouseOverBackColor =
|
||||||
|
Color.FromArgb(35, 52, 61);
|
||||||
|
|
||||||
|
button.FlatAppearance.MouseDownBackColor =
|
||||||
|
Color.FromArgb(42, 67, 78);
|
||||||
|
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void DefinirValor(decimal value)
|
||||||
|
{
|
||||||
|
decimal novo = Math.Max(
|
||||||
|
Minimum,
|
||||||
|
Math.Min(Maximum, value));
|
||||||
|
|
||||||
|
novo = decimal.Round(
|
||||||
|
novo,
|
||||||
|
DecimalPlaces,
|
||||||
|
MidpointRounding.AwayFromZero);
|
||||||
|
|
||||||
|
if (_value == novo)
|
||||||
|
{
|
||||||
|
AtualizarTexto();
|
||||||
|
AtualizarBotoes();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
_value = novo;
|
||||||
|
|
||||||
|
AtualizarTexto();
|
||||||
|
AtualizarBotoes();
|
||||||
|
|
||||||
|
if (ValueChanged != null)
|
||||||
|
ValueChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarTexto()
|
||||||
|
{
|
||||||
|
string formato = DecimalPlaces > 0
|
||||||
|
? "F" + DecimalPlaces
|
||||||
|
: "F0";
|
||||||
|
|
||||||
|
_txtValor.Text = _value.ToString(
|
||||||
|
formato,
|
||||||
|
CultureInfo.CurrentCulture);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarBotoes()
|
||||||
|
{
|
||||||
|
bool podeDiminuir = _value > Minimum;
|
||||||
|
bool podeAumentar = _value < Maximum;
|
||||||
|
|
||||||
|
AplicarEstadoBotao(
|
||||||
|
_btnDiminuir,
|
||||||
|
podeDiminuir);
|
||||||
|
|
||||||
|
AplicarEstadoBotao(
|
||||||
|
_btnAumentar,
|
||||||
|
podeAumentar);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AplicarEstadoBotao(
|
||||||
|
Button button,
|
||||||
|
bool habilitado)
|
||||||
|
{
|
||||||
|
button.Enabled = habilitado;
|
||||||
|
|
||||||
|
if (habilitado)
|
||||||
|
{
|
||||||
|
button.ForeColor = HmiTheme.Info;
|
||||||
|
button.BackColor = HmiTheme.Surface;
|
||||||
|
button.FlatAppearance.BorderColor =
|
||||||
|
HmiTheme.Border;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
button.ForeColor = HmiTheme.TextMuted;
|
||||||
|
button.BackColor = HmiTheme.SurfaceRaised;
|
||||||
|
button.FlatAppearance.BorderColor =
|
||||||
|
HmiTheme.SurfaceRaised;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Conteúdo")]
|
||||||
|
public string Titulo
|
||||||
|
{
|
||||||
|
get { return _lblTitulo.Text; }
|
||||||
|
set { _lblTitulo.Text = value ?? string.Empty; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Conteúdo")]
|
||||||
|
public string Unidade
|
||||||
|
{
|
||||||
|
get { return _lblUnidade.Text; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_lblUnidade.Text = value ?? string.Empty;
|
||||||
|
AtualizarLarguraUnidade();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarLarguraUnidade()
|
||||||
|
{
|
||||||
|
int largura;
|
||||||
|
|
||||||
|
if (string.IsNullOrWhiteSpace(_lblUnidade.Text))
|
||||||
|
largura = 4;
|
||||||
|
else if (_lblUnidade.Text.Length <= 1)
|
||||||
|
largura = 25;
|
||||||
|
else
|
||||||
|
largura = 35;
|
||||||
|
|
||||||
|
_valueLayout.ColumnStyles[3].SizeType =
|
||||||
|
SizeType.Absolute;
|
||||||
|
|
||||||
|
_valueLayout.ColumnStyles[3].Width =
|
||||||
|
largura;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
[DefaultValue(typeof(decimal), "0")]
|
||||||
|
public decimal Value
|
||||||
|
{
|
||||||
|
get { return _value; }
|
||||||
|
set { DefinirValor(value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
[DefaultValue(typeof(decimal), "0")]
|
||||||
|
public decimal Minimum
|
||||||
|
{
|
||||||
|
get { return _minimum; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_minimum = value;
|
||||||
|
|
||||||
|
if (_maximum < _minimum)
|
||||||
|
_maximum = _minimum;
|
||||||
|
|
||||||
|
DefinirValor(_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
[DefaultValue(typeof(decimal), "100")]
|
||||||
|
public decimal Maximum
|
||||||
|
{
|
||||||
|
get { return _maximum; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_maximum = value;
|
||||||
|
|
||||||
|
if (_maximum < _minimum)
|
||||||
|
_minimum = _maximum;
|
||||||
|
|
||||||
|
DefinirValor(_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
[DefaultValue(typeof(decimal), "1")]
|
||||||
|
public decimal Increment
|
||||||
|
{
|
||||||
|
get { return _increment; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_increment = value > 0M
|
||||||
|
? value
|
||||||
|
: 1M;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
[DefaultValue(0)]
|
||||||
|
public int DecimalPlaces
|
||||||
|
{
|
||||||
|
get { return _decimalPlaces; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_decimalPlaces = Math.Max(
|
||||||
|
0,
|
||||||
|
Math.Min(4, value));
|
||||||
|
|
||||||
|
DefinirValor(_value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Browsable(false)]
|
||||||
|
public Button BotaoDiminuir
|
||||||
|
{
|
||||||
|
get { return _btnDiminuir; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Browsable(false)]
|
||||||
|
public Button BotaoAumentar
|
||||||
|
{
|
||||||
|
get { return _btnAumentar; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Browsable(false)]
|
||||||
|
public TextBox CampoValor
|
||||||
|
{
|
||||||
|
get { return _txtValor; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros.Controls
|
||||||
|
{
|
||||||
|
[DefaultEvent("SelectedModeChanged")]
|
||||||
|
public class HmiModeSelector : UserControl
|
||||||
|
{
|
||||||
|
private readonly Button _btnMpc;
|
||||||
|
private readonly Button _btnPid;
|
||||||
|
private string _selectedMode = "MPC";
|
||||||
|
|
||||||
|
public event EventHandler SelectedModeChanged;
|
||||||
|
|
||||||
|
public HmiModeSelector()
|
||||||
|
{
|
||||||
|
DoubleBuffered = true;
|
||||||
|
BackColor = HmiTheme.SurfaceRaised;
|
||||||
|
Padding = new Padding(8);
|
||||||
|
Margin = new Padding(3);
|
||||||
|
MinimumSize = new Size(180, 88);
|
||||||
|
|
||||||
|
TableLayoutPanel root = new TableLayoutPanel
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
ColumnCount = 2,
|
||||||
|
RowCount = 2,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
root.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
|
||||||
|
root.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F));
|
||||||
|
root.RowStyles.Add(new RowStyle(SizeType.Absolute, 26F));
|
||||||
|
root.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
Label title = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
AutoSize = false,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.Text,
|
||||||
|
Font = new Font("Segoe UI", 8.2F, FontStyle.Bold),
|
||||||
|
Text = "Modo de controle",
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
|
Margin = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_btnMpc = CriarBotao("MPC");
|
||||||
|
_btnPid = CriarBotao("PID");
|
||||||
|
|
||||||
|
root.Controls.Add(title, 0, 0);
|
||||||
|
root.SetColumnSpan(title, 2);
|
||||||
|
root.Controls.Add(_btnMpc, 0, 1);
|
||||||
|
root.Controls.Add(_btnPid, 1, 1);
|
||||||
|
|
||||||
|
Controls.Add(root);
|
||||||
|
|
||||||
|
_btnMpc.Click += delegate { SelectedMode = "MPC"; };
|
||||||
|
_btnPid.Click += delegate { SelectedMode = "PID"; };
|
||||||
|
|
||||||
|
AtualizarAparencia();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Button CriarBotao(string text)
|
||||||
|
{
|
||||||
|
Button button = new Button
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = HmiTheme.Surface,
|
||||||
|
ForeColor = HmiTheme.TextMuted,
|
||||||
|
FlatStyle = FlatStyle.Flat,
|
||||||
|
Font = new Font("Segoe UI", 9F, FontStyle.Bold),
|
||||||
|
Text = text,
|
||||||
|
TextAlign = ContentAlignment.MiddleCenter,
|
||||||
|
Cursor = Cursors.Hand,
|
||||||
|
Margin = new Padding(2),
|
||||||
|
UseVisualStyleBackColor = false
|
||||||
|
};
|
||||||
|
|
||||||
|
button.FlatAppearance.BorderSize = 1;
|
||||||
|
button.FlatAppearance.BorderColor = HmiTheme.Border;
|
||||||
|
|
||||||
|
return button;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarAparencia()
|
||||||
|
{
|
||||||
|
AplicarEstado(_btnMpc, _selectedMode == "MPC");
|
||||||
|
AplicarEstado(_btnPid, _selectedMode == "PID");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AplicarEstado(Button button, bool selected)
|
||||||
|
{
|
||||||
|
if (selected)
|
||||||
|
{
|
||||||
|
button.BackColor = Color.FromArgb(31, 91, 43);
|
||||||
|
button.ForeColor = HmiTheme.Success;
|
||||||
|
button.FlatAppearance.BorderColor = HmiTheme.Success;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
button.BackColor = HmiTheme.Surface;
|
||||||
|
button.ForeColor = HmiTheme.TextMuted;
|
||||||
|
button.FlatAppearance.BorderColor = HmiTheme.Border;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
[DefaultValue("MPC")]
|
||||||
|
public string SelectedMode
|
||||||
|
{
|
||||||
|
get { return _selectedMode; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
string novo = string.Equals(value, "PID", StringComparison.OrdinalIgnoreCase)
|
||||||
|
? "PID"
|
||||||
|
: "MPC";
|
||||||
|
|
||||||
|
if (_selectedMode == novo)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_selectedMode = novo;
|
||||||
|
AtualizarAparencia();
|
||||||
|
|
||||||
|
if (SelectedModeChanged != null)
|
||||||
|
SelectedModeChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,17 +3,10 @@ using System.ComponentModel;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Drawing2D;
|
using System.Drawing.Drawing2D;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
namespace AgroBase.Forms.IHM.Controls.Operacao
|
namespace AgroBase.Forms.IHM.Controls.Operacao
|
||||||
{
|
{
|
||||||
public enum HmiNozzleState
|
|
||||||
{
|
|
||||||
Desconectado = 0,
|
|
||||||
Conectado = 1,
|
|
||||||
Falha = 2,
|
|
||||||
Alerta = 3,
|
|
||||||
Operante = 4
|
|
||||||
}
|
|
||||||
|
|
||||||
[DefaultEvent("NozzleClick")]
|
[DefaultEvent("NozzleClick")]
|
||||||
public class HmiNozzleCard : UserControl
|
public class HmiNozzleCard : UserControl
|
||||||
|
|
@ -27,7 +20,7 @@ namespace AgroBase.Forms.IHM.Controls.Operacao
|
||||||
|
|
||||||
private bool _commandOn;
|
private bool _commandOn;
|
||||||
private bool _readOn;
|
private bool _readOn;
|
||||||
private HmiNozzleState _state = HmiNozzleState.Operante;
|
private StatusModulo _state = StatusModulo.Desconectado;
|
||||||
private bool _allowCommand = true;
|
private bool _allowCommand = true;
|
||||||
|
|
||||||
public event EventHandler NozzleClick;
|
public event EventHandler NozzleClick;
|
||||||
|
|
@ -178,23 +171,23 @@ namespace AgroBase.Forms.IHM.Controls.Operacao
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Color GetStateColor(HmiNozzleState state)
|
private static Color GetStateColor(StatusModulo state)
|
||||||
{
|
{
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case HmiNozzleState.Desconectado:
|
case StatusModulo.Desconectado:
|
||||||
return HmiTheme.TextMuted;
|
return HmiTheme.TextMuted;
|
||||||
|
|
||||||
case HmiNozzleState.Conectado:
|
case StatusModulo.Conectado:
|
||||||
return HmiTheme.Info;
|
return HmiTheme.Info;
|
||||||
|
|
||||||
case HmiNozzleState.Falha:
|
case StatusModulo.Falha:
|
||||||
return HmiTheme.Danger;
|
return HmiTheme.Danger;
|
||||||
|
|
||||||
case HmiNozzleState.Alerta:
|
case StatusModulo.Alerta:
|
||||||
return HmiTheme.Warning;
|
return HmiTheme.Warning;
|
||||||
|
|
||||||
case HmiNozzleState.Operante:
|
case StatusModulo.Operante:
|
||||||
default:
|
default:
|
||||||
return HmiTheme.Success;
|
return HmiTheme.Success;
|
||||||
}
|
}
|
||||||
|
|
@ -208,7 +201,7 @@ namespace AgroBase.Forms.IHM.Controls.Operacao
|
||||||
}
|
}
|
||||||
|
|
||||||
[Category("Estado")]
|
[Category("Estado")]
|
||||||
public HmiNozzleState State
|
public StatusModulo State
|
||||||
{
|
{
|
||||||
get { return _state; }
|
get { return _state; }
|
||||||
set
|
set
|
||||||
|
|
@ -292,8 +285,8 @@ namespace AgroBase.Forms.IHM.Controls.Operacao
|
||||||
[Category("Conteúdo")]
|
[Category("Conteúdo")]
|
||||||
public string TempoLigado
|
public string TempoLigado
|
||||||
{
|
{
|
||||||
get { return _lblTempo.Text.Replace("Tempo ", ""); }
|
get { return _lblTempo.Text; }
|
||||||
set { _lblTempo.Text = "Tempo " + (value ?? "00:00"); }
|
set { _lblTempo.Text = (value ?? "00:00"); }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,185 @@
|
||||||
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros.Controls
|
||||||
|
{
|
||||||
|
[DefaultEvent("ValueChanged")]
|
||||||
|
public class HmiNumericParameterCard : UserControl
|
||||||
|
{
|
||||||
|
private readonly Label _lblTitulo;
|
||||||
|
private readonly Label _lblDescricao;
|
||||||
|
private readonly NumericUpDown _numeric;
|
||||||
|
private readonly Label _lblUnidade;
|
||||||
|
private readonly ToolTip _toolTip;
|
||||||
|
|
||||||
|
public event EventHandler ValueChanged;
|
||||||
|
|
||||||
|
public HmiNumericParameterCard()
|
||||||
|
{
|
||||||
|
DoubleBuffered = true;
|
||||||
|
BackColor = HmiTheme.SurfaceRaised;
|
||||||
|
Margin = new Padding(3);
|
||||||
|
Padding = new Padding(10, 7, 10, 7);
|
||||||
|
MinimumSize = new Size(180, 88);
|
||||||
|
|
||||||
|
TableLayoutPanel root = new TableLayoutPanel
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ColumnCount = 2,
|
||||||
|
RowCount = 3,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
root.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100F));
|
||||||
|
root.ColumnStyles.Add(new ColumnStyle(SizeType.Absolute, 42F));
|
||||||
|
|
||||||
|
root.RowStyles.Add(new RowStyle(SizeType.Absolute, 28F));
|
||||||
|
root.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
_lblTitulo = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
AutoSize = false,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.Text,
|
||||||
|
Font = new Font("Segoe UI", 8.2F, FontStyle.Bold),
|
||||||
|
Text = "Parâmetro",
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
|
AutoEllipsis = true,
|
||||||
|
Margin = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_lblDescricao = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
AutoSize = false,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.TextMuted,
|
||||||
|
Font = new Font("Segoe UI", 6.5F),
|
||||||
|
Text = "Descrição",
|
||||||
|
TextAlign = ContentAlignment.TopLeft,
|
||||||
|
AutoEllipsis = true,
|
||||||
|
Margin = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_toolTip = new ToolTip();
|
||||||
|
|
||||||
|
_numeric = new NumericUpDown
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = HmiTheme.Surface,
|
||||||
|
ForeColor = HmiTheme.Text,
|
||||||
|
BorderStyle = BorderStyle.FixedSingle,
|
||||||
|
Font = new Font("Segoe UI", 9.5F, FontStyle.Bold),
|
||||||
|
TextAlign = HorizontalAlignment.Center,
|
||||||
|
Minimum = 0,
|
||||||
|
Maximum = 100,
|
||||||
|
DecimalPlaces = 1,
|
||||||
|
Increment = 0.5M,
|
||||||
|
Margin = new Padding(0, 3, 5, 3)
|
||||||
|
};
|
||||||
|
|
||||||
|
_lblUnidade = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
AutoSize = false,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.TextMuted,
|
||||||
|
Font = new Font("Segoe UI", 8F, FontStyle.Bold),
|
||||||
|
Text = "m",
|
||||||
|
TextAlign = ContentAlignment.MiddleCenter,
|
||||||
|
Margin = new Padding(0, 3, 0, 3)
|
||||||
|
};
|
||||||
|
|
||||||
|
root.Controls.Add(_lblTitulo, 0, 0);
|
||||||
|
root.SetColumnSpan(_lblTitulo, 2);
|
||||||
|
root.Controls.Add(_numeric, 0, 1);
|
||||||
|
root.Controls.Add(_lblUnidade, 1, 1);
|
||||||
|
|
||||||
|
Controls.Add(root);
|
||||||
|
|
||||||
|
_numeric.ValueChanged += delegate
|
||||||
|
{
|
||||||
|
if (ValueChanged != null)
|
||||||
|
ValueChanged(this, EventArgs.Empty);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Conteúdo")]
|
||||||
|
public string Titulo
|
||||||
|
{
|
||||||
|
get { return _lblTitulo.Text; }
|
||||||
|
set { _lblTitulo.Text = value ?? string.Empty; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Conteúdo")]
|
||||||
|
public string Descricao
|
||||||
|
{
|
||||||
|
get { return _lblDescricao.Text; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_lblDescricao.Text = value ?? string.Empty;
|
||||||
|
_toolTip.SetToolTip(this, _lblDescricao.Text);
|
||||||
|
_toolTip.SetToolTip(_lblTitulo, _lblDescricao.Text);
|
||||||
|
_toolTip.SetToolTip(_numeric, _lblDescricao.Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Conteúdo")]
|
||||||
|
public string Unidade
|
||||||
|
{
|
||||||
|
get { return _lblUnidade.Text; }
|
||||||
|
set { _lblUnidade.Text = value ?? string.Empty; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public decimal Value
|
||||||
|
{
|
||||||
|
get { return _numeric.Value; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
decimal novo = Math.Max(_numeric.Minimum, Math.Min(_numeric.Maximum, value));
|
||||||
|
_numeric.Value = novo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public decimal Minimum
|
||||||
|
{
|
||||||
|
get { return _numeric.Minimum; }
|
||||||
|
set { _numeric.Minimum = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public decimal Maximum
|
||||||
|
{
|
||||||
|
get { return _numeric.Maximum; }
|
||||||
|
set { _numeric.Maximum = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public decimal Increment
|
||||||
|
{
|
||||||
|
get { return _numeric.Increment; }
|
||||||
|
set { _numeric.Increment = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public int DecimalPlaces
|
||||||
|
{
|
||||||
|
get { return _numeric.DecimalPlaces; }
|
||||||
|
set { _numeric.DecimalPlaces = Math.Max(0, value); }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Browsable(false)]
|
||||||
|
public NumericUpDown Numeric
|
||||||
|
{
|
||||||
|
get { return _numeric; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,299 @@
|
||||||
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using AgroBase.Forms.IHM.Controls.Operacao;
|
||||||
|
using System;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros.Controls
|
||||||
|
{
|
||||||
|
public enum HmiSliderValueFormat
|
||||||
|
{
|
||||||
|
PercentAndSpeed = 0,
|
||||||
|
PercentOnly = 1,
|
||||||
|
Degrees = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
[DefaultEvent("ValueChanged")]
|
||||||
|
public class HmiParameterSliderRow : UserControl
|
||||||
|
{
|
||||||
|
private readonly Label _lblTitulo;
|
||||||
|
private readonly Label _lblValor;
|
||||||
|
private readonly Label _lblLimiteMin;
|
||||||
|
private readonly Label _lblLimiteMax;
|
||||||
|
private readonly HmiSlider _slider;
|
||||||
|
|
||||||
|
private double _velocidadeMaximaKmh = 1.0D;
|
||||||
|
private HmiSliderValueFormat _valueFormat = HmiSliderValueFormat.PercentAndSpeed;
|
||||||
|
|
||||||
|
private readonly TableLayoutPanel _root;
|
||||||
|
private bool _compactMode;
|
||||||
|
|
||||||
|
public event EventHandler ValueChanged;
|
||||||
|
|
||||||
|
public HmiParameterSliderRow()
|
||||||
|
{
|
||||||
|
DoubleBuffered = true;
|
||||||
|
BackColor = HmiTheme.SurfaceRaised;
|
||||||
|
Margin = new Padding(3);
|
||||||
|
Padding = new Padding(10, 6, 10, 5);
|
||||||
|
MinimumSize = new Size(250, 86);
|
||||||
|
|
||||||
|
_root = new TableLayoutPanel
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
ColumnCount = 2,
|
||||||
|
RowCount = 3,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
Margin = Padding.Empty,
|
||||||
|
Padding = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_root.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 58F));
|
||||||
|
_root.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 42F));
|
||||||
|
_root.RowStyles.Add(new RowStyle(SizeType.Absolute, 26F));
|
||||||
|
_root.RowStyles.Add(new RowStyle(SizeType.Percent, 100F));
|
||||||
|
_root.RowStyles.Add(new RowStyle(SizeType.Absolute, 18F));
|
||||||
|
|
||||||
|
_lblTitulo = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.Text,
|
||||||
|
Font = new Font("Segoe UI", 8.5F, FontStyle.Bold),
|
||||||
|
Text = "Valor",
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
|
AutoEllipsis = true,
|
||||||
|
Margin = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_lblValor = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.Success,
|
||||||
|
Font = new Font("Segoe UI", 9.5F, FontStyle.Bold),
|
||||||
|
Text = "50%",
|
||||||
|
TextAlign = ContentAlignment.MiddleRight,
|
||||||
|
AutoEllipsis = true,
|
||||||
|
Margin = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_slider = new HmiSlider
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
Margin = new Padding(0, 3, 0, 2),
|
||||||
|
Minimum = 0,
|
||||||
|
Maximum = 100,
|
||||||
|
Value = 50,
|
||||||
|
AccentColor = HmiTheme.Success
|
||||||
|
};
|
||||||
|
|
||||||
|
_lblLimiteMin = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.TextMuted,
|
||||||
|
Font = new Font("Segoe UI", 6.5F),
|
||||||
|
Text = "0%",
|
||||||
|
TextAlign = ContentAlignment.MiddleLeft,
|
||||||
|
Margin = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_lblLimiteMax = new Label
|
||||||
|
{
|
||||||
|
Dock = DockStyle.Fill,
|
||||||
|
BackColor = Color.Transparent,
|
||||||
|
ForeColor = HmiTheme.TextMuted,
|
||||||
|
Font = new Font("Segoe UI", 6.5F),
|
||||||
|
Text = "100%",
|
||||||
|
TextAlign = ContentAlignment.MiddleRight,
|
||||||
|
Margin = Padding.Empty
|
||||||
|
};
|
||||||
|
|
||||||
|
_root.Controls.Add(_lblTitulo, 0, 0);
|
||||||
|
_root.Controls.Add(_lblValor, 1, 0);
|
||||||
|
_root.Controls.Add(_slider, 0, 1);
|
||||||
|
_root.SetColumnSpan(_slider, 2);
|
||||||
|
_root.Controls.Add(_lblLimiteMin, 0, 2);
|
||||||
|
_root.Controls.Add(_lblLimiteMax, 1, 2);
|
||||||
|
|
||||||
|
Controls.Add(_root);
|
||||||
|
|
||||||
|
_slider.ValueChanged += Slider_ValueChanged;
|
||||||
|
AtualizarTextoValor();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Slider_ValueChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
AtualizarTextoValor();
|
||||||
|
|
||||||
|
if (ValueChanged != null)
|
||||||
|
ValueChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarTextoValor()
|
||||||
|
{
|
||||||
|
if (_valueFormat == HmiSliderValueFormat.Degrees)
|
||||||
|
{
|
||||||
|
_lblValor.Text = _slider.Value + "°";
|
||||||
|
_lblLimiteMin.Text = _slider.Minimum + "°";
|
||||||
|
_lblLimiteMax.Text = _slider.Maximum + "°";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_valueFormat == HmiSliderValueFormat.PercentOnly)
|
||||||
|
{
|
||||||
|
_lblValor.Text = _slider.Value + "%";
|
||||||
|
_lblLimiteMin.Text = _slider.Minimum + "%";
|
||||||
|
_lblLimiteMax.Text = _slider.Maximum + "%";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
double kmh = _velocidadeMaximaKmh * _slider.Value / 100D;
|
||||||
|
_lblValor.Text = string.Format("{0}% · {1:0.0} km/h", _slider.Value, kmh);
|
||||||
|
_lblLimiteMin.Text = _slider.Minimum + "%";
|
||||||
|
_lblLimiteMax.Text = _slider.Maximum + "%";
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Conteúdo")]
|
||||||
|
public string Titulo
|
||||||
|
{
|
||||||
|
get { return _lblTitulo.Text; }
|
||||||
|
set { _lblTitulo.Text = value ?? string.Empty; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public int Minimum
|
||||||
|
{
|
||||||
|
get { return _slider.Minimum; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_slider.Minimum = value;
|
||||||
|
AtualizarTextoValor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public int Maximum
|
||||||
|
{
|
||||||
|
get { return _slider.Maximum; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_slider.Maximum = value;
|
||||||
|
AtualizarTextoValor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public int Value
|
||||||
|
{
|
||||||
|
get { return _slider.Value; }
|
||||||
|
set { _slider.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Dados")]
|
||||||
|
public double VelocidadeMaximaKmh
|
||||||
|
{
|
||||||
|
get { return _velocidadeMaximaKmh; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_velocidadeMaximaKmh = Math.Max(0D, value);
|
||||||
|
AtualizarTextoValor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Aparência")]
|
||||||
|
[DefaultValue(HmiSliderValueFormat.PercentAndSpeed)]
|
||||||
|
public HmiSliderValueFormat ValueFormat
|
||||||
|
{
|
||||||
|
get { return _valueFormat; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_valueFormat = value;
|
||||||
|
AtualizarTextoValor();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Aparência")]
|
||||||
|
public Color AccentColor
|
||||||
|
{
|
||||||
|
get { return _slider.AccentColor; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_slider.AccentColor = value;
|
||||||
|
_lblValor.ForeColor = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Category("Aparência")]
|
||||||
|
[DefaultValue(false)]
|
||||||
|
public bool CompactMode
|
||||||
|
{
|
||||||
|
get { return _compactMode; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_compactMode == value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_compactMode = value;
|
||||||
|
AtualizarModoCompacto();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Browsable(false)]
|
||||||
|
public HmiSlider Slider
|
||||||
|
{
|
||||||
|
get { return _slider; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarModoCompacto()
|
||||||
|
{
|
||||||
|
if (_compactMode)
|
||||||
|
{
|
||||||
|
MinimumSize = new Size(80, 44);
|
||||||
|
Padding = new Padding(8, 3, 8, 3);
|
||||||
|
|
||||||
|
_root.RowStyles[0].Height = 20F;
|
||||||
|
_root.RowStyles[1].SizeType = SizeType.Percent;
|
||||||
|
_root.RowStyles[1].Height = 100F;
|
||||||
|
_root.RowStyles[2].Height = 0F;
|
||||||
|
|
||||||
|
_lblLimiteMin.Visible = false;
|
||||||
|
_lblLimiteMax.Visible = false;
|
||||||
|
|
||||||
|
_lblTitulo.Font = new Font("Segoe UI", 7.4F, FontStyle.Bold);
|
||||||
|
|
||||||
|
_lblValor.Font = new Font("Segoe UI", 7.8F, FontStyle.Bold);
|
||||||
|
|
||||||
|
_slider.Margin = new Padding(0);
|
||||||
|
_slider.ThumbRadius = 6;
|
||||||
|
_slider.TrackHeight = 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MinimumSize = new Size(250, 86);
|
||||||
|
Padding = new Padding(10, 6, 10, 5);
|
||||||
|
|
||||||
|
_root.RowStyles[0].Height = 26F;
|
||||||
|
_root.RowStyles[1].SizeType = SizeType.Percent;
|
||||||
|
_root.RowStyles[1].Height = 100F;
|
||||||
|
_root.RowStyles[2].Height = 18F;
|
||||||
|
|
||||||
|
_lblLimiteMin.Visible = true;
|
||||||
|
_lblLimiteMax.Visible = true;
|
||||||
|
|
||||||
|
_lblTitulo.Font = new Font("Segoe UI", 8.5F, FontStyle.Bold);
|
||||||
|
|
||||||
|
_lblValor.Font = new Font("Segoe UI", 9.5F, FontStyle.Bold);
|
||||||
|
|
||||||
|
_slider.Margin = new Padding(0, 3, 0, 2);
|
||||||
|
_slider.ThumbRadius = 8;
|
||||||
|
_slider.TrackHeight = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
PerformLayout();
|
||||||
|
Invalidate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,6 +3,7 @@ using System.ComponentModel;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Drawing2D;
|
using System.Drawing.Drawing2D;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
namespace AgroBase.Forms.IHM.Controls.Operacao
|
namespace AgroBase.Forms.IHM.Controls.Operacao
|
||||||
{
|
{
|
||||||
|
|
@ -330,6 +331,28 @@ namespace AgroBase.Forms.IHM.Controls.Operacao
|
||||||
return check;
|
return check;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AtualizarDados(
|
||||||
|
bool dir_em_uso,
|
||||||
|
double dir_ang_sp,
|
||||||
|
double dir_ang_at,
|
||||||
|
Sentido dir_sentido,
|
||||||
|
bool mov_em_uso,
|
||||||
|
double mov_vel_sp,
|
||||||
|
double mov_vel_at,
|
||||||
|
bool mov_freio
|
||||||
|
)
|
||||||
|
{
|
||||||
|
CheckDir.Checked = dir_em_uso;
|
||||||
|
DirecionalSp = $"{dir_ang_sp}";
|
||||||
|
DirecionalAtual = $"{dir_ang_at}";
|
||||||
|
StatusDirecional = $"{dir_sentido}";
|
||||||
|
|
||||||
|
CheckMov.Checked = mov_em_uso;
|
||||||
|
MovimentoSp = $"{mov_vel_sp}";
|
||||||
|
MovimentoAtual = $"{mov_vel_at}";
|
||||||
|
StatusMovimento = mov_freio ? "Freado" : "Livre";
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnPaint(PaintEventArgs e)
|
protected override void OnPaint(PaintEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnPaint(e);
|
base.OnPaint(e);
|
||||||
|
|
|
||||||
336
AgroBase/AgroBase/Forms/IHM/Operacao/Parametros/ucParametrosAtuador.Designer.cs
generated
Normal file
336
AgroBase/AgroBase/Forms/IHM/Operacao/Parametros/ucParametrosAtuador.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,336 @@
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros
|
||||||
|
{
|
||||||
|
partial class ucParametrosAtuador
|
||||||
|
{
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && components != null) components.Dispose();
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Component Designer generated code
|
||||||
|
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.rootLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.pnlAgitador = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
|
this.agitadorLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.lblAgitadorTitulo = new System.Windows.Forms.Label();
|
||||||
|
this.lblAgitadorDescricao = new System.Windows.Forms.Label();
|
||||||
|
this.seletorModoAgitador = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiAgitatorModeSelector();
|
||||||
|
this.pidLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.paramKp = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.paramKi = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.paramKd = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.pnlPulverizacao = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
|
this.pulverizacaoLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.lblPulverizacaoTitulo = new System.Windows.Forms.Label();
|
||||||
|
this.lblPulverizacaoDescricao = new System.Windows.Forms.Label();
|
||||||
|
this.parametrosLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.paramBicosEmUso = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.paramPressaoLinha = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.paramInicioTela = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.paramAlturaArea = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.paramErvasOn = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.paramErvasOff = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField();
|
||||||
|
this.rootLayout.SuspendLayout();
|
||||||
|
this.pnlAgitador.SuspendLayout();
|
||||||
|
this.agitadorLayout.SuspendLayout();
|
||||||
|
this.pidLayout.SuspendLayout();
|
||||||
|
this.pnlPulverizacao.SuspendLayout();
|
||||||
|
this.pulverizacaoLayout.SuspendLayout();
|
||||||
|
this.parametrosLayout.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// rootLayout
|
||||||
|
//
|
||||||
|
this.rootLayout.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
||||||
|
this.rootLayout.ColumnCount = 2;
|
||||||
|
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 40F));
|
||||||
|
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 60F));
|
||||||
|
this.rootLayout.Controls.Add(this.pnlAgitador, 0, 0);
|
||||||
|
this.rootLayout.Controls.Add(this.pnlPulverizacao, 1, 0);
|
||||||
|
this.rootLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.rootLayout.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.rootLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.rootLayout.Name = "rootLayout";
|
||||||
|
this.rootLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.rootLayout.RowCount = 1;
|
||||||
|
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.rootLayout.Size = new System.Drawing.Size(760, 286);
|
||||||
|
this.rootLayout.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// pnlAgitador
|
||||||
|
//
|
||||||
|
ConfigurePanel(this.pnlAgitador, this.agitadorLayout);
|
||||||
|
this.pnlAgitador.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||||
|
this.pnlAgitador.Name = "pnlAgitador";
|
||||||
|
//
|
||||||
|
// agitadorLayout
|
||||||
|
//
|
||||||
|
this.agitadorLayout.ColumnCount = 1;
|
||||||
|
this.agitadorLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.agitadorLayout.Controls.Add(this.lblAgitadorTitulo, 0, 0);
|
||||||
|
this.agitadorLayout.Controls.Add(this.lblAgitadorDescricao, 0, 1);
|
||||||
|
this.agitadorLayout.Controls.Add(this.seletorModoAgitador, 0, 2);
|
||||||
|
this.agitadorLayout.Controls.Add(this.pidLayout, 0, 3);
|
||||||
|
this.agitadorLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.agitadorLayout.Location = new System.Drawing.Point(8, 8);
|
||||||
|
this.agitadorLayout.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
this.agitadorLayout.Name = "agitadorLayout";
|
||||||
|
this.agitadorLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.agitadorLayout.RowCount = 4;
|
||||||
|
this.agitadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
|
||||||
|
this.agitadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F));
|
||||||
|
this.agitadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F));
|
||||||
|
this.agitadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.agitadorLayout.Size = new System.Drawing.Size(282, 270);
|
||||||
|
this.agitadorLayout.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// lblAgitadorTitulo
|
||||||
|
//
|
||||||
|
SetupSectionTitle(this.lblAgitadorTitulo, "AGITADOR DE CALDA");
|
||||||
|
this.lblAgitadorTitulo.Name = "lblAgitadorTitulo";
|
||||||
|
//
|
||||||
|
// lblAgitadorDescricao
|
||||||
|
//
|
||||||
|
SetupSectionDescription(this.lblAgitadorDescricao, "Selecione o modo e ajuste os ganhos PID usados no controle do agitador.");
|
||||||
|
this.lblAgitadorDescricao.Name = "lblAgitadorDescricao";
|
||||||
|
//
|
||||||
|
// seletorModoAgitador
|
||||||
|
//
|
||||||
|
this.seletorModoAgitador.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.seletorModoAgitador.Location = new System.Drawing.Point(0, 63);
|
||||||
|
this.seletorModoAgitador.Margin = new System.Windows.Forms.Padding(0, 3, 0, 5);
|
||||||
|
this.seletorModoAgitador.MinimumSize = new System.Drawing.Size(0, 40);
|
||||||
|
this.seletorModoAgitador.Name = "seletorModoAgitador";
|
||||||
|
this.seletorModoAgitador.SelectedMode = "Continuo";
|
||||||
|
this.seletorModoAgitador.Size = new System.Drawing.Size(282, 42);
|
||||||
|
this.seletorModoAgitador.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// pidLayout
|
||||||
|
//
|
||||||
|
this.pidLayout.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.pidLayout.ColumnCount = 1;
|
||||||
|
this.pidLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.pidLayout.Controls.Add(this.paramKp, 0, 0);
|
||||||
|
this.pidLayout.Controls.Add(this.paramKi, 0, 1);
|
||||||
|
this.pidLayout.Controls.Add(this.paramKd, 0, 2);
|
||||||
|
this.pidLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.pidLayout.Location = new System.Drawing.Point(0, 110);
|
||||||
|
this.pidLayout.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
this.pidLayout.Name = "pidLayout";
|
||||||
|
this.pidLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.pidLayout.RowCount = 3;
|
||||||
|
this.pidLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
||||||
|
this.pidLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
||||||
|
this.pidLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
|
||||||
|
this.pidLayout.Size = new System.Drawing.Size(282, 160);
|
||||||
|
this.pidLayout.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// paramKp
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramKp, "Kp", "", 1.10M, 0M, 20M, 0.05M, 2);
|
||||||
|
this.paramKp.Margin = new System.Windows.Forms.Padding(0, 2, 0, 4);
|
||||||
|
this.paramKp.Name = "paramKp";
|
||||||
|
//
|
||||||
|
// paramKi
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramKi, "Ki", "", 0.12M, 0M, 20M, 0.01M, 2);
|
||||||
|
this.paramKi.Margin = new System.Windows.Forms.Padding(0, 2, 0, 4);
|
||||||
|
this.paramKi.Name = "paramKi";
|
||||||
|
//
|
||||||
|
// paramKd
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramKd, "Kd", "", 0.03M, 0M, 20M, 0.01M, 2);
|
||||||
|
this.paramKd.Margin = new System.Windows.Forms.Padding(0, 2, 0, 0);
|
||||||
|
this.paramKd.Name = "paramKd";
|
||||||
|
//
|
||||||
|
// pnlPulverizacao
|
||||||
|
//
|
||||||
|
ConfigurePanel(this.pnlPulverizacao, this.pulverizacaoLayout);
|
||||||
|
this.pnlPulverizacao.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||||
|
this.pnlPulverizacao.Name = "pnlPulverizacao";
|
||||||
|
//
|
||||||
|
// pulverizacaoLayout
|
||||||
|
//
|
||||||
|
this.pulverizacaoLayout.ColumnCount = 1;
|
||||||
|
this.pulverizacaoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.pulverizacaoLayout.Controls.Add(this.lblPulverizacaoTitulo, 0, 0);
|
||||||
|
this.pulverizacaoLayout.Controls.Add(this.lblPulverizacaoDescricao, 0, 1);
|
||||||
|
this.pulverizacaoLayout.Controls.Add(this.parametrosLayout, 0, 2);
|
||||||
|
this.pulverizacaoLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.pulverizacaoLayout.Location = new System.Drawing.Point(8, 8);
|
||||||
|
this.pulverizacaoLayout.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
this.pulverizacaoLayout.Name = "pulverizacaoLayout";
|
||||||
|
this.pulverizacaoLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.pulverizacaoLayout.RowCount = 3;
|
||||||
|
this.pulverizacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 26F));
|
||||||
|
this.pulverizacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F));
|
||||||
|
this.pulverizacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.pulverizacaoLayout.Size = new System.Drawing.Size(434, 270);
|
||||||
|
this.pulverizacaoLayout.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// lblPulverizacaoTitulo
|
||||||
|
//
|
||||||
|
SetupSectionTitle(this.lblPulverizacaoTitulo, "PULVERIZAÇÃO E WEED WORKER");
|
||||||
|
this.lblPulverizacaoTitulo.Name = "lblPulverizacaoTitulo";
|
||||||
|
//
|
||||||
|
// lblPulverizacaoDescricao
|
||||||
|
//
|
||||||
|
SetupSectionDescription(this.lblPulverizacaoDescricao, "Defina os recursos da operação e os limites da região de atuação de cada bico.");
|
||||||
|
this.lblPulverizacaoDescricao.Name = "lblPulverizacaoDescricao";
|
||||||
|
//
|
||||||
|
// parametrosLayout
|
||||||
|
//
|
||||||
|
this.parametrosLayout.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.parametrosLayout.ColumnCount = 2;
|
||||||
|
this.parametrosLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.parametrosLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.parametrosLayout.Controls.Add(this.paramBicosEmUso, 0, 0);
|
||||||
|
this.parametrosLayout.Controls.Add(this.paramPressaoLinha, 1, 0);
|
||||||
|
this.parametrosLayout.Controls.Add(this.paramInicioTela, 0, 1);
|
||||||
|
this.parametrosLayout.Controls.Add(this.paramAlturaArea, 1, 1);
|
||||||
|
this.parametrosLayout.Controls.Add(this.paramErvasOn, 0, 2);
|
||||||
|
this.parametrosLayout.Controls.Add(this.paramErvasOff, 1, 2);
|
||||||
|
this.parametrosLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.parametrosLayout.Location = new System.Drawing.Point(0, 60);
|
||||||
|
this.parametrosLayout.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
this.parametrosLayout.Name = "parametrosLayout";
|
||||||
|
this.parametrosLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.parametrosLayout.RowCount = 3;
|
||||||
|
this.parametrosLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
||||||
|
this.parametrosLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
||||||
|
this.parametrosLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
|
||||||
|
this.parametrosLayout.Size = new System.Drawing.Size(434, 210);
|
||||||
|
this.parametrosLayout.TabIndex = 2;
|
||||||
|
//
|
||||||
|
// paramBicosEmUso
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramBicosEmUso, "Bicos em uso", "", 7M, 1M, 12M, 1M, 0);
|
||||||
|
this.paramBicosEmUso.Margin = new System.Windows.Forms.Padding(2, 2, 4, 4);
|
||||||
|
this.paramBicosEmUso.Name = "paramBicosEmUso";
|
||||||
|
//
|
||||||
|
// paramPressaoLinha
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramPressaoLinha, "Pressão da linha", "psi", 18M, 0M, 120M, 1M, 0);
|
||||||
|
this.paramPressaoLinha.Margin = new System.Windows.Forms.Padding(4, 2, 2, 4);
|
||||||
|
this.paramPressaoLinha.Name = "paramPressaoLinha";
|
||||||
|
//
|
||||||
|
// paramInicioTela
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramInicioTela, "Início da atuação", "%", 85M, 0M, 100M, 1M, 0);
|
||||||
|
this.paramInicioTela.Margin = new System.Windows.Forms.Padding(2, 2, 4, 4);
|
||||||
|
this.paramInicioTela.Name = "paramInicioTela";
|
||||||
|
//
|
||||||
|
// paramAlturaArea
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramAlturaArea, "Altura da área", "%", 15M, 1M, 100M, 1M, 0);
|
||||||
|
this.paramAlturaArea.Margin = new System.Windows.Forms.Padding(4, 2, 2, 4);
|
||||||
|
this.paramAlturaArea.Name = "paramAlturaArea";
|
||||||
|
//
|
||||||
|
// paramErvasOn
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramErvasOn, "Ervas para ligar", "%", 25.0M, 0M, 100M, 0.5M, 1);
|
||||||
|
this.paramErvasOn.Margin = new System.Windows.Forms.Padding(2, 2, 4, 0);
|
||||||
|
this.paramErvasOn.Name = "paramErvasOn";
|
||||||
|
//
|
||||||
|
// paramErvasOff
|
||||||
|
//
|
||||||
|
SetupNumeric(this.paramErvasOff, "Ervas para desligar", "%", 15.0M, 0M, 100M, 0.5M, 1);
|
||||||
|
this.paramErvasOff.Margin = new System.Windows.Forms.Padding(4, 2, 2, 0);
|
||||||
|
this.paramErvasOff.Name = "paramErvasOff";
|
||||||
|
//
|
||||||
|
// ucParametrosAtuador
|
||||||
|
//
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||||
|
this.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
||||||
|
this.Controls.Add(this.rootLayout);
|
||||||
|
this.DoubleBuffered = true;
|
||||||
|
this.Margin = new System.Windows.Forms.Padding(0);
|
||||||
|
this.Name = "ucParametrosAtuador";
|
||||||
|
this.Size = new System.Drawing.Size(760, 286);
|
||||||
|
this.rootLayout.ResumeLayout(false);
|
||||||
|
this.pnlAgitador.ResumeLayout(false);
|
||||||
|
this.agitadorLayout.ResumeLayout(false);
|
||||||
|
this.pidLayout.ResumeLayout(false);
|
||||||
|
this.pnlPulverizacao.ResumeLayout(false);
|
||||||
|
this.pulverizacaoLayout.ResumeLayout(false);
|
||||||
|
this.parametrosLayout.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ConfigurePanel(AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel, System.Windows.Forms.Control child)
|
||||||
|
{
|
||||||
|
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
||||||
|
panel.Controls.Add(child);
|
||||||
|
panel.CornerRadius = 9;
|
||||||
|
panel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
panel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
|
||||||
|
panel.Padding = new System.Windows.Forms.Padding(8);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupSectionTitle(System.Windows.Forms.Label label, string text)
|
||||||
|
{
|
||||||
|
label.AutoEllipsis = true;
|
||||||
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
label.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
|
||||||
|
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
|
||||||
|
label.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
label.Text = text;
|
||||||
|
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupSectionDescription(System.Windows.Forms.Label label, string text)
|
||||||
|
{
|
||||||
|
label.AutoEllipsis = true;
|
||||||
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
label.Font = new System.Drawing.Font("Segoe UI", 7F);
|
||||||
|
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
||||||
|
label.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
label.Text = text;
|
||||||
|
label.TextAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupNumeric(AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField field, string title, string unit, decimal value, decimal minimum, decimal maximum, decimal increment, int decimalPlaces)
|
||||||
|
{
|
||||||
|
field.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
field.MinimumSize = new System.Drawing.Size(0, 60);
|
||||||
|
field.Titulo = title;
|
||||||
|
field.Unidade = unit;
|
||||||
|
field.Minimum = minimum;
|
||||||
|
field.Maximum = maximum;
|
||||||
|
field.Increment = increment;
|
||||||
|
field.DecimalPlaces = decimalPlaces;
|
||||||
|
field.Value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TableLayoutPanel rootLayout;
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlAgitador;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel agitadorLayout;
|
||||||
|
private System.Windows.Forms.Label lblAgitadorTitulo;
|
||||||
|
private System.Windows.Forms.Label lblAgitadorDescricao;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiAgitatorModeSelector seletorModoAgitador;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel pidLayout;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramKp;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramKi;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramKd;
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlPulverizacao;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel pulverizacaoLayout;
|
||||||
|
private System.Windows.Forms.Label lblPulverizacaoTitulo;
|
||||||
|
private System.Windows.Forms.Label lblPulverizacaoDescricao;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel parametrosLayout;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramBicosEmUso;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramPressaoLinha;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramInicioTela;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramAlturaArea;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramErvasOn;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactNumericField paramErvasOff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,116 @@
|
||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros
|
||||||
|
{
|
||||||
|
public partial class ucParametrosAtuador : UserControl
|
||||||
|
{
|
||||||
|
public event EventHandler ParametrosAlterados;
|
||||||
|
|
||||||
|
public ucParametrosAtuador()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
ConfigurarEstadoInicial();
|
||||||
|
VincularEventos();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ConfigurarEstadoInicial()
|
||||||
|
{
|
||||||
|
seletorModoAgitador.SelectedMode = "Continuo";
|
||||||
|
|
||||||
|
paramKp.Value = 1.00M;
|
||||||
|
paramKi.Value = 0.10M;
|
||||||
|
paramKd.Value = 0.00M;
|
||||||
|
|
||||||
|
paramBicosEmUso.Value = 7M;
|
||||||
|
paramPressaoLinha.Value = 18M;
|
||||||
|
|
||||||
|
paramInicioTela.Value = 85M;
|
||||||
|
paramAlturaArea.Value = 15M;
|
||||||
|
paramErvasOn.Value = 25M;
|
||||||
|
paramErvasOff.Value = 15M;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void VincularEventos()
|
||||||
|
{
|
||||||
|
seletorModoAgitador.SelectedModeChanged += Controle_Alterado;
|
||||||
|
|
||||||
|
paramKp.ValueChanged += Controle_Alterado;
|
||||||
|
paramKi.ValueChanged += Controle_Alterado;
|
||||||
|
paramKd.ValueChanged += Controle_Alterado;
|
||||||
|
|
||||||
|
paramBicosEmUso.ValueChanged += Controle_Alterado;
|
||||||
|
paramPressaoLinha.ValueChanged += Controle_Alterado;
|
||||||
|
paramInicioTela.ValueChanged += Controle_Alterado;
|
||||||
|
paramAlturaArea.ValueChanged += Controle_Alterado;
|
||||||
|
paramErvasOn.ValueChanged += Controle_Alterado;
|
||||||
|
paramErvasOff.ValueChanged += Controle_Alterado;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Controle_Alterado(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (ParametrosAlterados != null)
|
||||||
|
ParametrosAlterados(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ModoAgitador
|
||||||
|
{
|
||||||
|
get { return seletorModoAgitador.SelectedMode; }
|
||||||
|
set { seletorModoAgitador.SelectedMode = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal KpAgitador
|
||||||
|
{
|
||||||
|
get { return paramKp.Value; }
|
||||||
|
set { paramKp.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal KiAgitador
|
||||||
|
{
|
||||||
|
get { return paramKi.Value; }
|
||||||
|
set { paramKi.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal KdAgitador
|
||||||
|
{
|
||||||
|
get { return paramKd.Value; }
|
||||||
|
set { paramKd.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int QuantidadeBicosEmUso
|
||||||
|
{
|
||||||
|
get { return Convert.ToInt32(paramBicosEmUso.Value); }
|
||||||
|
set { paramBicosEmUso.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal PressaoLinhaPsi
|
||||||
|
{
|
||||||
|
get { return paramPressaoLinha.Value; }
|
||||||
|
set { paramPressaoLinha.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int PercentualInicioTela
|
||||||
|
{
|
||||||
|
get { return Convert.ToInt32(paramInicioTela.Value); }
|
||||||
|
set { paramInicioTela.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int PercentualAlturaArea
|
||||||
|
{
|
||||||
|
get { return Convert.ToInt32(paramAlturaArea.Value); }
|
||||||
|
set { paramAlturaArea.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal PercentualErvasOn
|
||||||
|
{
|
||||||
|
get { return paramErvasOn.Value; }
|
||||||
|
set { paramErvasOn.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal PercentualErvasOff
|
||||||
|
{
|
||||||
|
get { return paramErvasOff.Value; }
|
||||||
|
set { paramErvasOff.Value = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
299
AgroBase/AgroBase/Forms/IHM/Operacao/Parametros/ucParametrosDirecional.Designer.cs
generated
Normal file
299
AgroBase/AgroBase/Forms/IHM/Operacao/Parametros/ucParametrosDirecional.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,299 @@
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros
|
||||||
|
{
|
||||||
|
partial class ucParametrosDirecional
|
||||||
|
{
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && components != null)
|
||||||
|
components.Dispose();
|
||||||
|
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Component Designer generated code
|
||||||
|
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.rootLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
|
||||||
|
this.pnlAssistencias = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
|
this.assistenciasLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.lblAssistenciasTitulo = new System.Windows.Forms.Label();
|
||||||
|
this.lblAssistenciasDescricao = new System.Windows.Forms.Label();
|
||||||
|
this.checksLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.checkDirecionalAutomatico = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.checkAssistidoSonar = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.checkAssistidoImu = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.checkImuPrefereArco = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
|
||||||
|
this.pnlControle = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
|
this.controleLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.lblControleTitulo = new System.Windows.Forms.Label();
|
||||||
|
this.lblControleDescricao = new System.Windows.Forms.Label();
|
||||||
|
this.sliderAnguloMaximo = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow();
|
||||||
|
this.sliderVelocidadeDirecional = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow();
|
||||||
|
|
||||||
|
this.pnlNavegacao = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
|
this.navegacaoLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.lblNavegacaoTitulo = new System.Windows.Forms.Label();
|
||||||
|
this.seletorModoControle = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiModeSelector();
|
||||||
|
this.parametroHorizonte = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiNumericParameterCard();
|
||||||
|
this.parametroDistanciaSaida = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiNumericParameterCard();
|
||||||
|
|
||||||
|
this.rootLayout.SuspendLayout();
|
||||||
|
this.pnlAssistencias.SuspendLayout();
|
||||||
|
this.assistenciasLayout.SuspendLayout();
|
||||||
|
this.checksLayout.SuspendLayout();
|
||||||
|
this.pnlControle.SuspendLayout();
|
||||||
|
this.controleLayout.SuspendLayout();
|
||||||
|
this.pnlNavegacao.SuspendLayout();
|
||||||
|
this.navegacaoLayout.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
|
||||||
|
// rootLayout
|
||||||
|
this.rootLayout.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
||||||
|
this.rootLayout.ColumnCount = 2;
|
||||||
|
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 42F));
|
||||||
|
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58F));
|
||||||
|
this.rootLayout.Controls.Add(this.pnlAssistencias, 0, 0);
|
||||||
|
this.rootLayout.Controls.Add(this.pnlControle, 1, 0);
|
||||||
|
this.rootLayout.Controls.Add(this.pnlNavegacao, 0, 1);
|
||||||
|
this.rootLayout.SetColumnSpan(this.pnlNavegacao, 2);
|
||||||
|
this.rootLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.rootLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.rootLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.rootLayout.RowCount = 2;
|
||||||
|
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 58F));
|
||||||
|
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 42F));
|
||||||
|
|
||||||
|
// Assistências
|
||||||
|
ConfigurePanel(this.pnlAssistencias, this.assistenciasLayout);
|
||||||
|
this.pnlAssistencias.Margin = new System.Windows.Forms.Padding(0, 0, 3, 3);
|
||||||
|
this.pnlAssistencias.Padding = new System.Windows.Forms.Padding(8);
|
||||||
|
|
||||||
|
this.assistenciasLayout.ColumnCount = 1;
|
||||||
|
this.assistenciasLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.assistenciasLayout.Controls.Add(this.lblAssistenciasTitulo, 0, 0);
|
||||||
|
this.assistenciasLayout.Controls.Add(this.lblAssistenciasDescricao, 0, 1);
|
||||||
|
this.assistenciasLayout.Controls.Add(this.checksLayout, 0, 2);
|
||||||
|
this.assistenciasLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.assistenciasLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.assistenciasLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.assistenciasLayout.RowCount = 3;
|
||||||
|
this.assistenciasLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
|
||||||
|
this.assistenciasLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||||
|
this.assistenciasLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
SetupSectionTitle(this.lblAssistenciasTitulo, "AUTOMAÇÃO E ASSISTÊNCIAS");
|
||||||
|
SetupSectionDescription(this.lblAssistenciasDescricao, "Defina quais recursos podem interferir no controle direcional.");
|
||||||
|
|
||||||
|
this.checksLayout.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.checksLayout.ColumnCount = 2;
|
||||||
|
this.checksLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.checksLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.checksLayout.Controls.Add(this.checkDirecionalAutomatico, 0, 0);
|
||||||
|
this.checksLayout.Controls.Add(this.checkAssistidoSonar, 1, 0);
|
||||||
|
this.checksLayout.Controls.Add(this.checkAssistidoImu, 0, 1);
|
||||||
|
this.checksLayout.Controls.Add(this.checkImuPrefereArco, 1, 1);
|
||||||
|
this.checksLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.checksLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.checksLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.checksLayout.RowCount = 2;
|
||||||
|
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
|
||||||
|
SetupCheck(this.checkDirecionalAutomatico, "Direcional automático");
|
||||||
|
SetupCheck(this.checkAssistidoSonar, "Assistido por sonar");
|
||||||
|
SetupCheck(this.checkAssistidoImu, "Assistido por IMU");
|
||||||
|
SetupCheck(this.checkImuPrefereArco, "IMU prefere arco");
|
||||||
|
|
||||||
|
// Controle direcional
|
||||||
|
ConfigurePanel(this.pnlControle, this.controleLayout);
|
||||||
|
this.pnlControle.Margin = new System.Windows.Forms.Padding(3, 0, 0, 3);
|
||||||
|
this.pnlControle.Padding = new System.Windows.Forms.Padding(8);
|
||||||
|
|
||||||
|
this.controleLayout.ColumnCount = 2;
|
||||||
|
this.controleLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.controleLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.controleLayout.Controls.Add(this.lblControleTitulo, 0, 0);
|
||||||
|
this.controleLayout.SetColumnSpan(this.lblControleTitulo, 2);
|
||||||
|
this.controleLayout.Controls.Add(this.lblControleDescricao, 0, 1);
|
||||||
|
this.controleLayout.SetColumnSpan(this.lblControleDescricao, 2);
|
||||||
|
this.controleLayout.Controls.Add(this.sliderAnguloMaximo, 0, 2);
|
||||||
|
this.controleLayout.Controls.Add(this.sliderVelocidadeDirecional, 1, 2);
|
||||||
|
this.controleLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.controleLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.controleLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.controleLayout.RowCount = 3;
|
||||||
|
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 24F));
|
||||||
|
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 25F));
|
||||||
|
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
SetupSectionTitle(this.lblControleTitulo, "LIMITES DO DIRECIONAL");
|
||||||
|
SetupSectionDescription(this.lblControleDescricao, "Ajuste o ângulo máximo e a velocidade usada pelos motores de passo.");
|
||||||
|
|
||||||
|
this.sliderAnguloMaximo.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.sliderAnguloMaximo.Margin = new System.Windows.Forms.Padding(0, 2, 3, 0);
|
||||||
|
this.sliderAnguloMaximo.MinimumSize = System.Drawing.Size.Empty;
|
||||||
|
this.sliderAnguloMaximo.Titulo = "Ângulo máximo";
|
||||||
|
this.sliderAnguloMaximo.Minimum = 0;
|
||||||
|
this.sliderAnguloMaximo.Maximum = 90;
|
||||||
|
this.sliderAnguloMaximo.ValueFormat = AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiSliderValueFormat.Degrees;
|
||||||
|
this.sliderAnguloMaximo.Value = 45;
|
||||||
|
this.sliderAnguloMaximo.AccentColor = AgroBase.Forms.IHM.Controls.HmiTheme.Warning;
|
||||||
|
|
||||||
|
this.sliderVelocidadeDirecional.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.sliderVelocidadeDirecional.Margin = new System.Windows.Forms.Padding(3, 2, 0, 0);
|
||||||
|
this.sliderVelocidadeDirecional.MinimumSize = System.Drawing.Size.Empty;
|
||||||
|
this.sliderVelocidadeDirecional.Titulo = "Velocidade direcional";
|
||||||
|
this.sliderVelocidadeDirecional.Minimum = 0;
|
||||||
|
this.sliderVelocidadeDirecional.Maximum = 100;
|
||||||
|
this.sliderVelocidadeDirecional.ValueFormat = AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiSliderValueFormat.PercentOnly;
|
||||||
|
this.sliderVelocidadeDirecional.Value = 60;
|
||||||
|
this.sliderVelocidadeDirecional.AccentColor = AgroBase.Forms.IHM.Controls.HmiTheme.Info;
|
||||||
|
|
||||||
|
// Controle e navegação
|
||||||
|
ConfigurePanel(this.pnlNavegacao, this.navegacaoLayout);
|
||||||
|
this.pnlNavegacao.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
|
||||||
|
this.pnlNavegacao.Padding = new System.Windows.Forms.Padding(8);
|
||||||
|
|
||||||
|
this.navegacaoLayout.ColumnCount = 3;
|
||||||
|
this.navegacaoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F));
|
||||||
|
this.navegacaoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F));
|
||||||
|
this.navegacaoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F));
|
||||||
|
this.navegacaoLayout.Controls.Add(this.lblNavegacaoTitulo, 0, 0);
|
||||||
|
this.navegacaoLayout.SetColumnSpan(this.lblNavegacaoTitulo, 3);
|
||||||
|
this.navegacaoLayout.Controls.Add(this.seletorModoControle, 0, 1);
|
||||||
|
this.navegacaoLayout.Controls.Add(this.parametroHorizonte, 1, 1);
|
||||||
|
this.navegacaoLayout.Controls.Add(this.parametroDistanciaSaida, 2, 1);
|
||||||
|
this.navegacaoLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.navegacaoLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.navegacaoLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.navegacaoLayout.RowCount = 2;
|
||||||
|
this.navegacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
|
||||||
|
this.navegacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
SetupSectionTitle(this.lblNavegacaoTitulo, "CONTROLE E NAVEGAÇÃO");
|
||||||
|
|
||||||
|
this.seletorModoControle.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.seletorModoControle.Margin = new System.Windows.Forms.Padding(0, 1, 3, 0);
|
||||||
|
this.seletorModoControle.MinimumSize = System.Drawing.Size.Empty;
|
||||||
|
this.seletorModoControle.SelectedMode = "MPC";
|
||||||
|
|
||||||
|
this.parametroHorizonte.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.parametroHorizonte.Margin = new System.Windows.Forms.Padding(3, 1, 3, 0);
|
||||||
|
this.parametroHorizonte.MinimumSize = System.Drawing.Size.Empty;
|
||||||
|
this.parametroHorizonte.Titulo = "Horizonte de predição";
|
||||||
|
this.parametroHorizonte.Descricao = "Distância analisada pelo controlador";
|
||||||
|
this.parametroHorizonte.Unidade = "m";
|
||||||
|
this.parametroHorizonte.Minimum = 1M;
|
||||||
|
this.parametroHorizonte.Maximum = 30M;
|
||||||
|
this.parametroHorizonte.Increment = 0.5M;
|
||||||
|
this.parametroHorizonte.DecimalPlaces = 1;
|
||||||
|
this.parametroHorizonte.Value = 4M;
|
||||||
|
|
||||||
|
this.parametroDistanciaSaida.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.parametroDistanciaSaida.Margin = new System.Windows.Forms.Padding(3, 1, 0, 0);
|
||||||
|
this.parametroDistanciaSaida.MinimumSize = System.Drawing.Size.Empty;
|
||||||
|
this.parametroDistanciaSaida.Titulo = "Distância saída para manobra";
|
||||||
|
this.parametroDistanciaSaida.Descricao = "Distância para iniciar a manobra entre ruas";
|
||||||
|
this.parametroDistanciaSaida.Unidade = "m";
|
||||||
|
this.parametroDistanciaSaida.Minimum = 0M;
|
||||||
|
this.parametroDistanciaSaida.Maximum = 20M;
|
||||||
|
this.parametroDistanciaSaida.Increment = 0.5M;
|
||||||
|
this.parametroDistanciaSaida.DecimalPlaces = 1;
|
||||||
|
this.parametroDistanciaSaida.Value = 5M;
|
||||||
|
|
||||||
|
// ucParametrosDirecional
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||||
|
this.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
||||||
|
this.Controls.Add(this.rootLayout);
|
||||||
|
this.DoubleBuffered = true;
|
||||||
|
this.Name = "ucParametrosDirecional";
|
||||||
|
this.Size = new System.Drawing.Size(760, 286);
|
||||||
|
|
||||||
|
this.rootLayout.ResumeLayout(false);
|
||||||
|
this.pnlAssistencias.ResumeLayout(false);
|
||||||
|
this.assistenciasLayout.ResumeLayout(false);
|
||||||
|
this.checksLayout.ResumeLayout(false);
|
||||||
|
this.pnlControle.ResumeLayout(false);
|
||||||
|
this.controleLayout.ResumeLayout(false);
|
||||||
|
this.pnlNavegacao.ResumeLayout(false);
|
||||||
|
this.navegacaoLayout.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ConfigurePanel(AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel, System.Windows.Forms.Control child)
|
||||||
|
{
|
||||||
|
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
||||||
|
panel.Controls.Add(child);
|
||||||
|
panel.CornerRadius = 9;
|
||||||
|
panel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
panel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
|
||||||
|
panel.Padding = new System.Windows.Forms.Padding(8);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupSectionTitle(System.Windows.Forms.Label label, string text)
|
||||||
|
{
|
||||||
|
label.AutoEllipsis = true;
|
||||||
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
label.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
|
||||||
|
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
|
||||||
|
label.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
label.Text = text;
|
||||||
|
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupSectionDescription(System.Windows.Forms.Label label, string text)
|
||||||
|
{
|
||||||
|
label.AutoEllipsis = true;
|
||||||
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
label.Font = new System.Drawing.Font("Segoe UI", 6.7F);
|
||||||
|
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
||||||
|
label.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
label.Text = text;
|
||||||
|
label.TextAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupCheck(AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow check, string title)
|
||||||
|
{
|
||||||
|
check.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
check.Titulo = title;
|
||||||
|
check.Checked = true;
|
||||||
|
check.Margin = new System.Windows.Forms.Padding(3);
|
||||||
|
check.MinimumSize = System.Drawing.Size.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TableLayoutPanel rootLayout;
|
||||||
|
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlAssistencias;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel assistenciasLayout;
|
||||||
|
private System.Windows.Forms.Label lblAssistenciasTitulo;
|
||||||
|
private System.Windows.Forms.Label lblAssistenciasDescricao;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel checksLayout;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkDirecionalAutomatico;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkAssistidoSonar;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkAssistidoImu;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkImuPrefereArco;
|
||||||
|
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlControle;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel controleLayout;
|
||||||
|
private System.Windows.Forms.Label lblControleTitulo;
|
||||||
|
private System.Windows.Forms.Label lblControleDescricao;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow sliderAnguloMaximo;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow sliderVelocidadeDirecional;
|
||||||
|
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlNavegacao;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel navegacaoLayout;
|
||||||
|
private System.Windows.Forms.Label lblNavegacaoTitulo;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiModeSelector seletorModoControle;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiNumericParameterCard parametroHorizonte;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiNumericParameterCard parametroDistanciaSaida;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros
|
||||||
|
{
|
||||||
|
public partial class ucParametrosDirecional : UserControl
|
||||||
|
{
|
||||||
|
public event EventHandler ParametrosAlterados;
|
||||||
|
|
||||||
|
public ucParametrosDirecional()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
ConfigurarEstadoInicial();
|
||||||
|
VincularEventos();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ConfigurarEstadoInicial()
|
||||||
|
{
|
||||||
|
checkDirecionalAutomatico.Checked = true;
|
||||||
|
checkAssistidoSonar.Checked = true;
|
||||||
|
checkAssistidoImu.Checked = true;
|
||||||
|
checkImuPrefereArco.Checked = false;
|
||||||
|
|
||||||
|
sliderAnguloMaximo.Value = 45;
|
||||||
|
sliderAnguloMaximo.VelocidadeMaximaKmh = 0D;
|
||||||
|
|
||||||
|
sliderVelocidadeDirecional.Value = 60;
|
||||||
|
sliderVelocidadeDirecional.VelocidadeMaximaKmh = 0D;
|
||||||
|
|
||||||
|
seletorModoControle.SelectedMode = "MPC";
|
||||||
|
|
||||||
|
parametroHorizonte.Value = 4M;
|
||||||
|
parametroDistanciaSaida.Value = 5M;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void VincularEventos()
|
||||||
|
{
|
||||||
|
checkDirecionalAutomatico.CheckedChanged += Controle_Alterado;
|
||||||
|
checkAssistidoSonar.CheckedChanged += Controle_Alterado;
|
||||||
|
checkAssistidoImu.CheckedChanged += Controle_Alterado;
|
||||||
|
checkImuPrefereArco.CheckedChanged += Controle_Alterado;
|
||||||
|
|
||||||
|
sliderAnguloMaximo.ValueChanged += Controle_Alterado;
|
||||||
|
sliderVelocidadeDirecional.ValueChanged += Controle_Alterado;
|
||||||
|
|
||||||
|
seletorModoControle.SelectedModeChanged += Controle_Alterado;
|
||||||
|
parametroHorizonte.ValueChanged += Controle_Alterado;
|
||||||
|
parametroDistanciaSaida.ValueChanged += Controle_Alterado;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Controle_Alterado(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (ParametrosAlterados != null)
|
||||||
|
ParametrosAlterados(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool DirecionalAutomatico
|
||||||
|
{
|
||||||
|
get { return checkDirecionalAutomatico.Checked; }
|
||||||
|
set { checkDirecionalAutomatico.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool AssistidoPorSonar
|
||||||
|
{
|
||||||
|
get { return checkAssistidoSonar.Checked; }
|
||||||
|
set { checkAssistidoSonar.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool AssistidoPorImu
|
||||||
|
{
|
||||||
|
get { return checkAssistidoImu.Checked; }
|
||||||
|
set { checkAssistidoImu.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ImuPrefereArco
|
||||||
|
{
|
||||||
|
get { return checkImuPrefereArco.Checked; }
|
||||||
|
set { checkImuPrefereArco.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int AnguloMaximo
|
||||||
|
{
|
||||||
|
get { return sliderAnguloMaximo.Value; }
|
||||||
|
set { sliderAnguloMaximo.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int VelocidadeDirecionalPercentual
|
||||||
|
{
|
||||||
|
get { return sliderVelocidadeDirecional.Value; }
|
||||||
|
set { sliderVelocidadeDirecional.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ModoControle
|
||||||
|
{
|
||||||
|
get { return seletorModoControle.SelectedMode; }
|
||||||
|
set { seletorModoControle.SelectedMode = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal HorizontePredicaoMetros
|
||||||
|
{
|
||||||
|
get { return parametroHorizonte.Value; }
|
||||||
|
set { parametroHorizonte.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public decimal DistanciaSaidaCorredorMetros
|
||||||
|
{
|
||||||
|
get { return parametroDistanciaSaida.Value; }
|
||||||
|
set { parametroDistanciaSaida.Value = value; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
37
AgroBase/AgroBase/Forms/IHM/Operacao/Parametros/ucParametrosMapa.Designer.cs
generated
Normal file
37
AgroBase/AgroBase/Forms/IHM/Operacao/Parametros/ucParametrosMapa.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros
|
||||||
|
{
|
||||||
|
partial class ucParametrosMapa
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Component Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
components = new System.ComponentModel.Container();
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros
|
||||||
|
{
|
||||||
|
public partial class ucParametrosMapa : UserControl
|
||||||
|
{
|
||||||
|
public ucParametrosMapa()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
217
AgroBase/AgroBase/Forms/IHM/Operacao/Parametros/ucParametrosMovimento.Designer.cs
generated
Normal file
217
AgroBase/AgroBase/Forms/IHM/Operacao/Parametros/ucParametrosMovimento.Designer.cs
generated
Normal file
|
|
@ -0,0 +1,217 @@
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros
|
||||||
|
{
|
||||||
|
partial class ucParametrosMovimento
|
||||||
|
{
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && components != null)
|
||||||
|
components.Dispose();
|
||||||
|
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Component Designer generated code
|
||||||
|
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
this.rootLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.pnlAutomacao = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
|
this.automacaoLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.lblAutomacaoTitulo = new System.Windows.Forms.Label();
|
||||||
|
this.lblAutomacaoDescricao = new System.Windows.Forms.Label();
|
||||||
|
this.checksLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.checkMovimentoAutomatico = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.checkAssistidoSonar = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.checkParadaObstaculo = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.checkAssistidoImu = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.checkParadaInclinacao = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.checkFrenagemParar = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow();
|
||||||
|
this.pnlVelocidades = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
|
this.velocidadesLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.lblVelocidadesTitulo = new System.Windows.Forms.Label();
|
||||||
|
this.lblVelocidadesDescricao = new System.Windows.Forms.Label();
|
||||||
|
this.sliderSemErvas = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow();
|
||||||
|
this.sliderComErvas = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow();
|
||||||
|
|
||||||
|
this.rootLayout.SuspendLayout();
|
||||||
|
this.pnlAutomacao.SuspendLayout();
|
||||||
|
this.automacaoLayout.SuspendLayout();
|
||||||
|
this.checksLayout.SuspendLayout();
|
||||||
|
this.pnlVelocidades.SuspendLayout();
|
||||||
|
this.velocidadesLayout.SuspendLayout();
|
||||||
|
this.SuspendLayout();
|
||||||
|
|
||||||
|
this.rootLayout.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
||||||
|
this.rootLayout.ColumnCount = 2;
|
||||||
|
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 45F));
|
||||||
|
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 55F));
|
||||||
|
this.rootLayout.Controls.Add(this.pnlAutomacao, 0, 0);
|
||||||
|
this.rootLayout.Controls.Add(this.pnlVelocidades, 1, 0);
|
||||||
|
this.rootLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.rootLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.rootLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.rootLayout.RowCount = 1;
|
||||||
|
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
ConfigurePanel(this.pnlAutomacao, this.automacaoLayout);
|
||||||
|
this.pnlAutomacao.Margin = new System.Windows.Forms.Padding(0, 0, 3, 0);
|
||||||
|
|
||||||
|
this.automacaoLayout.ColumnCount = 1;
|
||||||
|
this.automacaoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.automacaoLayout.Controls.Add(this.lblAutomacaoTitulo, 0, 0);
|
||||||
|
this.automacaoLayout.Controls.Add(this.lblAutomacaoDescricao, 0, 1);
|
||||||
|
this.automacaoLayout.Controls.Add(this.checksLayout, 0, 2);
|
||||||
|
this.automacaoLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.automacaoLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.automacaoLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.automacaoLayout.RowCount = 3;
|
||||||
|
this.automacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F));
|
||||||
|
this.automacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 32F));
|
||||||
|
this.automacaoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
SetupSectionTitle(this.lblAutomacaoTitulo, "AUTOMAÇÃO E ASSISTÊNCIAS");
|
||||||
|
SetupSectionDescription(this.lblAutomacaoDescricao, "Ative somente os recursos que devem participar do controle de movimento.");
|
||||||
|
|
||||||
|
this.checksLayout.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.checksLayout.ColumnCount = 2;
|
||||||
|
this.checksLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.checksLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.checksLayout.Controls.Add(this.checkMovimentoAutomatico, 0, 0);
|
||||||
|
this.checksLayout.Controls.Add(this.checkAssistidoSonar, 1, 0);
|
||||||
|
this.checksLayout.Controls.Add(this.checkParadaObstaculo, 0, 1);
|
||||||
|
this.checksLayout.Controls.Add(this.checkAssistidoImu, 1, 1);
|
||||||
|
this.checksLayout.Controls.Add(this.checkParadaInclinacao, 0, 2);
|
||||||
|
this.checksLayout.Controls.Add(this.checkFrenagemParar, 1, 2);
|
||||||
|
this.checksLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.checksLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.checksLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.checksLayout.RowCount = 3;
|
||||||
|
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
||||||
|
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
||||||
|
this.checksLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
|
||||||
|
|
||||||
|
SetupCheck(this.checkMovimentoAutomatico, "Movimento automático");
|
||||||
|
SetupCheck(this.checkAssistidoSonar, "Assistido por sonar");
|
||||||
|
SetupCheck(this.checkParadaObstaculo, "Parada por obstáculo");
|
||||||
|
SetupCheck(this.checkAssistidoImu, "Assistido por IMU");
|
||||||
|
SetupCheck(this.checkParadaInclinacao, "Parada por inclinação");
|
||||||
|
SetupCheck(this.checkFrenagemParar, "Frenagem ao parar");
|
||||||
|
|
||||||
|
ConfigurePanel(this.pnlVelocidades, this.velocidadesLayout);
|
||||||
|
this.pnlVelocidades.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||||
|
|
||||||
|
this.velocidadesLayout.ColumnCount = 1;
|
||||||
|
this.velocidadesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.velocidadesLayout.Controls.Add(this.lblVelocidadesTitulo, 0, 0);
|
||||||
|
this.velocidadesLayout.Controls.Add(this.lblVelocidadesDescricao, 0, 1);
|
||||||
|
this.velocidadesLayout.Controls.Add(this.sliderSemErvas, 0, 2);
|
||||||
|
this.velocidadesLayout.Controls.Add(this.sliderComErvas, 0, 3);
|
||||||
|
this.velocidadesLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.velocidadesLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.velocidadesLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.velocidadesLayout.RowCount = 4;
|
||||||
|
this.velocidadesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F));
|
||||||
|
this.velocidadesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 32F));
|
||||||
|
this.velocidadesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
this.velocidadesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||||
|
|
||||||
|
SetupSectionTitle(this.lblVelocidadesTitulo, "LIMITES DE VELOCIDADE");
|
||||||
|
SetupSectionDescription(this.lblVelocidadesDescricao, "A velocidade em km/h é calculada pelo percentual da velocidade máxima do equipamento.");
|
||||||
|
|
||||||
|
this.sliderSemErvas.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.sliderSemErvas.Margin = new System.Windows.Forms.Padding(0, 2, 0, 3);
|
||||||
|
this.sliderSemErvas.Titulo = "Sem ervas no radar";
|
||||||
|
this.sliderSemErvas.Value = 68;
|
||||||
|
this.sliderSemErvas.VelocidadeMaximaKmh = 5D;
|
||||||
|
this.sliderSemErvas.AccentColor = AgroBase.Forms.IHM.Controls.HmiTheme.Success;
|
||||||
|
|
||||||
|
this.sliderComErvas.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.sliderComErvas.Margin = new System.Windows.Forms.Padding(0, 3, 0, 0);
|
||||||
|
this.sliderComErvas.Titulo = "Com ervas no radar";
|
||||||
|
this.sliderComErvas.Value = 45;
|
||||||
|
this.sliderComErvas.VelocidadeMaximaKmh = 5D;
|
||||||
|
this.sliderComErvas.AccentColor = AgroBase.Forms.IHM.Controls.HmiTheme.Info;
|
||||||
|
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||||
|
this.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
||||||
|
this.Controls.Add(this.rootLayout);
|
||||||
|
this.DoubleBuffered = true;
|
||||||
|
this.Name = "ucParametrosMovimento";
|
||||||
|
this.Size = new System.Drawing.Size(760, 286);
|
||||||
|
|
||||||
|
this.rootLayout.ResumeLayout(false);
|
||||||
|
this.pnlAutomacao.ResumeLayout(false);
|
||||||
|
this.automacaoLayout.ResumeLayout(false);
|
||||||
|
this.checksLayout.ResumeLayout(false);
|
||||||
|
this.pnlVelocidades.ResumeLayout(false);
|
||||||
|
this.velocidadesLayout.ResumeLayout(false);
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void ConfigurePanel(AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel, System.Windows.Forms.Control child)
|
||||||
|
{
|
||||||
|
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
||||||
|
panel.Controls.Add(child);
|
||||||
|
panel.CornerRadius = 9;
|
||||||
|
panel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
panel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
|
||||||
|
panel.Padding = new System.Windows.Forms.Padding(10);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupSectionTitle(System.Windows.Forms.Label label, string text)
|
||||||
|
{
|
||||||
|
label.AutoEllipsis = true;
|
||||||
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
label.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
|
||||||
|
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
|
||||||
|
label.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
label.Text = text;
|
||||||
|
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupSectionDescription(System.Windows.Forms.Label label, string text)
|
||||||
|
{
|
||||||
|
label.AutoEllipsis = true;
|
||||||
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
label.Font = new System.Drawing.Font("Segoe UI", 7F);
|
||||||
|
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
||||||
|
label.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
label.Text = text;
|
||||||
|
label.TextAlign = System.Drawing.ContentAlignment.TopLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void SetupCheck(AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow check, string title)
|
||||||
|
{
|
||||||
|
check.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
check.Titulo = title;
|
||||||
|
check.Checked = true;
|
||||||
|
check.Margin = new System.Windows.Forms.Padding(3);
|
||||||
|
check.MinimumSize = System.Drawing.Size.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TableLayoutPanel rootLayout;
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlAutomacao;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel automacaoLayout;
|
||||||
|
private System.Windows.Forms.Label lblAutomacaoTitulo;
|
||||||
|
private System.Windows.Forms.Label lblAutomacaoDescricao;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel checksLayout;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkMovimentoAutomatico;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkAssistidoSonar;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkParadaObstaculo;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkAssistidoImu;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkParadaInclinacao;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiCompactCheckRow checkFrenagemParar;
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlVelocidades;
|
||||||
|
private System.Windows.Forms.TableLayoutPanel velocidadesLayout;
|
||||||
|
private System.Windows.Forms.Label lblVelocidadesTitulo;
|
||||||
|
private System.Windows.Forms.Label lblVelocidadesDescricao;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow sliderSemErvas;
|
||||||
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow sliderComErvas;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,111 @@
|
||||||
|
using AgroBase.Forms.IHM.Operacao.Parametros.Controls;
|
||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace AgroBase.Forms.IHM.Operacao.Parametros
|
||||||
|
{
|
||||||
|
public partial class ucParametrosMovimento : UserControl
|
||||||
|
{
|
||||||
|
public event EventHandler ParametrosAlterados;
|
||||||
|
|
||||||
|
public ucParametrosMovimento()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
ConfigurarEstadoInicial();
|
||||||
|
VincularEventos();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ConfigurarEstadoInicial()
|
||||||
|
{
|
||||||
|
checkMovimentoAutomatico.Checked = true;
|
||||||
|
checkAssistidoSonar.Checked = true;
|
||||||
|
checkParadaObstaculo.Checked = true;
|
||||||
|
checkAssistidoImu.Checked = true;
|
||||||
|
checkParadaInclinacao.Checked = true;
|
||||||
|
checkFrenagemParar.Checked = true;
|
||||||
|
|
||||||
|
sliderSemErvas.Value = 68;
|
||||||
|
sliderSemErvas.VelocidadeMaximaKmh = 5D;
|
||||||
|
|
||||||
|
sliderComErvas.Value = 45;
|
||||||
|
sliderComErvas.VelocidadeMaximaKmh = 5D;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void VincularEventos()
|
||||||
|
{
|
||||||
|
checkMovimentoAutomatico.CheckedChanged += Controle_Alterado;
|
||||||
|
checkAssistidoSonar.CheckedChanged += Controle_Alterado;
|
||||||
|
checkParadaObstaculo.CheckedChanged += Controle_Alterado;
|
||||||
|
checkAssistidoImu.CheckedChanged += Controle_Alterado;
|
||||||
|
checkParadaInclinacao.CheckedChanged += Controle_Alterado;
|
||||||
|
checkFrenagemParar.CheckedChanged += Controle_Alterado;
|
||||||
|
|
||||||
|
sliderSemErvas.ValueChanged += Controle_Alterado;
|
||||||
|
sliderComErvas.ValueChanged += Controle_Alterado;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Controle_Alterado(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (ParametrosAlterados != null)
|
||||||
|
ParametrosAlterados(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool MovimentoAutomatico
|
||||||
|
{
|
||||||
|
get { return checkMovimentoAutomatico.Checked; }
|
||||||
|
set { checkMovimentoAutomatico.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool AssistidoPorSonar
|
||||||
|
{
|
||||||
|
get { return checkAssistidoSonar.Checked; }
|
||||||
|
set { checkAssistidoSonar.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ParadaPorObstaculo
|
||||||
|
{
|
||||||
|
get { return checkParadaObstaculo.Checked; }
|
||||||
|
set { checkParadaObstaculo.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool AssistidoPorImu
|
||||||
|
{
|
||||||
|
get { return checkAssistidoImu.Checked; }
|
||||||
|
set { checkAssistidoImu.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ParadaPorInclinacao
|
||||||
|
{
|
||||||
|
get { return checkParadaInclinacao.Checked; }
|
||||||
|
set { checkParadaInclinacao.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool FrenagemAoParar
|
||||||
|
{
|
||||||
|
get { return checkFrenagemParar.Checked; }
|
||||||
|
set { checkFrenagemParar.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int VelocidadeSemErvasPercentual
|
||||||
|
{
|
||||||
|
get { return sliderSemErvas.Value; }
|
||||||
|
set { sliderSemErvas.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public int VelocidadeComErvasPercentual
|
||||||
|
{
|
||||||
|
get { return sliderComErvas.Value; }
|
||||||
|
set { sliderComErvas.Value = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public double VelocidadeMaximaEquipamentoKmh
|
||||||
|
{
|
||||||
|
get { return sliderSemErvas.VelocidadeMaximaKmh; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
sliderSemErvas.VelocidadeMaximaKmh = value;
|
||||||
|
sliderComErvas.VelocidadeMaximaKmh = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
using AgroBase.Forms.IHM.Controls;
|
using AgroBase.Forms.IHM.Controls;
|
||||||
using AgroBase.Forms.IHM.Controls.Operacao;
|
using AgroBase.Forms.IHM.Controls.Operacao;
|
||||||
|
using AgroBase.Forms.IHM.Operacao.Parametros.Controls;
|
||||||
|
using AgroBase.Models;
|
||||||
|
using AgroBase.Models.Modules;
|
||||||
|
using System;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
namespace AgroBase.Forms.IHM.Operacao
|
namespace AgroBase.Forms.IHM.Operacao
|
||||||
{
|
{
|
||||||
|
|
@ -11,6 +16,15 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
|
|
||||||
protected override void Dispose(bool disposing)
|
protected override void Dispose(bool disposing)
|
||||||
{
|
{
|
||||||
|
_controleDescartado = true;
|
||||||
|
|
||||||
|
if (picCamera != null)
|
||||||
|
{
|
||||||
|
System.Drawing.Image imagemAtual = picCamera.Image;
|
||||||
|
picCamera.Image = null;
|
||||||
|
imagemAtual?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
if (disposing && components != null)
|
if (disposing && components != null)
|
||||||
components.Dispose();
|
components.Dispose();
|
||||||
|
|
||||||
|
|
@ -29,15 +43,9 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
this.lblControleTitulo = new System.Windows.Forms.Label();
|
this.lblControleTitulo = new System.Windows.Forms.Label();
|
||||||
this.lblJoystick = new System.Windows.Forms.Label();
|
this.lblJoystick = new System.Windows.Forms.Label();
|
||||||
this.cmbJoystick = new System.Windows.Forms.ComboBox();
|
this.cmbJoystick = new System.Windows.Forms.ComboBox();
|
||||||
this.lblVelocidadeMax = new System.Windows.Forms.Label();
|
this.sliderVelocidadeMax = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow();
|
||||||
this.lblVelocidadeMaxValor = new System.Windows.Forms.Label();
|
this.sliderAngulo = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow();
|
||||||
this.sliderVelocidadeMax = new AgroBase.Forms.IHM.Controls.Operacao.HmiSlider();
|
this.sliderVelocidadeDir = new AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow();
|
||||||
this.lblAngulo = new System.Windows.Forms.Label();
|
|
||||||
this.lblAnguloValor = new System.Windows.Forms.Label();
|
|
||||||
this.sliderAngulo = new AgroBase.Forms.IHM.Controls.Operacao.HmiSlider();
|
|
||||||
this.lblVelocidadeDir = new System.Windows.Forms.Label();
|
|
||||||
this.lblVelocidadeDirValor = new System.Windows.Forms.Label();
|
|
||||||
this.sliderVelocidadeDir = new AgroBase.Forms.IHM.Controls.Operacao.HmiSlider();
|
|
||||||
this.lblTipoMovimento = new System.Windows.Forms.Label();
|
this.lblTipoMovimento = new System.Windows.Forms.Label();
|
||||||
this.cmbTipoMovimento = new System.Windows.Forms.ComboBox();
|
this.cmbTipoMovimento = new System.Windows.Forms.ComboBox();
|
||||||
this.acoesLayout = new System.Windows.Forms.TableLayoutPanel();
|
this.acoesLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
|
@ -135,25 +143,16 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
this.controleLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 36F));
|
this.controleLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 36F));
|
||||||
this.controleLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 34F));
|
this.controleLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 34F));
|
||||||
this.controleLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.controleLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.controleLayout.RowCount = 11;
|
this.controleLayout.RowCount = 8;
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 22F));
|
this.controleLayout.RowStyles.Clear();
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
this.controleLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 22F)); // título
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
|
this.controleLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 27F)); // joystick
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
|
this.controleLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F)); // vel máxima
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
|
this.controleLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.33F)); // ângulo
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
|
this.controleLayout.RowStyles.Add(new RowStyle(SizeType.Percent, 33.34F)); // vel dir
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
|
this.controleLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 17F)); // tipo
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 29F));
|
this.controleLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 28F)); // combo
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 18F));
|
this.controleLayout.RowStyles.Add(new RowStyle(SizeType.Absolute, 40F)); // ações
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F));
|
|
||||||
this.controleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 46F));
|
|
||||||
|
|
||||||
// Joystick
|
|
||||||
this.controleLayout.RowStyles[1] = new RowStyle(SizeType.Absolute, 27F);
|
|
||||||
// Combo de tipo de movimento
|
|
||||||
this.controleLayout.RowStyles[9] = new RowStyle(SizeType.Absolute, 28F);
|
|
||||||
// Botões
|
|
||||||
this.controleLayout.RowStyles[10] = new RowStyle(SizeType.Absolute, 40F);
|
|
||||||
|
|
||||||
SetupTitle(this.lblControleTitulo, "CONTROLE DE MOVIMENTO");
|
SetupTitle(this.lblControleTitulo, "CONTROLE DE MOVIMENTO");
|
||||||
this.controleLayout.Controls.Add(this.lblControleTitulo, 0, 0);
|
this.controleLayout.Controls.Add(this.lblControleTitulo, 0, 0);
|
||||||
|
|
@ -168,51 +167,31 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
this.controleLayout.Controls.Add(this.cmbJoystick, 1, 1);
|
this.controleLayout.Controls.Add(this.cmbJoystick, 1, 1);
|
||||||
this.controleLayout.SetColumnSpan(this.cmbJoystick, 2);
|
this.controleLayout.SetColumnSpan(this.cmbJoystick, 2);
|
||||||
|
|
||||||
SetupCaption(this.lblVelocidadeMax, "Velocidade máx.");
|
SetupParameterSlider(this.sliderVelocidadeMax, "Velocidade máxima", HmiTheme.Success, 0, 100, 30, HmiSliderValueFormat.PercentAndSpeed);
|
||||||
SetupValue(this.lblVelocidadeMaxValor, "68% · 3,4 km/h", AgroBase.Forms.IHM.Controls.HmiTheme.Success);
|
this.sliderVelocidadeMax.VelocidadeMaximaKmh = FuncoesMatematicas.CalculaVelocidadeRPM(VariaveisEquipamento.RPM_Max_Roda);
|
||||||
this.controleLayout.Controls.Add(this.lblVelocidadeMax, 0, 2);
|
this.controleLayout.Controls.Add(this.sliderVelocidadeMax, 0, 2);
|
||||||
this.controleLayout.SetColumnSpan(this.lblVelocidadeMax, 2);
|
|
||||||
this.controleLayout.Controls.Add(this.lblVelocidadeMaxValor, 2, 2);
|
|
||||||
SetupSlider(this.sliderVelocidadeMax, AgroBase.Forms.IHM.Controls.HmiTheme.Success, 0, 100, 68);
|
|
||||||
this.controleLayout.Controls.Add(this.sliderVelocidadeMax, 0, 3);
|
|
||||||
this.controleLayout.SetColumnSpan(this.sliderVelocidadeMax, 3);
|
this.controleLayout.SetColumnSpan(this.sliderVelocidadeMax, 3);
|
||||||
|
|
||||||
SetupCaption(this.lblAngulo, "Ângulo direcional");
|
SetupParameterSlider(this.sliderAngulo, "Ângulo direcional", HmiTheme.Manual, 0, 90, 12, HmiSliderValueFormat.Degrees);
|
||||||
SetupValue(this.lblAnguloValor, "+12°", AgroBase.Forms.IHM.Controls.HmiTheme.Manual);
|
this.controleLayout.Controls.Add(this.sliderAngulo, 0, 3);
|
||||||
this.controleLayout.Controls.Add(this.lblAngulo, 0, 4);
|
|
||||||
this.controleLayout.SetColumnSpan(this.lblAngulo, 2);
|
|
||||||
this.controleLayout.Controls.Add(this.lblAnguloValor, 2, 4);
|
|
||||||
SetupSlider(this.sliderAngulo, AgroBase.Forms.IHM.Controls.HmiTheme.Manual, 0, 90, 12);
|
|
||||||
this.controleLayout.Controls.Add(this.sliderAngulo, 0, 5);
|
|
||||||
this.controleLayout.SetColumnSpan(this.sliderAngulo, 3);
|
this.controleLayout.SetColumnSpan(this.sliderAngulo, 3);
|
||||||
|
|
||||||
SetupCaption(this.lblVelocidadeDir, "Velocidade direcional");
|
SetupParameterSlider(this.sliderVelocidadeDir, "Velocidade direcional", HmiTheme.Info, 0, 100, 55, HmiSliderValueFormat.PercentOnly);
|
||||||
SetupValue(this.lblVelocidadeDirValor, "55%", AgroBase.Forms.IHM.Controls.HmiTheme.Info);
|
this.controleLayout.Controls.Add(this.sliderVelocidadeDir, 0, 4);
|
||||||
this.controleLayout.Controls.Add(this.lblVelocidadeDir, 0, 6);
|
|
||||||
this.controleLayout.SetColumnSpan(this.lblVelocidadeDir, 2);
|
|
||||||
this.controleLayout.Controls.Add(this.lblVelocidadeDirValor, 2, 6);
|
|
||||||
SetupSlider(this.sliderVelocidadeDir, AgroBase.Forms.IHM.Controls.HmiTheme.Info, 0, 100, 55);
|
|
||||||
this.controleLayout.Controls.Add(this.sliderVelocidadeDir, 0, 7);
|
|
||||||
this.controleLayout.SetColumnSpan(this.sliderVelocidadeDir, 3);
|
this.controleLayout.SetColumnSpan(this.sliderVelocidadeDir, 3);
|
||||||
|
|
||||||
SetupCaption(this.lblTipoMovimento, "Tipo de movimento");
|
SetupCaption(this.lblTipoMovimento, "Tipo de movimento");
|
||||||
this.controleLayout.Controls.Add(this.lblTipoMovimento, 0, 8);
|
this.controleLayout.Controls.Add(this.lblTipoMovimento, 0, 5);
|
||||||
this.controleLayout.SetColumnSpan(this.lblTipoMovimento, 3);
|
this.controleLayout.SetColumnSpan(this.lblTipoMovimento, 3);
|
||||||
|
|
||||||
SetupCombo(this.cmbTipoMovimento);
|
SetupCombo(this.cmbTipoMovimento);
|
||||||
this.cmbTipoMovimento.Items.AddRange(new object[]
|
this.cmbTipoMovimento.Items.AddRange(Enum.GetNames(typeof(TipoMovimentoDirecional)));
|
||||||
{
|
this.controleLayout.Controls.Add(this.cmbTipoMovimento, 0, 6);
|
||||||
"Rodas dianteiras",
|
|
||||||
"Rodas traseiras",
|
|
||||||
"Rotacionar no eixo",
|
|
||||||
"Movimento arco",
|
|
||||||
"Movimento lateral",
|
|
||||||
"Movimento diagonal",
|
|
||||||
"Diagnóstico"
|
|
||||||
});
|
|
||||||
this.controleLayout.Controls.Add(this.cmbTipoMovimento, 0, 9);
|
|
||||||
this.controleLayout.SetColumnSpan(this.cmbTipoMovimento, 3);
|
this.controleLayout.SetColumnSpan(this.cmbTipoMovimento, 3);
|
||||||
|
|
||||||
|
this.controleLayout.Controls.Add(this.acoesLayout, 0, 7);
|
||||||
|
this.controleLayout.SetColumnSpan(this.acoesLayout, 3);
|
||||||
|
|
||||||
this.acoesLayout.ColumnCount = 3;
|
this.acoesLayout.ColumnCount = 3;
|
||||||
this.acoesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 34F));
|
this.acoesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 34F));
|
||||||
this.acoesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
|
this.acoesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33F));
|
||||||
|
|
@ -225,12 +204,9 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
this.acoesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
this.acoesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
this.acoesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 1F));
|
this.acoesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 1F));
|
||||||
|
|
||||||
SetupAction(this.btnControleManual, "MANUAL", AgroBase.Forms.IHM.Controls.HmiTheme.Success);
|
SetupAction(this.btnControleManual, "MANUAL", AgroBase.Forms.IHM.Controls.HmiTheme.Info);
|
||||||
SetupAction(this.btnReferenciar, "ZERAR", AgroBase.Forms.IHM.Controls.HmiTheme.Info);
|
SetupAction(this.btnReferenciar, "ZERAR", AgroBase.Forms.IHM.Controls.HmiTheme.Disabled);
|
||||||
SetupAction(this.btnFreio, "FREIO", AgroBase.Forms.IHM.Controls.HmiTheme.Danger);
|
SetupAction(this.btnFreio, "FREIO", AgroBase.Forms.IHM.Controls.HmiTheme.Disabled);
|
||||||
|
|
||||||
this.controleLayout.Controls.Add(this.acoesLayout, 0, 10);
|
|
||||||
this.controleLayout.SetColumnSpan(this.acoesLayout, 3);
|
|
||||||
|
|
||||||
// wheels
|
// wheels
|
||||||
this.rodasLayout.Dock = DockStyle.Fill;
|
this.rodasLayout.Dock = DockStyle.Fill;
|
||||||
|
|
@ -448,9 +424,7 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ConfigurePanel(
|
private static void ConfigurePanel(AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel, System.Windows.Forms.Control child)
|
||||||
AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel,
|
|
||||||
System.Windows.Forms.Control child)
|
|
||||||
{
|
{
|
||||||
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
||||||
panel.Controls.Add(child);
|
panel.Controls.Add(child);
|
||||||
|
|
@ -461,9 +435,7 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
panel.Padding = new System.Windows.Forms.Padding(7);
|
panel.Padding = new System.Windows.Forms.Padding(7);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupTitle(
|
private static void SetupTitle(System.Windows.Forms.Label label, string text)
|
||||||
System.Windows.Forms.Label label,
|
|
||||||
string text)
|
|
||||||
{
|
{
|
||||||
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
label.BackColor = System.Drawing.Color.Transparent;
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
|
@ -474,9 +446,7 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
label.AutoEllipsis = true;
|
label.AutoEllipsis = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupCaption(
|
private static void SetupCaption(System.Windows.Forms.Label label, string text)
|
||||||
System.Windows.Forms.Label label,
|
|
||||||
string text)
|
|
||||||
{
|
{
|
||||||
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
label.BackColor = System.Drawing.Color.Transparent;
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
|
@ -502,8 +472,7 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
label.Padding = Padding.Empty;
|
label.Padding = Padding.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupCombo(
|
private static void SetupCombo(System.Windows.Forms.ComboBox combo)
|
||||||
System.Windows.Forms.ComboBox combo)
|
|
||||||
{
|
{
|
||||||
combo.Dock = System.Windows.Forms.DockStyle.Fill;
|
combo.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
combo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
combo.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
|
@ -514,27 +483,25 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
combo.Margin = new System.Windows.Forms.Padding(0, 1, 0, 1);
|
combo.Margin = new System.Windows.Forms.Padding(0, 1, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupSlider(
|
private static void SetupParameterSlider(HmiParameterSliderRow slider, string titulo, Color accent, int minimum, int maximum, int value, HmiSliderValueFormat format)
|
||||||
AgroBase.Forms.IHM.Controls.Operacao.HmiSlider slider,
|
|
||||||
System.Drawing.Color accent,
|
|
||||||
int min,
|
|
||||||
int max,
|
|
||||||
int value)
|
|
||||||
{
|
{
|
||||||
slider.Dock = System.Windows.Forms.DockStyle.Fill;
|
slider.CompactMode = true;
|
||||||
slider.Minimum = min;
|
|
||||||
slider.Maximum = max;
|
slider.Dock = DockStyle.Fill;
|
||||||
slider.Value = value;
|
slider.Margin = Padding.Empty;
|
||||||
|
slider.Padding = Padding.Empty;
|
||||||
|
slider.MinimumSize = Size.Empty;
|
||||||
|
slider.BackColor = Color.Transparent;
|
||||||
|
|
||||||
|
slider.Titulo = titulo;
|
||||||
|
slider.Minimum = minimum;
|
||||||
|
slider.Maximum = maximum;
|
||||||
|
slider.ValueFormat = format;
|
||||||
slider.AccentColor = accent;
|
slider.AccentColor = accent;
|
||||||
slider.TrackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
slider.Value = value;
|
||||||
slider.ThumbColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
|
|
||||||
slider.Margin = System.Windows.Forms.Padding.Empty;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupAction(
|
private static void SetupAction(HmiSidebarButton button, string text, Color accent)
|
||||||
HmiSidebarButton button,
|
|
||||||
string text,
|
|
||||||
Color accent)
|
|
||||||
{
|
{
|
||||||
button.Dock = DockStyle.Fill;
|
button.Dock = DockStyle.Fill;
|
||||||
|
|
||||||
|
|
@ -550,14 +517,13 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
button.MaximumSize = Size.Empty;
|
button.MaximumSize = Size.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupWheel(
|
private static void SetupWheel(HmiWheelStatusCard card, string titulo)
|
||||||
HmiWheelStatusCard card,
|
|
||||||
string titulo)
|
|
||||||
{
|
{
|
||||||
card.Dock = DockStyle.Fill;
|
card.Dock = DockStyle.Fill;
|
||||||
card.Margin = new Padding(2, 0, 2, 0);
|
card.Margin = new Padding(2, 0, 2, 0);
|
||||||
card.MinimumSize = Size.Empty;
|
card.MinimumSize = Size.Empty;
|
||||||
|
|
||||||
|
card.Tag = titulo;
|
||||||
card.Titulo = titulo;
|
card.Titulo = titulo;
|
||||||
|
|
||||||
card.DirecionalSp = "+0,0°";
|
card.DirecionalSp = "+0,0°";
|
||||||
|
|
@ -568,7 +534,9 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
card.MovimentoAtual = "0 rpm";
|
card.MovimentoAtual = "0 rpm";
|
||||||
card.StatusMovimento = "Sem freio";
|
card.StatusMovimento = "Sem freio";
|
||||||
|
|
||||||
|
card.CheckDir.Tag = titulo;
|
||||||
card.CheckDir.Checked = true;
|
card.CheckDir.Checked = true;
|
||||||
|
card.CheckMov.Tag = titulo;
|
||||||
card.CheckMov.Checked = true;
|
card.CheckMov.Checked = true;
|
||||||
|
|
||||||
card.CorStatusDirecional = HmiTheme.Success;
|
card.CorStatusDirecional = HmiTheme.Success;
|
||||||
|
|
@ -577,11 +545,7 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
card.BringToFront();
|
card.BringToFront();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupCompactCard(
|
private static void SetupCompactCard(HmiCompactMetricCard card, string titulo, string valor, Color cor)
|
||||||
HmiCompactMetricCard card,
|
|
||||||
string titulo,
|
|
||||||
string valor,
|
|
||||||
Color cor)
|
|
||||||
{
|
{
|
||||||
card.Dock = DockStyle.Fill;
|
card.Dock = DockStyle.Fill;
|
||||||
card.Titulo = titulo;
|
card.Titulo = titulo;
|
||||||
|
|
@ -591,11 +555,7 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
card.MinimumSize = Size.Empty;
|
card.MinimumSize = Size.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupTelemetry(
|
private static void SetupTelemetry(AgroBase.Forms.IHM.Controls.Operacao.HmiTelemetryRow row, string icon, string title, string value)
|
||||||
AgroBase.Forms.IHM.Controls.Operacao.HmiTelemetryRow row,
|
|
||||||
string icon,
|
|
||||||
string title,
|
|
||||||
string value)
|
|
||||||
{
|
{
|
||||||
row.Dock = System.Windows.Forms.DockStyle.Fill;
|
row.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
row.IconText = icon;
|
row.IconText = icon;
|
||||||
|
|
@ -603,6 +563,7 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
row.Valor = value;
|
row.Valor = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.TableLayoutPanel rootLayout;
|
private System.Windows.Forms.TableLayoutPanel rootLayout;
|
||||||
|
|
@ -613,15 +574,9 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
private System.Windows.Forms.Label lblControleTitulo;
|
private System.Windows.Forms.Label lblControleTitulo;
|
||||||
private System.Windows.Forms.Label lblJoystick;
|
private System.Windows.Forms.Label lblJoystick;
|
||||||
private System.Windows.Forms.ComboBox cmbJoystick;
|
private System.Windows.Forms.ComboBox cmbJoystick;
|
||||||
private System.Windows.Forms.Label lblVelocidadeMax;
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow sliderVelocidadeMax;
|
||||||
private System.Windows.Forms.Label lblVelocidadeMaxValor;
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow sliderAngulo;
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiSlider sliderVelocidadeMax;
|
private AgroBase.Forms.IHM.Operacao.Parametros.Controls.HmiParameterSliderRow sliderVelocidadeDir;
|
||||||
private System.Windows.Forms.Label lblAngulo;
|
|
||||||
private System.Windows.Forms.Label lblAnguloValor;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiSlider sliderAngulo;
|
|
||||||
private System.Windows.Forms.Label lblVelocidadeDir;
|
|
||||||
private System.Windows.Forms.Label lblVelocidadeDirValor;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiSlider sliderVelocidadeDir;
|
|
||||||
private System.Windows.Forms.Label lblTipoMovimento;
|
private System.Windows.Forms.Label lblTipoMovimento;
|
||||||
private System.Windows.Forms.ComboBox cmbTipoMovimento;
|
private System.Windows.Forms.ComboBox cmbTipoMovimento;
|
||||||
private System.Windows.Forms.TableLayoutPanel acoesLayout;
|
private System.Windows.Forms.TableLayoutPanel acoesLayout;
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,29 @@
|
||||||
using AgroBase.Forms.IHM.Controls;
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using AgroBase.Forms.IHM.Controls.Operacao;
|
||||||
|
using AgroBase.Models;
|
||||||
|
using AgroBase.Models.Modules;
|
||||||
|
using AgroBase.Models.Operacoes;
|
||||||
|
using AgroBase.Models.Operadores;
|
||||||
|
using AgroBase.Services.Operadores;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
namespace AgroBase.Forms.IHM.Operacao
|
namespace AgroBase.Forms.IHM.Operacao
|
||||||
{
|
{
|
||||||
public partial class ucOperacaoMovimentacao : UserControl
|
public partial class ucOperacaoMovimentacao : UserControl
|
||||||
{
|
{
|
||||||
|
private bool _modoManualAtivado = false;
|
||||||
|
private bool _freioAtivado = false;
|
||||||
|
private bool _atualizandoSlider = false;
|
||||||
|
private bool _requisitandoCameraFrame;
|
||||||
|
private bool _controleDescartado;
|
||||||
|
OperacaoModel op => Variaveis.OperacaoEmAndamento;
|
||||||
|
|
||||||
public ucOperacaoMovimentacao()
|
public ucOperacaoMovimentacao()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
@ -21,8 +40,6 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
sliderAngulo.Value = 12;
|
sliderAngulo.Value = 12;
|
||||||
sliderVelocidadeDir.Value = 55;
|
sliderVelocidadeDir.Value = 55;
|
||||||
|
|
||||||
AtualizarLabelsSliders();
|
|
||||||
|
|
||||||
telemetryVelocidade.CorValor = HmiTheme.Info;
|
telemetryVelocidade.CorValor = HmiTheme.Info;
|
||||||
telemetryTensao.CorValor = HmiTheme.Success;
|
telemetryTensao.CorValor = HmiTheme.Success;
|
||||||
telemetryCorrente.CorValor = HmiTheme.Warning;
|
telemetryCorrente.CorValor = HmiTheme.Warning;
|
||||||
|
|
@ -55,39 +72,377 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
{
|
{
|
||||||
sliderVelocidadeMax.ValueChanged += delegate
|
sliderVelocidadeMax.ValueChanged += delegate
|
||||||
{
|
{
|
||||||
AtualizarLabelsSliders();
|
if (!_modoManualAtivado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (op?.Controle == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
op.Controle.PercentualVelocidadeSP = sliderVelocidadeMax.Value;
|
||||||
};
|
};
|
||||||
|
sliderVelocidadeMax.KeyDown += delegate { _atualizandoSlider = true; };
|
||||||
|
sliderVelocidadeMax.KeyUp += delegate { _atualizandoSlider = false; };
|
||||||
|
|
||||||
sliderAngulo.ValueChanged += delegate
|
sliderAngulo.ValueChanged += delegate
|
||||||
{
|
{
|
||||||
AtualizarLabelsSliders();
|
if (!_modoManualAtivado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (op?.Controle == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
op.Controle.Angulo = sliderAngulo.Value;
|
||||||
};
|
};
|
||||||
|
sliderAngulo.KeyDown += delegate { _atualizandoSlider = true; };
|
||||||
|
sliderAngulo.KeyUp += delegate { _atualizandoSlider = false; };
|
||||||
|
|
||||||
sliderVelocidadeDir.ValueChanged += delegate
|
sliderVelocidadeDir.ValueChanged += delegate
|
||||||
{
|
{
|
||||||
AtualizarLabelsSliders();
|
if (!_modoManualAtivado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (op?.Parametros?.Controle == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
op.Parametros.Controle.DirVelocidadeMovimento = sliderVelocidadeDir.Value;
|
||||||
};
|
};
|
||||||
|
sliderVelocidadeDir.KeyDown += delegate { _atualizandoSlider = true; };
|
||||||
|
sliderVelocidadeDir.KeyUp += delegate { _atualizandoSlider = false; };
|
||||||
|
|
||||||
|
btnControleManual.Click += BtnControleManual_Click;
|
||||||
|
btnReferenciar.Click += BtnReferenciar_Click;
|
||||||
|
btnFreio.Click += BtnFreio_Click;
|
||||||
|
|
||||||
|
cmbTipoMovimento.SelectedIndexChanged += CmbTipoMovimento_SelectedIndexChanged;
|
||||||
|
|
||||||
|
cardET.CheckDir.CheckedChanged += CheckDir_CheckedChanged;
|
||||||
|
cardET.CheckMov.CheckedChanged += CheckMov_CheckedChanged;
|
||||||
|
cardDT.CheckDir.CheckedChanged += CheckDir_CheckedChanged;
|
||||||
|
cardDT.CheckMov.CheckedChanged += CheckMov_CheckedChanged;
|
||||||
|
cardEF.CheckDir.CheckedChanged += CheckDir_CheckedChanged;
|
||||||
|
cardEF.CheckMov.CheckedChanged += CheckMov_CheckedChanged;
|
||||||
|
cardDF.CheckDir.CheckedChanged += CheckDir_CheckedChanged;
|
||||||
|
cardDF.CheckMov.CheckedChanged += CheckMov_CheckedChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AtualizarLabelsSliders()
|
private void CheckMov_CheckedChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
double velocidadeKmh =
|
if (!_modoManualAtivado)
|
||||||
sliderVelocidadeMax.Value * 0.05;
|
return;
|
||||||
|
|
||||||
lblVelocidadeMaxValor.Text =
|
if (!(op?.DispMvd?.Dados?.Modulos?.Any() ?? false))
|
||||||
sliderVelocidadeMax.Value +
|
return;
|
||||||
"% · " +
|
|
||||||
velocidadeKmh.ToString("0.0") +
|
|
||||||
" km/h";
|
|
||||||
|
|
||||||
lblAnguloValor.Text =
|
var chb = sender as CheckBox;
|
||||||
"+" +
|
|
||||||
sliderAngulo.Value +
|
|
||||||
"°";
|
|
||||||
|
|
||||||
lblVelocidadeDirValor.Text =
|
var mod = op?.DispMvd?.Dados?.Modulos?.FirstOrDefault(x => x.Modulo_ID == chb.Tag.ToString())?.MovMotor;
|
||||||
sliderVelocidadeDir.Value +
|
if (mod == null)
|
||||||
"%";
|
return;
|
||||||
|
|
||||||
|
mod.Comandar = chb.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckDir_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!_modoManualAtivado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (!(op?.DispMvd?.Dados?.Modulos?.Any() ?? false))
|
||||||
|
return;
|
||||||
|
|
||||||
|
var chb = sender as CheckBox;
|
||||||
|
|
||||||
|
var mod = op?.DispMvd?.Dados?.Modulos?.FirstOrDefault(x => x.Modulo_ID == chb.Tag.ToString())?.DirMotor;
|
||||||
|
if (mod == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mod.Comandar = chb.Checked;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CmbTipoMovimento_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!_modoManualAtivado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (op?.Controle == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var mods = op?.DispMvd?.Dados?.Modulos;
|
||||||
|
|
||||||
|
op.Controle.DefinirTipoMovimento((TipoMovimentoDirecional)cmbTipoMovimento.SelectedIndex, mods);
|
||||||
|
|
||||||
|
AtualizarDadosRodas(cardET, mods, forcar: true);
|
||||||
|
AtualizarDadosRodas(cardDT, mods, forcar: true);
|
||||||
|
AtualizarDadosRodas(cardEF, mods, forcar: true);
|
||||||
|
AtualizarDadosRodas(cardDF, mods, forcar: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BtnFreio_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!_modoManualAtivado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (op?.Controle == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_freioAtivado = !_freioAtivado;
|
||||||
|
btnFreio.AccentColor = _freioAtivado ? HmiTheme.Danger : HmiTheme.Info;
|
||||||
|
btnFreio.BorderColor = _freioAtivado ? HmiTheme.Danger : HmiTheme.Info;
|
||||||
|
|
||||||
|
GeneralJoystick.ProcessarDadosControle(BotoesJoystick.Bolinha, !_freioAtivado, ForcarComando: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BtnReferenciar_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (!_modoManualAtivado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (op?.DispMvd == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
GeneralJoystick.ProcessarDadosControle(BotoesJoystick.R3, false, ForcarComando: true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void BtnControleManual_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
_modoManualAtivado = !_modoManualAtivado;
|
||||||
|
btnControleManual.AccentColor = _modoManualAtivado ? HmiTheme.Danger : HmiTheme.Info;
|
||||||
|
btnControleManual.BorderColor = _modoManualAtivado ? HmiTheme.Danger : HmiTheme.Info;
|
||||||
|
|
||||||
|
btnReferenciar.AccentColor = _modoManualAtivado ? HmiTheme.Info : HmiTheme.Disabled;
|
||||||
|
btnReferenciar.BackColor = _modoManualAtivado ? HmiTheme.Info : HmiTheme.Disabled;
|
||||||
|
btnFreio.AccentColor = _modoManualAtivado ? HmiTheme.Info : HmiTheme.Disabled;
|
||||||
|
btnFreio.BackColor = _modoManualAtivado ? HmiTheme.Info : HmiTheme.Disabled;
|
||||||
|
|
||||||
|
op.Parametros.Controle.ControleManualAcionado = _modoManualAtivado;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AtualizarDadosTela()
|
||||||
|
{
|
||||||
|
var dados = op?.Sensoriamento;
|
||||||
|
var mods = op?.DispMvd?.Dados?.Modulos;
|
||||||
|
|
||||||
|
AtualizarDadosControle(op?.Controle, op?.Parametros?.Controle);
|
||||||
|
|
||||||
|
AtualizarDadosRodas(cardET, mods);
|
||||||
|
AtualizarDadosRodas(cardDT, mods);
|
||||||
|
AtualizarDadosRodas(cardEF, mods);
|
||||||
|
AtualizarDadosRodas(cardDF, mods);
|
||||||
|
|
||||||
|
AtualizarDadosCamera(dados?.Cameras?.FirstOrDefault(x => x.dispositivo == Enums.T_Code.Snr), dados?.OperadorSaude?.ModulosSaude?.FirstOrDefault(x => x.modulo == T_Code.Snr)?.saude ?? 0);
|
||||||
|
|
||||||
|
AtualizarDadosSonar(dados.OperadorVisual);
|
||||||
|
|
||||||
|
AtualizarDadosImu(dados.IMU);
|
||||||
|
|
||||||
|
AtualizarDadosTelemetria(dados);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AtualizarDadosControle(OperacaoControleModel controle, OperacaoParametrosControleModel parametros)
|
||||||
|
{
|
||||||
|
AtualizarListaJoysticks();
|
||||||
|
|
||||||
|
if (_atualizandoSlider)
|
||||||
|
return;
|
||||||
|
|
||||||
|
sliderVelocidadeMax.VelocidadeMaximaKmh = FuncoesMatematicas.CalculaVelocidadeRPM(VariaveisEquipamento.RPM_Max_Roda);
|
||||||
|
sliderVelocidadeMax.Value = (int)Limitar(controle?.PercentualVelocidadeSP ?? 0, sliderVelocidadeMax.Minimum, sliderVelocidadeMax.Maximum);
|
||||||
|
sliderAngulo.Value = (int)Limitar(controle?.Angulo ?? 0, sliderAngulo.Minimum, sliderAngulo.Maximum);
|
||||||
|
sliderVelocidadeDir.Value = (int)Limitar(parametros?.DirVelocidadeMovimento ?? 0, sliderVelocidadeDir.Minimum, sliderVelocidadeDir.Maximum);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarListaJoysticks()
|
||||||
|
{
|
||||||
|
string joystickSelecionado = cmbJoystick.SelectedItem as string;
|
||||||
|
string[] itemsAntigos = cmbJoystick.Items.Cast<string>().ToArray();
|
||||||
|
GeneralJoystick.AtualizaDispositivo();
|
||||||
|
string[] itemsNovos = GeneralJoystick.JoysticksConectados.ToArray();
|
||||||
|
|
||||||
|
if (itemsAntigos.SequenceEqual(itemsNovos))
|
||||||
|
return;
|
||||||
|
|
||||||
|
cmbJoystick.BeginUpdate();
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
cmbJoystick.Items.Clear();
|
||||||
|
cmbJoystick.Items.AddRange(itemsNovos);
|
||||||
|
|
||||||
|
string joystickConectado = GeneralJoystick.JoystickConectado?.Information?.InstanceName;
|
||||||
|
|
||||||
|
int indice = -1;
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(joystickConectado))
|
||||||
|
indice = cmbJoystick.Items.IndexOf(joystickConectado);
|
||||||
|
|
||||||
|
if (indice < 0 && !string.IsNullOrWhiteSpace(joystickSelecionado))
|
||||||
|
indice = cmbJoystick.Items.IndexOf(joystickSelecionado);
|
||||||
|
|
||||||
|
if (indice < 0 && cmbJoystick.Items.Count > 0)
|
||||||
|
indice = 0;
|
||||||
|
|
||||||
|
cmbJoystick.SelectedIndex = indice;
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
cmbJoystick.EndUpdate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosRodas(HmiWheelStatusCard card, List<ModuloMvdModel> Mods, bool forcar = false)
|
||||||
|
{
|
||||||
|
if (_modoManualAtivado && !forcar)
|
||||||
|
return;
|
||||||
|
|
||||||
|
var Dir = Mods.FirstOrDefault(x => x.Modulo_ID == card.Tag.ToString())?.DirMotor;
|
||||||
|
var Mov = Mods.FirstOrDefault(x => x.Modulo_ID == card.Tag.ToString())?.MovMotor;
|
||||||
|
|
||||||
|
card.AtualizarDados(
|
||||||
|
dir_em_uso: Dir?.Comandar ?? false,
|
||||||
|
dir_ang_sp: Dir?.Angulo_SP ?? 0,
|
||||||
|
dir_ang_at: Dir?.AnguloReal ?? 0,
|
||||||
|
dir_sentido: Dir?.SentidoReal ?? Sentido.Parado,
|
||||||
|
mov_em_uso: Mov?.Comandar ?? false,
|
||||||
|
mov_vel_sp: Mov?.RPM_SP ?? 0,
|
||||||
|
mov_vel_at: Mov?.RPM_Roda ?? 0,
|
||||||
|
mov_freio: Mov?.UltimoFreioSP ?? false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void AtualizarDadosCamera(CameraWorkerItemModel dados, double saude)
|
||||||
|
{
|
||||||
|
lblCameraStatus.Text = $"FPS {dados?.fps ?? 0:F0} · {dados?.stream_kbps ?? 0:F1} MB/s · Saúde {saude:F0}%";
|
||||||
|
|
||||||
|
if (!_requisitandoCameraFrame)
|
||||||
|
_ = RequisitarCameraFrameAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task RequisitarCameraFrameAsync()
|
||||||
|
{
|
||||||
|
if (_requisitandoCameraFrame || _controleDescartado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_requisitandoCameraFrame = true;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TipoFrameCamera tipoFrame = (TipoFrameCamera)cmbTipoFrame.SelectedIndex;
|
||||||
|
|
||||||
|
var frame = await VisualWorkerService.GetCameraFrame(tipoFrame);
|
||||||
|
|
||||||
|
if (_controleDescartado || frame == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Image imagemRecebida = frame.image();
|
||||||
|
|
||||||
|
if (imagemRecebida == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Garante que o PictureBox receba uma imagem independente
|
||||||
|
// de streams ou buffers internos do frame.
|
||||||
|
Image imagemSegura;
|
||||||
|
|
||||||
|
using (imagemRecebida)
|
||||||
|
{
|
||||||
|
imagemSegura = new Bitmap(imagemRecebida);
|
||||||
|
}
|
||||||
|
|
||||||
|
AtualizarImagemPainel(picCamera, imagemSegura);
|
||||||
|
}
|
||||||
|
catch (OutOfMemoryException ex)
|
||||||
|
{
|
||||||
|
// Em System.Drawing isso também pode significar
|
||||||
|
// imagem ou stream inválido, não só falta real de RAM.
|
||||||
|
Variaveis.MostrarLog("[IHM][Câmera] Frame inválido ou erro de memória: " + ex.Message);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Variaveis.MostrarLog("[IHM][Câmera] Erro ao obter frame: " + ex.Message);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_requisitandoCameraFrame = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarImagemPainel(PictureBox pictureBox, Image novaImagem)
|
||||||
|
{
|
||||||
|
if (pictureBox == null)
|
||||||
|
{
|
||||||
|
novaImagem?.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pictureBox.IsDisposed || pictureBox.Disposing || _controleDescartado)
|
||||||
|
{
|
||||||
|
novaImagem?.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pictureBox.InvokeRequired)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pictureBox.BeginInvoke(new Action<PictureBox, Image>(AtualizarImagemPainel), pictureBox, novaImagem);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
novaImagem?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Image imagemAnterior = pictureBox.Image;
|
||||||
|
pictureBox.Image = novaImagem;
|
||||||
|
imagemAnterior?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosSonar(VisualWorkerModel dados)
|
||||||
|
{
|
||||||
|
cardSonarModo.Valor = dados?.Analises?.matriz_confianca?.block?.decision?.mode ?? "N/A";
|
||||||
|
cardSonarFator.Valor = (dados?.Analises?.matriz_confianca?.block?.decision?.v_max_sugerida_mps ?? 0f).ToString("F2") + "%";
|
||||||
|
cardSonarProximo.Valor = (dados?.Analises?.matriz_confianca?.block?.decision?.dist_necessaria ?? 0f).ToString("F2") + " m";
|
||||||
|
cardSonarLivreEsq.Valor = "0,00 m";
|
||||||
|
cardSonarLivreDir.Valor = "0,00 m";
|
||||||
|
cardSonarCorredor.Valor = (dados?.Analises?.segmentacao?.status_corredor ?? StatusCarroMapa.Indefinido).ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosImu(ModuloIMUModel dados)
|
||||||
|
{
|
||||||
|
cardImuModo.Valor = dados?.risk_level ?? "N/A";
|
||||||
|
cardImuFator.Valor = (dados?.velocidade_factor ?? 0f).ToString("F2");
|
||||||
|
cardImuMotivo.Valor = string.Join(", ", (dados?.motivos_risco ?? new System.Collections.Generic.List<string>()));
|
||||||
|
|
||||||
|
attitudeIndicator.FrontalDeg = dados.RollSeguro;
|
||||||
|
attitudeIndicator.LateralDeg = dados.PitchSeguro;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosTelemetria(OperacaoSensoriamentoConjuntoModel dados)
|
||||||
|
{
|
||||||
|
double velocidadeKmh = FuncoesMatematicas.ConverteMsParaKmh(dados?.Movimentacao?.VelocidadeMediaMs ?? 0);
|
||||||
|
TimeSpan tempoMovimento = dados?.Movimentacao?.TempoMovimento ?? TimeSpan.Zero;
|
||||||
|
double autonomiaMinutos = dados?.Bateria?.TempoEstimadoRestanteMinutos ?? 0;
|
||||||
|
TimeSpan tempoAutonomia = TimeSpan.FromMinutes(Math.Max(0, autonomiaMinutos));
|
||||||
|
|
||||||
|
telemetryVelocidade.Valor = $"{velocidadeKmh:F2} km/h";
|
||||||
|
telemetryTensao.Valor = $"{dados?.Bateria?.TensaoInstantanea ?? 0:F2} V";
|
||||||
|
telemetryCorrente.Valor = $"{dados?.Bateria?.CorrenteInstantanea ?? 0:F2} A";
|
||||||
|
telemetryPotencia.Valor = $"{dados?.Bateria?.PotenciaInstantanea ?? 0:F2} W";
|
||||||
|
telemetryRpm.Valor = $"{dados?.Movimentacao?.RPMRodaMedio ?? 0:F0} rpm";
|
||||||
|
telemetryDistancia.Valor = $"{dados?.Movimentacao?.DistanciaPercorridaTotal ?? 0:F2} m";
|
||||||
|
telemetryTempo.Valor = tempoMovimento.ToString(@"hh\:mm\:ss");
|
||||||
|
telemetryVelMedia.Valor = $"{velocidadeKmh:F2} km/h";
|
||||||
|
telemetryAutonomiaM.Valor = $"{dados?.Bateria?.DistanciaEstimadaRestanteMetros ?? 0:F0} m";
|
||||||
|
telemetryAutonomiaTempo.Valor = tempoAutonomia.ToString(@"hh\:mm\:ss");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static double Limitar(double valor, double minimo, double maximo)
|
||||||
|
{
|
||||||
|
return Math.Max(minimo, Math.Min(maximo, valor));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,8 @@
|
||||||
|
|
||||||
protected override void Dispose(bool disposing)
|
protected override void Dispose(bool disposing)
|
||||||
{
|
{
|
||||||
if (disposing &&
|
if (disposing && components != null)
|
||||||
components != null)
|
|
||||||
{
|
|
||||||
components.Dispose();
|
components.Dispose();
|
||||||
}
|
|
||||||
|
|
||||||
base.Dispose(disposing);
|
base.Dispose(disposing);
|
||||||
}
|
}
|
||||||
|
|
@ -20,514 +17,199 @@
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.rootLayout = new System.Windows.Forms.TableLayoutPanel();
|
this.rootLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
this.leftLayout = new System.Windows.Forms.TableLayoutPanel();
|
this.tabsLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.btnAbaMovimento = new System.Windows.Forms.Button();
|
||||||
|
this.btnAbaDirecional = new System.Windows.Forms.Button();
|
||||||
|
this.btnAbaAtuador = new System.Windows.Forms.Button();
|
||||||
|
this.btnAbaMapa = new System.Windows.Forms.Button();
|
||||||
|
|
||||||
this.pnlGeral = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
this.pnlDescricaoAba = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
this.geralLayout = new System.Windows.Forms.TableLayoutPanel();
|
this.lblDescricaoAba = new System.Windows.Forms.Label();
|
||||||
this.lblGeralTitulo = new System.Windows.Forms.Label();
|
|
||||||
this.lblModoOperacao = new System.Windows.Forms.Label();
|
|
||||||
this.btnModoManual = new System.Windows.Forms.Button();
|
|
||||||
this.btnModoMapaGps = new System.Windows.Forms.Button();
|
|
||||||
this.toggleRegistrarDados = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
|
|
||||||
this.pnlMovimento = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
this.pnlConteudo = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
this.movimentoLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.lblMovimentoTitulo = new System.Windows.Forms.Label();
|
|
||||||
this.movTogglesLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.toggleMovAutomatico = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.toggleMovSonar = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.toggleParadaObstaculo = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.toggleMovImu = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.toggleParadaInclinacao = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.toggleFrenagemParar = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.movValuesLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.paramVelSemErvas = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramVelComErvas = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
|
|
||||||
this.pnlDirecional = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
|
||||||
this.direcionalLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.lblDirecionalTitulo = new System.Windows.Forms.Label();
|
|
||||||
this.dirTogglesLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.toggleDirAutomatico = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.toggleDirSonar = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.toggleDirImu = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.toggleImuPrefereArco = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.dirValuesLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.paramAnguloMaximo = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramVelMovimentoDir = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.pnlTipoControle = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
|
||||||
this.tipoControleLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.lblTipoControle = new System.Windows.Forms.Label();
|
|
||||||
this.btnControleMpc = new System.Windows.Forms.Button();
|
|
||||||
this.btnControlePid = new System.Windows.Forms.Button();
|
|
||||||
|
|
||||||
this.pnlAtuador = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
|
||||||
this.atuadorLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.lblAtuadorTitulo = new System.Windows.Forms.Label();
|
|
||||||
this.togglePulverizadorAutomatico = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow();
|
|
||||||
this.cmbModoAgitador = new System.Windows.Forms.ComboBox();
|
|
||||||
this.atuadorValuesLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.paramBicosEmUso = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramCapacidadeReservatorio = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramPressaoLinha = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramTelaIniciar = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramAlturaArea = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramErvasOn = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramErvasOff = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
|
|
||||||
this.pnlMpc = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
|
||||||
this.mpcLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.lblMpcTitulo = new System.Windows.Forms.Label();
|
|
||||||
this.paramHorizonte = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
this.paramAnteciparFim = new AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox();
|
|
||||||
|
|
||||||
this.rightLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.pnlMapa = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
|
||||||
this.mapLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.mapHeaderLayout = new System.Windows.Forms.TableLayoutPanel();
|
|
||||||
this.lblMapaTitulo = new System.Windows.Forms.Label();
|
|
||||||
this.btnMapaBonito = new System.Windows.Forms.Button();
|
|
||||||
this.btnMapaDinamico = new System.Windows.Forms.Button();
|
|
||||||
this.pnlMapaVisual = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
|
||||||
this.lblMapaPlaceholder = new System.Windows.Forms.Label();
|
|
||||||
this.lblMapaAjuda = new System.Windows.Forms.Label();
|
|
||||||
|
|
||||||
|
this.footerPanel = new AgroBase.Forms.IHM.Controls.HmiRoundedPanel();
|
||||||
this.footerLayout = new System.Windows.Forms.TableLayoutPanel();
|
this.footerLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
this.btnAplicarAtual = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
|
|
||||||
this.btnSalvarParametros = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
|
this.lblModoOperacao = new System.Windows.Forms.Label();
|
||||||
|
this.cmbModoOperacao = new System.Windows.Forms.ComboBox();
|
||||||
|
|
||||||
|
this.posProcessamentoLayout = new System.Windows.Forms.TableLayoutPanel();
|
||||||
|
this.lblPosProcessamento = new System.Windows.Forms.Label();
|
||||||
|
this.checkPosProcessamento = new System.Windows.Forms.CheckBox();
|
||||||
|
|
||||||
|
this.btnRedefinir = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
|
||||||
|
this.btnSalvar = new AgroBase.Forms.IHM.Controls.HmiSidebarButton();
|
||||||
|
|
||||||
this.rootLayout.SuspendLayout();
|
this.rootLayout.SuspendLayout();
|
||||||
this.leftLayout.SuspendLayout();
|
this.tabsLayout.SuspendLayout();
|
||||||
this.pnlGeral.SuspendLayout();
|
this.pnlDescricaoAba.SuspendLayout();
|
||||||
this.geralLayout.SuspendLayout();
|
this.footerPanel.SuspendLayout();
|
||||||
this.pnlMovimento.SuspendLayout();
|
|
||||||
this.movimentoLayout.SuspendLayout();
|
|
||||||
this.movTogglesLayout.SuspendLayout();
|
|
||||||
this.movValuesLayout.SuspendLayout();
|
|
||||||
this.pnlDirecional.SuspendLayout();
|
|
||||||
this.direcionalLayout.SuspendLayout();
|
|
||||||
this.dirTogglesLayout.SuspendLayout();
|
|
||||||
this.dirValuesLayout.SuspendLayout();
|
|
||||||
this.pnlTipoControle.SuspendLayout();
|
|
||||||
this.tipoControleLayout.SuspendLayout();
|
|
||||||
this.pnlAtuador.SuspendLayout();
|
|
||||||
this.atuadorLayout.SuspendLayout();
|
|
||||||
this.atuadorValuesLayout.SuspendLayout();
|
|
||||||
this.pnlMpc.SuspendLayout();
|
|
||||||
this.mpcLayout.SuspendLayout();
|
|
||||||
this.rightLayout.SuspendLayout();
|
|
||||||
this.pnlMapa.SuspendLayout();
|
|
||||||
this.mapLayout.SuspendLayout();
|
|
||||||
this.mapHeaderLayout.SuspendLayout();
|
|
||||||
this.pnlMapaVisual.SuspendLayout();
|
|
||||||
this.footerLayout.SuspendLayout();
|
this.footerLayout.SuspendLayout();
|
||||||
|
this.posProcessamentoLayout.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
|
|
||||||
// root
|
// rootLayout
|
||||||
this.rootLayout.BackColor =
|
this.rootLayout.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
||||||
AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
this.rootLayout.ColumnCount = 1;
|
||||||
|
this.rootLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.rootLayout.Controls.Add(this.tabsLayout, 0, 0);
|
||||||
|
this.rootLayout.Controls.Add(this.pnlDescricaoAba, 0, 1);
|
||||||
|
this.rootLayout.Controls.Add(this.pnlConteudo, 0, 2);
|
||||||
|
this.rootLayout.Controls.Add(this.footerPanel, 0, 3);
|
||||||
|
this.rootLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.rootLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.rootLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.rootLayout.RowCount = 4;
|
||||||
|
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 45F));
|
||||||
|
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 28F));
|
||||||
|
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.rootLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 62F));
|
||||||
|
|
||||||
this.rootLayout.ColumnCount = 2;
|
// tabsLayout
|
||||||
|
this.tabsLayout.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.tabsLayout.ColumnCount = 4;
|
||||||
|
this.tabsLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||||
|
this.tabsLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||||
|
this.tabsLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||||
|
this.tabsLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
||||||
|
this.tabsLayout.Controls.Add(this.btnAbaMovimento, 0, 0);
|
||||||
|
this.tabsLayout.Controls.Add(this.btnAbaDirecional, 1, 0);
|
||||||
|
this.tabsLayout.Controls.Add(this.btnAbaAtuador, 2, 0);
|
||||||
|
this.tabsLayout.Controls.Add(this.btnAbaMapa, 3, 0);
|
||||||
|
this.tabsLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.tabsLayout.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
|
||||||
|
this.tabsLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.tabsLayout.RowCount = 1;
|
||||||
|
this.tabsLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
|
||||||
this.rootLayout.ColumnStyles.Add(
|
SetupTabButton(this.btnAbaMovimento, "↔ Movimento");
|
||||||
new System.Windows.Forms.ColumnStyle(
|
SetupTabButton(this.btnAbaDirecional, "◉ Direcional");
|
||||||
System.Windows.Forms.SizeType.Percent,
|
SetupTabButton(this.btnAbaAtuador, "♨ Atuador");
|
||||||
52F));
|
SetupTabButton(this.btnAbaMapa, "⌖ Mapa e Navegação");
|
||||||
|
|
||||||
this.rootLayout.ColumnStyles.Add(
|
// pnlDescricaoAba
|
||||||
new System.Windows.Forms.ColumnStyle(
|
this.pnlDescricaoAba.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
||||||
System.Windows.Forms.SizeType.Percent,
|
this.pnlDescricaoAba.Controls.Add(this.lblDescricaoAba);
|
||||||
48F));
|
this.pnlDescricaoAba.CornerRadius = 7;
|
||||||
|
this.pnlDescricaoAba.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.pnlDescricaoAba.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
|
||||||
|
this.pnlDescricaoAba.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
|
||||||
|
this.pnlDescricaoAba.Padding = new System.Windows.Forms.Padding(10, 0, 10, 0);
|
||||||
|
|
||||||
this.rootLayout.Controls.Add(
|
// lblDescricaoAba
|
||||||
this.leftLayout,
|
this.lblDescricaoAba.AutoEllipsis = true;
|
||||||
0,
|
this.lblDescricaoAba.BackColor = System.Drawing.Color.Transparent;
|
||||||
0);
|
this.lblDescricaoAba.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.lblDescricaoAba.Font = new System.Drawing.Font("Segoe UI", 7.2F);
|
||||||
|
this.lblDescricaoAba.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
||||||
|
this.lblDescricaoAba.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.lblDescricaoAba.Text = "Automação, assistências e velocidades de deslocamento";
|
||||||
|
this.lblDescricaoAba.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
|
|
||||||
this.rootLayout.Controls.Add(
|
// pnlConteudo
|
||||||
this.rightLayout,
|
this.pnlConteudo.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
||||||
1,
|
this.pnlConteudo.CornerRadius = 9;
|
||||||
0);
|
this.pnlConteudo.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.pnlConteudo.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
|
||||||
|
this.pnlConteudo.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
|
||||||
|
this.pnlConteudo.Padding = new System.Windows.Forms.Padding(6);
|
||||||
|
|
||||||
this.rootLayout.Dock =
|
// footerPanel
|
||||||
System.Windows.Forms.DockStyle.Fill;
|
this.footerPanel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
||||||
|
this.footerPanel.Controls.Add(this.footerLayout);
|
||||||
|
this.footerPanel.CornerRadius = 9;
|
||||||
|
this.footerPanel.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.footerPanel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
|
||||||
|
this.footerPanel.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.footerPanel.Padding = new System.Windows.Forms.Padding(8, 6, 8, 6);
|
||||||
|
|
||||||
this.rootLayout.Margin =
|
// footerLayout
|
||||||
new System.Windows.Forms.Padding(0);
|
this.footerLayout.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.footerLayout.ColumnCount = 5;
|
||||||
this.rootLayout.Padding =
|
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 55F));
|
||||||
new System.Windows.Forms.Padding(0);
|
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 128F));
|
||||||
|
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
// left
|
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 135F));
|
||||||
this.leftLayout.BackColor =
|
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 145F));
|
||||||
System.Drawing.Color.Transparent;
|
this.footerLayout.Controls.Add(this.lblModoOperacao, 0, 0);
|
||||||
|
this.footerLayout.Controls.Add(this.cmbModoOperacao, 1, 0);
|
||||||
this.leftLayout.ColumnCount = 1;
|
this.footerLayout.Controls.Add(this.posProcessamentoLayout, 2, 0);
|
||||||
|
this.footerLayout.Controls.Add(this.btnRedefinir, 3, 0);
|
||||||
this.leftLayout.ColumnStyles.Add(
|
this.footerLayout.Controls.Add(this.btnSalvar, 4, 0);
|
||||||
new System.Windows.Forms.ColumnStyle(
|
|
||||||
System.Windows.Forms.SizeType.Percent,
|
|
||||||
100F));
|
|
||||||
|
|
||||||
this.leftLayout.Controls.Add(
|
|
||||||
this.pnlGeral,
|
|
||||||
0,
|
|
||||||
0);
|
|
||||||
|
|
||||||
this.leftLayout.Controls.Add(
|
|
||||||
this.pnlMovimento,
|
|
||||||
0,
|
|
||||||
1);
|
|
||||||
|
|
||||||
this.leftLayout.Controls.Add(
|
|
||||||
this.pnlDirecional,
|
|
||||||
0,
|
|
||||||
2);
|
|
||||||
|
|
||||||
this.leftLayout.Controls.Add(
|
|
||||||
this.pnlAtuador,
|
|
||||||
0,
|
|
||||||
3);
|
|
||||||
|
|
||||||
this.leftLayout.Controls.Add(
|
|
||||||
this.pnlMpc,
|
|
||||||
0,
|
|
||||||
4);
|
|
||||||
|
|
||||||
this.leftLayout.Dock =
|
|
||||||
System.Windows.Forms.DockStyle.Fill;
|
|
||||||
|
|
||||||
this.leftLayout.Margin =
|
|
||||||
new System.Windows.Forms.Padding(
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
3,
|
|
||||||
0);
|
|
||||||
|
|
||||||
this.leftLayout.RowCount = 5;
|
|
||||||
|
|
||||||
this.leftLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 14F));
|
|
||||||
this.leftLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
|
||||||
this.leftLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 22F));
|
|
||||||
this.leftLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 27F));
|
|
||||||
this.leftLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 12F));
|
|
||||||
|
|
||||||
ConfigurePanel(this.pnlGeral, this.geralLayout);
|
|
||||||
ConfigurePanel(this.pnlMovimento, this.movimentoLayout);
|
|
||||||
ConfigurePanel(this.pnlDirecional, this.direcionalLayout);
|
|
||||||
ConfigurePanel(this.pnlAtuador, this.atuadorLayout);
|
|
||||||
ConfigurePanel(this.pnlMpc, this.mpcLayout);
|
|
||||||
|
|
||||||
// geral
|
|
||||||
this.geralLayout.ColumnCount = 4;
|
|
||||||
this.geralLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 23F));
|
|
||||||
this.geralLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 19F));
|
|
||||||
this.geralLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 19F));
|
|
||||||
this.geralLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 39F));
|
|
||||||
this.geralLayout.Controls.Add(this.lblGeralTitulo, 0, 0);
|
|
||||||
this.geralLayout.Controls.Add(this.lblModoOperacao, 0, 1);
|
|
||||||
this.geralLayout.Controls.Add(this.btnModoManual, 1, 1);
|
|
||||||
this.geralLayout.Controls.Add(this.btnModoMapaGps, 2, 1);
|
|
||||||
this.geralLayout.Controls.Add(this.toggleRegistrarDados, 3, 1);
|
|
||||||
this.geralLayout.SetColumnSpan(this.lblGeralTitulo, 4);
|
|
||||||
this.geralLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.geralLayout.RowCount = 2;
|
|
||||||
this.geralLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 23F));
|
|
||||||
this.geralLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
|
|
||||||
SetupTitle(this.lblGeralTitulo, "1 GERAL DA OPERAÇÃO");
|
|
||||||
|
|
||||||
this.lblModoOperacao.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.lblModoOperacao.Text = "Modo de operação";
|
|
||||||
this.lblModoOperacao.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
|
||||||
this.lblModoOperacao.Font = new System.Drawing.Font("Segoe UI", 7F);
|
|
||||||
this.lblModoOperacao.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
|
||||||
|
|
||||||
SetupChoiceButton(this.btnModoManual, "Manual");
|
|
||||||
SetupChoiceButton(this.btnModoMapaGps, "MapaGPS");
|
|
||||||
|
|
||||||
this.toggleRegistrarDados.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleRegistrarDados.Titulo = "Registrar dados para pós-processamento";
|
|
||||||
|
|
||||||
// movimento
|
|
||||||
this.movimentoLayout.ColumnCount = 2;
|
|
||||||
this.movimentoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58F));
|
|
||||||
this.movimentoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 42F));
|
|
||||||
this.movimentoLayout.Controls.Add(this.lblMovimentoTitulo, 0, 0);
|
|
||||||
this.movimentoLayout.Controls.Add(this.movTogglesLayout, 0, 1);
|
|
||||||
this.movimentoLayout.Controls.Add(this.movValuesLayout, 1, 1);
|
|
||||||
this.movimentoLayout.SetColumnSpan(this.lblMovimentoTitulo, 2);
|
|
||||||
this.movimentoLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.movimentoLayout.RowCount = 2;
|
|
||||||
this.movimentoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 23F));
|
|
||||||
this.movimentoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
|
|
||||||
SetupTitle(this.lblMovimentoTitulo, "2 MOVIMENTO");
|
|
||||||
|
|
||||||
this.movTogglesLayout.ColumnCount = 2;
|
|
||||||
this.movTogglesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
this.movTogglesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
this.movTogglesLayout.Controls.Add(this.toggleMovAutomatico, 0, 0);
|
|
||||||
this.movTogglesLayout.Controls.Add(this.toggleMovImu, 1, 0);
|
|
||||||
this.movTogglesLayout.Controls.Add(this.toggleMovSonar, 0, 1);
|
|
||||||
this.movTogglesLayout.Controls.Add(this.toggleParadaInclinacao, 1, 1);
|
|
||||||
this.movTogglesLayout.Controls.Add(this.toggleParadaObstaculo, 0, 2);
|
|
||||||
this.movTogglesLayout.Controls.Add(this.toggleFrenagemParar, 1, 2);
|
|
||||||
this.movTogglesLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.movTogglesLayout.RowCount = 3;
|
|
||||||
this.movTogglesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
|
||||||
this.movTogglesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
|
||||||
this.movTogglesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
|
|
||||||
|
|
||||||
this.toggleMovAutomatico.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleMovAutomatico.Titulo = "Movimento automático";
|
|
||||||
this.toggleMovSonar.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleMovSonar.Titulo = "Assistido por sonar";
|
|
||||||
this.toggleParadaObstaculo.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleParadaObstaculo.Titulo = "Parada por obstáculo";
|
|
||||||
this.toggleMovImu.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleMovImu.Titulo = "Assistido por IMU";
|
|
||||||
this.toggleParadaInclinacao.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleParadaInclinacao.Titulo = "Parada por inclinação";
|
|
||||||
this.toggleFrenagemParar.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleFrenagemParar.Titulo = "Frenagem ao parar";
|
|
||||||
|
|
||||||
this.movValuesLayout.ColumnCount = 1;
|
|
||||||
this.movValuesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
this.movValuesLayout.Controls.Add(this.paramVelSemErvas, 0, 0);
|
|
||||||
this.movValuesLayout.Controls.Add(this.paramVelComErvas, 0, 1);
|
|
||||||
this.movValuesLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.movValuesLayout.RowCount = 2;
|
|
||||||
this.movValuesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
this.movValuesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
|
|
||||||
SetupValueBox(this.paramVelSemErvas, "Vel. sem ervas", "%", 50, 0, 100, 0);
|
|
||||||
SetupValueBox(this.paramVelComErvas, "Vel. com ervas", "%", 35, 0, 100, 0);
|
|
||||||
|
|
||||||
// direcional
|
|
||||||
this.direcionalLayout.ColumnCount = 2;
|
|
||||||
this.direcionalLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 45F));
|
|
||||||
this.direcionalLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 55F));
|
|
||||||
this.direcionalLayout.Controls.Add(this.lblDirecionalTitulo, 0, 0);
|
|
||||||
this.direcionalLayout.Controls.Add(this.dirTogglesLayout, 0, 1);
|
|
||||||
this.direcionalLayout.Controls.Add(this.dirValuesLayout, 1, 1);
|
|
||||||
this.direcionalLayout.SetColumnSpan(this.lblDirecionalTitulo, 2);
|
|
||||||
this.direcionalLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.direcionalLayout.RowCount = 2;
|
|
||||||
this.direcionalLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 23F));
|
|
||||||
this.direcionalLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
|
|
||||||
SetupTitle(this.lblDirecionalTitulo, "3 DIRECIONAL");
|
|
||||||
|
|
||||||
this.dirTogglesLayout.ColumnCount = 1;
|
|
||||||
this.dirTogglesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
this.dirTogglesLayout.Controls.Add(this.toggleDirAutomatico, 0, 0);
|
|
||||||
this.dirTogglesLayout.Controls.Add(this.toggleDirSonar, 0, 1);
|
|
||||||
this.dirTogglesLayout.Controls.Add(this.toggleDirImu, 0, 2);
|
|
||||||
this.dirTogglesLayout.Controls.Add(this.toggleImuPrefereArco, 0, 3);
|
|
||||||
this.dirTogglesLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.dirTogglesLayout.RowCount = 4;
|
|
||||||
for (int i = 0; i < 4; i++)
|
|
||||||
this.dirTogglesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
|
||||||
|
|
||||||
this.toggleDirAutomatico.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleDirAutomatico.Titulo = "Direcional automático";
|
|
||||||
this.toggleDirSonar.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleDirSonar.Titulo = "Assistido por sonar";
|
|
||||||
this.toggleDirImu.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleDirImu.Titulo = "Assistido por IMU";
|
|
||||||
this.toggleImuPrefereArco.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.toggleImuPrefereArco.Titulo = "IMU prefere arco";
|
|
||||||
this.toggleImuPrefereArco.Checked = false;
|
|
||||||
|
|
||||||
this.dirValuesLayout.ColumnCount = 3;
|
|
||||||
this.dirValuesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
|
||||||
this.dirValuesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33F));
|
|
||||||
this.dirValuesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.34F));
|
|
||||||
this.dirValuesLayout.Controls.Add(this.paramAnguloMaximo, 0, 0);
|
|
||||||
this.dirValuesLayout.Controls.Add(this.paramVelMovimentoDir, 1, 0);
|
|
||||||
this.dirValuesLayout.Controls.Add(this.pnlTipoControle, 2, 0);
|
|
||||||
this.dirValuesLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
|
|
||||||
SetupValueBox(this.paramAnguloMaximo, "Ângulo máximo", "°", 45, 0, 90, 0);
|
|
||||||
SetupValueBox(this.paramVelMovimentoDir, "Vel. movimento", "%", 60, 0, 100, 0);
|
|
||||||
|
|
||||||
this.pnlTipoControle.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
|
||||||
this.pnlTipoControle.Controls.Add(this.tipoControleLayout);
|
|
||||||
this.pnlTipoControle.CornerRadius = 7;
|
|
||||||
this.pnlTipoControle.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.pnlTipoControle.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
|
|
||||||
this.pnlTipoControle.Margin = new System.Windows.Forms.Padding(2);
|
|
||||||
this.pnlTipoControle.Padding = new System.Windows.Forms.Padding(5);
|
|
||||||
|
|
||||||
this.tipoControleLayout.ColumnCount = 2;
|
|
||||||
this.tipoControleLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
this.tipoControleLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
this.tipoControleLayout.Controls.Add(this.lblTipoControle, 0, 0);
|
|
||||||
this.tipoControleLayout.Controls.Add(this.btnControleMpc, 0, 1);
|
|
||||||
this.tipoControleLayout.Controls.Add(this.btnControlePid, 1, 1);
|
|
||||||
this.tipoControleLayout.SetColumnSpan(this.lblTipoControle, 2);
|
|
||||||
this.tipoControleLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.tipoControleLayout.RowCount = 2;
|
|
||||||
this.tipoControleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 23F));
|
|
||||||
this.tipoControleLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
|
|
||||||
this.lblTipoControle.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.lblTipoControle.Text = "Tipo de controle";
|
|
||||||
this.lblTipoControle.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
|
||||||
this.lblTipoControle.Font = new System.Drawing.Font("Segoe UI", 7F);
|
|
||||||
this.lblTipoControle.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
|
||||||
|
|
||||||
SetupChoiceButton(this.btnControleMpc, "MPC");
|
|
||||||
SetupChoiceButton(this.btnControlePid, "PID");
|
|
||||||
|
|
||||||
// atuador
|
|
||||||
this.atuadorLayout.ColumnCount = 2;
|
|
||||||
this.atuadorLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 42F));
|
|
||||||
this.atuadorLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 58F));
|
|
||||||
this.atuadorLayout.Controls.Add(this.lblAtuadorTitulo, 0, 0);
|
|
||||||
this.atuadorLayout.Controls.Add(this.togglePulverizadorAutomatico, 1, 0);
|
|
||||||
this.atuadorLayout.Controls.Add(this.cmbModoAgitador, 0, 1);
|
|
||||||
this.atuadorLayout.Controls.Add(this.atuadorValuesLayout, 0, 2);
|
|
||||||
this.atuadorLayout.SetColumnSpan(this.atuadorValuesLayout, 2);
|
|
||||||
this.atuadorLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.atuadorLayout.RowCount = 3;
|
|
||||||
this.atuadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 27F));
|
|
||||||
this.atuadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 34F));
|
|
||||||
this.atuadorLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
|
|
||||||
SetupTitle(this.lblAtuadorTitulo, "4 ATUADOR");
|
|
||||||
|
|
||||||
this.togglePulverizadorAutomatico.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.togglePulverizadorAutomatico.Titulo = "Pulverizador automático";
|
|
||||||
|
|
||||||
this.cmbModoAgitador.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.cmbModoAgitador.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
|
||||||
this.cmbModoAgitador.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
|
||||||
this.cmbModoAgitador.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
|
|
||||||
this.cmbModoAgitador.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
|
|
||||||
this.cmbModoAgitador.Items.AddRange(new object[] { "Sem agitação", "Contínuo", "Intermitente" });
|
|
||||||
this.cmbModoAgitador.SelectedIndex = 1;
|
|
||||||
this.atuadorLayout.SetColumnSpan(this.cmbModoAgitador, 2);
|
|
||||||
|
|
||||||
this.atuadorValuesLayout.ColumnCount = 4;
|
|
||||||
this.atuadorValuesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
|
||||||
this.atuadorValuesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
|
||||||
this.atuadorValuesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
|
||||||
this.atuadorValuesLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 25F));
|
|
||||||
this.atuadorValuesLayout.Controls.Add(this.paramBicosEmUso, 0, 0);
|
|
||||||
this.atuadorValuesLayout.Controls.Add(this.paramCapacidadeReservatorio, 1, 0);
|
|
||||||
this.atuadorValuesLayout.Controls.Add(this.paramPressaoLinha, 2, 0);
|
|
||||||
this.atuadorValuesLayout.Controls.Add(this.paramTelaIniciar, 3, 0);
|
|
||||||
this.atuadorValuesLayout.Controls.Add(this.paramAlturaArea, 0, 1);
|
|
||||||
this.atuadorValuesLayout.Controls.Add(this.paramErvasOn, 1, 1);
|
|
||||||
this.atuadorValuesLayout.Controls.Add(this.paramErvasOff, 2, 1);
|
|
||||||
this.atuadorValuesLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.atuadorValuesLayout.RowCount = 2;
|
|
||||||
this.atuadorValuesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
this.atuadorValuesLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
|
||||||
|
|
||||||
SetupValueBox(this.paramBicosEmUso, "Bicos em uso", "", 6, 1, 12, 0);
|
|
||||||
SetupValueBox(this.paramCapacidadeReservatorio, "Capacidade reservatório", "L", 200, 50, 500, 0);
|
|
||||||
SetupValueBox(this.paramPressaoLinha, "Pressão da linha", "psi", 45, 0, 120, 0);
|
|
||||||
SetupValueBox(this.paramTelaIniciar, "% tela para iniciar", "%", 40, 0, 100, 0);
|
|
||||||
SetupValueBox(this.paramAlturaArea, "Altura da área", "%", 60, 0, 100, 0);
|
|
||||||
SetupValueBox(this.paramErvasOn, "% ervas ON", "%", 25, 0, 100, 0);
|
|
||||||
SetupValueBox(this.paramErvasOff, "% ervas OFF", "%", 15, 0, 100, 0);
|
|
||||||
|
|
||||||
// MPC
|
|
||||||
this.mpcLayout.ColumnCount = 3;
|
|
||||||
this.mpcLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F));
|
|
||||||
this.mpcLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F));
|
|
||||||
this.mpcLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 35F));
|
|
||||||
this.mpcLayout.Controls.Add(this.lblMpcTitulo, 0, 0);
|
|
||||||
this.mpcLayout.Controls.Add(this.paramHorizonte, 1, 0);
|
|
||||||
this.mpcLayout.Controls.Add(this.paramAnteciparFim, 2, 0);
|
|
||||||
this.mpcLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
|
|
||||||
SetupTitle(this.lblMpcTitulo, "5 MPC E NAVEGAÇÃO");
|
|
||||||
SetupValueBox(this.paramHorizonte, "Horizonte de predição", "m", 12, 0, 30, 1);
|
|
||||||
SetupValueBox(this.paramAnteciparFim, "Antecipar fim corredor", "m", 5, 0, 15, 1);
|
|
||||||
|
|
||||||
// right
|
|
||||||
this.rightLayout.BackColor = System.Drawing.Color.Transparent;
|
|
||||||
this.rightLayout.ColumnCount = 1;
|
|
||||||
this.rightLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
this.rightLayout.Controls.Add(this.pnlMapa, 0, 0);
|
|
||||||
this.rightLayout.Controls.Add(this.footerLayout, 0, 1);
|
|
||||||
this.rightLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.rightLayout.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
|
||||||
this.rightLayout.RowCount = 2;
|
|
||||||
this.rightLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 80F));
|
|
||||||
this.rightLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F));
|
|
||||||
|
|
||||||
ConfigurePanel(this.pnlMapa, this.mapLayout);
|
|
||||||
|
|
||||||
this.mapLayout.ColumnCount = 1;
|
|
||||||
this.mapLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
this.mapLayout.Controls.Add(this.mapHeaderLayout, 0, 0);
|
|
||||||
this.mapLayout.Controls.Add(this.pnlMapaVisual, 0, 1);
|
|
||||||
this.mapLayout.Controls.Add(this.lblMapaAjuda, 0, 2);
|
|
||||||
this.mapLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.mapLayout.RowCount = 3;
|
|
||||||
this.mapLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 31F));
|
|
||||||
this.mapLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
this.mapLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 35F));
|
|
||||||
|
|
||||||
this.mapHeaderLayout.ColumnCount = 3;
|
|
||||||
this.mapHeaderLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
|
||||||
this.mapHeaderLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 82F));
|
|
||||||
this.mapHeaderLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 90F));
|
|
||||||
this.mapHeaderLayout.Controls.Add(this.lblMapaTitulo, 0, 0);
|
|
||||||
this.mapHeaderLayout.Controls.Add(this.btnMapaBonito, 1, 0);
|
|
||||||
this.mapHeaderLayout.Controls.Add(this.btnMapaDinamico, 2, 0);
|
|
||||||
this.mapHeaderLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
|
|
||||||
SetupTitle(this.lblMapaTitulo, "6 MAPA DA OPERAÇÃO");
|
|
||||||
SetupChoiceButton(this.btnMapaBonito, "Mapa bonito");
|
|
||||||
SetupChoiceButton(this.btnMapaDinamico, "Mapa dinâmico");
|
|
||||||
|
|
||||||
this.pnlMapaVisual.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
|
||||||
this.pnlMapaVisual.Controls.Add(this.lblMapaPlaceholder);
|
|
||||||
this.pnlMapaVisual.CornerRadius = 8;
|
|
||||||
this.pnlMapaVisual.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.pnlMapaVisual.FillColor = System.Drawing.Color.FromArgb(18, 29, 22);
|
|
||||||
|
|
||||||
this.lblMapaPlaceholder.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.lblMapaPlaceholder.BackColor = System.Drawing.Color.Transparent;
|
|
||||||
this.lblMapaPlaceholder.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Success;
|
|
||||||
this.lblMapaPlaceholder.Font = new System.Drawing.Font("Consolas", 8.5F, System.Drawing.FontStyle.Bold);
|
|
||||||
this.lblMapaPlaceholder.Text =
|
|
||||||
"MAPA DA OPERAÇÃO\n\n" +
|
|
||||||
"01 02 03 04 05\n" +
|
|
||||||
"│ │ │ │ │\n" +
|
|
||||||
"│ │ │ │ │\n" +
|
|
||||||
"│ │ [ROVER] │ │\n" +
|
|
||||||
"│ │ │ │ │\n" +
|
|
||||||
"09 10 11 12\n\n" +
|
|
||||||
"8 ruas selecionadas";
|
|
||||||
this.lblMapaPlaceholder.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
|
||||||
|
|
||||||
this.lblMapaAjuda.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
this.lblMapaAjuda.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
|
|
||||||
this.lblMapaAjuda.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
|
||||||
this.lblMapaAjuda.Font = new System.Drawing.Font("Segoe UI", 7F, System.Drawing.FontStyle.Italic);
|
|
||||||
this.lblMapaAjuda.Text = "Toque nas ruas para selecionar ou desmarcar.";
|
|
||||||
this.lblMapaAjuda.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
|
||||||
|
|
||||||
// footer
|
|
||||||
this.footerLayout.ColumnCount = 2;
|
|
||||||
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 48F));
|
|
||||||
this.footerLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 52F));
|
|
||||||
this.footerLayout.Controls.Add(this.btnAplicarAtual, 0, 0);
|
|
||||||
this.footerLayout.Controls.Add(this.btnSalvarParametros, 1, 0);
|
|
||||||
this.footerLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.footerLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.footerLayout.Margin = new System.Windows.Forms.Padding(0);
|
this.footerLayout.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.footerLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.footerLayout.RowCount = 1;
|
||||||
|
this.footerLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
|
||||||
SetupAction(this.btnAplicarAtual, "APLICAR À OPERAÇÃO ATUAL", "▤", AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted);
|
// lblModoOperacao
|
||||||
SetupAction(this.btnSalvarParametros, "SALVAR PARÂMETROS", "▣", AgroBase.Forms.IHM.Controls.HmiTheme.Success);
|
SetupFooterLabel(this.lblModoOperacao, "Modo");
|
||||||
|
this.lblModoOperacao.Padding = new System.Windows.Forms.Padding(2, 0, 0, 0);
|
||||||
|
|
||||||
// user control
|
// cmbModoOperacao
|
||||||
|
this.cmbModoOperacao.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||||
|
this.cmbModoOperacao.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
|
||||||
|
this.cmbModoOperacao.Dock = System.Windows.Forms.DockStyle.None;
|
||||||
|
this.cmbModoOperacao.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cmbModoOperacao.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.cmbModoOperacao.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.cmbModoOperacao.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
|
||||||
|
this.cmbModoOperacao.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.cmbModoOperacao.Size = new System.Drawing.Size(120, 25);
|
||||||
|
|
||||||
|
// posProcessamentoLayout
|
||||||
|
this.posProcessamentoLayout.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.posProcessamentoLayout.ColumnCount = 2;
|
||||||
|
this.posProcessamentoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
this.posProcessamentoLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 30F));
|
||||||
|
this.posProcessamentoLayout.Controls.Add(this.lblPosProcessamento, 0, 0);
|
||||||
|
this.posProcessamentoLayout.Controls.Add(this.checkPosProcessamento, 1, 0);
|
||||||
|
this.posProcessamentoLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.posProcessamentoLayout.Margin = new System.Windows.Forms.Padding(6, 0, 8, 0);
|
||||||
|
this.posProcessamentoLayout.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.posProcessamentoLayout.RowCount = 1;
|
||||||
|
this.posProcessamentoLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
|
||||||
|
|
||||||
|
// lblPosProcessamento
|
||||||
|
this.lblPosProcessamento.AutoEllipsis = true;
|
||||||
|
this.lblPosProcessamento.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.lblPosProcessamento.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.lblPosProcessamento.Font = new System.Drawing.Font("Segoe UI", 7F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.lblPosProcessamento.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
||||||
|
this.lblPosProcessamento.Margin = new System.Windows.Forms.Padding(0, 0, 5, 0);
|
||||||
|
this.lblPosProcessamento.Text = "Registrar pós-processamento";
|
||||||
|
this.lblPosProcessamento.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||||
|
|
||||||
|
// checkPosProcessamento
|
||||||
|
this.checkPosProcessamento.Anchor = System.Windows.Forms.AnchorStyles.None;
|
||||||
|
this.checkPosProcessamento.Appearance = System.Windows.Forms.Appearance.Button;
|
||||||
|
this.checkPosProcessamento.AutoSize = false;
|
||||||
|
this.checkPosProcessamento.BackColor = System.Drawing.Color.FromArgb(30, 90, 46);
|
||||||
|
this.checkPosProcessamento.Checked = true;
|
||||||
|
this.checkPosProcessamento.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
|
this.checkPosProcessamento.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
this.checkPosProcessamento.Dock = System.Windows.Forms.DockStyle.None;
|
||||||
|
this.checkPosProcessamento.FlatAppearance.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Success;
|
||||||
|
this.checkPosProcessamento.FlatAppearance.BorderSize = 1;
|
||||||
|
this.checkPosProcessamento.FlatAppearance.CheckedBackColor = System.Drawing.Color.FromArgb(30, 90, 46);
|
||||||
|
this.checkPosProcessamento.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.checkPosProcessamento.Font = new System.Drawing.Font("Segoe UI Symbol", 8F, System.Drawing.FontStyle.Bold);
|
||||||
|
this.checkPosProcessamento.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Success;
|
||||||
|
this.checkPosProcessamento.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.checkPosProcessamento.Padding = System.Windows.Forms.Padding.Empty;
|
||||||
|
this.checkPosProcessamento.Size = new System.Drawing.Size(22, 22);
|
||||||
|
this.checkPosProcessamento.Text = "✓";
|
||||||
|
this.checkPosProcessamento.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
this.checkPosProcessamento.UseVisualStyleBackColor = false;
|
||||||
|
|
||||||
|
// btnRedefinir
|
||||||
|
SetupFooterAction(this.btnRedefinir, "REDEFINIR", "↻", AgroBase.Forms.IHM.Controls.HmiTheme.Warning);
|
||||||
|
|
||||||
|
// btnSalvar
|
||||||
|
SetupFooterAction(this.btnSalvar, "SALVAR", "▣", AgroBase.Forms.IHM.Controls.HmiTheme.Success);
|
||||||
|
|
||||||
|
// ucOperacaoParametros
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||||
this.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
this.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Background;
|
||||||
this.Controls.Add(this.rootLayout);
|
this.Controls.Add(this.rootLayout);
|
||||||
|
|
@ -536,183 +218,81 @@
|
||||||
this.Size = new System.Drawing.Size(784, 435);
|
this.Size = new System.Drawing.Size(784, 435);
|
||||||
|
|
||||||
this.rootLayout.ResumeLayout(false);
|
this.rootLayout.ResumeLayout(false);
|
||||||
this.leftLayout.ResumeLayout(false);
|
this.tabsLayout.ResumeLayout(false);
|
||||||
this.pnlGeral.ResumeLayout(false);
|
this.pnlDescricaoAba.ResumeLayout(false);
|
||||||
this.geralLayout.ResumeLayout(false);
|
this.footerPanel.ResumeLayout(false);
|
||||||
this.pnlMovimento.ResumeLayout(false);
|
|
||||||
this.movimentoLayout.ResumeLayout(false);
|
|
||||||
this.movTogglesLayout.ResumeLayout(false);
|
|
||||||
this.movValuesLayout.ResumeLayout(false);
|
|
||||||
this.pnlDirecional.ResumeLayout(false);
|
|
||||||
this.direcionalLayout.ResumeLayout(false);
|
|
||||||
this.dirTogglesLayout.ResumeLayout(false);
|
|
||||||
this.dirValuesLayout.ResumeLayout(false);
|
|
||||||
this.pnlTipoControle.ResumeLayout(false);
|
|
||||||
this.tipoControleLayout.ResumeLayout(false);
|
|
||||||
this.pnlAtuador.ResumeLayout(false);
|
|
||||||
this.atuadorLayout.ResumeLayout(false);
|
|
||||||
this.atuadorValuesLayout.ResumeLayout(false);
|
|
||||||
this.pnlMpc.ResumeLayout(false);
|
|
||||||
this.mpcLayout.ResumeLayout(false);
|
|
||||||
this.rightLayout.ResumeLayout(false);
|
|
||||||
this.pnlMapa.ResumeLayout(false);
|
|
||||||
this.mapLayout.ResumeLayout(false);
|
|
||||||
this.mapHeaderLayout.ResumeLayout(false);
|
|
||||||
this.pnlMapaVisual.ResumeLayout(false);
|
|
||||||
this.footerLayout.ResumeLayout(false);
|
this.footerLayout.ResumeLayout(false);
|
||||||
|
this.posProcessamentoLayout.ResumeLayout(false);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ConfigurePanel(
|
private static void SetupTabButton(System.Windows.Forms.Button button, string text)
|
||||||
AgroBase.Forms.IHM.Controls.HmiRoundedPanel panel,
|
|
||||||
System.Windows.Forms.Control child)
|
|
||||||
{
|
{
|
||||||
panel.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
button.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
|
||||||
panel.Controls.Add(child);
|
button.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
panel.CornerRadius = 9;
|
button.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
panel.Dock = System.Windows.Forms.DockStyle.Fill;
|
button.FlatAppearance.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
||||||
panel.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.Surface;
|
button.FlatAppearance.BorderSize = 1;
|
||||||
panel.Margin = new System.Windows.Forms.Padding(0, 0, 0, 3);
|
button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
panel.Padding = new System.Windows.Forms.Padding(7);
|
button.Font = new System.Drawing.Font("Segoe UI", 8.5F, System.Drawing.FontStyle.Bold);
|
||||||
|
button.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
||||||
|
button.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
|
||||||
|
button.Text = text;
|
||||||
|
button.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
button.UseVisualStyleBackColor = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupTitle(
|
private static void SetupFooterLabel(System.Windows.Forms.Label label, string text)
|
||||||
System.Windows.Forms.Label label,
|
|
||||||
string text)
|
|
||||||
{
|
{
|
||||||
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
label.AutoEllipsis = true;
|
||||||
label.BackColor = System.Drawing.Color.Transparent;
|
label.BackColor = System.Drawing.Color.Transparent;
|
||||||
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.Text;
|
label.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
label.Font = new System.Drawing.Font("Segoe UI", 9F, System.Drawing.FontStyle.Bold);
|
label.Font = new System.Drawing.Font("Segoe UI", 7.2F, System.Drawing.FontStyle.Bold);
|
||||||
|
label.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
||||||
|
label.Margin = System.Windows.Forms.Padding.Empty;
|
||||||
label.Text = text;
|
label.Text = text;
|
||||||
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
label.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
label.AutoEllipsis = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupChoiceButton(
|
private static void SetupFooterAction(AgroBase.Forms.IHM.Controls.HmiSidebarButton button, string text, string icon, System.Drawing.Color accent)
|
||||||
System.Windows.Forms.Button button,
|
|
||||||
string text)
|
|
||||||
{
|
{
|
||||||
button.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
button.Text = text;
|
|
||||||
button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
|
||||||
button.FlatAppearance.BorderColor = AgroBase.Forms.IHM.Controls.HmiTheme.Border;
|
|
||||||
button.BackColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
|
|
||||||
button.ForeColor = AgroBase.Forms.IHM.Controls.HmiTheme.TextMuted;
|
|
||||||
button.Font = new System.Drawing.Font("Segoe UI", 7F, System.Drawing.FontStyle.Bold);
|
|
||||||
button.Margin = new System.Windows.Forms.Padding(2);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void SetupValueBox(
|
|
||||||
AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox control,
|
|
||||||
string title,
|
|
||||||
string unit,
|
|
||||||
decimal value,
|
|
||||||
decimal min,
|
|
||||||
decimal max,
|
|
||||||
int decimals)
|
|
||||||
{
|
|
||||||
control.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
control.Titulo = title;
|
|
||||||
control.Unidade = unit;
|
|
||||||
control.Minimo = min;
|
|
||||||
control.Maximo = max;
|
|
||||||
control.CasasDecimais = decimals;
|
|
||||||
control.Valor = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void SetupAction(
|
|
||||||
AgroBase.Forms.IHM.Controls.HmiSidebarButton button,
|
|
||||||
string text,
|
|
||||||
string icon,
|
|
||||||
System.Drawing.Color accent)
|
|
||||||
{
|
|
||||||
button.Dock = System.Windows.Forms.DockStyle.Fill;
|
|
||||||
button.Text = text;
|
|
||||||
button.IconText = icon;
|
|
||||||
button.AccentColor = accent;
|
button.AccentColor = accent;
|
||||||
button.BorderColor = accent;
|
button.BorderColor = accent;
|
||||||
|
button.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
|
button.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
button.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
|
button.FillColor = AgroBase.Forms.IHM.Controls.HmiTheme.SurfaceRaised;
|
||||||
button.Margin = new System.Windows.Forms.Padding(3);
|
button.IconText = icon;
|
||||||
|
button.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||||
|
button.MaximumSize = System.Drawing.Size.Empty;
|
||||||
|
button.MinimumSize = System.Drawing.Size.Empty;
|
||||||
|
button.Text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.TableLayoutPanel rootLayout;
|
private System.Windows.Forms.TableLayoutPanel rootLayout;
|
||||||
private System.Windows.Forms.TableLayoutPanel leftLayout;
|
private System.Windows.Forms.TableLayoutPanel tabsLayout;
|
||||||
|
private System.Windows.Forms.Button btnAbaMovimento;
|
||||||
|
private System.Windows.Forms.Button btnAbaDirecional;
|
||||||
|
private System.Windows.Forms.Button btnAbaAtuador;
|
||||||
|
private System.Windows.Forms.Button btnAbaMapa;
|
||||||
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlGeral;
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlDescricaoAba;
|
||||||
private System.Windows.Forms.TableLayoutPanel geralLayout;
|
private System.Windows.Forms.Label lblDescricaoAba;
|
||||||
private System.Windows.Forms.Label lblGeralTitulo;
|
|
||||||
private System.Windows.Forms.Label lblModoOperacao;
|
|
||||||
private System.Windows.Forms.Button btnModoManual;
|
|
||||||
private System.Windows.Forms.Button btnModoMapaGps;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleRegistrarDados;
|
|
||||||
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlMovimento;
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlConteudo;
|
||||||
private System.Windows.Forms.TableLayoutPanel movimentoLayout;
|
|
||||||
private System.Windows.Forms.Label lblMovimentoTitulo;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel movTogglesLayout;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleMovAutomatico;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleMovSonar;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleParadaObstaculo;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleMovImu;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleParadaInclinacao;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleFrenagemParar;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel movValuesLayout;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramVelSemErvas;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramVelComErvas;
|
|
||||||
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlDirecional;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel direcionalLayout;
|
|
||||||
private System.Windows.Forms.Label lblDirecionalTitulo;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel dirTogglesLayout;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleDirAutomatico;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleDirSonar;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleDirImu;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow toggleImuPrefereArco;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel dirValuesLayout;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramAnguloMaximo;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramVelMovimentoDir;
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlTipoControle;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel tipoControleLayout;
|
|
||||||
private System.Windows.Forms.Label lblTipoControle;
|
|
||||||
private System.Windows.Forms.Button btnControleMpc;
|
|
||||||
private System.Windows.Forms.Button btnControlePid;
|
|
||||||
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlAtuador;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel atuadorLayout;
|
|
||||||
private System.Windows.Forms.Label lblAtuadorTitulo;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterToggleRow togglePulverizadorAutomatico;
|
|
||||||
private System.Windows.Forms.ComboBox cmbModoAgitador;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel atuadorValuesLayout;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramBicosEmUso;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramCapacidadeReservatorio;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramPressaoLinha;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramTelaIniciar;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramAlturaArea;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramErvasOn;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramErvasOff;
|
|
||||||
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlMpc;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel mpcLayout;
|
|
||||||
private System.Windows.Forms.Label lblMpcTitulo;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramHorizonte;
|
|
||||||
private AgroBase.Forms.IHM.Controls.Operacao.HmiParameterValueBox paramAnteciparFim;
|
|
||||||
|
|
||||||
private System.Windows.Forms.TableLayoutPanel rightLayout;
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlMapa;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel mapLayout;
|
|
||||||
private System.Windows.Forms.TableLayoutPanel mapHeaderLayout;
|
|
||||||
private System.Windows.Forms.Label lblMapaTitulo;
|
|
||||||
private System.Windows.Forms.Button btnMapaBonito;
|
|
||||||
private System.Windows.Forms.Button btnMapaDinamico;
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel pnlMapaVisual;
|
|
||||||
private System.Windows.Forms.Label lblMapaPlaceholder;
|
|
||||||
private System.Windows.Forms.Label lblMapaAjuda;
|
|
||||||
|
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiRoundedPanel footerPanel;
|
||||||
private System.Windows.Forms.TableLayoutPanel footerLayout;
|
private System.Windows.Forms.TableLayoutPanel footerLayout;
|
||||||
private AgroBase.Forms.IHM.Controls.HmiSidebarButton btnAplicarAtual;
|
|
||||||
private AgroBase.Forms.IHM.Controls.HmiSidebarButton btnSalvarParametros;
|
private System.Windows.Forms.Label lblModoOperacao;
|
||||||
|
private System.Windows.Forms.ComboBox cmbModoOperacao;
|
||||||
|
|
||||||
|
private System.Windows.Forms.TableLayoutPanel posProcessamentoLayout;
|
||||||
|
private System.Windows.Forms.Label lblPosProcessamento;
|
||||||
|
private System.Windows.Forms.CheckBox checkPosProcessamento;
|
||||||
|
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiSidebarButton btnRedefinir;
|
||||||
|
private AgroBase.Forms.IHM.Controls.HmiSidebarButton btnSalvar;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,133 +1,236 @@
|
||||||
using AgroBase.Forms.IHM.Controls;
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using AgroBase.Forms.IHM.Operacao.Parametros;
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
namespace AgroBase.Forms.IHM.Operacao
|
namespace AgroBase.Forms.IHM.Operacao
|
||||||
{
|
{
|
||||||
public partial class ucOperacaoParametros : UserControl
|
public partial class ucOperacaoParametros : UserControl
|
||||||
{
|
{
|
||||||
|
private readonly Dictionary<TipoAbaParametros, UserControl> _abas;
|
||||||
|
private TipoAbaParametros _abaAtual;
|
||||||
|
|
||||||
|
private readonly ucParametrosMovimento _ucMovimento;
|
||||||
|
private readonly ucParametrosDirecional _ucDirecional;
|
||||||
|
private readonly ucParametrosAtuador _ucAtuador;
|
||||||
|
private readonly ucParametrosMapa _ucMapa;
|
||||||
|
|
||||||
|
public event EventHandler RedefinirSolicitado;
|
||||||
|
public event EventHandler SalvarSolicitado;
|
||||||
|
public event EventHandler ModoOperacaoAlterado;
|
||||||
|
public event EventHandler RegistrarPosProcessamentoAlterado;
|
||||||
|
|
||||||
public ucOperacaoParametros()
|
public ucOperacaoParametros()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
_ucMovimento = new ucParametrosMovimento();
|
||||||
|
_ucDirecional = new ucParametrosDirecional();
|
||||||
|
_ucAtuador = new ucParametrosAtuador();
|
||||||
|
_ucMapa = new ucParametrosMapa();
|
||||||
|
|
||||||
|
_abas = new Dictionary<TipoAbaParametros, UserControl>();
|
||||||
|
_abas.Add(TipoAbaParametros.Movimento, _ucMovimento);
|
||||||
|
_abas.Add(TipoAbaParametros.Direcional, _ucDirecional);
|
||||||
|
_abas.Add(TipoAbaParametros.Atuador, _ucAtuador);
|
||||||
|
_abas.Add(TipoAbaParametros.Mapa, _ucMapa);
|
||||||
|
|
||||||
|
ConfigurarSubControles();
|
||||||
ConfigurarEstadoInicial();
|
ConfigurarEstadoInicial();
|
||||||
VincularEventos();
|
VincularEventos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void ConfigurarSubControles()
|
||||||
|
{
|
||||||
|
foreach (KeyValuePair<TipoAbaParametros, UserControl> item in _abas)
|
||||||
|
{
|
||||||
|
item.Value.Dock = DockStyle.Fill;
|
||||||
|
item.Value.Margin = Padding.Empty;
|
||||||
|
item.Value.Visible = false;
|
||||||
|
pnlConteudo.Controls.Add(item.Value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void ConfigurarEstadoInicial()
|
private void ConfigurarEstadoInicial()
|
||||||
{
|
{
|
||||||
btnMapaBonito.BackColor =
|
cmbModoOperacao.Items.Clear();
|
||||||
Color.FromArgb(31, 91, 43);
|
cmbModoOperacao.Items.AddRange(Enum.GetNames(typeof(ModoOperacao)));
|
||||||
|
|
||||||
btnMapaBonito.ForeColor =
|
if (cmbModoOperacao.Items.Count > 1)
|
||||||
HmiTheme.Text;
|
cmbModoOperacao.SelectedIndex = 1;
|
||||||
|
|
||||||
btnMapaBonito.FlatAppearance.BorderColor =
|
checkPosProcessamento.Checked = true;
|
||||||
HmiTheme.Success;
|
AtualizarAparenciaCheck(checkPosProcessamento);
|
||||||
|
|
||||||
btnModoMapaGps.BackColor =
|
AbrirAba(TipoAbaParametros.Movimento);
|
||||||
Color.FromArgb(31, 91, 43);
|
|
||||||
|
|
||||||
btnModoMapaGps.ForeColor =
|
|
||||||
HmiTheme.Text;
|
|
||||||
|
|
||||||
btnModoMapaGps.FlatAppearance.BorderColor =
|
|
||||||
HmiTheme.Success;
|
|
||||||
|
|
||||||
btnControleMpc.BackColor =
|
|
||||||
Color.FromArgb(31, 91, 43);
|
|
||||||
|
|
||||||
btnControleMpc.ForeColor =
|
|
||||||
HmiTheme.Text;
|
|
||||||
|
|
||||||
btnControleMpc.FlatAppearance.BorderColor =
|
|
||||||
HmiTheme.Success;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void VincularEventos()
|
private void VincularEventos()
|
||||||
{
|
{
|
||||||
btnModoManual.Click += delegate
|
btnAbaMovimento.Click += delegate { AbrirAba(TipoAbaParametros.Movimento); };
|
||||||
|
btnAbaDirecional.Click += delegate { AbrirAba(TipoAbaParametros.Direcional); };
|
||||||
|
btnAbaAtuador.Click += delegate { AbrirAba(TipoAbaParametros.Atuador); };
|
||||||
|
btnAbaMapa.Click += delegate { AbrirAba(TipoAbaParametros.Mapa); };
|
||||||
|
|
||||||
|
btnRedefinir.Click += delegate
|
||||||
{
|
{
|
||||||
SelecionarBotaoDuplo(
|
if (RedefinirSolicitado != null)
|
||||||
btnModoManual,
|
RedefinirSolicitado(this, EventArgs.Empty);
|
||||||
btnModoMapaGps);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
btnModoMapaGps.Click += delegate
|
btnSalvar.Click += delegate
|
||||||
{
|
{
|
||||||
SelecionarBotaoDuplo(
|
if (SalvarSolicitado != null)
|
||||||
btnModoMapaGps,
|
SalvarSolicitado(this, EventArgs.Empty);
|
||||||
btnModoManual);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
btnControleMpc.Click += delegate
|
cmbModoOperacao.SelectedIndexChanged += delegate
|
||||||
{
|
{
|
||||||
SelecionarBotaoDuplo(
|
if (ModoOperacaoAlterado != null)
|
||||||
btnControleMpc,
|
ModoOperacaoAlterado(this, EventArgs.Empty);
|
||||||
btnControlePid);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
btnControlePid.Click += delegate
|
checkPosProcessamento.CheckedChanged += delegate
|
||||||
{
|
{
|
||||||
SelecionarBotaoDuplo(
|
AtualizarAparenciaCheck(checkPosProcessamento);
|
||||||
btnControlePid,
|
|
||||||
btnControleMpc);
|
|
||||||
};
|
|
||||||
|
|
||||||
btnMapaBonito.Click += delegate
|
if (RegistrarPosProcessamentoAlterado != null)
|
||||||
{
|
RegistrarPosProcessamentoAlterado(this, EventArgs.Empty);
|
||||||
SelecionarBotaoDuplo(
|
|
||||||
btnMapaBonito,
|
|
||||||
btnMapaDinamico);
|
|
||||||
};
|
|
||||||
|
|
||||||
btnMapaDinamico.Click += delegate
|
|
||||||
{
|
|
||||||
SelecionarBotaoDuplo(
|
|
||||||
btnMapaDinamico,
|
|
||||||
btnMapaBonito);
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SelecionarBotaoDuplo(
|
private void AbrirAba(TipoAbaParametros aba)
|
||||||
Button selecionado,
|
|
||||||
Button outro)
|
|
||||||
{
|
{
|
||||||
AplicarEstadoBotao(
|
_abaAtual = aba;
|
||||||
selecionado,
|
|
||||||
true);
|
|
||||||
|
|
||||||
AplicarEstadoBotao(
|
foreach (KeyValuePair<TipoAbaParametros, UserControl> item in _abas)
|
||||||
outro,
|
item.Value.Visible = item.Key == aba;
|
||||||
false);
|
|
||||||
|
UserControl controleAtual;
|
||||||
|
if (_abas.TryGetValue(aba, out controleAtual))
|
||||||
|
{
|
||||||
|
controleAtual.BringToFront();
|
||||||
|
controleAtual.Visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AplicarEstadoBotao(
|
AplicarEstadoBotaoAba(btnAbaMovimento, aba == TipoAbaParametros.Movimento);
|
||||||
Button button,
|
AplicarEstadoBotaoAba(btnAbaDirecional, aba == TipoAbaParametros.Direcional);
|
||||||
bool selecionado)
|
AplicarEstadoBotaoAba(btnAbaAtuador, aba == TipoAbaParametros.Atuador);
|
||||||
|
AplicarEstadoBotaoAba(btnAbaMapa, aba == TipoAbaParametros.Mapa);
|
||||||
|
|
||||||
|
AtualizarDescricaoAba(aba);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDescricaoAba(TipoAbaParametros aba)
|
||||||
|
{
|
||||||
|
switch (aba)
|
||||||
|
{
|
||||||
|
case TipoAbaParametros.Movimento:
|
||||||
|
lblDescricaoAba.Text = "Automação, assistências e velocidades de deslocamento";
|
||||||
|
break;
|
||||||
|
case TipoAbaParametros.Direcional:
|
||||||
|
lblDescricaoAba.Text = "Controle direcional, assistências, ângulo e velocidade";
|
||||||
|
break;
|
||||||
|
case TipoAbaParametros.Atuador:
|
||||||
|
lblDescricaoAba.Text = "Pulverizador, agitador, reservatório e critérios de atuação";
|
||||||
|
break;
|
||||||
|
case TipoAbaParametros.Mapa:
|
||||||
|
lblDescricaoAba.Text = "Mapa da operação, seleção de ruas e parâmetros de navegação";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
lblDescricaoAba.Text = string.Empty;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void AplicarEstadoBotaoAba(Button button, bool selecionado)
|
||||||
{
|
{
|
||||||
if (selecionado)
|
if (selecionado)
|
||||||
{
|
{
|
||||||
button.BackColor =
|
button.BackColor = Color.FromArgb(46, 31, 63);
|
||||||
Color.FromArgb(31, 91, 43);
|
button.ForeColor = Color.FromArgb(190, 121, 255);
|
||||||
|
button.FlatAppearance.BorderColor = Color.FromArgb(170, 90, 240);
|
||||||
button.ForeColor =
|
|
||||||
HmiTheme.Text;
|
|
||||||
|
|
||||||
button.FlatAppearance.BorderColor =
|
|
||||||
HmiTheme.Success;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
button.BackColor =
|
button.BackColor = HmiTheme.Surface;
|
||||||
HmiTheme.SurfaceRaised;
|
button.ForeColor = HmiTheme.TextMuted;
|
||||||
|
button.FlatAppearance.BorderColor = HmiTheme.Border;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
button.ForeColor =
|
private static void AtualizarAparenciaCheck(CheckBox check)
|
||||||
HmiTheme.TextMuted;
|
{
|
||||||
|
if (check.Checked)
|
||||||
|
{
|
||||||
|
check.Text = "✓";
|
||||||
|
check.ForeColor = HmiTheme.Success;
|
||||||
|
check.BackColor = Color.FromArgb(30, 90, 46);
|
||||||
|
check.FlatAppearance.BorderColor = HmiTheme.Success;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
check.Text = "×";
|
||||||
|
check.ForeColor = HmiTheme.Danger;
|
||||||
|
check.BackColor = HmiTheme.Surface;
|
||||||
|
check.FlatAppearance.BorderColor = HmiTheme.Danger;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
button.FlatAppearance.BorderColor =
|
public string ModoOperacaoSelecionado
|
||||||
HmiTheme.Border;
|
{
|
||||||
|
get { return Convert.ToString(cmbModoOperacao.SelectedItem); }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (string.IsNullOrWhiteSpace(value))
|
||||||
|
return;
|
||||||
|
|
||||||
|
int index = cmbModoOperacao.FindStringExact(value);
|
||||||
|
if (index >= 0)
|
||||||
|
cmbModoOperacao.SelectedIndex = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool RegistrarPosProcessamento
|
||||||
|
{
|
||||||
|
get { return checkPosProcessamento.Checked; }
|
||||||
|
set { checkPosProcessamento.Checked = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public TipoAbaParametros AbaAtual
|
||||||
|
{
|
||||||
|
get { return _abaAtual; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public ucParametrosMovimento Movimento
|
||||||
|
{
|
||||||
|
get { return _ucMovimento; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public ucParametrosDirecional Direcional
|
||||||
|
{
|
||||||
|
get { return _ucDirecional; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public ucParametrosAtuador Atuador
|
||||||
|
{
|
||||||
|
get { return _ucAtuador; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public ucParametrosMapa Mapa
|
||||||
|
{
|
||||||
|
get { return _ucMapa; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum TipoAbaParametros
|
||||||
|
{
|
||||||
|
Movimento = 0,
|
||||||
|
Direcional = 1,
|
||||||
|
Atuador = 2,
|
||||||
|
Mapa = 3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -402,13 +402,7 @@
|
||||||
button.MaximumSize = System.Drawing.Size.Empty;
|
button.MaximumSize = System.Drawing.Size.Empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupHealth(
|
private static void SetupHealth(AgroBase.Forms.IHM.Controls.Operacao.HmiSprayerModuleHealthRow row, string icon, string title, string health, string status, System.Drawing.Color color)
|
||||||
AgroBase.Forms.IHM.Controls.Operacao.HmiSprayerModuleHealthRow row,
|
|
||||||
string icon,
|
|
||||||
string title,
|
|
||||||
string health,
|
|
||||||
string status,
|
|
||||||
System.Drawing.Color color)
|
|
||||||
{
|
{
|
||||||
row.Dock = System.Windows.Forms.DockStyle.Fill;
|
row.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
row.IconText = icon;
|
row.IconText = icon;
|
||||||
|
|
@ -430,9 +424,7 @@
|
||||||
combo.Margin = new System.Windows.Forms.Padding(0, 1, 0, 1);
|
combo.Margin = new System.Windows.Forms.Padding(0, 1, 0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetupNozzle(
|
private static void SetupNozzle(AgroBase.Forms.IHM.Controls.Operacao.HmiNozzleCard card, string code)
|
||||||
AgroBase.Forms.IHM.Controls.Operacao.HmiNozzleCard card,
|
|
||||||
string code)
|
|
||||||
{
|
{
|
||||||
card.Dock = System.Windows.Forms.DockStyle.Fill;
|
card.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
card.Codigo = code;
|
card.Codigo = code;
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,27 @@
|
||||||
using AgroBase.Forms.IHM.Controls;
|
using AgroBase.Forms.IHM.Controls;
|
||||||
using AgroBase.Forms.IHM.Controls.Operacao;
|
using AgroBase.Forms.IHM.Controls.Operacao;
|
||||||
|
using AgroBase.Models;
|
||||||
|
using AgroBase.Models.Operadores;
|
||||||
|
using AgroBase.Services.Operadores;
|
||||||
|
using Assimp.Unmanaged;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
namespace AgroBase.Forms.IHM.Operacao
|
namespace AgroBase.Forms.IHM.Operacao
|
||||||
{
|
{
|
||||||
public partial class ucOperacaoPulverizador : UserControl
|
public partial class ucOperacaoPulverizador : UserControl
|
||||||
{
|
{
|
||||||
private readonly List<HmiNozzleCard> _bicos =
|
private bool _requisitandoCameraFrame;
|
||||||
new List<HmiNozzleCard>();
|
private bool _controleDescartado;
|
||||||
|
|
||||||
|
OperacaoModel op => Variaveis.OperacaoEmAndamento;
|
||||||
|
|
||||||
|
private readonly List<HmiNozzleCard> _bicos = new List<HmiNozzleCard>();
|
||||||
|
|
||||||
public ucOperacaoPulverizador()
|
public ucOperacaoPulverizador()
|
||||||
{
|
{
|
||||||
|
|
@ -20,6 +31,205 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
VincularEventos();
|
VincularEventos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AtualizarDadosTela()
|
||||||
|
{
|
||||||
|
var dados = op?.Sensoriamento;
|
||||||
|
|
||||||
|
AtualizarDadosBomba();
|
||||||
|
AtualizarDadosAgitador();
|
||||||
|
AtualizarSaudeModulos();
|
||||||
|
AtualizarDadosCamera(dados?.Cameras?.FirstOrDefault(x => x.dispositivo == Enums.T_Code.Cam), dados?.OperadorSaude?.ModulosSaude?.FirstOrDefault(x => x.modulo == T_Code.Cam)?.saude ?? 0);
|
||||||
|
AtualizarDadosBicos(dados?.Atuador?.Bicos, dados?.OperadorSaude?.ModulosSaude?.FirstOrDefault(x => x.modulo == T_Code.Atu));
|
||||||
|
AtualizarDadosTelemetria(dados?.Atuador);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosBomba()
|
||||||
|
{
|
||||||
|
double pressaoSP = op?.Parametros?.Controle?.AtuPressaoLinha ?? 0;
|
||||||
|
bool bombaLigada = op?.Sensoriamento?.Atuador?.BombaLigada ?? false;
|
||||||
|
|
||||||
|
cardPressaoSp.Valor = pressaoSP.ToString("F1");
|
||||||
|
cardStatusBomba.Valor = bombaLigada ? "Ligada" : "Desligada";
|
||||||
|
cardStatusBomba.CorValor = bombaLigada ? HmiTheme.Success : HmiTheme.Danger;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosAgitador()
|
||||||
|
{
|
||||||
|
Enums.ModoAgitadorCalda modo = op?.Parametros?.Controle?.AtuAgitadorModo ?? Enums.ModoAgitadorCalda.SemAgitacao;
|
||||||
|
bool agitadorLigado = (op?.Sensoriamento?.Atuador?.PotenciaAgitador ?? 0) > 0;
|
||||||
|
|
||||||
|
cardModoAgitador.Valor = modo.ToString();
|
||||||
|
cardStatusAgitador.Valor = agitadorLigado ? "Ligado" : "Desligado";
|
||||||
|
cardStatusAgitador.CorValor = agitadorLigado ? HmiTheme.Success : HmiTheme.Danger;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarSaudeModulos()
|
||||||
|
{
|
||||||
|
var saude_m = op?.Sensoriamento?.OperadorSaude?.ModulosSaude;
|
||||||
|
var saude_i = saude_m?.FirstOrDefault(x => x.modulo == Enums.T_Code.Atu)?.saude_individual;
|
||||||
|
|
||||||
|
var saudeBomba = saude_i?.FirstOrDefault(x => x.label == op?.DispAtu?.Dados?.BombaPressurizadora?.ID);
|
||||||
|
var saudeAgitador = saude_i?.FirstOrDefault(x => x.label == op?.DispAtu?.Dados?.AgitadorDeCalda?.ID);
|
||||||
|
var saudeSensores = saude_i?.Where(x => op?.DispAtu?.Dados?.Sensores?.Where(y => y.Aferir)?.Select(y => y.ID).Contains(x.label) ?? false)?.ToList();
|
||||||
|
var saudeBicos = saude_i?.Where(x => op?.DispAtu?.Dados?.BicosPulverizadores?.Where(y => y.Comandar)?.Select(y => y.ID).Contains(x.label) ?? false)?.ToList();
|
||||||
|
var saudeCamera = saude_m?.FirstOrDefault(x => x.modulo == Enums.T_Code.Cam);
|
||||||
|
|
||||||
|
var saudeSensoresMedia = saudeSensores?.Average(x => x.saude) ?? 0;
|
||||||
|
Enums.StatusModulo saudeSensoresStatus =
|
||||||
|
saudeSensoresMedia >= 80 ? Enums.StatusModulo.Operante :
|
||||||
|
saudeSensoresMedia <= 0 ? Enums.StatusModulo.Falha :
|
||||||
|
Enums.StatusModulo.Alerta;
|
||||||
|
|
||||||
|
var saudeBicosMedia = saudeBicos?.Average(x => x.saude) ?? 0;
|
||||||
|
Enums.StatusModulo saudeBicosStatus =
|
||||||
|
saudeBicosMedia >= 80 ? Enums.StatusModulo.Operante :
|
||||||
|
saudeBicosMedia <= 0 ? Enums.StatusModulo.Falha :
|
||||||
|
Enums.StatusModulo.Alerta;
|
||||||
|
|
||||||
|
void DefinirSaudeModulo(HmiSprayerModuleHealthRow card, double saude, Enums.StatusModulo status)
|
||||||
|
{
|
||||||
|
card.Saude = saude.ToString("F0") + "%";
|
||||||
|
card.Status = status.ToString();
|
||||||
|
card.StatusColor =
|
||||||
|
status == Enums.StatusModulo.Operante ? HmiTheme.Success :
|
||||||
|
status == Enums.StatusModulo.Alerta ? HmiTheme.Warning :
|
||||||
|
status == Enums.StatusModulo.Falha ? HmiTheme.Danger :
|
||||||
|
status == Enums.StatusModulo.Desconectado ? HmiTheme.Disabled :
|
||||||
|
status == Enums.StatusModulo.Conectado ? HmiTheme.Info :
|
||||||
|
HmiTheme.Disabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
DefinirSaudeModulo(healthBomba, saudeBomba?.saude ?? 0, saudeBomba?.status ?? Enums.StatusModulo.Desconectado);
|
||||||
|
DefinirSaudeModulo(healthAgitador, saudeAgitador?.saude ?? 0, saudeAgitador?.status ?? Enums.StatusModulo.Desconectado);
|
||||||
|
DefinirSaudeModulo(healthSensores, saudeSensoresMedia, saudeSensoresStatus);
|
||||||
|
DefinirSaudeModulo(healthBicos, saudeBicosMedia, saudeBicosStatus);
|
||||||
|
DefinirSaudeModulo(healthCamera, saudeCamera?.saude ?? 0, saudeCamera?.status ?? Enums.StatusModulo.Desconectado);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void AtualizarDadosCamera(CameraWorkerItemModel dados, double saude)
|
||||||
|
{
|
||||||
|
lblVideoStatus.Text = $"FPS {dados?.fps ?? 0:F0} · {dados?.stream_kbps ?? 0:F1} MB/s · Saúde {saude:F0}%";
|
||||||
|
|
||||||
|
if (!_requisitandoCameraFrame)
|
||||||
|
_ = RequisitarCameraFrameAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task RequisitarCameraFrameAsync()
|
||||||
|
{
|
||||||
|
if (_requisitandoCameraFrame || _controleDescartado)
|
||||||
|
return;
|
||||||
|
|
||||||
|
_requisitandoCameraFrame = true;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
TipoFrameCamera tipoFrame = (TipoFrameCamera)cmbTipoFrame.SelectedIndex;
|
||||||
|
|
||||||
|
var frame = await WeedWorkerService.GetCameraFrame(tipoFrame);
|
||||||
|
|
||||||
|
if (_controleDescartado || frame == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Image imagemRecebida = frame.image();
|
||||||
|
|
||||||
|
if (imagemRecebida == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Garante que o PictureBox receba uma imagem independente
|
||||||
|
// de streams ou buffers internos do frame.
|
||||||
|
Image imagemSegura;
|
||||||
|
|
||||||
|
using (imagemRecebida)
|
||||||
|
{
|
||||||
|
imagemSegura = new Bitmap(imagemRecebida);
|
||||||
|
}
|
||||||
|
|
||||||
|
AtualizarImagemPainel(picVideo, imagemSegura);
|
||||||
|
}
|
||||||
|
catch (OutOfMemoryException ex)
|
||||||
|
{
|
||||||
|
// Em System.Drawing isso também pode significar
|
||||||
|
// imagem ou stream inválido, não só falta real de RAM.
|
||||||
|
Variaveis.MostrarLog("[IHM][Câmera] Frame inválido ou erro de memória: " + ex.Message);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
Variaveis.MostrarLog("[IHM][Câmera] Erro ao obter frame: " + ex.Message);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_requisitandoCameraFrame = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarImagemPainel(PictureBox pictureBox, Image novaImagem)
|
||||||
|
{
|
||||||
|
if (pictureBox == null)
|
||||||
|
{
|
||||||
|
novaImagem?.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pictureBox.IsDisposed || pictureBox.Disposing || _controleDescartado)
|
||||||
|
{
|
||||||
|
novaImagem?.Dispose();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pictureBox.InvokeRequired)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
pictureBox.BeginInvoke(new Action<PictureBox, Image>(AtualizarImagemPainel), pictureBox, novaImagem);
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
novaImagem?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Image imagemAnterior = pictureBox.Image;
|
||||||
|
pictureBox.Image = novaImagem;
|
||||||
|
imagemAnterior?.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosBicos(List<AtuadorBicoLogModel> dados, ManagerWorkerMessageResponseModulosPendentesModel saude)
|
||||||
|
{
|
||||||
|
foreach (var bico in dados)
|
||||||
|
{
|
||||||
|
var card = Bicos.FirstOrDefault(x => x.Codigo == bico.ID);
|
||||||
|
card.Atuacoes = bico.Atuacoes;
|
||||||
|
card.VazaoInstantanea = 0;
|
||||||
|
card.VazaoMedia = bico.MediaNivelFluxo;
|
||||||
|
card.TempoLigado = bico.TempoAtuado.ToString();
|
||||||
|
|
||||||
|
card.CommandOn = bico.Atuado;
|
||||||
|
card.ReadOn = bico.StatusBico;
|
||||||
|
card.State = saude?.saude_individual?.FirstOrDefault(x => x.label == bico.ID)?.status ?? StatusModulo.Desconectado;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AtualizarDadosTelemetria(AtuadorLogModel dados)
|
||||||
|
{
|
||||||
|
TimeSpan tempoAutonomia = TimeSpan.FromMinutes(Math.Max(0, dados?.TempoEstimadoRestanteMinutos ?? 0));
|
||||||
|
TimeSpan tempoPulverizador = TimeSpan.FromSeconds(Math.Max(0, dados?.TempoPulverizadorAtuado ?? 0));
|
||||||
|
|
||||||
|
telemetryReservatorio.Valor = (dados?.VolumeReservatorio ?? 0).ToString("F1") + " L";
|
||||||
|
telemetryVazaoInstantanea.Valor = (dados?.VazaoFluxoMLpSInstantaneaCorrigida ?? 0).ToString("F0") + " mL/s";
|
||||||
|
telemetryVazaoMedia.Valor = (dados?.VazaoFluxoMLpSMedia ?? 0).ToString("F0") + " mL/s";
|
||||||
|
telemetryPressaoSensor.Valor = (dados?.PressaoSensor ?? 0).ToString("F1") + " psi";
|
||||||
|
telemetryPressaoBomba.Valor = (dados?.PressaoAtualBomba ?? 0).ToString("F1") + " psi";
|
||||||
|
telemetryAutonomiaM.Valor = (dados?.DistanciaEstimadaRestanteMetros ?? 0).ToString("F1") + " m";
|
||||||
|
telemetryAutonomiaTempo.Valor = FormatarTempo(tempoAutonomia);
|
||||||
|
telemetryVolumeAplicado.Valor = (dados?.VolumeVazaoML ?? 0).ToString("F1") + " L";
|
||||||
|
telemetryLitroMetro.Valor = (dados?.LPorMetro ?? 0).ToString("F1") + " L/m";
|
||||||
|
telemetryInfestacao.Valor = (dados?.PercentualErvasTerreno ?? 0).ToString("F1") + "% · Baixa";
|
||||||
|
telemetryTempoLigado.Valor = FormatarTempo(tempoPulverizador);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void RegistrarBicos()
|
private void RegistrarBicos()
|
||||||
{
|
{
|
||||||
_bicos.Add(nozzleB01);
|
_bicos.Add(nozzleB01);
|
||||||
|
|
@ -35,61 +245,6 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
{
|
{
|
||||||
cmbTipoFrame.SelectedIndex = 0;
|
cmbTipoFrame.SelectedIndex = 0;
|
||||||
|
|
||||||
nozzleB01.State = HmiNozzleState.Operante;
|
|
||||||
nozzleB02.State = HmiNozzleState.Conectado;
|
|
||||||
nozzleB03.State = HmiNozzleState.Falha;
|
|
||||||
nozzleB04.State = HmiNozzleState.Alerta;
|
|
||||||
nozzleB05.State = HmiNozzleState.Operante;
|
|
||||||
nozzleB06.State = HmiNozzleState.Desconectado;
|
|
||||||
nozzleB07.State = HmiNozzleState.Operante;
|
|
||||||
|
|
||||||
nozzleB01.CommandOn = true;
|
|
||||||
nozzleB01.ReadOn = true;
|
|
||||||
nozzleB02.CommandOn = true;
|
|
||||||
nozzleB02.ReadOn = true;
|
|
||||||
nozzleB03.CommandOn = true;
|
|
||||||
nozzleB03.ReadOn = false;
|
|
||||||
nozzleB04.CommandOn = true;
|
|
||||||
nozzleB04.ReadOn = true;
|
|
||||||
nozzleB05.CommandOn = true;
|
|
||||||
nozzleB05.ReadOn = true;
|
|
||||||
nozzleB06.CommandOn = false;
|
|
||||||
nozzleB06.ReadOn = false;
|
|
||||||
nozzleB07.CommandOn = true;
|
|
||||||
nozzleB07.ReadOn = true;
|
|
||||||
|
|
||||||
nozzleB01.Atuacoes = 1258;
|
|
||||||
nozzleB02.Atuacoes = 1187;
|
|
||||||
nozzleB03.Atuacoes = 892;
|
|
||||||
nozzleB04.Atuacoes = 1023;
|
|
||||||
nozzleB05.Atuacoes = 1290;
|
|
||||||
nozzleB06.Atuacoes = 0;
|
|
||||||
nozzleB07.Atuacoes = 1211;
|
|
||||||
|
|
||||||
nozzleB01.VazaoInstantanea = 980;
|
|
||||||
nozzleB02.VazaoInstantanea = 1011;
|
|
||||||
nozzleB03.VazaoInstantanea = 421;
|
|
||||||
nozzleB04.VazaoInstantanea = 727;
|
|
||||||
nozzleB05.VazaoInstantanea = 951;
|
|
||||||
nozzleB06.VazaoInstantanea = 0;
|
|
||||||
nozzleB07.VazaoInstantanea = 972;
|
|
||||||
|
|
||||||
nozzleB01.VazaoMedia = 960;
|
|
||||||
nozzleB02.VazaoMedia = 990;
|
|
||||||
nozzleB03.VazaoMedia = 631;
|
|
||||||
nozzleB04.VazaoMedia = 701;
|
|
||||||
nozzleB05.VazaoMedia = 940;
|
|
||||||
nozzleB06.VazaoMedia = 0;
|
|
||||||
nozzleB07.VazaoMedia = 959;
|
|
||||||
|
|
||||||
nozzleB01.TempoLigado = "12:34";
|
|
||||||
nozzleB02.TempoLigado = "12:31";
|
|
||||||
nozzleB03.TempoLigado = "08:47";
|
|
||||||
nozzleB04.TempoLigado = "10:55";
|
|
||||||
nozzleB05.TempoLigado = "12:39";
|
|
||||||
nozzleB06.TempoLigado = "00:00";
|
|
||||||
nozzleB07.TempoLigado = "12:17";
|
|
||||||
|
|
||||||
telemetryReservatorio.CorValor = HmiTheme.Info;
|
telemetryReservatorio.CorValor = HmiTheme.Info;
|
||||||
telemetryVazaoInstantanea.CorValor = HmiTheme.Success;
|
telemetryVazaoInstantanea.CorValor = HmiTheme.Success;
|
||||||
telemetryVazaoMedia.CorValor = HmiTheme.Success;
|
telemetryVazaoMedia.CorValor = HmiTheme.Success;
|
||||||
|
|
@ -121,9 +276,7 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
card.CommandOn = !card.CommandOn;
|
card.CommandOn = !card.CommandOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void AplicarEstadoPainel(
|
private static void AplicarEstadoPainel(HmiRoundedPanel panel, Color color)
|
||||||
HmiRoundedPanel panel,
|
|
||||||
Color color)
|
|
||||||
{
|
{
|
||||||
panel.BorderColor = color;
|
panel.BorderColor = color;
|
||||||
panel.Invalidate();
|
panel.Invalidate();
|
||||||
|
|
@ -133,5 +286,23 @@ namespace AgroBase.Forms.IHM.Operacao
|
||||||
{
|
{
|
||||||
get { return _bicos.AsReadOnly(); }
|
get { return _bicos.AsReadOnly(); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static string FormatarTempo(TimeSpan tempo)
|
||||||
|
{
|
||||||
|
if (tempo < TimeSpan.Zero)
|
||||||
|
tempo = TimeSpan.Zero;
|
||||||
|
|
||||||
|
int horasTotais = (int)tempo.TotalHours;
|
||||||
|
|
||||||
|
return string.Format(
|
||||||
|
"{0:00}:{1:00}:{2:00}",
|
||||||
|
horasTotais,
|
||||||
|
tempo.Minutes,
|
||||||
|
tempo.Seconds
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -162,7 +162,7 @@
|
||||||
this.btnVoltar.Margin = new System.Windows.Forms.Padding(0, 2, 8, 2);
|
this.btnVoltar.Margin = new System.Windows.Forms.Padding(0, 2, 8, 2);
|
||||||
this.btnVoltar.MinimumSize = new System.Drawing.Size(102, 36);
|
this.btnVoltar.MinimumSize = new System.Drawing.Size(102, 36);
|
||||||
this.btnVoltar.Name = "btnVoltar";
|
this.btnVoltar.Name = "btnVoltar";
|
||||||
this.btnVoltar.Size = new System.Drawing.Size(102, 36);
|
this.btnVoltar.Size = new System.Drawing.Size(102, 42);
|
||||||
this.btnVoltar.TabIndex = 0;
|
this.btnVoltar.TabIndex = 0;
|
||||||
this.btnVoltar.Text = "VOLTAR";
|
this.btnVoltar.Text = "VOLTAR";
|
||||||
//
|
//
|
||||||
|
|
@ -180,7 +180,7 @@
|
||||||
this.headerTextLayout.RowCount = 2;
|
this.headerTextLayout.RowCount = 2;
|
||||||
this.headerTextLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F));
|
this.headerTextLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F));
|
||||||
this.headerTextLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
|
this.headerTextLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F));
|
||||||
this.headerTextLayout.Size = new System.Drawing.Size(500, 46);
|
this.headerTextLayout.Size = new System.Drawing.Size(486, 46);
|
||||||
this.headerTextLayout.TabIndex = 1;
|
this.headerTextLayout.TabIndex = 1;
|
||||||
//
|
//
|
||||||
// lblTitulo
|
// lblTitulo
|
||||||
|
|
@ -192,7 +192,7 @@
|
||||||
this.lblTitulo.Location = new System.Drawing.Point(0, 0);
|
this.lblTitulo.Location = new System.Drawing.Point(0, 0);
|
||||||
this.lblTitulo.Margin = new System.Windows.Forms.Padding(0);
|
this.lblTitulo.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.lblTitulo.Name = "lblTitulo";
|
this.lblTitulo.Name = "lblTitulo";
|
||||||
this.lblTitulo.Size = new System.Drawing.Size(500, 27);
|
this.lblTitulo.Size = new System.Drawing.Size(486, 27);
|
||||||
this.lblTitulo.TabIndex = 0;
|
this.lblTitulo.TabIndex = 0;
|
||||||
this.lblTitulo.Text = "AJUSTES DO EQUIPAMENTO";
|
this.lblTitulo.Text = "AJUSTES DO EQUIPAMENTO";
|
||||||
this.lblTitulo.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
|
this.lblTitulo.TextAlign = System.Drawing.ContentAlignment.BottomLeft;
|
||||||
|
|
@ -206,7 +206,7 @@
|
||||||
this.lblSubtitulo.Location = new System.Drawing.Point(0, 27);
|
this.lblSubtitulo.Location = new System.Drawing.Point(0, 27);
|
||||||
this.lblSubtitulo.Margin = new System.Windows.Forms.Padding(0);
|
this.lblSubtitulo.Margin = new System.Windows.Forms.Padding(0);
|
||||||
this.lblSubtitulo.Name = "lblSubtitulo";
|
this.lblSubtitulo.Name = "lblSubtitulo";
|
||||||
this.lblSubtitulo.Size = new System.Drawing.Size(500, 19);
|
this.lblSubtitulo.Size = new System.Drawing.Size(486, 19);
|
||||||
this.lblSubtitulo.TabIndex = 1;
|
this.lblSubtitulo.TabIndex = 1;
|
||||||
this.lblSubtitulo.Text = "Configurações físicas, câmeras e comunicação do rover";
|
this.lblSubtitulo.Text = "Configurações físicas, câmeras e comunicação do rover";
|
||||||
//
|
//
|
||||||
|
|
@ -219,12 +219,12 @@
|
||||||
this.pnlRover.CornerRadius = 9;
|
this.pnlRover.CornerRadius = 9;
|
||||||
this.pnlRover.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.pnlRover.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.pnlRover.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(58)))), ((int)(((byte)(46)))));
|
this.pnlRover.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(18)))), ((int)(((byte)(58)))), ((int)(((byte)(46)))));
|
||||||
this.pnlRover.Location = new System.Drawing.Point(607, 0);
|
this.pnlRover.Location = new System.Drawing.Point(593, 0);
|
||||||
this.pnlRover.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
this.pnlRover.Margin = new System.Windows.Forms.Padding(5, 0, 0, 0);
|
||||||
this.pnlRover.MinimumSize = new System.Drawing.Size(30, 30);
|
this.pnlRover.MinimumSize = new System.Drawing.Size(30, 30);
|
||||||
this.pnlRover.Name = "pnlRover";
|
this.pnlRover.Name = "pnlRover";
|
||||||
this.pnlRover.Padding = new System.Windows.Forms.Padding(8);
|
this.pnlRover.Padding = new System.Windows.Forms.Padding(8);
|
||||||
this.pnlRover.Size = new System.Drawing.Size(157, 46);
|
this.pnlRover.Size = new System.Drawing.Size(171, 46);
|
||||||
this.pnlRover.TabIndex = 2;
|
this.pnlRover.TabIndex = 2;
|
||||||
//
|
//
|
||||||
// lblRover
|
// lblRover
|
||||||
|
|
@ -235,7 +235,7 @@
|
||||||
this.lblRover.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
|
this.lblRover.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(72)))), ((int)(((byte)(210)))), ((int)(((byte)(122)))));
|
||||||
this.lblRover.Location = new System.Drawing.Point(8, 8);
|
this.lblRover.Location = new System.Drawing.Point(8, 8);
|
||||||
this.lblRover.Name = "lblRover";
|
this.lblRover.Name = "lblRover";
|
||||||
this.lblRover.Size = new System.Drawing.Size(141, 30);
|
this.lblRover.Size = new System.Drawing.Size(155, 30);
|
||||||
this.lblRover.TabIndex = 0;
|
this.lblRover.TabIndex = 0;
|
||||||
this.lblRover.Text = "ROVER 01\r\nConfiguração local";
|
this.lblRover.Text = "ROVER 01\r\nConfiguração local";
|
||||||
this.lblRover.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
this.lblRover.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
|
@ -577,6 +577,7 @@
|
||||||
this.btnRestaurar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
this.btnRestaurar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
||||||
this.btnRestaurar.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.btnRestaurar.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.btnRestaurar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
this.btnRestaurar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
||||||
|
this.btnRestaurar.IconText = "●";
|
||||||
this.btnRestaurar.Location = new System.Drawing.Point(334, 2);
|
this.btnRestaurar.Location = new System.Drawing.Point(334, 2);
|
||||||
this.btnRestaurar.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
this.btnRestaurar.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||||
this.btnRestaurar.MinimumSize = new System.Drawing.Size(130, 36);
|
this.btnRestaurar.MinimumSize = new System.Drawing.Size(130, 36);
|
||||||
|
|
@ -592,6 +593,7 @@
|
||||||
this.btnSalvar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
this.btnSalvar.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
||||||
this.btnSalvar.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.btnSalvar.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.btnSalvar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
this.btnSalvar.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
||||||
|
this.btnSalvar.IconText = "●";
|
||||||
this.btnSalvar.Location = new System.Drawing.Point(464, 2);
|
this.btnSalvar.Location = new System.Drawing.Point(464, 2);
|
||||||
this.btnSalvar.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
this.btnSalvar.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||||
this.btnSalvar.MinimumSize = new System.Drawing.Size(130, 36);
|
this.btnSalvar.MinimumSize = new System.Drawing.Size(130, 36);
|
||||||
|
|
@ -607,6 +609,7 @@
|
||||||
this.btnTestarComunicacao.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
this.btnTestarComunicacao.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
||||||
this.btnTestarComunicacao.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.btnTestarComunicacao.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.btnTestarComunicacao.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
this.btnTestarComunicacao.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
||||||
|
this.btnTestarComunicacao.IconText = "●";
|
||||||
this.btnTestarComunicacao.Location = new System.Drawing.Point(609, 2);
|
this.btnTestarComunicacao.Location = new System.Drawing.Point(609, 2);
|
||||||
this.btnTestarComunicacao.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
this.btnTestarComunicacao.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||||
this.btnTestarComunicacao.MinimumSize = new System.Drawing.Size(130, 36);
|
this.btnTestarComunicacao.MinimumSize = new System.Drawing.Size(130, 36);
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,8 @@ namespace AgroBase.Forms.IHM
|
||||||
{
|
{
|
||||||
public partial class frmAjustes : Form, ITelaNavegavel
|
public partial class frmAjustes : Form, ITelaNavegavel
|
||||||
{
|
{
|
||||||
|
public event EventHandler VoltarSolicitado;
|
||||||
|
|
||||||
private List<OAKCameraModel> ListaCameras = new List<OAKCameraModel>();
|
private List<OAKCameraModel> ListaCameras = new List<OAKCameraModel>();
|
||||||
private OAKCameraModel CameraCaminho = new OAKCameraModel();
|
private OAKCameraModel CameraCaminho = new OAKCameraModel();
|
||||||
private List<OAKCameraModel> CamerasSolo = new List<OAKCameraModel>();
|
private List<OAKCameraModel> CamerasSolo = new List<OAKCameraModel>();
|
||||||
|
|
@ -22,8 +24,6 @@ namespace AgroBase.Forms.IHM
|
||||||
private bool _carregando;
|
private bool _carregando;
|
||||||
private bool _alteracoesPendentes;
|
private bool _alteracoesPendentes;
|
||||||
|
|
||||||
public event EventHandler VoltarSolicitado;
|
|
||||||
|
|
||||||
public frmAjustes()
|
public frmAjustes()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
@ -56,6 +56,11 @@ namespace AgroBase.Forms.IHM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AtualizarDadosTela()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private void ConfigurarAparencia()
|
private void ConfigurarAparencia()
|
||||||
{
|
{
|
||||||
|
|
@ -1330,5 +1335,7 @@ namespace AgroBase.Forms.IHM
|
||||||
{ ("OK", null), delegate { } }
|
{ ("OK", null), delegate { } }
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@
|
||||||
this.btnVoltar.Margin = new System.Windows.Forms.Padding(0, 3, 8, 3);
|
this.btnVoltar.Margin = new System.Windows.Forms.Padding(0, 3, 8, 3);
|
||||||
this.btnVoltar.MinimumSize = new System.Drawing.Size(102, 36);
|
this.btnVoltar.MinimumSize = new System.Drawing.Size(102, 36);
|
||||||
this.btnVoltar.Name = "btnVoltar";
|
this.btnVoltar.Name = "btnVoltar";
|
||||||
this.btnVoltar.Size = new System.Drawing.Size(102, 36);
|
this.btnVoltar.Size = new System.Drawing.Size(102, 40);
|
||||||
this.btnVoltar.TabIndex = 0;
|
this.btnVoltar.TabIndex = 0;
|
||||||
this.btnVoltar.Text = "VOLTAR";
|
this.btnVoltar.Text = "VOLTAR";
|
||||||
//
|
//
|
||||||
|
|
@ -231,7 +231,7 @@
|
||||||
this.headerTextLayout.Controls.Add(this.lblTitulo, 0, 0);
|
this.headerTextLayout.Controls.Add(this.lblTitulo, 0, 0);
|
||||||
this.headerTextLayout.Controls.Add(this.lblSubtitulo, 0, 1);
|
this.headerTextLayout.Controls.Add(this.lblSubtitulo, 0, 1);
|
||||||
this.headerTextLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.headerTextLayout.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.headerTextLayout.Location = new System.Drawing.Point(111, 0);
|
this.headerTextLayout.Location = new System.Drawing.Point(109, 0);
|
||||||
this.headerTextLayout.Margin = new System.Windows.Forms.Padding(7, 0, 5, 0);
|
this.headerTextLayout.Margin = new System.Windows.Forms.Padding(7, 0, 5, 0);
|
||||||
this.headerTextLayout.Name = "headerTextLayout";
|
this.headerTextLayout.Name = "headerTextLayout";
|
||||||
this.headerTextLayout.RowCount = 2;
|
this.headerTextLayout.RowCount = 2;
|
||||||
|
|
@ -278,12 +278,12 @@
|
||||||
this.pnlHeaderImpedimento.CornerRadius = 8;
|
this.pnlHeaderImpedimento.CornerRadius = 8;
|
||||||
this.pnlHeaderImpedimento.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.pnlHeaderImpedimento.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
this.pnlHeaderImpedimento.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(35)))), ((int)(((byte)(14)))));
|
this.pnlHeaderImpedimento.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(35)))), ((int)(((byte)(14)))));
|
||||||
this.pnlHeaderImpedimento.Location = new System.Drawing.Point(471, 3);
|
this.pnlHeaderImpedimento.Location = new System.Drawing.Point(469, 3);
|
||||||
this.pnlHeaderImpedimento.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
|
this.pnlHeaderImpedimento.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3);
|
||||||
this.pnlHeaderImpedimento.MinimumSize = new System.Drawing.Size(30, 30);
|
this.pnlHeaderImpedimento.MinimumSize = new System.Drawing.Size(30, 30);
|
||||||
this.pnlHeaderImpedimento.Name = "pnlHeaderImpedimento";
|
this.pnlHeaderImpedimento.Name = "pnlHeaderImpedimento";
|
||||||
this.pnlHeaderImpedimento.Padding = new System.Windows.Forms.Padding(7);
|
this.pnlHeaderImpedimento.Padding = new System.Windows.Forms.Padding(7);
|
||||||
this.pnlHeaderImpedimento.Size = new System.Drawing.Size(177, 40);
|
this.pnlHeaderImpedimento.Size = new System.Drawing.Size(179, 40);
|
||||||
this.pnlHeaderImpedimento.TabIndex = 2;
|
this.pnlHeaderImpedimento.TabIndex = 2;
|
||||||
//
|
//
|
||||||
// lblImpedimentoGeral
|
// lblImpedimentoGeral
|
||||||
|
|
@ -295,7 +295,7 @@
|
||||||
this.lblImpedimentoGeral.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(181)))), ((int)(((byte)(68)))));
|
this.lblImpedimentoGeral.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(244)))), ((int)(((byte)(181)))), ((int)(((byte)(68)))));
|
||||||
this.lblImpedimentoGeral.Location = new System.Drawing.Point(7, 7);
|
this.lblImpedimentoGeral.Location = new System.Drawing.Point(7, 7);
|
||||||
this.lblImpedimentoGeral.Name = "lblImpedimentoGeral";
|
this.lblImpedimentoGeral.Name = "lblImpedimentoGeral";
|
||||||
this.lblImpedimentoGeral.Size = new System.Drawing.Size(163, 26);
|
this.lblImpedimentoGeral.Size = new System.Drawing.Size(165, 26);
|
||||||
this.lblImpedimentoGeral.TabIndex = 0;
|
this.lblImpedimentoGeral.TabIndex = 0;
|
||||||
this.lblImpedimentoGeral.Text = "⚠ Impedimento: IMU instável";
|
this.lblImpedimentoGeral.Text = "⚠ Impedimento: IMU instável";
|
||||||
this.lblImpedimentoGeral.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
this.lblImpedimentoGeral.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
|
@ -1114,6 +1114,7 @@
|
||||||
this.btnSalvarModulo.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
this.btnSalvarModulo.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
||||||
this.btnSalvarModulo.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.btnSalvarModulo.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.btnSalvarModulo.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
this.btnSalvarModulo.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
||||||
|
this.btnSalvarModulo.IconText = "●";
|
||||||
this.btnSalvarModulo.Location = new System.Drawing.Point(178, 2);
|
this.btnSalvarModulo.Location = new System.Drawing.Point(178, 2);
|
||||||
this.btnSalvarModulo.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
this.btnSalvarModulo.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||||
this.btnSalvarModulo.MinimumSize = new System.Drawing.Size(130, 36);
|
this.btnSalvarModulo.MinimumSize = new System.Drawing.Size(130, 36);
|
||||||
|
|
@ -1129,6 +1130,7 @@
|
||||||
this.actionsLayout.SetColumnSpan(this.btnIgnorarFalha, 3);
|
this.actionsLayout.SetColumnSpan(this.btnIgnorarFalha, 3);
|
||||||
this.btnIgnorarFalha.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.btnIgnorarFalha.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.btnIgnorarFalha.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
this.btnIgnorarFalha.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
||||||
|
this.btnIgnorarFalha.IconText = "●";
|
||||||
this.btnIgnorarFalha.Location = new System.Drawing.Point(0, 38);
|
this.btnIgnorarFalha.Location = new System.Drawing.Point(0, 38);
|
||||||
this.btnIgnorarFalha.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
this.btnIgnorarFalha.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||||
this.btnIgnorarFalha.MinimumSize = new System.Drawing.Size(130, 36);
|
this.btnIgnorarFalha.MinimumSize = new System.Drawing.Size(130, 36);
|
||||||
|
|
@ -1472,6 +1474,7 @@
|
||||||
this.btnAcao1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
this.btnAcao1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
||||||
this.btnAcao1.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.btnAcao1.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.btnAcao1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
this.btnAcao1.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
||||||
|
this.btnAcao1.IconText = "●";
|
||||||
this.btnAcao1.Location = new System.Drawing.Point(0, 2);
|
this.btnAcao1.Location = new System.Drawing.Point(0, 2);
|
||||||
this.btnAcao1.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
this.btnAcao1.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||||
this.btnAcao1.MinimumSize = new System.Drawing.Size(130, 36);
|
this.btnAcao1.MinimumSize = new System.Drawing.Size(130, 36);
|
||||||
|
|
@ -1486,6 +1489,7 @@
|
||||||
this.btnAcao2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
this.btnAcao2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
||||||
this.btnAcao2.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.btnAcao2.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.btnAcao2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
this.btnAcao2.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
||||||
|
this.btnAcao2.IconText = "●";
|
||||||
this.btnAcao2.Location = new System.Drawing.Point(114, 2);
|
this.btnAcao2.Location = new System.Drawing.Point(114, 2);
|
||||||
this.btnAcao2.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
this.btnAcao2.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||||
this.btnAcao2.MinimumSize = new System.Drawing.Size(130, 36);
|
this.btnAcao2.MinimumSize = new System.Drawing.Size(130, 36);
|
||||||
|
|
@ -1500,6 +1504,7 @@
|
||||||
this.btnAcao3.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
this.btnAcao3.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(53)))), ((int)(((byte)(63)))), ((int)(((byte)(69)))));
|
||||||
this.btnAcao3.Cursor = System.Windows.Forms.Cursors.Hand;
|
this.btnAcao3.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||||
this.btnAcao3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
this.btnAcao3.FillColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(36)))), ((int)(((byte)(41)))));
|
||||||
|
this.btnAcao3.IconText = "●";
|
||||||
this.btnAcao3.Location = new System.Drawing.Point(228, 2);
|
this.btnAcao3.Location = new System.Drawing.Point(228, 2);
|
||||||
this.btnAcao3.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
this.btnAcao3.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
|
||||||
this.btnAcao3.MinimumSize = new System.Drawing.Size(130, 36);
|
this.btnAcao3.MinimumSize = new System.Drawing.Size(130, 36);
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
using AgroBase.Forms.IHM.Controls;
|
using AgroBase.Forms.IHM.Controls;
|
||||||
|
using AgroBase.Models;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
|
@ -8,10 +9,11 @@ namespace AgroBase.Forms.IHM
|
||||||
{
|
{
|
||||||
public partial class frmDiagnosticos : Form, ITelaNavegavel
|
public partial class frmDiagnosticos : Form, ITelaNavegavel
|
||||||
{
|
{
|
||||||
|
public event EventHandler VoltarSolicitado;
|
||||||
|
|
||||||
private readonly List<HmiModuleBadge> _badges = new List<HmiModuleBadge>();
|
private readonly List<HmiModuleBadge> _badges = new List<HmiModuleBadge>();
|
||||||
private readonly Dictionary<HmiModuleBadge, HmiModuleState> _estadoOriginalBadges = new Dictionary<HmiModuleBadge, HmiModuleState>();
|
private readonly Dictionary<HmiModuleBadge, HmiModuleState> _estadoOriginalBadges = new Dictionary<HmiModuleBadge, HmiModuleState>();
|
||||||
|
|
||||||
public event EventHandler VoltarSolicitado;
|
|
||||||
|
|
||||||
public frmDiagnosticos()
|
public frmDiagnosticos()
|
||||||
{
|
{
|
||||||
|
|
@ -23,6 +25,11 @@ namespace AgroBase.Forms.IHM
|
||||||
VincularEventos();
|
VincularEventos();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AtualizarDadosTela()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private void OrganizarCamadasMapa()
|
private void OrganizarCamadasMapa()
|
||||||
{
|
{
|
||||||
picRover.SendToBack();
|
picRover.SendToBack();
|
||||||
|
|
|
||||||
|
|
@ -239,8 +239,7 @@ namespace AgroBase.Forms.IHM
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine(
|
Variaveis.MostrarLog("Erro no tmrDispositivos_Tick: " + ex.Message);
|
||||||
"Erro no tmrDispositivos_Tick: " + ex.Message);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return Task.CompletedTask;
|
return Task.CompletedTask;
|
||||||
|
|
@ -259,239 +258,84 @@ namespace AgroBase.Forms.IHM
|
||||||
// =========================================================
|
// =========================================================
|
||||||
// BATERIA
|
// BATERIA
|
||||||
// =========================================================
|
// =========================================================
|
||||||
|
double bateria = operacao?.Sensoriamento?.Bateria?.PercentualBateria ?? 0;
|
||||||
double bateria =
|
double bateriaSaude = ObterSaudeModulo(saudeModulos, Enums.T_Code.Bat);
|
||||||
operacao?
|
Color corBateria = CorPorValorESaude(bateria, bateriaSaude);
|
||||||
.Sensoriamento?
|
AtualizarBateria($"{Limitar(bateria, 0, 100):0}%", corBateria);
|
||||||
.Bateria?
|
|
||||||
.PercentualBateria ?? 0;
|
|
||||||
|
|
||||||
double bateriaSaude =
|
|
||||||
ObterSaudeModulo(
|
|
||||||
saudeModulos,
|
|
||||||
Enums.T_Code.Bat
|
|
||||||
);
|
|
||||||
|
|
||||||
Color corBateria =
|
|
||||||
CorPorValorESaude(
|
|
||||||
bateria,
|
|
||||||
bateriaSaude
|
|
||||||
);
|
|
||||||
|
|
||||||
AtualizarBateria(
|
|
||||||
$"{Limitar(bateria, 0, 100):0}%",
|
|
||||||
corBateria
|
|
||||||
);
|
|
||||||
|
|
||||||
// =========================================================
|
// =========================================================
|
||||||
// RESERVATÓRIO
|
// RESERVATÓRIO
|
||||||
// =========================================================
|
// =========================================================
|
||||||
|
double reservatorio = operacao?.Sensoriamento?.Atuador?.PercentualReservatorio ?? 0;
|
||||||
double reservatorio =
|
double atuadorSaude = ObterSaudeModulo(saudeModulos, Enums.T_Code.Atu);
|
||||||
operacao?
|
Color corReservatorio = CorPorValorESaude(reservatorio, atuadorSaude);
|
||||||
.Sensoriamento?
|
AtualizarReservatorio($"{Limitar(reservatorio, 0, 100):0}%", corReservatorio);
|
||||||
.Atuador?
|
|
||||||
.VolumeReservatorio ?? 0;
|
|
||||||
|
|
||||||
double atuadorSaude =
|
|
||||||
ObterSaudeModulo(
|
|
||||||
saudeModulos,
|
|
||||||
Enums.T_Code.Atu
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Estou considerando VolumeReservatorio como percentual.
|
|
||||||
*
|
|
||||||
* Se ele estiver em litros, converta antes:
|
|
||||||
*
|
|
||||||
* reservatorio =
|
|
||||||
* capacidadeLitros > 0
|
|
||||||
* ? volumeAtualLitros / capacidadeLitros * 100
|
|
||||||
* : 0;
|
|
||||||
*/
|
|
||||||
|
|
||||||
Color corReservatorio =
|
|
||||||
CorPorValorESaude(
|
|
||||||
reservatorio,
|
|
||||||
atuadorSaude
|
|
||||||
);
|
|
||||||
|
|
||||||
AtualizarReservatorio(
|
|
||||||
$"{Limitar(reservatorio, 0, 100):0}%",
|
|
||||||
corReservatorio
|
|
||||||
);
|
|
||||||
|
|
||||||
// =========================================================
|
// =========================================================
|
||||||
// TEMPERATURA
|
// TEMPERATURA
|
||||||
// =========================================================
|
// =========================================================
|
||||||
|
double temperatura = operacao?.Sensoriamento?.CoolerControl?.Temperatura ?? 0;
|
||||||
double temperatura =
|
double temperaturaSaude = ObterSaudeModulo(saudeModulos, Enums.T_Code.Npc);
|
||||||
operacao?
|
Color corTemperatura = CorTemperatura(temperatura, temperaturaSaude);
|
||||||
.Sensoriamento?
|
AtualizarTemperatura($"{temperatura:0.#} °C", corTemperatura);
|
||||||
.CoolerControl?
|
|
||||||
.Temperatura ?? 0;
|
|
||||||
|
|
||||||
double temperaturaSaude =
|
|
||||||
ObterSaudeModulo(
|
|
||||||
saudeModulos,
|
|
||||||
Enums.T_Code.Npc
|
|
||||||
);
|
|
||||||
|
|
||||||
Color corTemperatura =
|
|
||||||
CorTemperatura(
|
|
||||||
temperatura,
|
|
||||||
temperaturaSaude
|
|
||||||
);
|
|
||||||
|
|
||||||
AtualizarTemperatura(
|
|
||||||
$"{temperatura:0.#} °C",
|
|
||||||
corTemperatura
|
|
||||||
);
|
|
||||||
|
|
||||||
// =========================================================
|
// =========================================================
|
||||||
// REDE / IPB
|
// REDE / IPB
|
||||||
// =========================================================
|
// =========================================================
|
||||||
|
double redeSaude = ObterSaudeModulo(saudeModulos, Enums.T_Code.Ipb);
|
||||||
double redeSaude =
|
Color corRede = CorPorPercentual(redeSaude);
|
||||||
ObterSaudeModulo(
|
AtualizarRede($"{Limitar(redeSaude, 0, 100):0}%", corRede);
|
||||||
saudeModulos,
|
|
||||||
Enums.T_Code.Ipb
|
|
||||||
);
|
|
||||||
|
|
||||||
Color corRede =
|
|
||||||
CorPorPercentual(redeSaude);
|
|
||||||
|
|
||||||
AtualizarRede(
|
|
||||||
$"{Limitar(redeSaude, 0, 100):0}%",
|
|
||||||
corRede
|
|
||||||
);
|
|
||||||
|
|
||||||
// =========================================================
|
// =========================================================
|
||||||
// GNSS
|
// GNSS
|
||||||
// =========================================================
|
// =========================================================
|
||||||
|
var gnss = operacao?.Sensoriamento?.Gps;
|
||||||
var gnss =
|
double gnssSaude = ObterSaudeModulo(saudeModulos, Enums.T_Code.Gps);
|
||||||
operacao?
|
bool gnssConectado = gnss != null && gnssSaude > 0;
|
||||||
.Sensoriamento?
|
|
||||||
.Gps;
|
|
||||||
|
|
||||||
double gnssSaude =
|
|
||||||
ObterSaudeModulo(
|
|
||||||
saudeModulos,
|
|
||||||
Enums.T_Code.Gps
|
|
||||||
);
|
|
||||||
|
|
||||||
bool gnssConectado =
|
|
||||||
gnss != null &&
|
|
||||||
gnssSaude > 0;
|
|
||||||
|
|
||||||
if (!gnssConectado)
|
if (!gnssConectado)
|
||||||
{
|
{
|
||||||
AtualizarGnss(
|
AtualizarGnss("Desconectado", HmiTheme.Danger);
|
||||||
"Desconectado",
|
|
||||||
HmiTheme.Danger
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Enums.TiposCorrecaoGPS qualidadeFix =
|
Enums.TiposCorrecaoGPS qualidadeFix = gnss.QualidadeFix;
|
||||||
gnss.QualidadeFix;
|
double precisaoCm = Math.Max(0, gnss.PrecisaoCm);
|
||||||
|
double notaGnss = CalcularNotaGnss(qualidadeFix, precisaoCm, gnssSaude);
|
||||||
double precisaoCm =
|
Color corGnss = CorPorPercentual(notaGnss);
|
||||||
Math.Max(
|
string textoGnss = $"{FormatarQualidadeGnss(qualidadeFix)} " + $"{precisaoCm:0.##} cm";
|
||||||
0,
|
AtualizarGnss(textoGnss, corGnss);
|
||||||
gnss.PrecisaoCm
|
|
||||||
);
|
|
||||||
|
|
||||||
double notaGnss =
|
|
||||||
CalcularNotaGnss(
|
|
||||||
qualidadeFix,
|
|
||||||
precisaoCm,
|
|
||||||
gnssSaude
|
|
||||||
);
|
|
||||||
|
|
||||||
Color corGnss =
|
|
||||||
CorPorPercentual(notaGnss);
|
|
||||||
|
|
||||||
string textoGnss =
|
|
||||||
$"{FormatarQualidadeGnss(qualidadeFix)} " +
|
|
||||||
$"{precisaoCm:0.##} cm";
|
|
||||||
|
|
||||||
AtualizarGnss(
|
|
||||||
textoGnss,
|
|
||||||
corGnss
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =========================================================
|
// =========================================================
|
||||||
// BASE
|
// BASE
|
||||||
// =========================================================
|
// =========================================================
|
||||||
|
bool baseConectada = VariaveisOperacao.PosicaoBase?.Inicializado ?? false;
|
||||||
bool baseConectada =
|
|
||||||
VariaveisOperacao
|
|
||||||
.PosicaoBase
|
|
||||||
.Inicializado;
|
|
||||||
|
|
||||||
if (!baseConectada || gnss == null)
|
if (!baseConectada || gnss == null)
|
||||||
{
|
{
|
||||||
AtualizarDistanciaBase(
|
AtualizarDistanciaBase("Desconectada", HmiTheme.Danger);
|
||||||
"Desconectada",
|
|
||||||
HmiTheme.Danger
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
double distanciaBase =
|
double distanciaBase = GPSUtils.DistanciaEntrePontos(gnss, VariaveisOperacao.PosicaoBase);
|
||||||
GPSUtils.DistanciaEntrePontos(
|
Color corBase = CorDistanciaBase(distanciaBase, 1000);
|
||||||
gnss,
|
string distanciaTexto = FormatarDistancia(distanciaBase);
|
||||||
VariaveisOperacao.PosicaoBase
|
AtualizarDistanciaBase(distanciaTexto, corBase);
|
||||||
);
|
|
||||||
|
|
||||||
Color corBase =
|
|
||||||
CorDistanciaBase(
|
|
||||||
distanciaBase,
|
|
||||||
1000
|
|
||||||
);
|
|
||||||
|
|
||||||
string distanciaTexto =
|
|
||||||
FormatarDistancia(distanciaBase);
|
|
||||||
|
|
||||||
AtualizarDistanciaBase(
|
|
||||||
distanciaTexto,
|
|
||||||
corBase
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// =========================================================
|
// =========================================================
|
||||||
// BOTÕES DA OPERAÇÃO
|
// BOTÕES DA OPERAÇÃO
|
||||||
// =========================================================
|
// =========================================================
|
||||||
|
bool operacaoPausada = dadosOperacao?.Pausa ?? false;
|
||||||
bool operacaoPausada =
|
bool operacaoEmergencia = dadosOperacao?.Emergencia ?? false;
|
||||||
dadosOperacao?.Pausa ?? false;
|
bool operacaoIniciada = dadosOperacao?.OperacaoIniciada ?? false;
|
||||||
|
AtualizarAcoesOperacao(statusOperacao, operacaoIniciada, operacaoPausada, operacaoEmergencia);
|
||||||
bool operacaoEmergencia =
|
|
||||||
dadosOperacao?.Emergencia ?? false;
|
|
||||||
|
|
||||||
bool operacaoIniciada =
|
|
||||||
dadosOperacao?.OperacaoIniciada ?? false;
|
|
||||||
|
|
||||||
AtualizarAcoesOperacao(
|
|
||||||
statusOperacao,
|
|
||||||
operacaoIniciada,
|
|
||||||
operacaoPausada,
|
|
||||||
operacaoEmergencia
|
|
||||||
);
|
|
||||||
|
|
||||||
// =========================================================
|
// =========================================================
|
||||||
// FORMULÁRIO FILHO ATIVO
|
// FORMULÁRIO FILHO ATIVO
|
||||||
// =========================================================
|
// =========================================================
|
||||||
|
if (_telaAtual != null && !_telaAtual.IsDisposed)
|
||||||
if (
|
|
||||||
_telaAtual != null &&
|
|
||||||
!_telaAtual.IsDisposed &&
|
|
||||||
_telaAtual.Name == frmMenu.Name)
|
|
||||||
{
|
{
|
||||||
frmMenu.AtualizarControlesUI();
|
(_telaAtual as ITelaNavegavel).AtualizarDadosTela();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1040,6 +884,7 @@ namespace AgroBase.Forms.IHM
|
||||||
public interface ITelaNavegavel
|
public interface ITelaNavegavel
|
||||||
{
|
{
|
||||||
event EventHandler VoltarSolicitado;
|
event EventHandler VoltarSolicitado;
|
||||||
|
void AtualizarDadosTela();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ using static AgroBase.Models.Enums;
|
||||||
|
|
||||||
namespace AgroBase.Forms.IHM
|
namespace AgroBase.Forms.IHM
|
||||||
{
|
{
|
||||||
public partial class frmMenu : Form
|
public partial class frmMenu : Form, ITelaNavegavel
|
||||||
{
|
{
|
||||||
private bool _sincronizando;
|
private bool _sincronizando;
|
||||||
|
|
||||||
|
|
@ -24,6 +24,7 @@ namespace AgroBase.Forms.IHM
|
||||||
public event EventHandler AjustarLeverArmSolicitado;
|
public event EventHandler AjustarLeverArmSolicitado;
|
||||||
|
|
||||||
public event EventHandler<TelaSolicitadaEventArgs> TelaSolicitada;
|
public event EventHandler<TelaSolicitadaEventArgs> TelaSolicitada;
|
||||||
|
public event EventHandler VoltarSolicitado;
|
||||||
|
|
||||||
public frmMenu()
|
public frmMenu()
|
||||||
{
|
{
|
||||||
|
|
@ -72,6 +73,11 @@ namespace AgroBase.Forms.IHM
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AtualizarDadosTela()
|
||||||
|
{
|
||||||
|
AtualizarControlesUI();
|
||||||
|
}
|
||||||
|
|
||||||
public void AtualizarControlesUI()
|
public void AtualizarControlesUI()
|
||||||
{
|
{
|
||||||
bool mqttConectado = Variaveis.MqttServiceLocal != null && Variaveis.MqttServiceLocal.StatusConexao();
|
bool mqttConectado = Variaveis.MqttServiceLocal != null && Variaveis.MqttServiceLocal.StatusConexao();
|
||||||
|
|
@ -383,6 +389,7 @@ namespace AgroBase.Forms.IHM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
|
|
||||||
using AgroBase.Forms.IHM.Operacao;
|
using AgroBase.Forms.IHM.Operacao;
|
||||||
|
using AgroBase.Models;
|
||||||
using System;
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
|
@ -25,16 +26,18 @@ namespace AgroBase.Forms.IHM
|
||||||
|
|
||||||
public partial class frmOperacao : Form, ITelaNavegavel
|
public partial class frmOperacao : Form, ITelaNavegavel
|
||||||
{
|
{
|
||||||
private AbaOperacaoIHM _abaAtual;
|
|
||||||
|
|
||||||
public event EventHandler VoltarSolicitado;
|
public event EventHandler VoltarSolicitado;
|
||||||
public event EventHandler<AbaOperacaoAlteradaEventArgs> AbaAlterada;
|
|
||||||
|
|
||||||
|
private AbaOperacaoIHM _abaAtual;
|
||||||
|
public event EventHandler<AbaOperacaoAlteradaEventArgs> AbaAlterada;
|
||||||
private readonly ucOperacaoMovimentacao _ucMovimentacao = new ucOperacaoMovimentacao { Dock = DockStyle.Fill };
|
private readonly ucOperacaoMovimentacao _ucMovimentacao = new ucOperacaoMovimentacao { Dock = DockStyle.Fill };
|
||||||
private readonly ucOperacaoPulverizador _ucPulverizador = new ucOperacaoPulverizador { Dock = DockStyle.Fill };
|
private readonly ucOperacaoPulverizador _ucPulverizador = new ucOperacaoPulverizador { Dock = DockStyle.Fill };
|
||||||
private readonly ucOperacaoNavegacao _ucNavegacao = new ucOperacaoNavegacao { Dock = DockStyle.Fill };
|
private readonly ucOperacaoNavegacao _ucNavegacao = new ucOperacaoNavegacao { Dock = DockStyle.Fill };
|
||||||
private readonly ucOperacaoParametros _ucParametros = new ucOperacaoParametros { Dock = DockStyle.Fill };
|
private readonly ucOperacaoParametros _ucParametros = new ucOperacaoParametros { Dock = DockStyle.Fill };
|
||||||
|
|
||||||
|
public Panel PainelConteudo { get { return pnlConteudoAba; } }
|
||||||
|
public AbaOperacaoIHM AbaAtual { get { return _abaAtual; } }
|
||||||
|
|
||||||
public frmOperacao()
|
public frmOperacao()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
@ -42,8 +45,25 @@ namespace AgroBase.Forms.IHM
|
||||||
SelecionarAba(AbaOperacaoIHM.Movimentacao, false);
|
SelecionarAba(AbaOperacaoIHM.Movimentacao, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Panel PainelConteudo { get { return pnlConteudoAba; } }
|
public void AtualizarDadosTela()
|
||||||
public AbaOperacaoIHM AbaAtual { get { return _abaAtual; } }
|
{
|
||||||
|
switch (_abaAtual)
|
||||||
|
{
|
||||||
|
case AbaOperacaoIHM.Movimentacao:
|
||||||
|
_ucMovimentacao.AtualizarDadosTela();
|
||||||
|
break;
|
||||||
|
case AbaOperacaoIHM.Pulverizador:
|
||||||
|
_ucPulverizador.AtualizarDadosTela();
|
||||||
|
break;
|
||||||
|
case AbaOperacaoIHM.Navegacao:
|
||||||
|
break;
|
||||||
|
case AbaOperacaoIHM.Parametros:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private void VincularEventos()
|
private void VincularEventos()
|
||||||
{
|
{
|
||||||
|
|
@ -59,6 +79,7 @@ namespace AgroBase.Forms.IHM
|
||||||
tabParametros.Click += delegate { SelecionarAba(AbaOperacaoIHM.Parametros, true); };
|
tabParametros.Click += delegate { SelecionarAba(AbaOperacaoIHM.Parametros, true); };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void SelecionarAba(AbaOperacaoIHM aba)
|
public void SelecionarAba(AbaOperacaoIHM aba)
|
||||||
{
|
{
|
||||||
SelecionarAba(aba, true);
|
SelecionarAba(aba, true);
|
||||||
|
|
|
||||||
|
|
@ -256,6 +256,9 @@ namespace AgroBase
|
||||||
private void btnJoyAtt_Click(object sender, EventArgs e)
|
private void btnJoyAtt_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
GeneralJoystick.AtualizaDispositivo();
|
GeneralJoystick.AtualizaDispositivo();
|
||||||
|
cmbJoysticks.Items.Clear();
|
||||||
|
cmbJoysticks.Items.AddRange(GeneralJoystick.JoysticksConectados.ToArray());
|
||||||
|
cmbJoysticks.SelectedIndex = GeneralJoystick.JoysticksConectados.IndexOf(GeneralJoystick.JoystickConectado.Information.InstanceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnJoyEdt_Click(object sender, EventArgs e)
|
private void btnJoyEdt_Click(object sender, EventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@ namespace AgroBase
|
||||||
{
|
{
|
||||||
public class GeneralJoystick
|
public class GeneralJoystick
|
||||||
{
|
{
|
||||||
|
public static List<string> JoysticksConectados = new List<string>();
|
||||||
public static Joystick JoystickConectado = null;
|
public static Joystick JoystickConectado = null;
|
||||||
public static int MargemAnalogico = 100;
|
public static int MargemAnalogico = 100;
|
||||||
public static int MaximoAnalogico = 65534;
|
public static int MaximoAnalogico = 65534;
|
||||||
|
|
@ -66,17 +67,18 @@ namespace AgroBase
|
||||||
{
|
{
|
||||||
DispCon = Variaveis.DispositivosConectados.Where(x => x.Dados.ConexaoAtiva).ToList();
|
DispCon = Variaveis.DispositivosConectados.Where(x => x.Dados.ConexaoAtiva).ToList();
|
||||||
frmInstancial.frmJoystick.lblDispositivo.Text = "Dispositivos: " + (DispCon.Count == 0 ? "N/A" : string.Join(", ", DispCon.Select(x => x._Descricao + " (" + Enum.GetName(typeof(T_Code), x.Dispositivo) + ")").ToArray()));
|
frmInstancial.frmJoystick.lblDispositivo.Text = "Dispositivos: " + (DispCon.Count == 0 ? "N/A" : string.Join(", ", DispCon.Select(x => x._Descricao + " (" + Enum.GetName(typeof(T_Code), x.Dispositivo) + ")").ToArray()));
|
||||||
frmInstancial.frmPrincipal.cmbJoysticks.Items.Clear();
|
|
||||||
|
|
||||||
InicializarJoysticksConectados();
|
InicializarJoysticksConectados();
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
FuncoesGlobais.ExecutarMetodoComVerificacaoCrossThread(frmInstancial.frmPrincipal.cmbJoysticks, funcAtt);
|
FuncoesGlobais.ExecutarMetodoComVerificacaoCrossThread(frmInstancial.frmJoystick.lblDispositivo, funcAtt);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void InicializarJoysticksConectados()
|
public static void InicializarJoysticksConectados()
|
||||||
{
|
{
|
||||||
|
JoysticksConectados = new List<string>();
|
||||||
|
|
||||||
var directInput = new DirectInput();
|
var directInput = new DirectInput();
|
||||||
|
|
||||||
// Find a Joystick Guid
|
// Find a Joystick Guid
|
||||||
|
|
@ -85,7 +87,7 @@ namespace AgroBase
|
||||||
foreach (var deviceInstance in directInput.GetDevices(DeviceType.Gamepad, DeviceEnumerationFlags.AllDevices))
|
foreach (var deviceInstance in directInput.GetDevices(DeviceType.Gamepad, DeviceEnumerationFlags.AllDevices))
|
||||||
{
|
{
|
||||||
joystickGuid = deviceInstance.InstanceGuid;
|
joystickGuid = deviceInstance.InstanceGuid;
|
||||||
frmInstancial.frmPrincipal.cmbJoysticks.Items.Add(deviceInstance.InstanceName);
|
JoysticksConectados.Add(deviceInstance.InstanceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If Gamepad not found, look for a Joystick
|
// If Gamepad not found, look for a Joystick
|
||||||
|
|
@ -94,7 +96,7 @@ namespace AgroBase
|
||||||
foreach (var deviceInstance in directInput.GetDevices(DeviceType.Joystick, DeviceEnumerationFlags.AllDevices))
|
foreach (var deviceInstance in directInput.GetDevices(DeviceType.Joystick, DeviceEnumerationFlags.AllDevices))
|
||||||
{
|
{
|
||||||
joystickGuid = deviceInstance.InstanceGuid;
|
joystickGuid = deviceInstance.InstanceGuid;
|
||||||
frmInstancial.frmPrincipal.cmbJoysticks.Items.Add(deviceInstance.InstanceName);
|
JoysticksConectados.Add(deviceInstance.InstanceName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -127,7 +129,6 @@ namespace AgroBase
|
||||||
if (JoystickConectado != null)
|
if (JoystickConectado != null)
|
||||||
{
|
{
|
||||||
tmrJoystick.Start();
|
tmrJoystick.Start();
|
||||||
frmInstancial.frmPrincipal.cmbJoysticks.SelectedIndex = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -553,13 +554,16 @@ namespace AgroBase
|
||||||
(op.Parametros.Controle.MovimentoAutomatico && Comando.Dispositivo == T_Code.Mov) ||
|
(op.Parametros.Controle.MovimentoAutomatico && Comando.Dispositivo == T_Code.Mov) ||
|
||||||
(op.Parametros.Controle.DirecionalAutomatico && Comando.Dispositivo == T_Code.Dir);
|
(op.Parametros.Controle.DirecionalAutomatico && Comando.Dispositivo == T_Code.Dir);
|
||||||
|
|
||||||
|
bool bloqueioCalibragem =
|
||||||
|
op.Sensoriamento.Operacao.Calibrando;
|
||||||
|
|
||||||
bool bloqueioOperacional =
|
bool bloqueioOperacional =
|
||||||
op.Sensoriamento.Operacao.Calibrando ||
|
|
||||||
!op.Sensoriamento.Operacao.OperacaoLiberada ||
|
!op.Sensoriamento.Operacao.OperacaoLiberada ||
|
||||||
!op.Sensoriamento.Operacao.OperacaoIniciada;
|
!op.Sensoriamento.Operacao.OperacaoIniciada;
|
||||||
|
|
||||||
bool deveInterromper =
|
bool deveInterromper =
|
||||||
bloqueioAutomatico ||
|
bloqueioAutomatico ||
|
||||||
|
bloqueioCalibragem ||
|
||||||
!VerificaComandoValidoSonar(Comando.key) ||
|
!VerificaComandoValidoSonar(Comando.key) ||
|
||||||
(!ForcarComando && bloqueioOperacional);
|
(!ForcarComando && bloqueioOperacional);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4938,6 +4938,14 @@ namespace AgroBase.Models
|
||||||
public List<OperacaoSensoriamentoLogErrosModel> Logs { get; set; } = new List<OperacaoSensoriamentoLogErrosModel>();
|
public List<OperacaoSensoriamentoLogErrosModel> Logs { get; set; } = new List<OperacaoSensoriamentoLogErrosModel>();
|
||||||
// CoolerControl
|
// CoolerControl
|
||||||
public CoolerControlDataModel CoolerControl { get; set; } = new CoolerControlDataModel();
|
public CoolerControlDataModel CoolerControl { get; set; } = new CoolerControlDataModel();
|
||||||
|
// Cameras
|
||||||
|
public List<CameraWorkerItemModel> Cameras { get; set; } = new List<CameraWorkerItemModel>();
|
||||||
|
public void AtualizarCameras()
|
||||||
|
{
|
||||||
|
Cameras = CameraWorkerService.ListaCameras != null
|
||||||
|
? new List<CameraWorkerItemModel>(CameraWorkerService.ListaCameras)
|
||||||
|
: new List<CameraWorkerItemModel>();
|
||||||
|
}
|
||||||
|
|
||||||
public DateTime UltimoRegistroLog { get; set; } = DateTime.MinValue;
|
public DateTime UltimoRegistroLog { get; set; } = DateTime.MinValue;
|
||||||
|
|
||||||
|
|
@ -4988,6 +4996,7 @@ namespace AgroBase.Models
|
||||||
AtualizarTrajetoria(agora);
|
AtualizarTrajetoria(agora);
|
||||||
AtualizarGps(agora);
|
AtualizarGps(agora);
|
||||||
AtualizarLivox(agora);
|
AtualizarLivox(agora);
|
||||||
|
AtualizarCameras();
|
||||||
DadosPerformance.AtualizarDadosPerformance();
|
DadosPerformance.AtualizarDadosPerformance();
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -5031,6 +5040,7 @@ namespace AgroBase.Models
|
||||||
var dadosHealthWorker = OperadorSaude?.Clone();
|
var dadosHealthWorker = OperadorSaude?.Clone();
|
||||||
var dadosLivox = LivoxLidar?.Clone();
|
var dadosLivox = LivoxLidar?.Clone();
|
||||||
var dadosCooler = _Cooler?.GetResumo(agora);
|
var dadosCooler = _Cooler?.GetResumo(agora);
|
||||||
|
var dadosCameras = new List<CameraWorkerItemModel>(Cameras ?? new List<CameraWorkerItemModel>());
|
||||||
op.Controle.Momento = agora;
|
op.Controle.Momento = agora;
|
||||||
|
|
||||||
OperacaoSensoriamentoConjuntoModel dadosAtualizados = new OperacaoSensoriamentoConjuntoModel(op)
|
OperacaoSensoriamentoConjuntoModel dadosAtualizados = new OperacaoSensoriamentoConjuntoModel(op)
|
||||||
|
|
@ -5051,6 +5061,7 @@ namespace AgroBase.Models
|
||||||
DadosPerformance = dadosPerformance,
|
DadosPerformance = dadosPerformance,
|
||||||
LivoxLidar = dadosLivox,
|
LivoxLidar = dadosLivox,
|
||||||
CoolerControl = dadosCooler,
|
CoolerControl = dadosCooler,
|
||||||
|
Cameras = dadosCameras,
|
||||||
Logs = op.ListarEventosPendentes(),
|
Logs = op.ListarEventosPendentes(),
|
||||||
UltimoRegistroLog = UltimoRegistroLog,
|
UltimoRegistroLog = UltimoRegistroLog,
|
||||||
};
|
};
|
||||||
|
|
@ -5078,6 +5089,7 @@ namespace AgroBase.Models
|
||||||
IMU = IMU?.Clone(),
|
IMU = IMU?.Clone(),
|
||||||
LivoxLidar = LivoxLidar?.Clone(),
|
LivoxLidar = LivoxLidar?.Clone(),
|
||||||
CoolerControl = CoolerControl?.Clone(),
|
CoolerControl = CoolerControl?.Clone(),
|
||||||
|
Cameras = new List<CameraWorkerItemModel>(Cameras ?? new List<CameraWorkerItemModel>()),
|
||||||
Logs = new List<OperacaoSensoriamentoLogErrosModel>(Logs ?? new List<OperacaoSensoriamentoLogErrosModel>()),
|
Logs = new List<OperacaoSensoriamentoLogErrosModel>(Logs ?? new List<OperacaoSensoriamentoLogErrosModel>()),
|
||||||
UltimoRegistroLog = UltimoRegistroLog,
|
UltimoRegistroLog = UltimoRegistroLog,
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -176,6 +176,36 @@ namespace AgroBase.Models.Operacoes
|
||||||
|
|
||||||
public class OperacaoParametrosControleModel : INotifyPropertyChanged
|
public class OperacaoParametrosControleModel : INotifyPropertyChanged
|
||||||
{
|
{
|
||||||
|
private bool _controleManualAcionado;
|
||||||
|
public bool ControleManualAcionado
|
||||||
|
{
|
||||||
|
get => _controleManualAcionado;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (_controleManualAcionado != value)
|
||||||
|
{
|
||||||
|
_controleManualAcionado = value;
|
||||||
|
OnPropertyChanged(nameof(ControleManualAcionado));
|
||||||
|
|
||||||
|
if (_controleManualAcionado)
|
||||||
|
{
|
||||||
|
_movimentoAutomaticoAnterior = _movimentoAutomatico;
|
||||||
|
_direcionalAutomaticoAnterior = _direcionalAutomatico;
|
||||||
|
_movimentoAutomatico = false;
|
||||||
|
_direcionalAutomatico = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_movimentoAutomatico != _movimentoAutomaticoAnterior)
|
||||||
|
_movimentoAutomatico = _movimentoAutomaticoAnterior;
|
||||||
|
if (_direcionalAutomatico != _direcionalAutomaticoAnterior)
|
||||||
|
_direcionalAutomatico = _direcionalAutomaticoAnterior;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool _movimentoAutomaticoAnterior;
|
||||||
private bool _movimentoAutomatico;
|
private bool _movimentoAutomatico;
|
||||||
public bool MovimentoAutomatico
|
public bool MovimentoAutomatico
|
||||||
{
|
{
|
||||||
|
|
@ -190,6 +220,7 @@ namespace AgroBase.Models.Operacoes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private bool _direcionalAutomaticoAnterior;
|
||||||
private bool _direcionalAutomatico;
|
private bool _direcionalAutomatico;
|
||||||
public bool DirecionalAutomatico
|
public bool DirecionalAutomatico
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue