226 lines
14 KiB
XML
226 lines
14 KiB
XML
<UserControl x:Class="SSPCTester.UI.Views.CurveTestView"
|
||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||
xmlns:vm="clr-namespace:SSPCTester.UI.ViewModels"
|
||
xmlns:ctl="clr-namespace:SSPCTester.UI.Controls"
|
||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||
mc:Ignorable="d"
|
||
d:DataContext="{d:DesignInstance Type=vm:CurveTestViewModel}">
|
||
<Grid Margin="20">
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="3*" MinHeight="260" />
|
||
<RowDefinition Height="2*" MinHeight="180" />
|
||
</Grid.RowDefinitions>
|
||
|
||
<TextBlock Text="开启与关断曲线(覆盖指标 1.1–1.6)" FontSize="{StaticResource FsH1}" FontWeight="Bold" Margin="0,0,0,12" />
|
||
|
||
<Grid Grid.Row="1">
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="320" />
|
||
<ColumnDefinition Width="*" />
|
||
</Grid.ColumnDefinitions>
|
||
|
||
<!-- 左栏:参数 -->
|
||
<Border Style="{StaticResource Card}" Margin="0,0,12,0">
|
||
<StackPanel>
|
||
<TextBlock Style="{StaticResource CardTitle}" Text="采集参数" />
|
||
<TextBlock Style="{StaticResource FieldLabel}" Text="通道" />
|
||
<ComboBox ItemsSource="{Binding Channels}" SelectedItem="{Binding SelectedChannel}" Margin="0,0,0,12" />
|
||
<TextBlock Style="{StaticResource CardTitle}" Text="合格阈值 (ms)" Margin="0,8,0,12" />
|
||
<Grid>
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="*" />
|
||
<ColumnDefinition Width="*" />
|
||
</Grid.ColumnDefinitions>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="8" />
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="8" />
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="8" />
|
||
<RowDefinition Height="Auto" />
|
||
</Grid.RowDefinitions>
|
||
<TextBlock Text="开启时间" />
|
||
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding Thresholds.MaxOnTimeMs}" FontFamily="{StaticResource FontMono}" />
|
||
<TextBlock Grid.Row="2" Text="上升时间" />
|
||
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding Thresholds.MaxRiseTimeMs}" FontFamily="{StaticResource FontMono}" />
|
||
<TextBlock Grid.Row="4" Text="关断时间" />
|
||
<TextBox Grid.Row="4" Grid.Column="1" Text="{Binding Thresholds.MaxOffTimeMs}" FontFamily="{StaticResource FontMono}" />
|
||
<TextBlock Grid.Row="6" Text="下降时间" />
|
||
<TextBox Grid.Row="6" Grid.Column="1" Text="{Binding Thresholds.MaxFallTimeMs}" FontFamily="{StaticResource FontMono}" />
|
||
</Grid>
|
||
<Button Style="{StaticResource PrimaryButton}" Content="开启曲线测试" Margin="0,16,0,0"
|
||
Command="{Binding CaptureRisingCommand}"
|
||
IsEnabled="{Binding Busy, Converter={StaticResource BoolToVis}, ConverterParameter=Invert}">
|
||
<Button.ContentTemplate>
|
||
<DataTemplate>
|
||
<TextBlock Text="{Binding}" Foreground="{StaticResource TextInverseBrush}" />
|
||
</DataTemplate>
|
||
</Button.ContentTemplate>
|
||
</Button>
|
||
<Button Style="{StaticResource PrimaryButton}" Content="关断曲线测试" Margin="0,16,0,0"
|
||
Command="{Binding CaptureFallingCommand}"
|
||
IsEnabled="{Binding Busy, Converter={StaticResource BoolToVis}, ConverterParameter=Invert}">
|
||
<Button.ContentTemplate>
|
||
<DataTemplate>
|
||
<TextBlock Text="{Binding}" Foreground="{StaticResource TextInverseBrush}" />
|
||
</DataTemplate>
|
||
</Button.ContentTemplate>
|
||
</Button>
|
||
<TextBlock Margin="0,12,0,0" TextWrapping="Wrap"
|
||
Foreground="{StaticResource TextMutedBrush}"
|
||
Text="开启/关断时间以软件发送 Modbus 命令前的标记为基准,包含串口通信延迟,不等同于硬件同步触发精度。" />
|
||
</StackPanel>
|
||
</Border>
|
||
|
||
<!-- 右栏:波形 -->
|
||
<Grid Grid.Column="1">
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="*" />
|
||
<RowDefinition Height="*" />
|
||
</Grid.RowDefinitions>
|
||
<Border Style="{StaticResource Card}" Margin="0,0,0,6">
|
||
<DockPanel>
|
||
<Grid DockPanel.Dock="Top">
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="*" />
|
||
<ColumnDefinition Width="Auto" />
|
||
</Grid.ColumnDefinitions>
|
||
<TextBlock Style="{StaticResource CardTitle}" Text="开启曲线(电压上升,90% 阈值)" />
|
||
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||
<TextBlock Text="起点" VerticalAlignment="Center" Margin="0,0,4,0" />
|
||
<TextBox Width="58" Height="26" Margin="0,0,8,0" Padding="4,0"
|
||
Text="{Binding RisingViewStartMs, UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"
|
||
FontFamily="{StaticResource FontMono}" />
|
||
<TextBlock Text="终点" VerticalAlignment="Center" Margin="0,0,4,0" />
|
||
<TextBox Width="58" Height="26" Margin="0,0,8,0" Padding="4,0"
|
||
Text="{Binding RisingViewEndMs, UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"
|
||
FontFamily="{StaticResource FontMono}" />
|
||
<Button Content="默认" Width="54" Height="26" Padding="0" Margin="0,0,8,0"
|
||
Command="{Binding ResetRisingViewCommand}" />
|
||
|
||
</StackPanel>
|
||
</Grid>
|
||
<ctl:CurvePlotControl Curve="{Binding RisingCurve}" IsRising="True" VMax="{Binding VMax}"
|
||
ViewStartMs="{Binding RisingViewStartMs}"
|
||
ViewEndMs="{Binding RisingViewEndMs}" />
|
||
</DockPanel>
|
||
</Border>
|
||
<Border Style="{StaticResource Card}" Grid.Row="1" Margin="0,6,0,0">
|
||
<DockPanel>
|
||
<Grid DockPanel.Dock="Top">
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="*" />
|
||
<ColumnDefinition Width="Auto" />
|
||
</Grid.ColumnDefinitions>
|
||
<TextBlock Style="{StaticResource CardTitle}" Text="关断曲线(电压下降,10% 阈值)" />
|
||
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center">
|
||
<TextBlock Text="起点" VerticalAlignment="Center" Margin="0,0,4,0" />
|
||
<TextBox Width="58" Height="26" Margin="0,0,8,0" Padding="4,0"
|
||
Text="{Binding FallingViewStartMs, UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"
|
||
FontFamily="{StaticResource FontMono}" />
|
||
<TextBlock Text="终点" VerticalAlignment="Center" Margin="0,0,4,0" />
|
||
<TextBox Width="58" Height="26" Margin="0,0,8,0" Padding="4,0"
|
||
Text="{Binding FallingViewEndMs, UpdateSourceTrigger=PropertyChanged, TargetNullValue=''}"
|
||
FontFamily="{StaticResource FontMono}" />
|
||
<Button Content="默认" Width="54" Height="26" Padding="0" Margin="0,0,8,0"
|
||
Command="{Binding ResetFallingViewCommand}" />
|
||
|
||
</StackPanel>
|
||
</Grid>
|
||
<ctl:CurvePlotControl Curve="{Binding FallingCurve}" IsRising="False" VMax="{Binding VMax}"
|
||
ViewStartMs="{Binding FallingViewStartMs}"
|
||
ViewEndMs="{Binding FallingViewEndMs}" />
|
||
</DockPanel>
|
||
</Border>
|
||
</Grid>
|
||
</Grid>
|
||
|
||
<!-- 结果表 -->
|
||
<Grid Grid.Row="2" Margin="0,12,0,0">
|
||
<Grid.ColumnDefinitions>
|
||
<ColumnDefinition Width="*" />
|
||
<ColumnDefinition Width="576" />
|
||
</Grid.ColumnDefinitions>
|
||
|
||
<Border Style="{StaticResource Card}" Margin="0,0,12,0">
|
||
<DockPanel>
|
||
<TextBlock DockPanel.Dock="Top" Style="{StaticResource CardTitle}" Text="各通道时间参数" />
|
||
<DataGrid ItemsSource="{Binding Rows}">
|
||
<DataGrid.Columns>
|
||
<DataGridTextColumn Header="通道" Width="70">
|
||
<DataGridTextColumn.Binding>
|
||
<Binding Path="Channel" StringFormat="CH{0}" />
|
||
</DataGridTextColumn.Binding>
|
||
</DataGridTextColumn>
|
||
<DataGridTextColumn Header="开启(ms)" Width="*">
|
||
<DataGridTextColumn.Binding>
|
||
<Binding Path="OnTimeMs" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
|
||
</DataGridTextColumn.Binding>
|
||
<DataGridTextColumn.ElementStyle>
|
||
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
|
||
</DataGridTextColumn.ElementStyle>
|
||
</DataGridTextColumn>
|
||
<DataGridTextColumn Header="上升(ms)" Width="*">
|
||
<DataGridTextColumn.Binding>
|
||
<Binding Path="RiseTimeMs" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
|
||
</DataGridTextColumn.Binding>
|
||
<DataGridTextColumn.ElementStyle>
|
||
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
|
||
</DataGridTextColumn.ElementStyle>
|
||
</DataGridTextColumn>
|
||
<DataGridTextColumn Header="关断(ms)" Width="*">
|
||
<DataGridTextColumn.Binding>
|
||
<Binding Path="OffTimeMs" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
|
||
</DataGridTextColumn.Binding>
|
||
<DataGridTextColumn.ElementStyle>
|
||
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
|
||
</DataGridTextColumn.ElementStyle>
|
||
</DataGridTextColumn>
|
||
<DataGridTextColumn Header="下降(ms)" Width="*">
|
||
<DataGridTextColumn.Binding>
|
||
<Binding Path="FallTimeMs" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
|
||
</DataGridTextColumn.Binding>
|
||
<DataGridTextColumn.ElementStyle>
|
||
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
|
||
</DataGridTextColumn.ElementStyle>
|
||
</DataGridTextColumn>
|
||
<DataGridTemplateColumn Header="结果" Width="100">
|
||
<DataGridTemplateColumn.CellTemplate>
|
||
<DataTemplate>
|
||
<Border Style="{StaticResource StatusBadge}" Background="{Binding Status, Converter={StaticResource StatusToSoftBrush}}">
|
||
<TextBlock Text="{Binding Status, Converter={StaticResource StatusToText}}" Foreground="{Binding Status, Converter={StaticResource StatusToBrush}}" FontSize="{StaticResource FsSmall}" />
|
||
</Border>
|
||
</DataTemplate>
|
||
</DataGridTemplateColumn.CellTemplate>
|
||
</DataGridTemplateColumn>
|
||
</DataGrid.Columns>
|
||
</DataGrid>
|
||
</DockPanel>
|
||
</Border>
|
||
|
||
<Border Grid.Column="1" Style="{StaticResource Card}" Padding="14">
|
||
<Grid>
|
||
<Grid.RowDefinitions>
|
||
<RowDefinition Height="Auto" />
|
||
<RowDefinition Height="*" />
|
||
</Grid.RowDefinitions>
|
||
<TextBlock Style="{StaticResource CardTitle}" Text="测试说明" />
|
||
<TextBox Grid.Row="1"
|
||
Text="{Binding Project.TestFunction.Curve, UpdateSourceTrigger=PropertyChanged}"
|
||
AcceptsReturn="True"
|
||
TextWrapping="Wrap"
|
||
VerticalScrollBarVisibility="Auto"
|
||
Height="Auto"
|
||
MinHeight="126"
|
||
Padding="8"
|
||
VerticalContentAlignment="Top" />
|
||
</Grid>
|
||
</Border>
|
||
</Grid>
|
||
</Grid>
|
||
</UserControl>
|