2026-06-05 13:44:39 +09:00

460 lines
32 KiB
XML

<UserControl
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:AuroraTriggerBoard.SJTV3"
xmlns:SJTV3="clr-namespace:AuroraTriggerBoard.SJTV3" xmlns:b="http://schemas.microsoft.com/xaml/behaviors" x:Class="AuroraTriggerBoard.SJTV3.UCTriggerBoardV3"
mc:Ignorable="d"
d:DesignHeight="500" d:DesignWidth="800">
<Grid>
<UserControl
d:DataContext="{d:DesignInstance Type={x:Type SJTV3:UCTriggerBoardV3ViewModel}}"
d:DesignHeight="500"
d:DesignWidth="1000"
d:Background="#efefef" Margin="0,0,-200,0">
<UserControl.Resources>
<!--색상-->
<Color x:Key="GreenColor">#00C28C</Color>
<Color x:Key="LightGrayColor">#C5C5C5</Color>
<SolidColorBrush x:Key="GreenBrush"
Color="{StaticResource GreenColor}" />
<SolidColorBrush x:Key="LightGrayBrush"
Color="{StaticResource LightGrayColor}" />
<!--스타일-->
<Style x:Key="SliderCheckBox"
TargetType="{x:Type CheckBox}">
<Setter Property="MaxHeight"
Value="20" />
<Setter Property="MaxWidth"
Value="35" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
<Setter Property="BorderThickness"
Value="1" />
<Setter Property="Cursor"
Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<ControlTemplate.Resources>
<Storyboard x:Key="StoryboardIsChecked">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
Storyboard.TargetName="CheckFlag">
<EasingDoubleKeyFrame KeyTime="0"
Value="0" />
<EasingDoubleKeyFrame KeyTime="0:0:0.2"
Value="14" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="StoryboardIsCheckedOff">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
Storyboard.TargetName="CheckFlag">
<EasingDoubleKeyFrame KeyTime="0"
Value="14" />
<EasingDoubleKeyFrame KeyTime="0:0:0.2"
Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</ControlTemplate.Resources>
<BulletDecorator Background="Transparent"
SnapsToDevicePixels="true">
<BulletDecorator.Bullet>
<Border x:Name="ForegroundPanel"
BorderThickness="1"
Width="35"
Height="20"
CornerRadius="10">
<Canvas>
<!--원 색상-->
<Border x:Name="CheckFlag"
Background="White"
Width="19"
Height="18"
CornerRadius="10"
VerticalAlignment="Center"
BorderThickness="1"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform />
<TranslateTransform />
</TransformGroup>
</Border.RenderTransform>
<Border.Effect>
<DropShadowEffect ShadowDepth="1"
Direction="180" />
</Border.Effect>
</Border>
</Canvas>
</Border>
</BulletDecorator.Bullet>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="Center" />
</BulletDecorator>
<ControlTemplate.Triggers>
<Trigger Property="HasContent"
Value="true">
<!--<Setter Property="FocusVisualStyle"
Value="{StaticResource CheckRadioFocusVisual}"/>-->
<Setter Property="Padding"
Value="4,0,0,0" />
</Trigger>
<Trigger Property="IsEnabled"
Value="false">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
<Trigger Property="IsChecked"
Value="True">
<Trigger.EnterActions>
<BeginStoryboard x:Name="BeginStoryboardCheckedTrue"
Storyboard="{StaticResource StoryboardIsChecked}" />
<RemoveStoryboard BeginStoryboardName="BeginStoryboardCheckedFalse" />
</Trigger.EnterActions>
<Setter TargetName="ForegroundPanel"
Property="Background"
Value="{StaticResource GreenBrush}" />
</Trigger>
<Trigger Property="IsChecked"
Value="False">
<Trigger.EnterActions>
<BeginStoryboard x:Name="BeginStoryboardCheckedFalse"
Storyboard="{StaticResource StoryboardIsCheckedOff}" />
<RemoveStoryboard BeginStoryboardName="BeginStoryboardCheckedTrue" />
</Trigger.EnterActions>
<Setter TargetName="ForegroundPanel"
Property="Background"
Value="{StaticResource LightGrayBrush}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="SliderCheckBox_Square"
TargetType="{x:Type CheckBox}">
<Setter Property="MaxHeight"
Value="20" />
<Setter Property="MaxWidth"
Value="35" />
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" />
<Setter Property="BorderThickness"
Value="1" />
<Setter Property="Cursor"
Value="Hand" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<ControlTemplate.Resources>
<Storyboard x:Key="StoryboardIsChecked">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
Storyboard.TargetName="CheckFlag">
<EasingDoubleKeyFrame KeyTime="0"
Value="0" />
<EasingDoubleKeyFrame KeyTime="0:0:0.2"
Value="14" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="StoryboardIsCheckedOff">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"
Storyboard.TargetName="CheckFlag">
<EasingDoubleKeyFrame KeyTime="0"
Value="14" />
<EasingDoubleKeyFrame KeyTime="0:0:0.2"
Value="0" />
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</ControlTemplate.Resources>
<BulletDecorator Background="Transparent"
SnapsToDevicePixels="true">
<BulletDecorator.Bullet>
<Border x:Name="ForegroundPanel"
BorderThickness="1"
Width="35"
Height="20"
CornerRadius="3">
<Canvas>
<!--원 색상-->
<Border x:Name="CheckFlag"
Background="White"
Width="19"
Height="18"
CornerRadius="3"
VerticalAlignment="Center"
BorderThickness="1"
RenderTransformOrigin="0.5,0.5">
<Border.RenderTransform>
<TransformGroup>
<ScaleTransform />
<SkewTransform />
<RotateTransform />
<TranslateTransform />
</TransformGroup>
</Border.RenderTransform>
<Border.Effect>
<DropShadowEffect ShadowDepth="1"
Direction="180" />
</Border.Effect>
</Border>
</Canvas>
</Border>
</BulletDecorator.Bullet>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="Center" />
</BulletDecorator>
<ControlTemplate.Triggers>
<Trigger Property="HasContent"
Value="true">
<!--<Setter Property="FocusVisualStyle"
Value="{StaticResource CheckRadioFocusVisual}"/>-->
<Setter Property="Padding"
Value="4,0,0,0" />
</Trigger>
<Trigger Property="IsEnabled"
Value="false">
<Setter Property="Foreground"
Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}" />
</Trigger>
<Trigger Property="IsChecked"
Value="True">
<Trigger.EnterActions>
<BeginStoryboard x:Name="BeginStoryboardCheckedTrue"
Storyboard="{StaticResource StoryboardIsChecked}" />
<RemoveStoryboard BeginStoryboardName="BeginStoryboardCheckedFalse" />
</Trigger.EnterActions>
<Setter TargetName="ForegroundPanel"
Property="Background"
Value="{StaticResource GreenBrush}" />
</Trigger>
<Trigger Property="IsChecked"
Value="False">
<Trigger.EnterActions>
<BeginStoryboard x:Name="BeginStoryboardCheckedFalse"
Storyboard="{StaticResource StoryboardIsCheckedOff}" />
<RemoveStoryboard BeginStoryboardName="BeginStoryboardCheckedTrue" />
</Trigger.EnterActions>
<Setter TargetName="ForegroundPanel"
Property="Background"
Value="{StaticResource LightGrayBrush}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="CheckRadioFocusVisual">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle Margin="14,0,0,0"
SnapsToDevicePixels="true"
Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"
StrokeThickness="1"
StrokeDashArray="1 2" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<b:Interaction.Triggers>
<b:EventTrigger EventName="Loaded">
<b:InvokeCommandAction Command="{Binding CMD_ViewLoaded}" />
</b:EventTrigger>
<b:EventTrigger EventName="Unloaded">
<b:InvokeCommandAction Command="{Binding CMD_ViewUnloaded}" />
</b:EventTrigger>
</b:Interaction.Triggers>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="470" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!--1열-->
<Grid Grid.Column="0">
<StackPanel Margin="5">
<GroupBox Header="OPTION SETTING" HorizontalAlignment="Left" Width="447">
<StackPanel Margin="5">
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Encoder Enable" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<ComboBox SelectedIndex="{Binding EncoderEnableStatus}" Width="130">
<ComboBoxItem IsSelected="True" Content="Disable"/>
<ComboBoxItem Content="Enable"/>
</ComboBox>
<Button Margin="7,0,0,0" x:Name="EncoderEnableSet" Width="60" Command="{Binding CMD_SetEncoderEnable}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="EncoderEnableGet" Width="60" Command="{Binding CMD_GetEncoderEnable}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Run Mode" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<ComboBox SelectedIndex="{Binding TrigRunModeStatus}" Width="130">
<ComboBoxItem IsSelected="True" Content="ENC-UART"/>
<ComboBoxItem Content="ENC-Sensor"/>
<ComboBoxItem Content="SIM-UART"/>
<ComboBoxItem Content="SIM-Sensor"/>
</ComboBox>
<Button Margin="7,0,0,0" x:Name="RunModeSet" Width="60" Command="{Binding CMD_SetRunMode}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="RunModeGet" Width="60" Command="{Binding CMD_GetRunMode}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Encoder Direction" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<ComboBox SelectedIndex="{Binding EncoderDirectionIndex}" Width="130">
<ComboBoxItem IsSelected="True" Content="Forward"/>
<ComboBoxItem Content="Backward"/>
</ComboBox>
<Button Margin="7,0,0,0" x:Name="EncoderDirSet" Width="60" Command="{Binding CMD_SetEncoderDir}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="EncoderDirGet" Width="60" Command="{Binding CMD_GetEncoderDir}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Input Polarity" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<ComboBox SelectedIndex="{Binding InputPolarityStatus}" Width="130">
<ComboBoxItem IsSelected="True" Content="Negative"/>
<ComboBoxItem Content="Positive"/>
</ComboBox>
<Button Margin="7,0,0,0" x:Name="InputPolSet" Width="60" Command="{Binding CMD_SetInputPolarity}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="InputPolGet" Width="60" Command="{Binding CMD_GetInputPolarity}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Trigger Polarity" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<ComboBox SelectedIndex="{Binding TrigPolarityStatus}" Width="130">
<ComboBoxItem Content="Negative"/>
<ComboBoxItem IsSelected="True" Content="Positive"/>
</ComboBox>
<Button Margin="7,0,0,0" x:Name="TrigPolSet" Width="60" Command="{Binding CMD_SetTriggerPolarity}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="TrigPolGet" Width="60" Command="{Binding CMD_GetTriggerPolarity}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Strobe Polarity" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<ComboBox SelectedIndex="{Binding StrobePolarityStatus}" Width="130">
<ComboBoxItem Content="Negative"/>
<ComboBoxItem IsSelected="True" Content="Positive"/>
</ComboBox>
<Button Margin="7,0,0,0" x:Name="StrobePolSet" Width="60" Command="{Binding CMD_SetStrobePolarity}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="StrobePolGet" Width="60" Command="{Binding CMD_GetStrobePolarity}" CommandParameter="" Content="Get"/>
</StackPanel>
</StackPanel>
</GroupBox>
<GroupBox Header="Trigger Parameter" HorizontalAlignment="Left" Width="447">
<StackPanel Margin="5">
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Start Delay(E_cnt)" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<TextBox Text="{Binding TrigStartDelayStatus}" Width="130" />
<Button Margin="7,0,0,0" x:Name="TrigStartDelaySet" Width="60" Command="{Binding CMD_SetTriggerStartDelay}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="TrigStartDelayGet" Width="60" Command="{Binding CMD_GetTriggerStartDelay}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Trigger Width(us)" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<TextBox Text="{Binding TrigWidthStatus}" Width="130" />
<Button Margin="7,0,0,0" x:Name="TrigWidthSet" Width="60" Command="{Binding CMD_SetTriggerWidth}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="TrigWidthGet" Width="60" Command="{Binding CMD_GetTriggerWidth}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Trigger Cnt(cnt)" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<TextBox Text="{Binding TriggerCountStatus}" Width="130" />
<Button Margin="7,0,0,0" x:Name="TrigCntSet" Width="60" Command="{Binding CMD_SetTriggerCount}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="TrigCntGet" Width="60" Command="{Binding CMD_GetTriggerCount}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Trigger Pulse(E_cnt)" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<TextBox Text="{Binding TrigPulseStatus}" Width="130" />
<Button Margin="7,0,0,0" x:Name="TrigPulseSet" Width="60" Command="{Binding CMD_SetTriggerPulse}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="TrigPulseGet" Width="60" Command="{Binding CMD_GetTriggerPulse}" CommandParameter="" Content="Get"/>
</StackPanel>
</StackPanel>
</GroupBox>
<GroupBox Header="Strobe Parameter" HorizontalAlignment="Left" Width="447">
<StackPanel Margin="5">
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Start Delay(E_cnt)" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<TextBox Text="{Binding StrobeStartDelayStatus}" Width="130" />
<Button Margin="7,0,0,0" x:Name="StrobeStartDelaySet" Width="60" Command="{Binding CMD_SetStrobeStartDelay}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="StrobeStartDelayGet" Width="60" Command="{Binding CMD_GetStrobeStartDelay}" CommandParameter="" Content="Get"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBlock Text="Strobe Width(us)" Width="150" HorizontalAlignment="Left" VerticalAlignment="Center" />
<TextBox Text="{Binding StrobeWidthStatus}" Width="130" />
<Button Margin="7,0,0,0" x:Name="StrobeWidthSet" Width="60" Command="{Binding CMD_SetStrobeWidth}" CommandParameter="" Content="Set"/>
<Button Margin="7,0,0,0" x:Name="StrobeWidthGet" Width="60" Command="{Binding CMD_GetStrobeWidth}" CommandParameter="" Content="Get"/>
</StackPanel>
</StackPanel>
</GroupBox>
</StackPanel>
</Grid>
<!--2열-->
<Grid Grid.Column="1">
<StackPanel Margin="5">
<GroupBox Header="Trigger Test"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Width="447">
<StackPanel Margin="5">
<StackPanel Margin="0, 10, 0, 0"
Orientation="Horizontal">
<TextBox Text="{Binding EncoderTriggerCount}" Width="156" />
<Button Margin="30,0,0,0"
x:Name="EncoderGet"
Width="108"
Command="{Binding CMD_GetEncoderCnt}"
Content="Get"
/>
<Button Margin="6,0,0,0"
x:Name="ResetTrigger"
Width="108"
Command="{Binding CMD_ResetTrigger}"
Content="ResetTrig"
/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0"
Orientation="Horizontal">
<TextBox Text="{Binding EndTrigStatus}"
Width="156" />
<Button Margin="30,0,0,0"
x:Name="GetEndTrigger"
Width="108"
Command="{Binding CMD_GetEndTrig}"
Content="Get End Trig"
/>
<Button Margin="6,0,0,0"
x:Name="TriggerStart"
Width="108"
Command="{Binding CMD_TriggerStart}"
Content="Start"
/>
</StackPanel>
</StackPanel>
</GroupBox>
<GroupBox Header="Debug Message" HorizontalAlignment="Left" VerticalAlignment="Top" Width="447">
<StackPanel Margin="5">
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<TextBox Text="{Binding DebugMessageString}" Width="410" Height="300"/>
</StackPanel>
<StackPanel Margin="0, 10, 0, 0" Orientation="Horizontal">
<Button Margin="30,0,0,0" x:Name="DebugMsgClr" Width="350" Command="{Binding CMD_DebugMessageClear}" Content="Clear"/>
</StackPanel>
</StackPanel>
</GroupBox>
</StackPanel>
</Grid>
</Grid>
</UserControl>
</Grid>
</UserControl>