2026-01-26 18:56:53 +09:00

276 lines
22 KiB
XML

<UserControl x:Class="WeldingCommon.Views.UCScannerCalibration"
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:WeldingCommon.Views"
xmlns:behavior="http://schemas.microsoft.com/xaml/behaviors"
xmlns:view="clr-namespace:Aurora.View;assembly=Aurora"
xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:aurorauicomponent="clr-namespace:AuroraUIComponent;assembly=AuroraUIComponent"
xmlns:usercontrols="clr-namespace:AuroraUIComponent.UserControls;assembly=AuroraUIComponent"
d:DataContext="{d:DesignInstance Type=local:UCScannerCalibrationViewModel}"
mc:Ignorable="d"
d:DesignHeight="800" d:DesignWidth="1200" x:Name="uc"
IsVisibleChanged="UserControl_IsVisibleChanged">
<UserControl.Resources>
<ResourceDictionary>
<view:BoolConverter x:Key="convReverse" FalseValue="True" TrueValue="False"/>
<view:BoolConverter x:Key="convDeviceEnableColor" TrueValue="Green" FalseValue="Red"/>
</ResourceDictionary>
</UserControl.Resources>
<behavior:Interaction.Triggers>
<behavior:PropertyChangedTrigger Binding="{Binding IsVisible, ElementName=uc}">
<behavior:InvokeCommandAction Command="{Binding CMD_VisibleChanged}" CommandParameter="{Binding IsVisible, ElementName=uc}"/>
</behavior:PropertyChangedTrigger>
</behavior:Interaction.Triggers>
<Grid Margin="10">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.5*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Margin="0 0 0 0">
<Grid.RowDefinitions>
<RowDefinition Height="1.2*"></RowDefinition>
<RowDefinition Height="1*"></RowDefinition>
</Grid.RowDefinitions>
<GroupBox Header="Vision Correction List" Grid.Row="0" Grid.Column="0" Margin="0 0 0 0" Style="{StaticResource StGroupBox2nd}">
<DataGrid Name="GridEditorVisionCorrectionList" Margin="0 0 0 0" ItemsSource="{Binding VisionCorrectionList}" SelectionUnit="FullRow"
AutoGenerateColumns="False" HeadersVisibility="Column" CanUserAddRows="False"
RowHeight="30" MinRowHeight="30" MinColumnWidth="50" ColumnWidth="*"
KeyDown="GridEditorVisionCorrectionList_KeyDown"
SelectedCellsChanged="GridEditorVisionCorrectionList_SelectedCellsChanged" IsVisibleChanged="GridEditorVisionCorrectionList_IsVisibleChanged"
SelectionMode="Single"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
MouseDoubleClick="GridEditorVisionCorrectionList_MouseDoubleClick"
SelectedIndex="{Binding SelectedRowIndex, Mode=TwoWay}">
<behavior:Interaction.Behaviors>
<aurorauicomponent:DataGridBehavior ShowRowNumber="True" />
</behavior:Interaction.Behaviors>
<DataGrid.InputBindings>
<KeyBinding Key="V" Modifiers="Control" Command="Paste" />
</DataGrid.InputBindings>
<DataGrid.CommandBindings>
<CommandBinding Command="Paste" Executed="PasteCommand_Executed_VisionCorrectionList"/>
</DataGrid.CommandBindings>
<DataGrid.Columns>
<DataGridTextColumn Header="Column No." Binding="{Binding Column}"/>
<DataGridTextColumn Header="Row No." Binding="{Binding Row}"/>
<DataGridTextColumn Header="Master X" Binding="{Binding MasterX}"/>
<DataGridTextColumn Header="Master Y" Binding="{Binding MasterY}"/>
<DataGridTextColumn Header="Vision X" Binding="{Binding VisionX}"/>
<DataGridTextColumn Header="Vision Y" Binding="{Binding VisionY}"/>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
<Grid x:Name="gridCalibrationCameraView" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Margin="0 5 0 0"/>
</Grid>
<Grid Grid.Column="1" Margin="5 0 0 0">
<Grid.RowDefinitions>
<RowDefinition Height="0.8*"></RowDefinition>
<RowDefinition Height="1.2*"></RowDefinition>
<RowDefinition Height="1.5*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<GroupBox Header="Correction" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Margin="0 0 0 0" Style="{StaticResource StGroupBox2nd}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<GroupBox Grid.Column="0" Header="Param" Style="{StaticResource StGroupBox4th}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<UniformGrid Grid.Column="0" Rows="3">
<usercontrols:UCKeyValue KeyText="Row" Value="{Binding GridRowCount}" Margin="0 5" DecimalPlaces="0" Unit="count" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
<usercontrols:UCKeyValue KeyText="Column" Value="{Binding GridColumnCount}" Margin="0 5" DecimalPlaces="0" Unit="count" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
<usercontrols:UCKeyValue KeyText="Unit Length" Value="{Binding UnitLength}" Margin="0 5" DecimalPlaces="0" Unit="mm" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
</UniformGrid>
<UniformGrid Grid.Column="1" Rows="3">
<usercontrols:UCKeyValue KeyText="Tilting Degree" Value="{Binding TiltingDegree}" Margin="0 5" DecimalPlaces="0" Unit="º" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
<usercontrols:UCKeyValue KeyText="Current X" Value="{Binding CurrentX}" Margin="0 5" DecimalPlaces="2" Unit="mm" IsReadOnly="True" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
<usercontrols:UCKeyValue KeyText="Current Y" Value="{Binding CurrentY}" Margin="0 5" DecimalPlaces="2" Unit="mm" IsReadOnly="True" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
</UniformGrid>
</Grid>
</GroupBox>
<GroupBox Grid.Column="1" Header="Control" Style="{StaticResource StGroupBox4th}">
<UniformGrid Grid.Column="0" Rows="3">
<Button Margin="3" Command="{Binding CMD_ApplyGridItems}" Content="Apply" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" Style="{StaticResource StButtonAccentBlue}" />
<Button Margin="3" Command="{Binding CMD_SaveDataFile}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" Style="{StaticResource StButtonAccentBlue}">
<StackPanel Orientation="Horizontal">
<Image Width="20" Height="10" Margin="5 0 5 0" Source="../../Resource/Save.png"/>
<TextBlock Text="Save DataFile"/>
</StackPanel>
</Button>
<Button Margin="3" Command="{Binding CMD_RunCorreXionPro}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" Style="{StaticResource StButtonAccentBlue}">
<StackPanel Orientation="Horizontal">
<Image Width="20" Height="10" Margin="5 0 5 0" Source="../../Resource/CorrectionPro.png"/>
<TextBlock Text="Run CorrectionPro"/>
</StackPanel>
</Button>
</UniformGrid>
</GroupBox>
</Grid>
</GroupBox>
<Grid Grid.Row="1" Grid.ColumnSpan="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="1.2*"/>
<ColumnDefinition Width="1.2*"/>
</Grid.ColumnDefinitions>
<GroupBox Header="Scanner Calibration" Grid.Column="0" Margin="0 5 0 0" Style="{StaticResource StGroupBox2nd}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<!--<RowDefinition Height="auto"></RowDefinition>-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1.5*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<GroupBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Header="Vision Param" Style="{StaticResource StGroupBox4th}">
<UniformGrid Grid.Column="0" Rows="3">
<usercontrols:UCKeyValue KeyText="MPosOffset X" Value="{Binding MPosOffsetX}" Margin="0 5" DecimalPlaces="1" Unit="mm" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
<usercontrols:UCKeyValue KeyText="MPosOffset Y" Value="{Binding MPosOffsetY}" Margin="0 5" DecimalPlaces="1" Unit="mm" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
<usercontrols:UCKeyValue KeyText="Align Distortion" Value="{Binding OffsetThreshold}" Margin="0 5" DecimalPlaces="3" Unit="mm" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
</UniformGrid>
</GroupBox>
<!--<GroupBox Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Header="1Step Calibration" Style="{StaticResource StGroupBox4th}" Height="60">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="1.5*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Grid.Column="0" BorderBrush="Gray" BorderThickness="0.5">
<CheckBox HorizontalAlignment="Center" Content="Use" IsChecked="{Binding Is1StepCalibration}"/>
</Border>
<usercontrols:UCKeyValue Grid.Column="1" KeyText="RetryNum" Value="{Binding RetryNum}" Unit="count" KeyHorizontalAlignment="Right" KeyTextWidth="0.9*" />
</Grid>
</GroupBox>-->
<GroupBox Grid.Row="1" Grid.Column="0" Header="Calibration Type" Margin="0 5 0 5" Style="{StaticResource StGroupBox4th}" Height="100">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Border Grid.Row="0" BorderBrush="Gray" BorderThickness="0.5" Margin="0 0 0 5">
<CheckBox HorizontalAlignment="Center" Content="1Step Calib" FontSize="12" IsChecked="{Binding Is1StepCalibration}"/>
</Border>
<Border Grid.Row="1" BorderBrush="Gray" BorderThickness="0.5">
<mah:ToggleSwitch HorizontalAlignment="Center" FontSize="12" FontWeight="Bold"
IsOn="{Binding IsVisionCalibration}"
OffContent="Laser Calib"
OnContent="Vision Calib"/>
</Border>
</Grid>
</GroupBox>
<GroupBox Grid.Row="2" Grid.Column="1" Margin="5 5 0 5" Header="Control" Style="{StaticResource StGroupBox4th}">
<Grid Margin="0 2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Margin="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" FontWeight="Bold" Style="{StaticResource StButtonAccentPurple}" Command="{Binding CMD_RunScannerCalibration}" Content="Run Scanner Calib" IsEnabled="{Binding IsSequenceRunning_ScannerCalibration, Converter={StaticResource convReverse}}"/>
<Button Grid.Column="1" Margin="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" FontWeight="Bold" Style="{StaticResource StButtonAccentPurple}" Command="{Binding CMD_StopScannerCalibration}" Content="Stop" IsEnabled="{Binding IsSequenceRunning_ScannerCalibration}"/>
</Grid>
</GroupBox>
</Grid>
</GroupBox>
<GroupBox Header="Mark Grid" Grid.Column="1" Margin="5 5 0 0" Style="{StaticResource StGroupBox2nd}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="1.8*"></RowDefinition>
<RowDefinition Height="1*"></RowDefinition>
<!--<RowDefinition Height="auto"></RowDefinition>-->
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="1.5*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<GroupBox Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Header="Laser Param" Style="{StaticResource StGroupBox4th}">
<UniformGrid Columns="2" Rows="3">
<usercontrols:UCKeyValue KeyText="Power" Value="{Binding MarkPower}" Margin="0 5" DecimalPlaces="1" Unit="%" KeyHorizontalAlignment="Center" KeyTextWidth="0.9*" ShowKeypad="False"/>
<Border BorderBrush="Gray" BorderThickness="0.5" Margin="5 5 0 0">
<mah:ToggleSwitch HorizontalAlignment="Center" FontSize="12" FontWeight="Bold"
IsOn="{Binding IsModulation}"
OffContent="Modulation Off"
OnContent="Modulation On"/>
</Border>
<usercontrols:UCKeyValue KeyText="Speed" Value="{Binding MarkSpeed}" Margin="0 5" DecimalPlaces="1" Unit="mm/s" KeyHorizontalAlignment="Center" KeyTextWidth="0.9*" ShowKeypad="False"/>
<usercontrols:UCKeyValue KeyText="Frequency" Value="{Binding Frequency}" Margin="0 5" DecimalPlaces="0" Unit="Hz" KeyHorizontalAlignment="Center" KeyTextWidth="0.9*" ShowKeypad="False"/>
<usercontrols:UCKeyValue KeyText="Length" Value="{Binding MarkLength}" Margin="0 5" DecimalPlaces="1" Unit="mm" KeyHorizontalAlignment="Center" KeyTextWidth="0.9*" ShowKeypad="False"/>
<usercontrols:UCKeyValue KeyText="Pulse Duration" Value="{Binding PulseDuration}" Margin="0 5" DecimalPlaces="0" Unit="ms" KeyHorizontalAlignment="Center" KeyTextWidth="0.9*" ShowKeypad="False"/>
</UniformGrid>
</GroupBox>
<GroupBox Grid.Row="1" Header="LaserStatus" Margin="0 5 0 5" Style="{StaticResource StGroupBox4th}" Height="100">
<TextBox TextAlignment="Center" HorizontalAlignment="Stretch" Text="{Binding LaserStatus}"
Background ="{Binding LaserStatus, Converter={StaticResource convDeviceEnableColor}}" Foreground="White" FontWeight="Bold" IsReadOnly="True"></TextBox>
</GroupBox>
<GroupBox Grid.Row="1" Grid.Column="1" Margin="5 5 0 0" Header="Control" Style="{StaticResource StGroupBox4th}" Height="100">
<Grid Margin="0 2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Margin="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" FontWeight="Bold" Style="{StaticResource StButtonAccentPurple}" Command="{Binding CMD_RunMarkGrid}" Content="Run Mark Grid" IsEnabled="{Binding IsSequenceRunning_MarkGrid, Converter={StaticResource convReverse}}"/>
<Button Grid.Column="1" Margin="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" FontWeight="Bold" Style="{StaticResource StButtonAccentPurple}" Command="{Binding CMD_StopMarkGrid}" Content="Stop" IsEnabled="{Binding IsSequenceRunning_MarkGrid}"/>
</Grid>
</GroupBox>
</Grid>
</GroupBox>
<GroupBox Header="Pixel Resolution" Grid.Column="2" Margin="5 5 0 0" Style="{StaticResource StGroupBox2nd}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Margin="3" Command="{Binding CMD_FindPattern}" Content="Find Pattern" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" Style="{StaticResource StButtonAccentBlue}" />
<Border Grid.Row="1" BorderBrush="Gray" BorderThickness="0.5" Margin="3">
<mah:ToggleSwitch HorizontalAlignment="Center" FontSize="12" FontWeight="Bold"
IsOn="{Binding IsGrabLiveLimage}"
OffContent="Load Image"
OnContent="Live Image"/>
</Border>
<usercontrols:UCKeyValue Grid.Row="2" Margin="0 5" KeyText="Ref Distance" Value="{Binding ReferenceDistance}" Unit="mm" DecimalPlaces="1" KeyHorizontalAlignment="Right" IsReadOnly="False" KeyTextWidth="0.9*" ShowKeypad="False"/>
<usercontrols:UCKeyValue Grid.Row="1" Grid.Column="1" Margin="0 5" KeyText="PixelDist Min" Value="{Binding PixelDistanceMin}" Unit="mm" DecimalPlaces="0" KeyHorizontalAlignment="Right" IsReadOnly="False" KeyTextWidth="0.9*" ShowKeypad="False"/>
<usercontrols:UCKeyValue Grid.Row="2" Grid.Column="1" Margin="0 5" KeyText="PixelDist Max" Value="{Binding PixelDistanceMax}" Unit="mm" DecimalPlaces="0" KeyHorizontalAlignment="Right" IsReadOnly="False" KeyTextWidth="0.9*" ShowKeypad="False"/>
<Button Grid.Row="0" Grid.Column="1" Margin="3" Command="{Binding CMD_CalculateDistance}" Content="Caculate Distance" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="auto" Style="{StaticResource StButtonAccentBlue}" />
<usercontrols:UCKeyValue Grid.Row="3" Grid.Column="0" Margin="0 5" KeyText="Distance Average" Value="{Binding DistanceAverage}" Unit="pixel" DecimalPlaces="2" KeyHorizontalAlignment="Right" IsReadOnly="True" KeyTextWidth="0.9*" />
<usercontrols:UCKeyValue Grid.Row="3" Grid.Column="1" Margin="0 5" KeyText="Lens Magnification" Value="{Binding LensMagnification}" Unit="X" DecimalPlaces="4" KeyHorizontalAlignment="Right" IsReadOnly="True" KeyTextWidth="0.9*" />
<DataGrid Grid.Row="4" Grid.ColumnSpan="2" Background="Black" BorderThickness="1" ColumnHeaderHeight="18" HorizontalGridLinesBrush="#FFA0A0A0" VerticalGridLinesBrush="#FFA0A0A0" RowHeight="27" IsReadOnly="False"
Name="datagrid" ItemsSource="{Binding PatternCorrectionList}" AutoGenerateColumns="True" ColumnWidth="100" GridLinesVisibility="All"
IsVisibleChanged="GridEditorVisionCorrectionList_IsVisibleChanged"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
Height="100">
</DataGrid>
</Grid>
</GroupBox>
</Grid>
<GroupBox Header="Pattern List" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Margin="0 5 0 0" Style="{StaticResource StGroupBox2nd}">
<Grid x:Name="gridPatternListView"></Grid>
</GroupBox>
</Grid>
</Grid>
</UserControl>