Add cross-platform OPC UA client stack: shared library, CLI tool, and Avalonia UI
Implements Client.Shared (IOpcUaClientService with connection lifecycle, failover, browse, read/write, subscriptions, alarms, history, redundancy), Client.CLI (8 CliFx commands mirroring tools/opcuacli-dotnet), and Client.UI (Avalonia desktop app with tree browser, read/write, subscriptions, alarms, and history tabs). All three target .NET 10 and are covered by 249 unit tests. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
<UserControl xmlns="https://github.com/avaloniaui"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:vm="using:ZB.MOM.WW.LmxOpcUa.Client.UI.ViewModels"
|
||||
x:Class="ZB.MOM.WW.LmxOpcUa.Client.UI.Views.SubscriptionsView"
|
||||
x:DataType="vm:SubscriptionsViewModel">
|
||||
<DockPanel Margin="8">
|
||||
<!-- Add/Remove Controls -->
|
||||
<StackPanel DockPanel.Dock="Top" Spacing="8">
|
||||
<TextBlock Text="Subscriptions" FontWeight="Bold" />
|
||||
<StackPanel Orientation="Horizontal" Spacing="8">
|
||||
<TextBox Text="{Binding NewNodeIdText}" Width="250" Watermark="Node ID (e.g., ns=2;s=MyNode)" />
|
||||
<NumericUpDown Value="{Binding NewInterval}" Minimum="100" Maximum="60000" Width="120" />
|
||||
<Button Content="Add" Command="{Binding AddSubscriptionCommand}" />
|
||||
<Button Content="Remove" Command="{Binding RemoveSubscriptionCommand}" />
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<!-- Active Subscriptions List -->
|
||||
<DataGrid ItemsSource="{Binding ActiveSubscriptions}"
|
||||
SelectedItem="{Binding SelectedSubscription}"
|
||||
AutoGenerateColumns="False"
|
||||
IsReadOnly="True"
|
||||
Margin="0,8,0,0">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="Node ID" Binding="{Binding NodeId}" Width="250" />
|
||||
<DataGridTextColumn Header="Value" Binding="{Binding Value}" Width="150" />
|
||||
<DataGridTextColumn Header="Status" Binding="{Binding Status}" Width="120" />
|
||||
<DataGridTextColumn Header="Timestamp" Binding="{Binding Timestamp}" Width="200" />
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</DockPanel>
|
||||
</UserControl>
|
||||
Reference in New Issue
Block a user