Files

141 lines
7.8 KiB
XML

<Window x:Class="XP.App.Views.SignalDataDemoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ISignalDataService DEMO"
Width="800" Height="650"
MinWidth="700" MinHeight="550"
WindowStartupLocation="CenterScreen"
Background="#FFF5F5F5">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVis"/>
</Window.Resources>
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- 连接区 -->
<GroupBox Grid.Row="0" Header="1. 连接 PLC 并加载信号定义" Margin="0,0,0,5">
<StackPanel Margin="8">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="信号定义文件:" VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBox Grid.Column="1" Text="{Binding XmlFilePath, UpdateSourceTrigger=PropertyChanged}"
VerticalContentAlignment="Center" Margin="0,0,8,0"/>
<Button Grid.Column="2" Content="连接并加载" Command="{Binding ConnectAndLoadCommand}"
Width="90" Padding="5,3" Margin="0,0,8,0"/>
<StackPanel Grid.Column="3" Orientation="Horizontal">
<Ellipse Width="12" Height="12" VerticalAlignment="Center" Margin="0,0,5,0">
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Fill" Value="#FFBDBDBD"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsConnected}" Value="True">
<Setter Property="Fill" Value="#FF4CAF50"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
</Ellipse>
<TextBlock Text="{Binding StatusText}" VerticalAlignment="Center"
Foreground="#FF666666" FontSize="11" MaxWidth="200" TextTrimming="CharacterEllipsis"/>
</StackPanel>
</Grid>
</StackPanel>
</GroupBox>
<!-- 信号读取区(批量缓存/单点自动路由)-->
<GroupBox Grid.Row="1" Header="2. 信号读取 (GetValueByName - 自动路由批量缓存/单点读取)" Margin="0,0,0,5">
<Grid Margin="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="150"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="信号名称:" VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBox Grid.Column="1" Text="{Binding ReadSignalName, UpdateSourceTrigger=PropertyChanged}"
VerticalContentAlignment="Center" Margin="0,0,8,0"/>
<Button Grid.Column="2" Content="读取" Command="{Binding CacheReadCommand}"
Width="60" Padding="5,3" Margin="0,0,8,0"/>
<TextBlock Grid.Column="3" Text="结果:" VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBox Grid.Column="4" Text="{Binding ReadResult, Mode=OneWay}" IsReadOnly="True"
VerticalContentAlignment="Center" Background="#FFF0F0F0" Foreground="#FF1B5E20"/>
</Grid>
</GroupBox>
<!-- 队列写入区 -->
<GroupBox Grid.Row="2" Header="3. 队列写入 (EnqueueWrite)" Margin="0,0,0,5">
<Grid Margin="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="信号名称:" VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBox Grid.Column="1" Text="{Binding QueueSignalName, UpdateSourceTrigger=PropertyChanged}"
VerticalContentAlignment="Center" Margin="0,0,8,0"/>
<TextBlock Grid.Column="2" Text="写入值:" VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBox Grid.Column="3" Text="{Binding QueueWriteValue, UpdateSourceTrigger=PropertyChanged}"
VerticalContentAlignment="Center" Margin="0,0,8,0"/>
<Button Grid.Column="4" Content="入队写入" Command="{Binding QueueWriteCommand}"
Width="70" Padding="5,3"/>
</Grid>
</GroupBox>
<!-- 直接写入+回读校验区 -->
<GroupBox Grid.Row="3" Header="4. 直接写入+回读校验 (WriteDirectWithVerify)" Margin="0,0,0,5">
<Grid Margin="8">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="信号名称:" VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBox Grid.Column="1" Text="{Binding DirectSignalName, UpdateSourceTrigger=PropertyChanged}"
VerticalContentAlignment="Center" Margin="0,0,8,0"/>
<TextBlock Grid.Column="2" Text="写入值:" VerticalAlignment="Center" Margin="0,0,5,0"/>
<TextBox Grid.Column="3" Text="{Binding DirectWriteValue, UpdateSourceTrigger=PropertyChanged}"
VerticalContentAlignment="Center" Margin="0,0,8,0"/>
<Button Grid.Column="4" Content="直接写入" Command="{Binding DirectWriteCommand}"
Width="70" Padding="5,3"/>
</Grid>
</GroupBox>
<!-- 日志区 -->
<GroupBox Grid.Row="4" Header="操作日志">
<DockPanel Margin="5">
<Button DockPanel.Dock="Bottom" Content="清除日志" Command="{Binding ClearLogCommand}"
HorizontalAlignment="Right" Width="80" Margin="0,5,0,0" Padding="5,3"/>
<ListBox x:Name="LogListBox" ItemsSource="{Binding LogEntries}"
FontFamily="Consolas" FontSize="12"
Background="#FFF9F9F9" BorderBrush="#FFBDBDBD"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Padding" Value="2,1"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
</DockPanel>
</GroupBox>
</Grid>
</Window>