SSPC-Tester/SSPCTester.UI/Views/PowerTestView.xaml

280 lines
21 KiB
Plaintext
Raw Normal View History

<UserControl x:Class="SSPCTester.UI.Views.PowerTestView"
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: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:PowerTestViewModel}">
<Grid Margin="20">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="2*" MinHeight="220" />
<RowDefinition Height="3*" MinHeight="220" />
</Grid.RowDefinitions>
<TextBlock Text="功率损耗(采集输入/输出两端数据)" FontSize="{StaticResource FsH1}" FontWeight="Bold" Margin="0,0,0,12" />
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="280" />
<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 FieldLabel}" Text="采集次数" />
<TextBox Text="{Binding SamplesPerChannel}" Margin="0,0,0,12" FontFamily="{StaticResource FontMono}" />
<TextBlock Style="{StaticResource FieldLabel}" Text="采集间隔 (ms)" />
<TextBox Text="{Binding IntervalMs}" Margin="0,0,0,12" FontFamily="{StaticResource FontMono}" />
<UniformGrid Columns="2" Margin="0,0,0,0">
<Button Content="开启当前通道" Margin="0,0,6,0"
Command="{Binding TurnOnCurrentChannelCommand}"
IsEnabled="{Binding CanOperate}" />
<Button Content="关断当前通道" Margin="6,0,0,0"
Command="{Binding TurnOffCurrentChannelCommand}"
IsEnabled="{Binding CanOperate}" />
</UniformGrid>
<Button Style="{StaticResource PrimaryButton}" Content="测量当前通道" Margin="0,10,0,0"
Command="{Binding MeasureCurrentCommand}"
IsEnabled="{Binding CanOperate}" />
</StackPanel>
</Border>
<Border Style="{StaticResource Card}" Grid.Column="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<TextBlock Style="{StaticResource CardTitle}" Text="实时读数" />
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0">
<TextBlock Text="输入端(电源)" Foreground="{StaticResource TextSecondaryBrush}" FontWeight="SemiBold" Margin="0,0,0,8" />
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="72" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="电源电压" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="SemiBold"
Text="{Binding Current.Vin, Converter={StaticResource NumberOrDash}, ConverterParameter=F3}" />
<TextBlock Grid.Column="2" Text="V" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="72" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="电源电流" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="SemiBold"
Text="{Binding Current.Iin, Converter={StaticResource NumberOrDash}, ConverterParameter=F3}" />
<TextBlock Grid.Column="2" Text="A" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="72" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="电源功率" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="SemiBold"
Text="{Binding Current.PowerIn, Converter={StaticResource NumberOrDash}, ConverterParameter=F3}" />
<TextBlock Grid.Column="2" Text="W" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
</StackPanel>
<StackPanel Grid.Column="1">
<TextBlock Text="输出端(负载)" Foreground="{StaticResource TextSecondaryBrush}" FontWeight="SemiBold" Margin="0,0,0,8" />
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="72" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="负载电压" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="SemiBold"
Text="{Binding Current.Vout, Converter={StaticResource NumberOrDash}, ConverterParameter=F3}" />
<TextBlock Grid.Column="2" Text="V" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="72" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="负载电流" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="SemiBold"
Text="{Binding Current.Iout, Converter={StaticResource NumberOrDash}, ConverterParameter=F3}" />
<TextBlock Grid.Column="2" Text="A" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="72" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="负载功率" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="SemiBold"
Text="{Binding Current.CalculatedPowerOut, Converter={StaticResource NumberOrDash}, ConverterParameter=F3}" />
<TextBlock Grid.Column="2" Text="W" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
</StackPanel>
<StackPanel Grid.Column="2">
<TextBlock Text="功率损耗" Foreground="{StaticResource PrimaryBrush}" FontWeight="SemiBold" Margin="0,0,0,8" />
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="电压降" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="{StaticResource PrimaryBrush}" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="Bold"
Text="{Binding Current.VoltageDrop, Converter={StaticResource NumberOrDash}, ConverterParameter=F3}" />
<TextBlock Grid.Column="2" Text="V" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="功率损耗" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="{StaticResource PrimaryBrush}" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="Bold"
Text="{Binding Current.PowerLossW, Converter={StaticResource NumberOrDash}, ConverterParameter=F3}" />
<TextBlock Grid.Column="2" Text="W" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
<Grid Height="28" Margin="0,4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80" />
<ColumnDefinition Width="96" />
<ColumnDefinition Width="24" />
</Grid.ColumnDefinitions>
<TextBlock Text="效率" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
<TextBlock Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Foreground="{StaticResource PrimaryBrush}" FontFamily="{StaticResource FontMono}" FontSize="20" FontWeight="Bold"
Text="{Binding Current.EfficiencyPct, Converter={StaticResource NumberOrDash}, ConverterParameter=F1}" />
<TextBlock Grid.Column="2" Text="%" Margin="6,0,0,0" VerticalAlignment="Center" Foreground="{StaticResource TextSecondaryBrush}" />
</Grid>
</StackPanel>
</Grid>
</Grid>
</Border>
</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="60">
<DataGridTextColumn.Binding>
<Binding Path="Channel" StringFormat="CH{0}" />
</DataGridTextColumn.Binding>
</DataGridTextColumn>
<DataGridTextColumn Header="电源电压(V)" Width="*">
<DataGridTextColumn.Binding>
<Binding Path="Vin" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
</DataGridTextColumn.Binding>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="电源电流(A)" Width="*">
<DataGridTextColumn.Binding>
<Binding Path="Iin" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
</DataGridTextColumn.Binding>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="负载电压(V)" Width="*">
<DataGridTextColumn.Binding>
<Binding Path="Vout" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
</DataGridTextColumn.Binding>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="负载电流(A)" Width="*">
<DataGridTextColumn.Binding>
<Binding Path="Iout" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
</DataGridTextColumn.Binding>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="电压降(V)" Width="*">
<DataGridTextColumn.Binding>
<Binding Path="VoltageDrop" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
</DataGridTextColumn.Binding>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="功率损耗(W)" Width="*">
<DataGridTextColumn.Binding>
<Binding Path="PowerLossW" Converter="{StaticResource NumberOrDash}" ConverterParameter="F3" />
</DataGridTextColumn.Binding>
<DataGridTextColumn.ElementStyle>
<Style TargetType="TextBlock" BasedOn="{StaticResource MonoText}" />
</DataGridTextColumn.ElementStyle>
</DataGridTextColumn>
<DataGridTextColumn Header="效率(%)" Width="*">
<DataGridTextColumn.Binding>
<Binding Path="EfficiencyPct" Converter="{StaticResource NumberOrDash}" ConverterParameter="F1" />
</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.Power, UpdateSourceTrigger=PropertyChanged}"
AcceptsReturn="True"
TextWrapping="Wrap"
VerticalScrollBarVisibility="Auto"
Height="Auto"
MinHeight="150"
Padding="8"
VerticalContentAlignment="Top" />
</Grid>
</Border>
</Grid>
</Grid>
</UserControl>