agrobot_base/AgroBase/OperationControl/Windows/MainWindow.xaml

975 lines
79 KiB
XML

<Window x:Class="OperationControl.Windows.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:scott="clr-namespace:ScottPlot.WPF;assembly=ScottPlot.WPF"
xmlns:vlc="clr-namespace:LibVLCSharp.WPF;assembly=LibVLCSharp.WPF"
xmlns:controls="clr-namespace:OperationControl.Controls"
xmlns:models="clr-namespace:OperationControl.Models"
xmlns:conv="clr-namespace:OperationControl.Converters"
mc:Ignorable="d"
Title="Controle da Opearação Agrobot" Height="1025" Width="1920" WindowStartupLocation="CenterScreen" WindowState="Maximized">
<Window.Resources>
<conv:NullToVisibilityConverter x:Key="NullToVisibilityConverter" />
<Style x:Key="RoundedLabel" TargetType="Label">
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background" Value="Gray"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="FontSize" Value="9"/>
<Setter Property="BorderBrush" Value="Transparent"/>
<Setter Property="BorderThickness" Value="2"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Label">
<Border Background="{TemplateBinding Background}" CornerRadius="8" Padding="2" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<EventSetter Event="MouseLeftButtonDown" Handler="DiagnosticoModulo_Click" />
</Style>
<!-- SCROLLBAR FININHA GENÉRICA -->
<Style x:Key="ThinScrollBar" TargetType="ScrollBar">
<Setter Property="Height" Value="6"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ScrollBar">
<Grid Background="Transparent">
<Track x:Name="PART_Track"
Height="6">
<Track.DecreaseRepeatButton>
<RepeatButton Command="ScrollBar.LineLeftCommand" Visibility="Collapsed" />
</Track.DecreaseRepeatButton>
<Track.IncreaseRepeatButton>
<RepeatButton Command="ScrollBar.LineRightCommand" Visibility="Collapsed" />
</Track.IncreaseRepeatButton>
<Track.Thumb>
<Thumb Height="6" Background="#4B5563" Margin="0" BorderThickness="0"/>
<!--CornerRadius="3"-->
</Track.Thumb>
</Track>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Border x:Name="brdRovers" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="10,0,1460,943">
<Canvas Height="64" VerticalAlignment="Bottom">
<Image HorizontalAlignment="Center" Height="66" VerticalAlignment="Top" Width="94" Source="/Resources/logo.png" Canvas.Top="2" Canvas.Left="1"/>
<Label Content="Rover em foco" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="100" Canvas.Top="9"/>
<Label x:Name="lblDispositivos_Status" Content="Desconectado" Style="{StaticResource RoundedLabel}" Height="26" Width="76" Canvas.Left="367" Canvas.Top="9" HorizontalAlignment="Center" VerticalAlignment="Top" IsEnabled="False"/>
<ComboBox x:Name="cmbDispositivo" HorizontalAlignment="Left" VerticalAlignment="Center" Width="138" Canvas.Left="224" Canvas.Top="11" SelectionChanged="cmbDispositivo_SelectionChanged"/>
<Label x:Name="lblDisposiivos_Autonomia" Content="Liberado | Automático | EmAndamento | CaminhandoRua" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="100" Canvas.Top="35"/>
</Canvas>
</Border>
<Border Name="brdResumo" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="10,71,1460,818">
<Canvas>
<Label Content="Resumo Operacional" FontWeight="Bold" FontSize="10" HorizontalAlignment="Left" Canvas.Top="-4" VerticalAlignment="Center" Canvas.Left="-2"/>
<Label Content="Rua Atual" FontSize="10" HorizontalAlignment="Center" Canvas.Top="12" VerticalAlignment="Top" RenderTransformOrigin="0.756,0.502"/>
<controls:ProgressBarText x:Name="pgbResumo_RuaAtual" Height="10" Canvas.Left="57" Canvas.Top="19" Width="92" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblResumo_RuaAtual" Content="0,00 m / 0,00 m (0)" FontSize="10" Canvas.Top="12" HorizontalAlignment="Center" VerticalAlignment="Center" Canvas.Left="154"/>
<Label Content="Área Total" FontSize="10" HorizontalAlignment="Center" Canvas.Top="28" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_AreaTotal" Height="10" Canvas.Left="57" Canvas.Top="34" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_AreaTotal" Content="0,00 m / 0,00 m" FontSize="10" Canvas.Top="28" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="154"/>
<Label Content="Bateria" FontSize="10" HorizontalAlignment="Center" Canvas.Top="44" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_Bateria" Height="10" Canvas.Left="57" Canvas.Top="51" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_Bateria" Content="0,00 V (00:00:00 0,00 m)" FontSize="9" HorizontalAlignment="Center" Canvas.Top="44" VerticalAlignment="Center" Canvas.Left="154"/>
<Label Content="Herbicida" FontSize="10" HorizontalAlignment="Center" Canvas.Top="60" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_Herbicida" Height="10" Canvas.Left="57" Canvas.Top="67" Width="92" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_Herbicida" Content="0,00 L (00:00:00 0,00 m)" FontSize="9" HorizontalAlignment="Left" Canvas.Top="60" VerticalAlignment="Center" Canvas.Left="154"/>
<Label Content="Infestação" FontSize="10" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_Infestacao" Height="10" Canvas.Left="57" Canvas.Top="83" Width="92" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_Infestacao" Content="0,00 mL/erva" FontSize="9" HorizontalAlignment="Center" Canvas.Top="76" VerticalAlignment="Top" Canvas.Left="154"/>
<Label Content="Conexão" FontSize="10" Canvas.Top="92" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<controls:ProgressBarText x:Name="pgbResumo_Conexao" Height="10" Canvas.Left="57" Canvas.Top="99" Width="92" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblResumo_Conexao" Content="0 ms 0,00% 0,00 Mbps" FontSize="9" HorizontalAlignment="Center" Canvas.Top="92" VerticalAlignment="Top" Canvas.Left="154"/>
<Label x:Name="lblResumo_OperacaoLiberada" Content="Operação Bloqueada" FontFamily="Segoe UI Emoji" FontSize="10" Canvas.Top="12" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoModo" Content="Modo Manual" FontSize="10" Canvas.Top="28" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoStatus" Content="Status NaoIniciado" FontSize="10" Canvas.Top="44" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_StatusCarro" Content="Carro Parado" FontSize="10" Canvas.Top="60" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_TemperaturaGeral" Content="Temperatura 0,00 °C" FontSize="10" Canvas.Top="76" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
<Label x:Name="lblResumo_OperacaoDuracao" Content="Duração 00:00:00 / 00:00:00" FontSize="10" Canvas.Top="92" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="286"/>
</Canvas>
</Border>
<Border x:Name="brdDiagnostico" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="10,196,1460,373">
<Canvas>
<Label Content="Diagnóstios" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="10" Canvas.Top="-5" FontWeight="Bold"/>
<TextBlock x:Name="lblDiagnosticos_Impedimento" Text="Impedimento: Nenhum" HorizontalAlignment="Left" VerticalAlignment="Center" TextWrapping="Wrap" FontSize="9" Canvas.Top="15" Width="428" Canvas.Left="10"/>
<Image HorizontalAlignment="Center" Height="359" VerticalAlignment="Top" Width="308" Source="/Resources/robo_superior.jpg" Stretch="UniformToFill" Canvas.Left="70" Canvas.Top="71"/>
<Label x:Name="lblDiagnosticos_BAT" Tag="sCOR" Content="🔒BAT" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="37" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB3V" Tag="sCOR" Content="🔒B3V3" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="84" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB5V" Tag="sCOR" Content="🔒B5V0" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="131" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB7V2" Tag="sCOR" Content="🔒B7V2" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="178" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB12V" Tag="sCOR" Content="🔒B12V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="225" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB19V" Tag="sCOR" Content="🔒B19V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="272" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB24V" Tag="sCOR" Content="🔒B24V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="319" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_AB36V" Tag="sCOR" Content="🔒B36V" Style="{StaticResource RoundedLabel}" Height="21" Width="42" Canvas.Left="366" Canvas.Top="76" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_DF" Content="🔒DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="102" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_DF" Content="🔒MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FRODF" Tag="sSRV" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_MAGDF" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_TMVDF" Tag="sNTC" Content="🔒TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_EF" Content="🔒DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="102" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_EF" Content="🔒MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FROEF" Tag="sSRV" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_MAGEF" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_TMVEF" Tag="sNTC" Content="🔒TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_ET" Content="🔒DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="280" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_ET" Content="🔒MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FROET" Tag="sSRV" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_MAGET" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="53" Canvas.Top="332" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_TMVET" Tag="sNTC" Content="🔒TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="99" Canvas.Top="332" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_DIR_DT" Content="🔒DIR" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="280" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_MOV_DT" Content="🔒MOV" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_FRODT" Tag="sSRV" Content="🔒FRO" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="306" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_MAGDT" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="346" Canvas.Top="332" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_TMVDT" Tag="sNTC" Content="🔒TMP" Style="{StaticResource RoundedLabel}" Height="21" Width="41" Canvas.Left="300" Canvas.Top="332" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SNR" Content="🔒SNR" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="102" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_LVX" Content="🔒LDR" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="128" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_IMU" Content="🔒IMU" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="154" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_GPS" Content="🔒GPS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="192" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN" Tag="sMOD" Content="🔒SEN" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="218" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_NPC" Content="🔒NCP" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="244" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_RLCIN" Tag="sRLE" Content="🔒CLE" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="112" Canvas.Top="218" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_RLCOUT" Tag="sRLE" Content="🔒CLS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="287" Canvas.Top="218" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_CAN" Content="🔒CAN" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="398" Canvas.Top="192" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_IPB" Content="🔒LAN" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="398" Canvas.Top="218" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_TRJ" Content="🔒TRAJ" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="398" Canvas.Top="244" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_BOMBA" Tag="sBMB" Content="🔒BMB" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="157" Canvas.Top="360" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU" Tag="sMOD" Content="🔒ATU" Style="{StaticResource RoundedLabel}" Height="22" Width="40" Canvas.Left="202" Canvas.Top="333" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_PRSLN" Tag="sPRS" Content="🔒PRS" Style="{StaticResource RoundedLabel}" Height="22" Width="40" Canvas.Left="157" Canvas.Top="333" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_FLXLN" Tag="sFLX" Content="🔒FLX" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="247" Canvas.Top="334" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_MASRS" Tag="sMAS" Content="🔒MAS" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="247" Canvas.Top="360" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_B01" Tag="sBIC" Content="🔒B01" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="79" Canvas.Top="411" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_SRVB1" Tag="sSRV" Content="🔒SVB1" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="79" Canvas.Top="386" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_B02" Tag="sBIC" Content="🔒B02" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="411" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_B03" Tag="sBIC" Content="🔒B03" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="324" Canvas.Top="412" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_SRVB3" Tag="sSRV" Content="🔒SVB3" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="324" Canvas.Top="386" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_MAGESQ" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="22" Width="40" Canvas.Left="140" Canvas.Top="400" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label x:Name="lblDiagnosticos_ATU_MAGDIR" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="22" Width="40" Canvas.Left="262" Canvas.Top="400" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_ATU_MAGALT" Tag="sMAG" Content="🔒MAG" Style="{StaticResource RoundedLabel}" Height="22" Width="40" Canvas.Left="202" Canvas.Top="388" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_CAM" Content="🔒CAM" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="202" Canvas.Top="360" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_LEDOP" Tag="sLED" Content="🔒OP" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="10" Canvas.Top="192" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_LEDMN" Tag="sLED" Content="🔒MN" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="10" Canvas.Top="218" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label x:Name="lblDiagnosticos_SEN_LEDAT" Tag="sLED" Content="🔒AT" Style="{StaticResource RoundedLabel}" Height="21" Width="40" Canvas.Left="10" Canvas.Top="244" HorizontalAlignment="Center" VerticalAlignment="Top"/>
</Canvas>
</Border>
<Border x:Name="brdStatusModulo" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="10,641,1460,85">
<Canvas>
<Label Content="Saúde" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="10" Canvas.Top="-5" FontWeight="Bold"/>
<Label x:Name="lblSaude_Descricao" Content="Módulo" HorizontalAlignment="Left" VerticalAlignment="Center" FontSize="9" Canvas.Left="35" Canvas.Top="4"/>
<Label x:Name="lblSaude_Iniciado" Content="Versão x.x.x.x" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="124" FontSize="9" Canvas.Top="4"/>
<Label x:Name="lblSaude_Status" Content="-" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="194" FontSize="9" Canvas.Top="4"/>
<Label x:Name="lblSaude_CAN" Content="CAN 0 ms" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="313" FontSize="9" Canvas.Top="3"/>
<Label x:Name="lblSaude_Latencia" Content="Latência 0 ms" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="372" FontSize="9" Canvas.Top="4"/>
<TextBlock x:Name="lblSaude_Impedimento" Text="Impedimento: Nenhum" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="9" Canvas.Top="24" TextWrapping="Wrap" Width="428" Canvas.Left="10"/>
<CheckBox x:Name="chbSaude_Mandatorio" Content="Mandatório" Canvas.Left="5" Canvas.Top="55" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" ToolTip="Define se o módulo é obrigatório para que a operação em andamento seja liberada"/>
<CheckBox x:Name="chbSaude_EmUso" Content="Em Uso" Canvas.Left="82" Canvas.Top="55" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="10" ToolTip="Define se o módulo deve ser usado durante a operação em andamento"/>
<Button x:Name="btnSaude_Salvar" Content="Salvar" Canvas.Left="155" Canvas.Top="54" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" Width="38" ToolTip="Salva os ajustes realizados nos parametros do módulo" Click="btnSaude_Salvar_Click"/>
<Border HorizontalAlignment="Center" BorderBrush="Black" BorderThickness="1" Height="204" Width="438" VerticalAlignment="Top" Canvas.Left="5" Canvas.Top="75">
<TabControl x:Name="tab_Saude">
<TabItem x:Name="tabSaude_CondicoesOperacionais" Header="Condições Operacionais">
<Canvas>
<ListBox x:Name="lstSaude_CondicoesOperacionais" Height="174" Width="430" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="9"/>
</Canvas>
</TabItem>
<TabItem x:Name="tabSaude_Acompanhamento" Header="Acompanhamento">
<Canvas>
<scott:WpfPlot x:Name="pltSaude_Acompanhamento" Height="200" Width="430"/>
</Canvas>
</TabItem>
<TabItem x:Name="tabSaude_Opcoes" Header="Opções">
<Grid Margin="5">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- Mensagem quando não há opções para o módulo selecionado -->
<TextBlock x:Name="txtOpcoes_SemDados" Text="Nenhum teste disponível para este módulo." FontSize="10" VerticalAlignment="Center" HorizontalAlignment="Center" TextWrapping="Wrap" Visibility="Visible"/>
<!-- Painel especifico de ATU -->
<StackPanel x:Name="panelOpcoes_Atuador" Grid.Row="0" Visibility="Collapsed">
<StackPanel Orientation="Horizontal" Margin="0,5,0,0">
<Label Content="Altura" Height="30"/>
<Slider x:Name="sldBarra_Altura" Margin="5,0,5,0" Minimum="50" Maximum="80" Orientation="Vertical" ValueChanged="sldBarra_Altura_ValueChanged" Height="83"/>
<Label x:Name="lblBarra_Altura" Content="0,00 cm" Height="30"/>
<Button x:Name="btnBarra_Mover" Content="Mover" Width="50" Height="20" Margin="10 0 0 0" Click="btnBarra_Mover_Click"/>
</StackPanel>
</StackPanel>
<!-- Painel específico de Bico (ATU + B01..B04) -->
<StackPanel x:Name="panelOpcoes_Bico" Grid.Row="0" Visibility="Collapsed">
<!-- Título / identificação -->
<StackPanel Orientation="Horizontal">
<Label Content="Controle"/>
<Button x:Name="btnBico_Ligar" Content="Ligar" Width="80" Margin="0,0,5,0" Click="btnBico_Ligar_Click"/>
<Button x:Name="btnBico_Desligar" Content="Desligar" Width="80" Margin="0,0,5,0" Click="btnBico_Desligar_Click"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,5,0,0">
<Label Content="Movimento"/>
<Slider x:Name="sldBico_Angular" Width="161" Margin="0,0,5,0" Minimum="-90" Maximum="90" ValueChanged="sldBico_Angular_ValueChanged"/>
<Label x:Name="lblBico_Angulo" Content="0°"/>
<Button x:Name="btnBico_Mover" Content="Mover" Width="50" Margin="10 0 0 0" Click="btnBico_Mover_Click"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,5,0,0">
<Label Content="Angulo de Abertura"/>
<TextBox x:Name="txtBico_AnguloAbertura" Width="50"/>
<Button x:Name="btnBico_AnguloAberturaSalvar" Content="Salvar" Width="50" Margin="10 0 0 0" Click="btnBico_AnguloAberturaSalvar_Click"/>
</StackPanel>
<!-- Título / identificação -->
<TextBlock x:Name="txtBico_Titulo" FontWeight="Bold" FontSize="11" Text="Bico X - Testes" Margin="0,0,0,5"/>
<!-- “Cartõezinhos” de status -->
<UniformGrid Grid.Row="2" Rows="2" Columns="3" Margin="0,0,0,0">
<!-- Comando enviado -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_Comando" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Status real -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Status real" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_StatusReal" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Tempo ligado -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Tempo ligado" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_TempoLigado" FontSize="10" Text="00:00:00"/>
</StackPanel>
</Border>
<!-- Vazão -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Vazão" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_Vazao" FontSize="10" Text="0,0 L/min"/>
</StackPanel>
</Border>
<!-- Pressão da bomba -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Pressão bomba" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_Pressao" FontSize="10" Text="0,0 bar"/>
</StackPanel>
</Border>
<!-- Espaço livre pra futuro (temperatura, etc.) -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Atuações" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtBico_Atuacoes" FontSize="10" Text="—"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- Painel específico de Bomba (ATU + Bomba principal) -->
<StackPanel x:Name="panelOpcoes_Bomba" Grid.Row="0" Visibility="Collapsed">
<!-- Linha de comandos principais -->
<StackPanel Orientation="Horizontal">
<!-- Ligar / Desligar -->
<Button x:Name="btnBomba_Ligar" Content="Ligar" Width="80" Margin="0,0,5,0" Click="btnBomba_Ligar_Click"/>
<Button x:Name="btnBomba_Desligar" Content="Desligar" Width="80" Margin="0,0,10,0" Click="btnBomba_Desligar_Click"/>
<!-- Ajuste de pressão da linha -->
<TextBlock Text="Pressão alvo:" VerticalAlignment="Center" Margin="0,0,5,0" FontSize="10"/>
<!-- Slider de pressão (ex.: 0 a 10 bar) -->
<Slider x:Name="sldBomba_PressaoAlvo" Width="120" Minimum="0" Maximum="150" TickFrequency="0.5" IsSnapToTickEnabled="True" Margin="0,0,5,0" ValueChanged="sldBomba_PressaoAlvo_ValueChanged"/>
<!-- Label mostrando valor da pressão alvo -->
<Label x:Name="lblBomba_PressaoAlvo" Content="0,0 bar" VerticalAlignment="Center" FontSize="10"/>
</StackPanel>
<!-- Título / identificação -->
<TextBlock x:Name="txtBomba_Titulo" FontWeight="Bold" FontSize="11" Text="Bomba - Testes" Margin="0,5,0,5"/>
<!-- “Cartõezinhos” de status -->
<UniformGrid Rows="2" Columns="2" Margin="0,0,0,0">
<!-- Comando enviado -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="9" FontWeight="Bold"/>
<!-- Texto: Ligado / Desligado -->
<TextBlock x:Name="txtBomba_Comando" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Status real -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Status real" FontSize="9" FontWeight="Bold"/>
<!-- Texto: Ligada / Desligada -->
<TextBlock x:Name="txtBomba_StatusReal" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Pressão da linha (leitura) -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Pressão linha (leitura)" FontSize="9" FontWeight="Bold"/>
<!-- Ex.: 3,5 bar -->
<TextBlock x:Name="txtBomba_PressaoLinha" FontSize="10" Text="0,0 bar"/>
</StackPanel>
</Border>
<!-- Potência aplicada -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Potência aplicada" FontSize="9" FontWeight="Bold"/>
<!-- Ex.: 75 % ou 1.2 kW -->
<TextBlock x:Name="txtBomba_Potencia" FontSize="10" Text="0 %"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- Painel específico de Direcional -->
<StackPanel x:Name="panelOpcoes_Direcional" Grid.Row="0" Visibility="Collapsed">
<!-- Linha de comandos principais -->
<StackPanel Orientation="Horizontal">
<!-- Referenciar -->
<Button x:Name="btnDir_Referenciar" Content="Referenciar" Width="80" Margin="0,0,5,0" Click="btnDir_Referenciar_Click"/>
<!-- Iniciar movimento -->
<Button x:Name="btnDir_Movimentar" Content="Mover" Width="80" Margin="0,0,10,0" Click="btnDir_Movimentar_Click"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0 5 0 0">
<!-- Tipo movimento -->
<ComboBox x:Name="cmbDir_Movimento" Width="100" Margin="0,0,10,0" FontSize="10"/>
<!-- Sentido de controle -->
<ComboBox x:Name="cmbDir_Direcao" Width="100" Margin="0,0,10,0" FontSize="10"/>
<!-- Slider de angulo -->
<Slider x:Name="sldDir_Angulo" Width="100" Minimum="0" Maximum="180" TickFrequency="1" IsSnapToTickEnabled="True" Margin="0,0,10,0" ValueChanged="sldDir_Angulo_ValueChanged"/>
<!-- Label mostrando valor do angulo -->
<Label x:Name="lblDir_Angulo" Content="0 °" VerticalAlignment="Center" FontSize="10"/>
</StackPanel>
<!-- Título / identificação -->
<TextBlock x:Name="txtDir_Titulo" FontWeight="Bold" FontSize="11" Text="Direcional ET - Testes" Margin="0,5,0,5"/>
<!-- “Cartõezinhos” de status -->
<UniformGrid Rows="2" Columns="2" Margin="0,0,0,0">
<!-- Sentido controle -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Sentido Controle" FontSize="9" FontWeight="Bold"/>
<!-- Texto: Sentido SP -->
<TextBlock x:Name="txtDir_SentidoSP" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Sentido real -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Sentido real" FontSize="9" FontWeight="Bold"/>
<!-- Texto: Ligada / Desligada -->
<TextBlock x:Name="txtDir_Sentido" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Angulo controle -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Angulo Controle" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtDir_AnguloSP" FontSize="10" Text="0°"/>
</StackPanel>
</Border>
<!-- Angulo real -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Angulo real" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtDir_Angulo" FontSize="10" Text="0°"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- Painel específico de GNSS -->
<StackPanel x:Name="panelOpcoes_GPS" Grid.Row="0" Visibility="Collapsed">
<TextBlock FontWeight="Bold" FontSize="11" Text="Lever Arm"/>
<!-- Linha de comandos principais -->
<StackPanel Orientation="Horizontal" Margin="0 5 0 0">
<!-- Slider de lever arm lateral -->
<Label Content="Lateral"/>
<Slider x:Name="sldGps_LeverArmLateral" Width="110" Minimum="-5" Maximum="5" TickFrequency="0.1" IsSnapToTickEnabled="True" Margin="0,0,10,0" ValueChanged="sldGps_LeverArmLateral_ValueChanged"/>
<Label x:Name="lblGps_LeverArmLateral" Content="00 cm" VerticalAlignment="Center" FontSize="10" Margin="0 0 10 0"/>
<!-- Slider de lever arm frontal -->
<Label Content="Frontal"/>
<Slider x:Name="sldGps_LeverArmFrontal" Width="110" Minimum="-10" Maximum="10" TickFrequency="0.1" IsSnapToTickEnabled="True" Margin="0,0,10,0" ValueChanged="sldGps_LeverArmFrontal_ValueChanged"/>
<Label x:Name="lblGps_LeverArmFrontal" Content="00 cm" VerticalAlignment="Center" FontSize="10" Margin="0 0 10 0"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0 5 0 0">
<!-- Salvar -->
<Button x:Name="btnGps_Salvar" Content="Salvar" Width="80" Margin="0,0,5,0" Click="btnGps_Salvar_Click"/>
</StackPanel>
<!-- Título / identificação -->
<TextBlock FontWeight="Bold" FontSize="11" Text="GNSS - Testes" Margin="0,5,0,5"/>
<!-- “Cartõezinhos” de status -->
<UniformGrid Rows="2" Columns="3" Margin="0,0,0,0">
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Correção" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtGps_Correcao" FontSize="10" Text="SemCorrecao"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Idade" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtGps_Idade" FontSize="10" Text="0,00 s (Base)"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Precisão" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtGps_Precisao" FontSize="10" Text="0,00 cm"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Satélites" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtGps_NSatelites" FontSize="10" Text="0"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Distancia da Base" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtGps_DistBase" FontSize="10" Text="0,00 m"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Orientação" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtGps_Orientacao" FontSize="10" Text="0,00°"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- Painel especifico de TRJ -->
<StackPanel x:Name="panelOpcoes_Trajetoria" Grid.Row="0" Visibility="Collapsed">
<StackPanel Orientation="Horizontal">
<Label Content="Status do trabalho"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="5">
<CheckBox x:Name="chbTrajetoria_BatLiberada" Content="Bateria Liberada" Margin="5"/>
<CheckBox x:Name="chbTrajetoria_HerbLiberado" Content="Pulverizador Liberado" Margin="5"/>
<Button x:Name="btnTrajetoria_Confirmar" Content="Confirmar" Width="60" Height="20" Margin="5 0 5 0" Click="btnTrajetoria_Confirmar_Click"/>
</StackPanel>
<!-- “Cartõezinhos” de status -->
<UniformGrid Rows="2" Columns="3" Margin="0,0,0,0">
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Distancia Corredor" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtTrajetoria_DistCorredor" FontSize="10" Text="0,00 m"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Distancia Segura Bateria" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtTrajetoria_DistBateria" FontSize="10" Text="0,00 m"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Distancia Segura Pulverizador" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtTrajetoria_DistPulverizador" FontSize="10" Text="0,00 m"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Status" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtTrajetoria_Status" FontSize="10" Text="OkCompleto"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Bateria Suficiente" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtTrajetoria_BatOk" FontSize="10" Text="Sim"/>
</StackPanel>
</Border>
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Herbicida Suficiente" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtTrajetoria_HerbOk" FontSize="10" Text="Sim"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- Painel específico de Rele (SEN) -->
<StackPanel x:Name="panelOpcoes_Rele" Grid.Row="0" Visibility="Collapsed">
<!-- Título / identificação -->
<StackPanel Orientation="Horizontal">
<Label Content="Controle"/>
<Button x:Name="btnRele_Ligar" Content="Ligar" Width="80" Margin="0,0,5,0" Click="btnRele_Ligar_Click"/>
<Button x:Name="btnRele_Desligar" Content="Desligar" Width="80" Margin="0,0,5,0" Click="btnRele_Desligar_Click"/>
</StackPanel>
<!-- Título / identificação -->
<TextBlock x:Name="txtRele_Titulo" FontWeight="Bold" FontSize="11" Text="Relé X - Testes" Margin="0,0,0,5"/>
<!-- “Cartõezinhos” de status -->
<UniformGrid Grid.Row="2" Rows="1" Columns="2" Margin="0,0,0,0">
<!-- Comando enviado -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtRele_Comando" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Status real -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Status real" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtRele_StatusReal" FontSize="10" Text="—"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- Painel específico de Servo (SEN) -->
<StackPanel x:Name="panelOpcoes_Servo" Grid.Row="0" Visibility="Collapsed">
<!-- Título / identificação -->
<StackPanel Orientation="Horizontal">
<Label Content="Controle"/>
<Slider x:Name="sldServo_Angulo" Minimum="0" Maximum="90" TickFrequency="1" Width="130" Margin="5" ValueChanged="sldServo_Angulo_ValueChanged"/>
<Label x:Name="lblServo_Angulo" Content="0°"/>
<Button x:Name="btnServo_Enviar" Content="Enviar" Width="80" Margin="5 3 0 3" Click="btnServo_Enviar_Click"/>
</StackPanel>
<!-- “Cartõezinhos” de status -->
<UniformGrid Grid.Row="2" Rows="1" Columns="3" Margin="0,0,0,0">
<!-- Comando enviado -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtServo_Comando" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Status real -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Status real" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtServo_Leitura" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Incremental -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Modo" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtServo_Incremental" FontSize="10" Text="—"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- Painel específico de NPC -->
<StackPanel x:Name="panelOpcoes_NPC" Grid.Row="0" Visibility="Collapsed">
<!-- Título / identificação -->
<StackPanel Orientation="Horizontal">
<Label Content="Modo de Controle" Margin="0 5 0 0"/>
<ComboBox x:Name="cmbNpc_CoolerModo" Width="80" Margin="5" SelectionChanged="cmbNpc_CoolerModo_SelectionChanged"/>
<CheckBox x:Name="chbNpc_CoolerEntrada" Content="Entrada" Margin="10"/>
<CheckBox x:Name="chbNpc_CoolerSaida" Content="Saida" Margin="10"/>
</StackPanel>
<!-- Título / identificação -->
<StackPanel Orientation="Horizontal">
<Label Content="Temperatura Ligar"/>
<TextBox x:Name="txtNpc_CoolerTempOn" Width="30" Margin="5"/>
<Label Content="Temperatura Turbo"/>
<TextBox x:Name="txtNpc_CoolerTempTurbo" Width="30" Margin="5"/>
<Button x:Name="btnNpc_CoolerEnviar" Content="Enviar" Width="80" Margin="5" Click="btnNpc_CoolerEnviar_Click"/>
</StackPanel>
<!-- “Cartõezinhos” de status -->
<UniformGrid Grid.Row="2" Rows="2" Columns="2" Margin="0,0,0,0">
<!-- Modo Controle -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Modo Controle" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtNpc_CoolerModo" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Temperatura -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Temperatura" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtNpc_CoolerTemperatura" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Cooler Entrada -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Cooler Entrada" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtNpc_CoolerEntrada" FontSize="10" Text="—"/>
</StackPanel>
</Border>
<!-- Cooler Saida -->
<Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="3">
<StackPanel>
<TextBlock Text="Cooler Saída" FontSize="9" FontWeight="Bold"/>
<TextBlock x:Name="txtNpc_CoolerSaida" FontSize="10" Text="—"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
</Grid>
</TabItem>
<TabItem x:Name="tabSaude_Logs" Header="Logs">
<Canvas>
<ListBox x:Name="lstSaude_Logs" Height="174" Width="430" HorizontalAlignment="Center" VerticalAlignment="Top" FontSize="9"/>
</Canvas>
</TabItem>
</TabControl>
</Border>
</Canvas>
</Border>
<Border x:Name="brdGNSS" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="465,0,1266,943" Height="66" VerticalAlignment="Bottom">
<Canvas>
<Label x:Name="lblGNSS_Posicao" Content="Posição" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="0" Canvas.Top="-3"/>
<Label x:Name="lblGNSS_Correcao" Content="Correção RTKFixo B 1,3 s" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="16" FontSize="9"/>
<Label x:Name="lblGNSS_Satelites" Content="Satélites 29 (0,60 cm)" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="29" FontSize="9"/>
<Label x:Name="lblGNSS_Altitude" Content="Altitude 634,21 m" HorizontalAlignment="Left" VerticalAlignment="Top" Canvas.Left="-1" Canvas.Top="42" FontSize="9"/>
<Label x:Name="lblGNSS_Progresso" Content="0,00%" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Left="143" Canvas.Top="16" FontSize="9"/>
<Button x:Name="btnGNSS_FixarBase" Content="Fixar" Canvas.Left="127" Canvas.Top="42" Click="btnGNSS_FixarBase_Click" HorizontalAlignment="Center" VerticalAlignment="Center" Width="50"/>
</Canvas>
</Border>
<Border x:Name="brdAjustesOperacao" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="1048,0,475,943">
<Canvas Height="64" VerticalAlignment="Bottom">
<Label Content="Parâmetros da Operação" FontWeight="Bold" FontSize="11" Canvas.Top="-3" HorizontalAlignment="Center" VerticalAlignment="Top"/>
<Label Content="Vel. com Ervas" FontSize="9" Canvas.Top="15" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Label Content="Vel. sem Ervas" FontSize="9" Canvas.Top="30" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<Label Content="Angulo Máx" FontSize="9" Canvas.Top="45" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBox x:Name="txtParametros_VelCErvas" Canvas.Left="64" TextWrapping="Wrap" Text="20" Canvas.Top="19" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Velocidade que o equipamento se move quando há presença de ervas no radar, em km/h"/>
<TextBox x:Name="txtParametros_VelSErvas" Canvas.Left="64" TextWrapping="Wrap" Text="50" Canvas.Top="34" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Velocidade que o equipamento se move quando não há presença de ervas no radar, em km/h"/>
<TextBox x:Name="txtParametros_AngMax" Canvas.Left="64" TextWrapping="Wrap" Text="30" Canvas.Top="49" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Angulo máximo de controle direcional, em graus"/>
<Label Content="Início Atuação" FontSize="9" Canvas.Top="15" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="93"/>
<Label Content="Area Atuação" FontSize="9" Canvas.Top="30" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="93"/>
<Label Content="Pressão Linha" FontSize="9" Canvas.Top="45" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="93"/>
<TextBox x:Name="txtParametros_RoiAtuacao" Canvas.Left="156" TextWrapping="Wrap" Text="70" Canvas.Top="19" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Percentual da imagem onde a erva detectada envia o comando para atuação dos bicos pulverizadores, onde 100% em cima e 0% em baixo"/>
<TextBox x:Name="txtParametros_AreaAtuacao" Canvas.Left="156" TextWrapping="Wrap" Text="10" Canvas.Top="34" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Percentual de altura da imagem para atuação dos bicos quando as ervas entrarem nessa região"/>
<TextBox x:Name="txtParametros_PressaoLiha" Canvas.Left="156" TextWrapping="Wrap" Text="85" Canvas.Top="49" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Pressão da linha, em psi"/>
<Label Content="Erva % On" FontSize="9" Canvas.Top="15" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="185"/>
<Label Content="Erva % Off" FontSize="9" Canvas.Top="30" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="185"/>
<Label Content="Tempo On" FontSize="9" Canvas.Top="45" HorizontalAlignment="Left" VerticalAlignment="Center" Canvas.Left="185"/>
<TextBox x:Name="txtParametros_PctErvaOn" Canvas.Left="234" TextWrapping="Wrap" Text="2" Canvas.Top="19" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Percentual de ervas detectado na região de um bico para ligar o bico pulverizador"/>
<TextBox x:Name="txtParametros_PctErvaOff" Canvas.Left="234" TextWrapping="Wrap" Text="1" Canvas.Top="34" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Percentual de ervas detectado na região de um bico para desligar o bico pulverizador"/>
<TextBox x:Name="txtParametros_TempoOn" Canvas.Left="234" TextWrapping="Wrap" Text="200" Canvas.Top="49" Width="25" FontSize="9" HorizontalAlignment="Left" VerticalAlignment="Center" TextAlignment="Center" ToolTip="Tempo em que o bico pulverizador fica atuado após detectar a erva, em milissegundos"/>
<CheckBox x:Name="chbParametros_Sonar" Content="Sonar Ativado" Canvas.Left="265" Canvas.Top="18" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" ToolTip="Utilizar dados do sonar na tomada de decisão de controle direcional automático"/>
<CheckBox x:Name="chbParametros_Frenagem" Content="Frenagem Automática" Canvas.Left="265" Canvas.Top="33" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" ToolTip="Acionamento automático dos freios ao detectar obstáculos próximos"/>
<CheckBox x:Name="chbParametros_Pulverizador" Content="Pulverizador Automático" Canvas.Left="265" Canvas.Top="48" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" ToolTip="Atuação automática do pulverizador ao detectar ervas no radar sobre a área de um bico"/>
<Button x:Name="btnParametros_Salvar" Content="💾" FontSize="10" Canvas.Left="372" Canvas.Top="3" Click="btnParametros_Salvar_Click" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="Salva os ajustes realizados nos parâmetros da operação, e envia para o equipamento em foco"/>
<Button x:Name="btnParametros_Atualizar" Content="🔄" FontSize="10" Canvas.Left="351" Canvas.Top="3" Click="btnParametros_Atualizar_Click" HorizontalAlignment="Left" VerticalAlignment="Center" ToolTip="Atualiza os dados de parâmetros da operação do equipaento em foco"/>
</Canvas>
</Border>
<Border x:Name="brdMapa" BorderBrush="Black" BorderThickness="1" Margin="465,71,475,116">
<Canvas>
<controls:MapViewControl x:Name="MAP" MarkerClicked="MAP_MarkerClicked" StreetMapClicked="MAP_StreetMapClicked" MbTilesPath="Data/basemap.mbtiles" Latitude="-22.1726572492617" Longitude="-47.3952163870556" Scale="5000" Height="820" Width="978" HorizontalAlignment="Center" VerticalAlignment="Top" />
<controls:HeadingIndicator x:Name="HDG" Width="130" Height="130" Canvas.Left="10" Canvas.Top="10" HorizontalAlignment="Left" VerticalAlignment="Center"/>
<controls:AttitudeIndicator x:Name="IMU" Width="160" Height="180" Canvas.Left="10" Canvas.Bottom="10" CriticalLimit="20" WarningLimit="10" HorizontalAlignment="Left" VerticalAlignment="Center"/>
</Canvas>
</Border>
<Border x:Name="brdControle" Margin="659,0,877,943">
<Canvas>
<controls:ManualControlPad x:Name="CTRL"/>
</Canvas>
</Border>
<Border Name="brdMapaInfo" BorderBrush="Black" BorderThickness="1" Height="26" Width="980" Canvas.Top="878" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="465,898,0,0">
<Canvas>
<Label x:Name="lblMapaInfo_Debug" Content="Status: Desconhecido | Próximo Ponto: 0 | Parado | Distância próximo ponto: 0,00 m | Distância ponto anterior: 0,00 m | Corredor: Fora | Margem: Não | Carro: Parado" FontSize="9" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="1"/>
</Canvas>
</Border>
<Border x:Name="brdCameraFrontal" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="1453,0,7,735">
<Canvas>
<Label Content="Câmera frontal | 12 fps | 230 kbps | 0,00% cana | 43 cm - 27 cm | 12,95° | CaminhandoRua" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="-3"/>
<vlc:VideoView x:Name="VideoFront" Background="Black" Height="237" Width="438" HorizontalAlignment="Center" Canvas.Top="25" VerticalAlignment="Top" Canvas.Left="10"/>
</Canvas>
</Border>
<Border x:Name="brdCameraTraseira" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="1453,281,7,491">
<Canvas>
<Label Content="Câmera traseira | 10 fps | 193 kbps | 5,41% erva | 0,00% cana" FontSize="10" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="-3"/>
<vlc:VideoView x:Name="VideoWeed" Background="Black" Height="200" Width="438" HorizontalAlignment="Center" Canvas.Top="25" VerticalAlignment="Top" Canvas.Left="10"/>
</Canvas>
</Border>
<Border x:Name="brdBicos" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="1453,524,7,360">
<Canvas>
<controls:PulverizadorIndicator x:Name="ATU" HorizontalAlignment="Left" VerticalAlignment="Center" Width="458"/>
</Canvas>
</Border>
<Border x:Name="brdLidar" BorderBrush="Black" BorderThickness="1" CornerRadius="8" Margin="1453,654,7,85" Background="Black">
<Canvas>
<controls:Bbox3DViewer x:Name="BBoxes3D" Height="263" Width="453" HorizontalAlignment="Center" VerticalAlignment="Top" Canvas.Top="2" Canvas.Left="2"/>
</Canvas>
</Border>
<Border x:Name="brdBottom" Height="80" VerticalAlignment="Top" BorderBrush="#222" BorderThickness="1" Background="#11161C" Margin="0,929,0,0">
<!-- ajusta conforme teu layout -->
<Grid>
<!-- Lista de alertas ativos -->
<ScrollViewer x:Name="svAlertas" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled" CanContentScroll="False" Margin="6,0,6,0">
<!-- PreviewMouseLeftButtonDown="svAlertas_PreviewMouseLeftButtonDown" PreviewMouseMove="svAlertas_PreviewMouseMove" PreviewMouseLeftButtonUp="svAlertas_PreviewMouseLeftButtonUp" -->
<ScrollViewer.Resources>
<Style TargetType="ScrollBar" BasedOn="{StaticResource ThinScrollBar}" />
</ScrollViewer.Resources>
<ItemsControl ItemsSource="{Binding AlertasAtivos}">
<!-- painél horizontal -->
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<!-- template de cada cartão de alerta -->
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type models:AlertaModel}">
<Border Margin="6,4,0,4" Padding="8,4" CornerRadius="6" Cursor="Hand" MouseLeftButtonUp="Alerta_MouseLeftButtonUp">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Background" Value="#1C1F23"/>
<Setter Property="BorderBrush" Value="#3A424F"/>
<Setter Property="BorderThickness" Value="1"/>
<!-- Muda a cor conforme severidade -->
<Style.Triggers>
<DataTrigger Binding="{Binding Severidade}" Value="Warning">
<Setter Property="BorderBrush" Value="#EFBF2F"/>
</DataTrigger>
<DataTrigger Binding="{Binding Severidade}" Value="Error">
<Setter Property="BorderBrush" Value="#FF5656"/>
</DataTrigger>
<DataTrigger Binding="{Binding Severidade}" Value="Critical">
<Setter Property="BorderBrush" Value="#FF5656"/>
<Setter Property="Background" Value="#3A171C"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel Orientation="Horizontal">
<!-- Ícone / emoji simples -->
<TextBlock Text="{Binding Icone}" FontSize="14" Margin="0,0,6,0"/>
<StackPanel>
<TextBlock Text="{Binding Titulo}" FontWeight="Bold" Foreground="#F5F7FA" FontSize="11"/>
<TextBlock Text="{Binding Mensagem}" Foreground="#B7C0CC" FontSize="10" TextTrimming="CharacterEllipsis" MaxWidth="260"/>
</StackPanel>
</StackPanel>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
<!-- Mensagem quando não tiver alerta nenhum -->
<TextBlock Text="Nenhum alerta ativo" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="#636C7A" FontSize="11">
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding AlertasAtivos.Count}" Value="0">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
</Border>
<!-- TOAST DE ALERTA -->
<Border x:Name="brdToastAlerta" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,70,20,0" Padding="10,8" CornerRadius="8" Background="#1C1F23" BorderBrush="#3A424F" BorderThickness="1" Cursor="Hand" Visibility="{Binding ToastAlerta, Converter={StaticResource NullToVisibilityConverter}}" MouseLeftButtonUp="ToastAlerta_MouseLeftButtonUp">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Opacity" Value="0.95"/>
<!-- muda cor pela severidade -->
<Style.Triggers>
<DataTrigger Binding="{Binding ToastAlerta.Severidade}" Value="Warning">
<Setter Property="BorderBrush" Value="#EFBF2F"/>
</DataTrigger>
<DataTrigger Binding="{Binding ToastAlerta.Severidade}" Value="Error">
<Setter Property="BorderBrush" Value="#FF5656"/>
</DataTrigger>
<DataTrigger Binding="{Binding ToastAlerta.Severidade}" Value="Critical">
<Setter Property="BorderBrush" Value="#FF5656"/>
<Setter Property="Background" Value="#3A171C"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<!-- Conteúdo do toast -->
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ToastAlerta.Icone}"
FontSize="16"
Margin="0,0,6,0"/>
<StackPanel>
<!-- linha com Rover e título -->
<StackPanel Orientation="Horizontal">
<Border Background="#2F3B4A"
CornerRadius="4"
Padding="4,1"
Margin="0,0,6,0">
<TextBlock Text="{Binding ToastAlerta.Rover_ID}"
Foreground="White"
FontSize="10"
FontWeight="Bold"/>
</Border>
<TextBlock Text="{Binding ToastAlerta.Titulo}"
FontWeight="Bold"
Foreground="#F5F7FA"
FontSize="11"/>
</StackPanel>
<!-- mensagem -->
<TextBlock Text="{Binding ToastAlerta.Mensagem}"
Foreground="#B7C0CC"
FontSize="10"
TextWrapping="Wrap"
MaxWidth="320"/>
</StackPanel>
</StackPanel>
</Border>
</Grid>
</Window>