agrobot_base/AgroBase/OperationControl/Views/Operacao/OperacaoCenterView.xaml

891 lines
61 KiB
XML

<UserControl x:Class="OperationControl.Views.Operacao.OperacaoCenterView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:OperationControl.Views.Operacao"
xmlns:controls="clr-namespace:OperationControl.Controls"
xmlns:scott="clr-namespace:ScottPlot.WPF;assembly=ScottPlot.WPF"
mc:Ignorable="d"
d:DesignHeight="450"
d:DesignWidth="800">
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/>
<Style x:Key="DiagnosticoModuloButtonStyle" TargetType="Button">
<Setter Property="Width" Value="58"/>
<Setter Property="Height" Value="24"/>
<Setter Property="FontSize" Value="10"/>
<Setter Property="FontWeight" Value="SemiBold"/>
<Setter Property="Cursor" Value="Hand"/>
<Setter Property="Padding" Value="4,0"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border x:Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="10"
SnapsToDevicePixels="True">
<ContentPresenter HorizontalAlignment="Center"
VerticalAlignment="Center"
RecognizesAccessKey="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Bd" Property="Opacity" Value="0.92"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Bd" Property="Opacity" Value="0.82"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Bd" Property="Opacity" Value="0.45"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid Background="#181818">
<!-- MAPA -->
<Grid Visibility="{Binding ExibirMapa, Converter={StaticResource BoolToVisibilityConverter}}">
<Border Margin="12" Padding="0" CornerRadius="10" Background="#202020" BorderBrush="#353535" BorderThickness="1" ClipToBounds="True">
<controls:MapViewControl x:Name="MapaOperacao" MarkerClicked="MAP_MarkerClicked" StreetMapClicked="MAP_StreetMapClicked" Latitude="-22.1726572492617" Longitude="-47.3952163870556" Scale="5000" />
</Border>
</Grid>
<!-- DIAGNÓSTICO -->
<Grid Visibility="{Binding ExibirDiagnostico, Converter={StaticResource BoolToVisibilityConverter}}">
<Grid Margin="12">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.55*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<!-- COLUNA ESQUERDA | MAPA VISUAL DO ROBÔ -->
<Border Grid.Column="0"
Margin="0,0,10,0"
Padding="16"
CornerRadius="10"
Background="#202020"
BorderBrush="#353535"
BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- CABEÇALHO -->
<StackPanel Grid.Row="0" Margin="0,0,0,12">
<TextBlock Text="Diagnóstico do rover"
FontSize="18"
FontWeight="SemiBold"
Foreground="#E6E6E6"/>
<TextBlock Text="Impedimento: Nenhum"
Margin="0,6,0,0"
FontSize="12"
Foreground="#B8B8B8"
TextWrapping="Wrap"/>
</StackPanel>
<!-- ÁREA DO ROBÔ -->
<Viewbox Grid.Row="1" Stretch="Uniform">
<Grid Width="700" Height="820">
<!-- fundo -->
<Border CornerRadius="12"
Background="#1A1A1A"
BorderBrush="#2F2F2F"
BorderThickness="1"/>
<!-- imagem do robô -->
<Image Source="/Resources/robo_superior.jpg"
Width="800"
Height="750"
Stretch="Uniform"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<!-- overlay com módulos -->
<ItemsControl ItemsSource="{Binding DiagnosticoVM.DiagnosticoModulos}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style TargetType="ContentPresenter">
<Setter Property="Canvas.Left" Value="{Binding Left}" />
<Setter Property="Canvas.Top" Value="{Binding Top}" />
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding TextoExibicao}"
Style="{StaticResource DiagnosticoModuloButtonStyle}"
Background="{Binding BackgroundBrush}"
Foreground="{Binding ForegroundBrush}"
BorderBrush="{Binding BorderBrushColor}"
BorderThickness="{Binding BorderThicknessValue}"
Command="{Binding DataContext.DiagnosticoVM.SelecionarModuloCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
CommandParameter="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</Viewbox>
</Grid>
</Border>
<!-- COLUNA DIREITA | DETALHES -->
<Border Grid.Column="1"
Margin="10,0,0,0"
Padding="16"
CornerRadius="10"
Background="#202020"
BorderBrush="#353535"
BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- TÍTULO -->
<StackPanel Grid.Row="0">
<TextBlock Text="{Binding DiagnosticoVM.TituloModuloSelecionado}"
FontSize="18"
FontWeight="SemiBold"
Foreground="#E6E6E6"/>
<TextBlock Text="{Binding DiagnosticoVM.DescricaoModuloSelecionado}"
Margin="0,6,0,0"
FontSize="12"
Foreground="#A8A8A8"
TextWrapping="Wrap"/>
</StackPanel>
<!-- RESUMO -->
<Border Grid.Row="1"
Margin="0,14,0,12"
Padding="12"
Background="#181818"
BorderBrush="#2F2F2F"
BorderThickness="1"
CornerRadius="8">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- LINHA 1 -->
<WrapPanel Grid.Row="0" Margin="0,0,0,8">
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoModulo}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoLabel}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoSCode}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
</WrapPanel>
<!-- LINHA 2 -->
<WrapPanel Grid.Row="1" Margin="0,0,0,8">
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoStatus}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoSaude}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoIniciado}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
</WrapPanel>
<!-- LINHA 3 -->
<WrapPanel Grid.Row="2" Margin="0,0,0,8">
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoCan}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoLatencia}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
<Border Background="#2B2B2B" CornerRadius="6" Padding="8,4" Margin="0,0,8,8">
<TextBlock Text="{Binding DiagnosticoVM.InfoIdVisual}"
Foreground="#D8D8D8"
FontSize="12"/>
</Border>
</WrapPanel>
<!-- LINHA 4 -->
<TextBlock Grid.Row="3"
Text="{Binding DiagnosticoVM.ImpedimentoModuloSelecionado}"
Foreground="#C8C8C8"
FontSize="12"
TextWrapping="Wrap"/>
</Grid>
</Border>
<!-- AÇÕES -->
<StackPanel Grid.Row="2" Orientation="Horizontal" Margin="0,0,0,12">
<CheckBox Content="Mandatório" Margin="0,0,14,0" Foreground="#D8D8D8" VerticalAlignment="Center" IsChecked="{Binding DiagnosticoVM.MandatorioSelecionado, Mode=TwoWay}"/>
<CheckBox Content="Em uso" Margin="0,0,14,0" Foreground="#D8D8D8" VerticalAlignment="Center" IsChecked="{Binding DiagnosticoVM.EmUsoSelecionado, Mode=TwoWay}"/>
<Button Content="Salvar" Width="80" Height="28" Background="#2E5C8A" Foreground="White" BorderBrush="#4F7EAD" Command="{Binding DiagnosticoVM.SalvarSaudeCommand}"/>
</StackPanel>
<!-- TABS -->
<TabControl Grid.Row="3"
Background="#181818"
BorderBrush="#2F2F2F"
Foreground="#DDDDDD">
<TabItem Header="Condições Operacionais">
<Grid Background="#181818">
<ListBox ItemsSource="{Binding DiagnosticoVM.CondicoesOperacionais}" Margin="8" Background="#121212" Foreground="#DDDDDD" BorderBrush="#2D2D2D"/>
</Grid>
</TabItem>
<TabItem Header="Acompanhamento">
<Grid Background="#181818">
<scott:WpfPlot x:Name="pltSaude_Acompanhamento" Margin="8"/>
</Grid>
</TabItem>
<TabItem Header="Opções">
<Grid Background="#181818">
<ScrollViewer VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled"
Padding="8">
<Grid>
<!-- SEM DADOS -->
<TextBlock Text="Nenhum teste disponível para este módulo."
FontSize="12"
Foreground="#A8A8A8"
HorizontalAlignment="Center"
VerticalAlignment="Center"
TextWrapping="Wrap"
Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesSemDados, Converter={StaticResource BoolToVisibilityConverter}}"/>
<!-- SENSORIAMENTO -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesSensoriamento, Converter={StaticResource BoolToVisibilityConverter}}">
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="Reinicia o módulo" Foreground="#DDDDDD"/>
<Button Content="Reiniciar"
Width="90"
Margin="8,0,0,0"
Command="{Binding DiagnosticoVM.OpcoesVM.SensoriamentoReiniciarCommand}"/>
</StackPanel>
</StackPanel>
<!-- ATUADOR -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesAtuador, Converter={StaticResource BoolToVisibilityConverter}}">
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="Reinicia o módulo" Foreground="#DDDDDD"/>
<Button Content="Reiniciar"
Width="90"
Margin="8,0,0,0"
Command="{Binding DiagnosticoVM.OpcoesVM.AtuadorReiniciarCommand}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,10,0,0">
<Label Content="Altura" Foreground="#DDDDDD"/>
<Slider Width="120"
Margin="8,0"
Minimum="50"
Maximum="80"
Value="{Binding DiagnosticoVM.OpcoesVM.BarraAltura, Mode=TwoWay}"/>
<Label Content="{Binding DiagnosticoVM.OpcoesVM.BarraAlturaTexto}" Foreground="#DDDDDD"/>
<Button Content="Mover"
Width="60"
Margin="8,0,0,0"
Command="{Binding DiagnosticoVM.OpcoesVM.BarraMoverCommand}"/>
</StackPanel>
</StackPanel>
<!-- BICO -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesBico, Converter={StaticResource BoolToVisibilityConverter}}">
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.BicoTitulo}"
FontWeight="Bold"
Foreground="#DDDDDD"
Margin="0,0,0,8"/>
<StackPanel Orientation="Horizontal">
<Button Content="Ligar"
Width="80"
Margin="0,0,5,0"
Command="{Binding DiagnosticoVM.OpcoesVM.BicoLigarCommand}"/>
<Button Content="Desligar"
Width="80"
Command="{Binding DiagnosticoVM.OpcoesVM.BicoDesligarCommand}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,8,0,0">
<Label Content="Movimento" Foreground="#DDDDDD"/>
<Slider Width="160"
Margin="8,0"
Minimum="-90"
Maximum="90"
Value="{Binding DiagnosticoVM.OpcoesVM.BicoAngulo, Mode=TwoWay}"/>
<Label Content="{Binding DiagnosticoVM.OpcoesVM.BicoAnguloTexto}" Foreground="#DDDDDD"/>
<Button Content="Mover"
Width="60"
Margin="8,0,0,0"
Command="{Binding DiagnosticoVM.OpcoesVM.BicoMoverCommand}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,8,0,0">
<Label Content="Ângulo abertura" Foreground="#DDDDDD"/>
<TextBox Width="60"
Margin="8,0"
Text="{Binding DiagnosticoVM.OpcoesVM.BicoAnguloAbertura, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Button Content="Salvar"
Width="60"
Command="{Binding DiagnosticoVM.OpcoesVM.BicoSalvarAnguloAberturaCommand}"/>
</StackPanel>
<TextBlock Text="Bico - Leituras"
Foreground="#DDDDDD"
FontWeight="SemiBold"
Margin="0,10,0,4"/>
<UniformGrid Rows="2" Columns="3" Margin="0,0,0,0">
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBicoComando}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Status real" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBicoStatusReal}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Tempo ligado" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBicoTempoLigado}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Vazão" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBicoVazao}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Pressão" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBicoPressao}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Atuações" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBicoAtuacoes}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- BOMBA -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesBomba, Converter={StaticResource BoolToVisibilityConverter}}">
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.BombaTitulo}"
FontWeight="Bold"
Foreground="#DDDDDD"
Margin="0,0,0,8"/>
<StackPanel Orientation="Horizontal">
<Button Content="Ligar"
Width="80"
Margin="0,0,5,0"
Command="{Binding DiagnosticoVM.OpcoesVM.BombaLigarCommand}"/>
<Button Content="Desligar"
Width="80"
Margin="0,0,10,0"
Command="{Binding DiagnosticoVM.OpcoesVM.BombaDesligarCommand}"/>
<TextBlock Text="Pressão alvo:"
VerticalAlignment="Center"
Margin="0,0,5,0"
FontSize="10"
Foreground="#DDDDDD"/>
<Slider Width="120"
Minimum="0"
Maximum="150"
Margin="0,0,5,0"
Value="{Binding DiagnosticoVM.OpcoesVM.BombaPressaoAlvo, Mode=TwoWay}"/>
<Label Content="{Binding DiagnosticoVM.OpcoesVM.BombaPressaoAlvoTexto}"
VerticalAlignment="Center"
FontSize="10"
Foreground="#DDDDDD"/>
</StackPanel>
<UniformGrid Rows="2" Columns="2" Margin="0,10,0,0">
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBombaComando}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Status real" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBombaStatusReal}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Pressão linha" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBombaPressaoLinha}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Potência" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtBombaPotencia}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- DIRECIONAL -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesDirecional, Converter={StaticResource BoolToVisibilityConverter}}">
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.DirTitulo}"
FontWeight="Bold"
Foreground="#DDDDDD"
Margin="0,0,0,8"/>
<StackPanel Orientation="Horizontal">
<Button Content="Referenciar"
Width="90"
Margin="0,0,5,0"
Command="{Binding DiagnosticoVM.OpcoesVM.DirReferenciarCommand}"/>
<Button Content="Mover"
Width="80"
Command="{Binding DiagnosticoVM.OpcoesVM.DirMovimentarCommand}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,8,0,0">
<ComboBox Width="130"
Margin="0,0,8,0"
ItemsSource="{Binding DiagnosticoVM.OpcoesVM.DirMovimentosDisponiveis}"
SelectedItem="{Binding DiagnosticoVM.OpcoesVM.DirMovimentoSelecionado, Mode=TwoWay}"/>
<ComboBox Width="130"
Margin="0,0,8,0"
ItemsSource="{Binding DiagnosticoVM.OpcoesVM.DirDirecoesDisponiveis}"
SelectedItem="{Binding DiagnosticoVM.OpcoesVM.DirDirecaoSelecionada, Mode=TwoWay}"/>
<Slider Width="120"
Minimum="0"
Maximum="180"
Margin="0,0,8,0"
Value="{Binding DiagnosticoVM.OpcoesVM.DirAngulo, Mode=TwoWay}"/>
<Label Content="{Binding DiagnosticoVM.OpcoesVM.DirAnguloTexto}"
Foreground="#DDDDDD"/>
</StackPanel>
<UniformGrid Rows="2" Columns="2" Margin="0,10,0,0">
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Sentido controle" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtDirSentidoSP}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Sentido real" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtDirSentido}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Ângulo controle" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtDirAnguloSP}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Ângulo real" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtDirAngulo}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- GPS -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesGps, Converter={StaticResource BoolToVisibilityConverter}}">
<TextBlock Text="Lever Arm"
FontWeight="Bold"
Foreground="#DDDDDD"
Margin="0,0,0,8"/>
<StackPanel Orientation="Horizontal" Margin="0,0,0,8">
<Label Content="Lateral" Foreground="#DDDDDD"/>
<Slider Width="110"
Minimum="-5"
Maximum="5"
Margin="8,0"
Value="{Binding DiagnosticoVM.OpcoesVM.GpsLeverArmLateral, Mode=TwoWay}"/>
<Label Content="{Binding DiagnosticoVM.OpcoesVM.GpsLeverArmLateralTexto}" Foreground="#DDDDDD" Margin="0,0,10,0"/>
<Label Content="Frontal" Foreground="#DDDDDD"/>
<Slider Width="110"
Minimum="-10"
Maximum="10"
Margin="8,0"
Value="{Binding DiagnosticoVM.OpcoesVM.GpsLeverArmFrontal, Mode=TwoWay}"/>
<Label Content="{Binding DiagnosticoVM.OpcoesVM.GpsLeverArmFrontalTexto}" Foreground="#DDDDDD"/>
</StackPanel>
<Button Content="Salvar"
Width="80"
Margin="0,0,0,8"
Command="{Binding DiagnosticoVM.OpcoesVM.GpsSalvarCommand}"/>
<UniformGrid Rows="2" Columns="3">
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Correção" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtGpsCorrecao}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Idade" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtGpsIdade}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Precisão" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtGpsPrecisao}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Satélites" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtGpsNSatelites}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Distância base" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtGpsDistBase}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Orientação" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtGpsOrientacao}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- TRAJETORIA -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesTrajetoria, Converter={StaticResource BoolToVisibilityConverter}}">
<TextBlock Text="Status do trabalho"
FontWeight="Bold"
Foreground="#DDDDDD"
Margin="0,0,0,8"/>
<StackPanel Orientation="Horizontal" Margin="0,0,0,8">
<CheckBox Content="Bateria Liberada"
Margin="0,0,12,0"
Foreground="#DDDDDD"
IsChecked="{Binding DiagnosticoVM.OpcoesVM.TrajetoriaBatLiberada, Mode=TwoWay}"/>
<CheckBox Content="Pulverizador Liberado"
Margin="0,0,12,0"
Foreground="#DDDDDD"
IsChecked="{Binding DiagnosticoVM.OpcoesVM.TrajetoriaHerbLiberado, Mode=TwoWay}"/>
<Button Content="Confirmar"
Width="80"
Command="{Binding DiagnosticoVM.OpcoesVM.TrajetoriaConfirmarCommand}"
IsEnabled="{Binding DiagnosticoVM.OpcoesVM.TrajetoriaPodeConfirmar}"/>
</StackPanel>
<UniformGrid Rows="2" Columns="3">
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Distância corredor" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtTrajetoriaDistCorredor}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Distância segura bateria" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtTrajetoriaDistBateria}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Distância segura pulverizador" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtTrajetoriaDistPulverizador}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Status" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtTrajetoriaStatus}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Bateria suficiente" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtTrajetoriaBatOk}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Herbicida suficiente" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtTrajetoriaHerbOk}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- RELÉ -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesRele, Converter={StaticResource BoolToVisibilityConverter}}">
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.ReleTitulo}"
FontWeight="Bold"
Foreground="#DDDDDD"
Margin="0,0,0,8"/>
<StackPanel Orientation="Horizontal">
<Button Content="Ligar"
Width="80"
Margin="0,0,5,0"
Command="{Binding DiagnosticoVM.OpcoesVM.ReleLigarCommand}"/>
<Button Content="Desligar"
Width="80"
Command="{Binding DiagnosticoVM.OpcoesVM.ReleDesligarCommand}"/>
</StackPanel>
<UniformGrid Rows="1" Columns="2" Margin="0,10,0,0">
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtReleComando}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Status real" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtReleStatusReal}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- SERVO -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesServo, Converter={StaticResource BoolToVisibilityConverter}}">
<TextBlock Text="Servo - Testes"
FontWeight="Bold"
Foreground="#DDDDDD"
Margin="0,0,0,8"/>
<StackPanel Orientation="Horizontal">
<Label Content="Controle" Foreground="#DDDDDD"/>
<Slider Width="160"
Margin="8,0"
Minimum="0"
Maximum="90"
Value="{Binding DiagnosticoVM.OpcoesVM.ServoAngulo, Mode=TwoWay}"/>
<Label Content="{Binding DiagnosticoVM.OpcoesVM.ServoAnguloTexto}" Foreground="#DDDDDD"/>
<Button Content="Enviar"
Width="80"
Margin="8,0,0,0"
Command="{Binding DiagnosticoVM.OpcoesVM.ServoEnviarCommand}"/>
</StackPanel>
<UniformGrid Rows="1" Columns="3" Margin="0,10,0,0">
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Comando enviado" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtServoComando}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Status real" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtServoLeitura}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Modo" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtServoIncremental}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
<!-- NPC -->
<StackPanel Visibility="{Binding DiagnosticoVM.OpcoesVM.MostrarOpcoesNpc, Converter={StaticResource BoolToVisibilityConverter}}">
<StackPanel Orientation="Horizontal" Margin="0,0,0,8">
<Label Content="Modo de Controle" Foreground="#DDDDDD"/>
<ComboBox Width="120"
Margin="8,0"
ItemsSource="{Binding DiagnosticoVM.OpcoesVM.NpcCoolerModosDisponiveis}"
SelectedItem="{Binding DiagnosticoVM.OpcoesVM.NpcCoolerModoSelecionado, Mode=TwoWay}"/>
<CheckBox Content="Entrada"
Margin="10,0,0,0"
Foreground="#DDDDDD"
IsChecked="{Binding DiagnosticoVM.OpcoesVM.NpcCoolerEntrada, Mode=TwoWay}"/>
<CheckBox Content="Saída"
Margin="10,0,0,0"
Foreground="#DDDDDD"
IsChecked="{Binding DiagnosticoVM.OpcoesVM.NpcCoolerSaida, Mode=TwoWay}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0,0,0,8">
<Label Content="Temperatura ligar" Foreground="#DDDDDD"/>
<TextBox Width="50"
Margin="8,0"
Text="{Binding DiagnosticoVM.OpcoesVM.NpcCoolerTempOn, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Label Content="Temperatura turbo" Foreground="#DDDDDD" Margin="12,0,0,0"/>
<TextBox Width="50"
Margin="8,0"
Text="{Binding DiagnosticoVM.OpcoesVM.NpcCoolerTempTurbo, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
<Button Content="Enviar"
Width="80"
Margin="10,0,0,0"
Command="{Binding DiagnosticoVM.OpcoesVM.NpcCoolerEnviarCommand}"/>
</StackPanel>
<UniformGrid Rows="2" Columns="2">
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Modo controle" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtNpcCoolerModo}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Temperatura" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtNpcCoolerTemperatura}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Cooler entrada" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtNpcCoolerEntrada}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
<Border BorderBrush="#444" BorderThickness="1" Margin="2" Padding="4">
<StackPanel>
<TextBlock Text="Cooler saída" FontSize="10" Foreground="#AAAAAA"/>
<TextBlock Text="{Binding DiagnosticoVM.OpcoesVM.TxtNpcCoolerSaida}" Foreground="#DDDDDD"/>
</StackPanel>
</Border>
</UniformGrid>
</StackPanel>
</Grid>
</ScrollViewer>
</Grid>
</TabItem>
<TabItem Header="Logs">
<Grid Background="#181818">
<ListBox ItemsSource="{Binding DiagnosticoVM.LogsModuloSelecionado}" Margin="8" Background="#121212" Foreground="#DDDDDD" BorderBrush="#2D2D2D"/>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Border>
</Grid>
</Grid>
<!-- MONITORAMENTO -->
<Grid Visibility="{Binding ExibirMonitoramento, Converter={StaticResource BoolToVisibilityConverter}}">
<Border Margin="12" Padding="20" CornerRadius="10" Background="#202020" BorderBrush="#353535" BorderThickness="1">
<Grid>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center">
<TextBlock Text="{Binding TituloCentro}" HorizontalAlignment="Center" FontSize="24" FontWeight="SemiBold" Foreground="#DDDDDD" TextAlignment="Center"/>
<TextBlock Text="{Binding SubtituloCentro}" HorizontalAlignment="Center" Margin="0,14,0,0" FontSize="14" Foreground="#AAAAAA" TextAlignment="Center" TextWrapping="Wrap" MaxWidth="500"/>
</StackPanel>
</Grid>
</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"/>-->
<Grid Width="438" Height="237" Canvas.Top="25" Canvas.Left="10" Background="Black">
<TextBlock Text="SEM SINAL" Foreground="Gray" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Image x:Name="imgVideoFront" Stretch="Uniform" RenderOptions.BitmapScalingMode="LowQuality" />
</Grid>
<ComboBox x:Name="cmbCameraFrontalFrameTipo" Canvas.Left="10" Canvas.Top="25" HorizontalAlignment="Left" VerticalAlignment="Center" Width="100" SelectionChanged="cmbCameraFrontalFrameTipo_SelectionChanged" />
</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"/>-->
<Grid Width="438" Height="200" Canvas.Top="25" Canvas.Left="10" Background="Black">
<TextBlock Text="SEM SINAL" Foreground="Gray" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<Image x:Name="imgVideoWeed" Stretch="Uniform" RenderOptions.BitmapScalingMode="LowQuality" />
</Grid>
<ComboBox x:Name="cmbCameraTraseiraFrameTipo" Canvas.Left="10" Canvas.Top="25" HorizontalAlignment="Left" VerticalAlignment="Center" Width="100" SelectionChanged="cmbCameraTraseiraFrameTipo_SelectionChanged" />
</Canvas>
</Border>
</Grid>
</Grid>
</UserControl>