20240301_JSEQ_upperpc/JiangsuEarthquake_test/JiangsuEarthquake/Views/SeismometerStateDataView.xaml
XuMin 748090f317 修改部分:
1 地震仪告警记录中故障次数隐藏;电力载波机和光电交换机的供电状态隐藏;
2 除漏水和保护板事件的数据按照浮点数解析,别的按照整数解析;
3 解决TCP Server和Client存在的问题,包括无法监测到客户端连接,无法监测到服务端断开等问题;
2024-08-13 14:35:33 +08:00

398 lines
28 KiB
XML

<UserControl x:Class="JiangsuEarthquake.Views.SeismometerStateDataView"
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:JiangsuEarthquake.Views"
xmlns:hc="https://handyorg.github.io/handycontrol"
mc:Ignorable="d"
FontFamily="{StaticResource DigitalDisplay}"
Name="SeismometerStateDataPage"
d:DesignHeight="850" d:DesignWidth="1550">
<UserControl.Resources>
<Style TargetType="GroupBox">
<Setter Property="Margin" Value="10,5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupBox">
<Grid>
<!--左上角-->
<Polyline HorizontalAlignment="Left" VerticalAlignment="Top"
Points="0 30,0 10,10 0,30 0" Stroke="#9918AABD" StrokeThickness="1"/>
<!--左上角点-->
<Ellipse Width="4" Height="4" VerticalAlignment="Top" HorizontalAlignment="Left"
Fill="#9918AABD" Margin="24,-2,0,0"/>
<Ellipse Width="4" Height="4" VerticalAlignment="Top" HorizontalAlignment="Left"
Fill="#9918AABD" Margin="-2,24,0,0"/>
<!--右上角-->
<Path Data="M0 0, 3 3, 30 3, 33 0, 68 0, 73 7,78 7, 78 10M8 0, 25 0"
Stroke="#5518AABD" VerticalAlignment="Top" HorizontalAlignment="Right"/>
<!--左下角-->
<Polyline Points="0,0 0,15 10,15" Stroke="#5518AABD" VerticalAlignment="Bottom"
HorizontalAlignment="Left"/>
<!--右下角-->
<Polyline Points="10,0 0,10" Stroke="#5518AABD" VerticalAlignment="Bottom"
HorizontalAlignment="Right"/>
<!--右下角图表-->
<Polyline Points="0,7 7 7 7 0" Fill="#9918AABD" VerticalAlignment="Bottom"
HorizontalAlignment="Right"/>
<Border BorderBrush="#5518AABD" BorderThickness="0,1,0,0" VerticalAlignment="Top"
Margin="30,-0.5,78,0"/>
<Border BorderBrush="#5518AABD" BorderThickness="0,0,1,0" HorizontalAlignment="Right"
Margin="0,10"/>
<Border BorderBrush="#5518AABD" BorderThickness="0,1,0,0" VerticalAlignment="Bottom"
Margin="10,0"/>
<Border BorderBrush="#5518AABD" BorderThickness="0,0,1,0" HorizontalAlignment="Left"
Margin="-0.5,15"/>
<!--箭头-->
<Path Data="M0 0,3 0,5 4,3 8,0 8,3 4" Fill="#9918AABD" VerticalAlignment="Top"
HorizontalAlignment="Left" Margin="10,13"/>
<Path Data="M0 0,3 0,5 4,3 8,0 8,3 4" Fill="#5518AABD" VerticalAlignment="Top"
HorizontalAlignment="Left" Margin="16,13"/>
<!--字体-->
<TextBlock Text="{TemplateBinding Header}" Foreground="#18AABD"
VerticalAlignment="Top" HorizontalAlignment="Left" Margin="25,12"/>
<!-- 占位对象 -->
<ContentPresenter />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="ButtonStyle" TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Border x:Name="border" CornerRadius="8"/>
<ContentPresenter x:Name="contentPresenter" Focusable="False"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}" RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#32658F" TargetName="border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="Transparent"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
<Grid>
<Border x:Name="columnHeaderBorder" BorderThickness="0,0,0,1"
BorderBrush="#EEE"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
TextBlock.TextAlignment="Center"
TextBlock.FontSize="18"
TextBlock.Foreground="White"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.15*"/>
<RowDefinition/>
<RowDefinition Height="0.15*"/>
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<GroupBox Header="地震仪状态数据查询条件">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.2*"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2.5*"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Column="0" VerticalAlignment="Center" HorizontalAlignment="Left"
Orientation="Horizontal" Margin="40,10,0,0">
<CheckBox Content="时间筛选:" Foreground="White" FontSize="18"
IsChecked="{Binding IsChecked}" VerticalAlignment="Center"/>
<hc:DateTimePicker hc:InfoElement.ShowClearButton="True"
hc:InfoElement.TitleWidth="80" hc:InfoElement.TitlePlacement="Left"
Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="起始时间:"
Foreground="White" CaretBrush="White"
FontSize="14" Width="260" Margin="10,0,0,0" Background="Transparent"
BorderBrush="White" SelectedDateTime="{Binding StartDateTime}"/>
<TextBlock Text="-" Foreground="White" HorizontalAlignment="Center"
VerticalAlignment="Center" Margin="10,0,0,0"/>
<hc:DateTimePicker hc:InfoElement.ShowClearButton="True"
hc:InfoElement.TitleWidth="80" hc:InfoElement.TitlePlacement="Left"
Style="{StaticResource DateTimePickerPlus}" hc:InfoElement.Title="结束时间:"
Foreground="White" CaretBrush="White"
FontSize="14" Width="260" Margin="10,0,0,0" Background="Transparent"
BorderBrush="White" SelectedDateTime="{Binding EndDateTime}"/>
</StackPanel>
<StackPanel Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Right"
Orientation="Horizontal" Margin="0,0,40,0">
<!--<TextBlock Text="排序方式:" Foreground="White" FontSize="16" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<ListBox x:Name="RadioButtonGroupChoiceChipPrimary" Margin="10,0,0,0"
Style="{StaticResource MaterialDesignChoiceChipPrimaryListBox}">
<ListBoxItem Content="时间正序" FontSize="14"/>
<ListBoxItem Content="时间倒序" IsSelected="True" FontSize="14" Margin="20,0"/>
</ListBox>-->
</StackPanel>
</Grid>
</Grid>
</GroupBox>
</Grid>
<Grid Grid.Row="1">
<GroupBox Header="地震仪状态数据展示">
<hc:TransitioningContentControl>
<Grid Margin="0,0,0,0">
<Grid.RowDefinitions>
<RowDefinition Height="10*"/>
<RowDefinition/>
</Grid.RowDefinitions>
<ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Disabled">
<DataGrid x:Name="SeismometerStateDataGrid" ItemsSource="{Binding SeismometerStateDataList}"
AutoGenerateColumns="False" Margin="10,25,10,0" CanUserSortColumns="False"
CanUserAddRows="False" CanUserDeleteRows="False" Background="Transparent"
CanUserReorderColumns="False" CanUserResizeColumns="False" IsHitTestVisible="False"
CanUserResizeRows="False" BorderThickness="0" Grid.RowSpan="2">
<DataGrid.Resources>
<Style TargetType="DataGridCell" x:Key="DataGridCellCenter">
<Setter Property="Background" Value="#FF14273A"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="BorderBrush" Value="#A0A0A0"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridCell">
<Border x:Name="border" BorderBrush="#A0A0A0" BorderThickness="0,0,0,1"
Background="{TemplateBinding Background}">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Index}"
Header="编号" Width="60"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding RecordTime, StringFormat='yyyy/MM/dd HH:mm:ss'}"
Header="记录时间" Width="160"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Out_Vol,StringFormat=F2}"
Header="外部电压 V" Width="120"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Backup_Vol,StringFormat=F2}"
Header="后备电池电压 V" Width="150"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Pre,StringFormat=F2}"
Header="压力" Width="80"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Tem,StringFormat=F2}"
Header="温度 ℃" Width="80"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Sei_Tilt_Angle,StringFormat=F2}"
Header="地震计倾斜角度 °" Width="180"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding OBS_Tilt_Angle,StringFormat=F2}"
Header="OBS倾斜角度 °" Width="160"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Species_Dif,StringFormat=F2}"
Header="种差 μs" Width="80"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Frequency_Dif,StringFormat=F2}"
Header="频差 ppm" Width="100"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding CF_Total_Cap,StringFormat=F2}"
Header="CF卡总空间 KB" Width="170"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding CF_Usable_Cap,StringFormat=F2}"
Header="CF卡可用空间 KB" Width="180"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding SD_Total_Cap1,StringFormat=F2}"
Header="SD1卡总空间 KB" Width="170"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding SD_Usable_Cap1,StringFormat=F2}"
Header="SD1卡可用空间 KB" Width="180"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding SD_Total_Cap2,StringFormat=F2}"
Header="SD2卡总空间 KB" Width="170"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding SD_Usable_Cap2,StringFormat=F2}"
Header="SD2卡可用空间 KB" Width="180"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Sei_U_Point,StringFormat=F2}"
Header="地震计U零点 V" Width="150"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Sei_V_Point,StringFormat=F2}"
Header="地震计V零点 V" Width="150"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding Sei_W_Point,StringFormat=F2}"
Header="地震计W零点 V" Width="150"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
<DataGridTextColumn Binding="{Binding North_Angle,StringFormat=F2}"
Header="寻北角度 °" Width="120"
CanUserSort="False" CellStyle="{StaticResource DataGridCellCenter}"/>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
<StackPanel Orientation="Horizontal" Grid.Row="1" VerticalAlignment="Center"
HorizontalAlignment="Right" Margin="0,0,10,0">
<TextBlock VerticalAlignment="Center" FontSize="17" Foreground="White"
Margin="0,0,20,0" Text="{Binding SeismometerStateMsg}"/>
<Button Content="上一页" FontSize="16" Command="{Binding ForwordSystemStateCommand}"
Background="Transparent" BorderBrush="White" Style="{StaticResource ButtonStyle}"
Foreground="White" Width="85" Height="35">
<Button.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="8"/>
</Style>
</Button.Resources>
</Button>
<Button Content="下一页" FontSize="16" Margin="20,0,20,0" Background="Transparent"
Command="{Binding NextSystemStateCommand}" BorderBrush="White" Style="{StaticResource ButtonStyle}"
Foreground="White" Width="85" Height="35">
<Button.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="8"/>
</Style>
</Button.Resources>
</Button>
</StackPanel>
</Grid>
</hc:TransitioningContentControl>
</GroupBox>
</Grid>
<Grid Grid.Row="2">
<GroupBox Header="地震仪状态数据操作">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.15*"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Grid.Row="2" Orientation="Horizontal" VerticalAlignment="Bottom"
HorizontalAlignment="Left">
<hc:ButtonGroup Grid.Row="2" Style="{StaticResource ButtonGroupSolid}"
Width="140" VerticalAlignment="Center" Margin="80,0,20,0">
<RadioButton Height="28" Content="主地震仪" FontSize="13" IsChecked="{Binding MainSeisIsChecked}" Foreground="{DynamicResource PrimaryTextBrush}"/>
<RadioButton Height="28" Content="备地震仪" FontSize="13" Foreground="{DynamicResource PrimaryTextBrush}"/>
</hc:ButtonGroup>
<CheckBox Content="周期请求" Foreground="White" FontSize="18"
IsChecked="{Binding CycleRequestIsChecked}" VerticalAlignment="Center"
Margin="10,0,0,0"/>
<TextBlock Text="周期:" FontSize="16" Foreground="White" VerticalAlignment="Center"
Margin="20,0,10,0"/>
<TextBox Name="CycleRequestCycleTextBox" Background="White"
Text="{Binding CycleRequestCycle, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Foreground="Black" FontSize="16" Width="100" Height="28" CaretBrush="Black"
TextAlignment="Left" VerticalContentAlignment="Center" HorizontalContentAlignment="Center"/>
<TextBlock Text="s" FontSize="17" Foreground="White" VerticalAlignment="Center"
Margin="10,0,20,0"/>
<Button Name="AskDataBtn" Foreground="White" Background="Transparent" BorderBrush="White"
VerticalAlignment="Center" HorizontalAlignment="Center" BorderThickness="1" Width="150"
Height="45" Style="{StaticResource ButtonStyle}" Margin="20,0,0,10"
Command="{Binding AskDataBtnCommand}" IsEnabled="{Binding AskDataBtnIsEnabled}">
<Button.Content>
<StackPanel Orientation="Horizontal">
<Image Source="/Assets/Images/AskData.png" Width="18"/>
<TextBlock Text="请求数据" Foreground="White" FontSize="16" Margin="15,0"
VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</Button.Content>
<Button.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="8"/>
</Style>
</Button.Resources>
</Button>
<Button Name="RefreshDataBtn" Foreground="White" Background="Transparent" BorderBrush="White"
VerticalAlignment="Center" HorizontalAlignment="Center" BorderThickness="1" Width="150"
Height="45" Margin="160,0,0,10" Style="{StaticResource ButtonStyle}"
Command="{Binding RefreshDataCommand}">
<Button.Content>
<StackPanel Orientation="Horizontal">
<Image Source="/Assets/Images/Refresh.png" Width="18"/>
<TextBlock Text="刷新数据" Foreground="White" FontSize="16" Margin="15,0"
VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</Button.Content>
<Button.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="8"/>
</Style>
</Button.Resources>
</Button>
<Button Name="DownloadDataBtn" Foreground="White" Background="Transparent" BorderBrush="White"
VerticalAlignment="Center" HorizontalAlignment="Center" BorderThickness="1" Width="150"
Height="45" Margin="160,0,0,10" Style="{StaticResource ButtonStyle}"
Command="{Binding DownloadDataCommand}">
<Button.Content>
<StackPanel Orientation="Horizontal">
<Image Source="/Assets/Images/Download.png" Width="20"/>
<TextBlock Text="下载数据" Foreground="White" FontSize="16" Margin="15,0"
VerticalAlignment="Center" HorizontalAlignment="Center"/>
</StackPanel>
</Button.Content>
<Button.Resources>
<Style TargetType="{x:Type Border}">
<Setter Property="CornerRadius" Value="8"/>
</Style>
</Button.Resources>
</Button>
</StackPanel>
<TextBlock Grid.Row="2" Name="AskDataMsg" Text="{Binding AskDataMsg}"
Foreground="{Binding AskDataMsgForeground}"
Visibility="{Binding AskDataMsgVisibility}"
FontSize="12" Margin="725,0,0,5" VerticalAlignment="Top"/>
<TextBlock Grid.Row="2" Name="DownloadDataMsg" Text="{Binding DownloadDataMsg}"
Foreground="{Binding DownloadDataMsgForeground}"
Visibility="{Binding DownloadDataMsgVisibility}"
FontSize="12" Margin="0,0,153,15" VerticalAlignment="Top"
HorizontalAlignment="Right"/>
</Grid>
</GroupBox>
</Grid>
</Grid>
</UserControl>