From fe2aa4880d5c9fd88088ad0ed81ebaca05629f5f Mon Sep 17 00:00:00 2001
From: wenxiangchao <wenxiangchao@ihengxin.com.cn>
Date: 星期一, 02 十一月 2026 17:59:45 +0800
Subject: [PATCH] feat: 集成CAN驱动/模拟器 + 仪器仪表注册/硬件调试模块

---
 Util.ManualDebug/ManualDebug.xaml |  237 +++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 158 insertions(+), 79 deletions(-)

diff --git a/Util.ManualDebug/ManualDebug.xaml b/Util.ManualDebug/ManualDebug.xaml
index ca818b0..32df8d8 100644
--- a/Util.ManualDebug/ManualDebug.xaml
+++ b/Util.ManualDebug/ManualDebug.xaml
@@ -1,9 +1,10 @@
-<UserControl x:Class="Util.SB.ManualDebug"
+<UserControl x:Class="Util.ManualDebug.ManualDebug"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-        xmlns:local="clr-namespace:Util.SB"
+        xmlns:local="clr-namespace:Util.ManualDebug"
+        xmlns:dp="clr-namespace:HMI.UI.DpUtil;assembly=HMI.UI"
         mc:Ignorable="d"
         x:Name="self"
         MinHeight="400" MinWidth="500">
@@ -17,104 +18,149 @@
     </UserControl.Resources>
 
     <Grid>
+        <Grid.RowDefinitions>
+            <RowDefinition/>
+            <RowDefinition Height="Auto"/>
+        </Grid.RowDefinitions>
         <Grid Margin="10">
-            <Grid.RowDefinitions>
-                <RowDefinition Height="Auto"/>
-                <RowDefinition Height="5"/>
-                <RowDefinition Height="*"/>
-                <RowDefinition Height="5"/>
-                <RowDefinition Height="*"/>
-            </Grid.RowDefinitions>
-            <WindowsFormsHost x:Name="host" Visibility="Collapsed"></WindowsFormsHost>
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="Auto"/>
+                <ColumnDefinition/>
+            </Grid.ColumnDefinitions>
 
-            <!-- 鎸夐挳鍜岀姸鎬佸尯鍩� -->
-            <Border Grid.Row="0" Background="{StaticResource TsPanelBrush}" 
+            <Grid x:Name="CellSelectBorder">
+                <Grid.RowDefinitions>
+                    <RowDefinition/>
+                    <RowDefinition/>
+                </Grid.RowDefinitions>
+
+                <Border Background="{StaticResource TsPanelBrush}" Margin="0,0,10,5"
+BorderBrush="{StaticResource BorderBrush}" 
+BorderThickness="1" CornerRadius="4" Padding="15">
+                    <StackPanel>
+                        <TextBlock Text="绌翠綅閫夋嫨" FontSize="14" FontWeight="SemiBold" 
+           Foreground="{StaticResource PrimaryBrush}" Margin="0,0,0,15"/>
+
+                        <UniformGrid IsEnabled="False" x:Name="CellGrid" dp:UniformGridHelper.InnerBorder="1" Columns="1"
+ dp:UniformGridHelper.InnerBorderBrush="{StaticResource BorderBrush}">
+
+                        </UniformGrid>
+                    </StackPanel>
+                </Border>
+
+                <Border Grid.Row="1" Background="{StaticResource TsPanelBrush}" Margin="0,5,10,0"
+BorderBrush="{StaticResource BorderBrush}" 
+BorderThickness="1" CornerRadius="4" Padding="15">
+                    <StackPanel>
+                        <TextBlock Text="绌翠綅娴嬭瘯缁撴灉" FontSize="14" FontWeight="SemiBold" 
+           Foreground="{StaticResource PrimaryBrush}" Margin="0,0,0,15"/>
+
+                        <UniformGrid IsEnabled="False" x:Name="CellResultGrid" Columns="1" dp:UniformGridHelper.InnerBorder="1"
+ dp:UniformGridHelper.InnerBorderBrush="{StaticResource BorderBrush}">
+
+                        </UniformGrid>
+                    </StackPanel>
+                </Border>
+            </Grid>
+
+            <Grid Grid.Column="1">
+                <Grid.RowDefinitions>
+                    <RowDefinition Height="Auto"/>
+                    <RowDefinition Height="5"/>
+                    <RowDefinition Height="*"/>
+                    <RowDefinition Height="5"/>
+                    <RowDefinition Height="*"/>
+                </Grid.RowDefinitions>
+                <WindowsFormsHost x:Name="host" Visibility="Collapsed"></WindowsFormsHost>
+
+                <!-- 鎸夐挳鍜岀姸鎬佸尯鍩� -->
+                <Border Grid.Row="0" Background="{StaticResource TsPanelBrush}" 
                 BorderBrush="{StaticResource BorderBrush}" 
                 BorderThickness="1" CornerRadius="4" Padding="15">
-                <StackPanel>
-                    <TextBlock Text="鎵嬪姩璋冭瘯鎺у埗" FontSize="14" FontWeight="SemiBold" 
+                    <StackPanel>
+                        <TextBlock Text="鎵嬪姩璋冭瘯鎺у埗" FontSize="14" FontWeight="SemiBold" 
                            Foreground="{StaticResource PrimaryBrush}" Margin="0,0,0,15"/>
 
-                    <WrapPanel x:Name="btnPanel">
+                        <WrapPanel x:Name="btnPanel">
 
-                    </WrapPanel>
-                </StackPanel>
-            </Border>
+                        </WrapPanel>
+                    </StackPanel>
+                </Border>
 
-            <!-- 鍒嗛殧鏉�1 -->
-            <GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" 
+                <!-- 鍒嗛殧鏉�1 -->
+                <GridSplitter Grid.Row="1" Height="5" HorizontalAlignment="Stretch" 
                       Background="Transparent" Cursor="SizeNS"/>
 
-            <!-- TX/RX 鏁版嵁鍖哄煙 -->
-            <Border Grid.Row="2" Background="{StaticResource TsPanelBrush}" 
+                <!-- TX/RX 鏁版嵁鍖哄煙 -->
+                <Border Grid.Row="2" Background="{StaticResource TsPanelBrush}" 
                 BorderBrush="{StaticResource BorderBrush}" 
                 BorderThickness="1" CornerRadius="4" Padding="10">
-                <Grid>
-                    <Grid.RowDefinitions>
-                        <RowDefinition Height="Auto"/>
-                        <RowDefinition Height="*"/>
-                    </Grid.RowDefinitions>
+                    <Grid>
+                        <Grid.RowDefinitions>
+                            <RowDefinition Height="Auto"/>
+                            <RowDefinition Height="*"/>
+                        </Grid.RowDefinitions>
 
-                    <StackPanel Orientation="Horizontal" Grid.Row="0" Margin="0,0,0,10">
-                        <TextBlock Text="娴嬭瘯鏁版嵁" FontSize="14" FontWeight="SemiBold" 
+                        <StackPanel Orientation="Horizontal" Grid.Row="0" Margin="0,0,0,10">
+                            <TextBlock Text="娴嬭瘯鏁版嵁" FontSize="14" FontWeight="SemiBold" 
                                Foreground="{StaticResource PrimaryBrush}" VerticalAlignment="Center"/>
-                        <Button Content="娓呯┖" Style="{StaticResource ActionButtonStyle}" 
+                            <Button Content="娓呯┖" Style="{StaticResource ActionButtonStyle}" 
                             Margin="15,0,0,0" Click="OnClearClick"/>
-                    </StackPanel>
+                        </StackPanel>
 
-                    <DataGrid x:Name="DataGridComm" Grid.Row="1"
+                        <DataGrid x:Name="DataGridComm" Grid.Row="1"
                           ItemsSource="{Binding TestData,ElementName=self}">
-                        <DataGrid.Columns>
-                            <DataGridTextColumn Header="娴嬭瘯椤�" Binding="{Binding Name}" Width="120" IsReadOnly="True"/>
-                            <DataGridTextColumn Header="鏀�" Binding="{Binding Receive}" Width="*" IsReadOnly="True"/>
-                            <DataGridTextColumn Header="鍙�" Binding="{Binding Send}" Width="*" IsReadOnly="True"/>
-                            <DataGridTextColumn Header="鍗曚綅" Binding="{Binding Unit}" Width="60" IsReadOnly="True"/>
-                            <DataGridTextColumn Header="涓婇檺" Binding="{Binding UpperLimit}" Width="80" IsReadOnly="True"/>
-                            <DataGridTextColumn Header="涓嬮檺" Binding="{Binding LowerLimit}" Width="80" IsReadOnly="True"/>
-                            <DataGridTextColumn Header="缁撴灉" Binding="{Binding Result}" Width="70" IsReadOnly="True"/>
-                            <DataGridTextColumn Header="鏃堕棿" Binding="{Binding Time}" Width="90" IsReadOnly="True"/>
-                        </DataGrid.Columns>
-                        <DataGrid.RowStyle>
-                            <Style TargetType="DataGridRow">
-                                <Style.Triggers>
-                                    <DataTrigger Value="True">
-                                        <DataTrigger.Binding>
-                                            <MultiBinding Converter="{x:Static local:ResultFailedConverter.Instance}">
-                                                <Binding Path="Result"/>
-                                            </MultiBinding>
-                                        </DataTrigger.Binding>
-                                        <Setter Property="Background" Value="#FFE0E0"/>
-                                        <Setter Property="Foreground" Value="#C53030"/>
-                                    </DataTrigger>
-                                </Style.Triggers>
-                            </Style>
-                        </DataGrid.RowStyle>
-                    </DataGrid>
-                </Grid>
-            </Border>
+                            <DataGrid.Columns>
+                                <DataGridTextColumn Header="娴嬭瘯椤�" Binding="{Binding Name}" Width="120" IsReadOnly="True"/>
+                                <DataGridTextColumn Header="鏀�" Binding="{Binding Receive}" Width="*" IsReadOnly="True"/>
+                                <DataGridTextColumn Header="鍙�" Binding="{Binding Send}" Width="*" IsReadOnly="True"/>
+                                <DataGridTextColumn Header="鍗曚綅" Binding="{Binding Unit}" Width="60" IsReadOnly="True"/>
+                                <DataGridTextColumn Header="涓婇檺" Binding="{Binding UpperLimit}" Width="80" IsReadOnly="True"/>
+                                <DataGridTextColumn Header="涓嬮檺" Binding="{Binding LowerLimit}" Width="80" IsReadOnly="True"/>
+                                <DataGridTextColumn Header="缁撴灉" Binding="{Binding Result}" Width="70" IsReadOnly="True"/>
+                                <DataGridTextColumn Header="鏃堕棿" Binding="{Binding Time}" Width="90" IsReadOnly="True"/>
+                            </DataGrid.Columns>
+                            <DataGrid.RowStyle>
+                                <Style TargetType="DataGridRow">
+                                    <Style.Triggers>
+                                        <DataTrigger Value="True">
+                                            <DataTrigger.Binding>
+                                                <MultiBinding Converter="{x:Static local:ResultFailedConverter.Instance}">
+                                                    <Binding Path="Result"/>
+                                                </MultiBinding>
+                                            </DataTrigger.Binding>
+                                            <Setter Property="Background" Value="#FFE0E0"/>
+                                            <Setter Property="Foreground" Value="#C53030"/>
+                                        </DataTrigger>
+                                    </Style.Triggers>
+                                </Style>
+                            </DataGrid.RowStyle>
+                        </DataGrid>
+                    </Grid>
+                </Border>
 
-            <!-- 鍒嗛殧鏉�2 -->
-            <GridSplitter Grid.Row="3" Height="5" HorizontalAlignment="Stretch" 
+                <!-- 鍒嗛殧鏉�2 -->
+                <GridSplitter Grid.Row="3" Height="5" HorizontalAlignment="Stretch" 
                       Background="Transparent" Cursor="SizeNS"/>
 
-            <!-- 鏃ュ織鍖哄煙 -->
-            <Border Grid.Row="4" Background="{StaticResource TsPanelBrush}" 
+                <!-- 鏃ュ織鍖哄煙 -->
+                <Border Grid.Row="4" Background="{StaticResource TsPanelBrush}" 
                 BorderBrush="{StaticResource BorderBrush}" 
                 BorderThickness="1" CornerRadius="4" Padding="10">
-                <Grid>
-                    <Grid.RowDefinitions>
-                        <RowDefinition Height="Auto"/>
-                        <RowDefinition Height="*"/>
-                    </Grid.RowDefinitions>
+                    <Grid>
+                        <Grid.RowDefinitions>
+                            <RowDefinition Height="Auto"/>
+                            <RowDefinition Height="*"/>
+                        </Grid.RowDefinitions>
 
-                    <StackPanel Orientation="Horizontal" Grid.Row="0" Margin="0,0,0,8">
-                        <TextBlock Text="鏃ュ織" FontSize="14" FontWeight="SemiBold" 
+                        <StackPanel Orientation="Horizontal" Grid.Row="0" Margin="0,0,0,8">
+                            <TextBlock Text="鏃ュ織" FontSize="14" FontWeight="SemiBold" 
                                Foreground="{StaticResource PrimaryBrush}" VerticalAlignment="Center"/>
-                        <Button Content="娓呯┖鏃ュ織" Style="{StaticResource ActionButtonStyle}" 
+                            <Button Content="娓呯┖鏃ュ織" Style="{StaticResource ActionButtonStyle}" 
                             Margin="15,0,0,0" Click="OnClearLogClick"/>
-                    </StackPanel>
+                        </StackPanel>
 
-                    <RichTextBox x:Name="LogRichTextBox" Grid.Row="1"
+                        <RichTextBox x:Name="LogRichTextBox" Grid.Row="1"
                              IsReadOnly="True"
                              VerticalScrollBarVisibility="Auto"
                              FontFamily="Consolas"
@@ -122,12 +168,45 @@
                              BorderThickness="1"
                              BorderBrush="Black" 
                              Padding="4"/>
-                </Grid>
+                    </Grid>
+                </Border>
+            </Grid>
+            <Border Background="#AAFFFFFF" Grid.ColumnSpan="2" x:Name="mask">
+                <TextBlock Text="鍒濆鍖栦腑..." 
+                       FontSize="16" FontWeight="Bold" Foreground="{StaticResource PrimaryBrush}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
             </Border>
         </Grid>
-        <Border Background="#AAFFFFFF" x:Name="mask">
-            <TextBlock Text="鍒濆鍖栦腑..." 
-                       FontSize="16" FontWeight="Bold" Foreground="{StaticResource PrimaryBrush}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
-        </Border>
+
+        <StatusBar FontSize="14" Grid.Row="1">
+            <StatusBar.ItemsPanel>
+                <ItemsPanelTemplate>
+                    <DockPanel LastChildFill="False"/>
+                </ItemsPanelTemplate>
+            </StatusBar.ItemsPanel>
+
+            <StatusBarItem DockPanel.Dock="Left">
+                <StackPanel Orientation="Horizontal" dp:StackPanelHelper.ChildSpace="8">
+                    <StackPanel Orientation="Horizontal">
+                        <Ellipse Width="10" Height="10">
+                            <Ellipse.Style>
+                                <Style TargetType="Ellipse">
+                                    <Setter Property="Fill" Value="LightGray"/>
+                                    <Style.Triggers>
+                                        <DataTrigger Binding="{Binding TcpServerStatus,ElementName=self}" Value="ERROR">
+                                            <Setter Property="Fill" Value="Red"/>
+                                        </DataTrigger>
+                                        <DataTrigger Binding="{Binding TcpServerStatus,ElementName=self}" Value="RUNNING">
+                                            <Setter Property="Fill" Value="Green"/>
+                                        </DataTrigger>
+                                    </Style.Triggers>
+                                </Style>
+                            </Ellipse.Style>
+                        </Ellipse>
+                        <TextBlock Text="{Binding TcpServerInfo,ElementName=self}"/>
+                        <Button Padding="0" Margin="0" BorderThickness="0" Click="Button_Click">馃攧</Button>
+                    </StackPanel>
+                </StackPanel>
+            </StatusBarItem>
+        </StatusBar>
     </Grid>
 </UserControl>

--
Gitblit v1.9.1