CAN驱动的重构V1

CAN报文的展示和处理
This commit is contained in:
2025-04-30 11:23:01 +08:00
parent 96597c95f2
commit 16eaa230d8
9 changed files with 760 additions and 110 deletions

View File

@@ -910,114 +910,112 @@
</Grid>
<Grid Grid.Column="2" Margin="3">
<!--<Grid.RowDefinitions>
<RowDefinition Height="60" />
<RowDefinition />
</Grid.RowDefinitions>-->
<TabControl>
<TabItem Header="DBC数据表">
<DataGrid
x:Name="DbcDatagrid"
Margin="0,2,0,0"
AutoGenerateColumns="False"
BorderBrush="Black"
BorderThickness="1"
CanUserAddRows="False"
IsReadOnly="True"
ItemsSource="{Binding ListCanDbcModel}"
SelectionMode="Extended"
SelectionUnit="FullRow">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem
Command="{Binding Source={StaticResource Proxy}, Path=Data.DataGridMenuCmd}"
CommandParameter="Write"
Header="添加到写入操作" />
<MenuItem
Command="{Binding Source={StaticResource Proxy}, Path=Data.DataGridMenuCmd}"
CommandParameter="Read"
Header="添加到读取操作" />
</ContextMenu>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSeletedInfo}" Value="1">
<Setter Property="Background" Value="LightGreen" />
</DataTrigger>
<DataTrigger Binding="{Binding IsSeletedInfo}" Value="2">
<Setter Property="Background" Value="SkyBlue" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<!--<materialDesign:Card
Margin="0,1,0,3"
Background="{DynamicResource MaterialDesignLightBackground}"
Foreground="{DynamicResource PrimaryHueLightForegroundBrush}"
UniformCornerRadius="5">
<StackPanel Margin="5" Orientation="Horizontal">
<Button
Margin="5,0"
Content="连接CAN"
Foreground="White" />
<Button
Margin="5,0"
Content="关闭CAN"
Foreground="White" />
<Button
Margin="5,0"
Content="保存配置"
Foreground="White" />
</StackPanel>
</materialDesign:Card>-->
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding MsgId}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="消息ID" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGrid
x:Name="DbcDatagrid"
AutoGenerateColumns="False"
BorderBrush="Black"
BorderThickness="1"
CanUserAddRows="False"
IsReadOnly="True"
ItemsSource="{Binding ListCanDbcModel}"
SelectionMode="Extended"
SelectionUnit="FullRow">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem
Command="{Binding Source={StaticResource Proxy}, Path=Data.DataGridMenuCmd}"
CommandParameter="Write"
Header="添加到写入操作" />
<MenuItem
Command="{Binding Source={StaticResource Proxy}, Path=Data.DataGridMenuCmd}"
CommandParameter="Read"
Header="添加到读取操作" />
</ContextMenu>
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsSeletedInfo}" Value="1">
<Setter Property="Background" Value="LightGreen" />
</DataTrigger>
<DataTrigger Binding="{Binding IsSeletedInfo}" Value="2">
<Setter Property="Background" Value="SkyBlue" />
</DataTrigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGridTextColumn Binding="{Binding MsgName}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="消息名称" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding MsgId}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="消息ID" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding SignalName}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="信号名称" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding MsgName}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="消息名称" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!--<DataGridTextColumn Binding="{Binding SignalDesc}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="信号描述" />
</DataGridTextColumn.Header>
</DataGridTextColumn>-->
<DataGridTextColumn Binding="{Binding SignalName}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="信号名称" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!--<DataGridTextColumn Binding="{Binding SignalUnit}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="信号单位" />
</DataGridTextColumn.Header>
</DataGridTextColumn>-->
<!--<DataGridTextColumn Binding="{Binding SignalDesc}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="信号描述" />
</DataGridTextColumn.Header>
</DataGridTextColumn>-->
<DataGridTextColumn Binding="{Binding SignalRtValue}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="实时值" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!--<DataGridTextColumn Binding="{Binding SignalUnit}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="信号单位" />
</DataGridTextColumn.Header>
</DataGridTextColumn>-->
</DataGrid.Columns>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<prism:InvokeCommandAction Command="{Binding DbcGridSelectionChangedCmd}" CommandParameter="{Binding ElementName=DbcDatagrid, Path=SelectedItem}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<DataGridTextColumn Binding="{Binding SignalRtValue}">
<DataGridTextColumn.Header>
<TextBlock FontWeight="Bold" Text="实时值" />
</DataGridTextColumn.Header>
</DataGridTextColumn>
</DataGrid>
</TabItem>
<TabItem Header="CAN报文">
<ListView
ItemsSource="{Binding HightDriveMsgService.DisplayMessages}"
ScrollViewer.IsDeferredScrollingEnabled="True"
VirtualizingPanel.CacheLength="1,1"
VirtualizingPanel.IsVirtualizing="True"
VirtualizingPanel.VirtualizationMode="Recycling">
<ListView.View>
<GridView>
<GridViewColumn DisplayMemberBinding="{Binding MsgInfo}" Header="报文ID" />
<GridViewColumn DisplayMemberBinding="{Binding Category}" Header="报文名称" />
<GridViewColumn DisplayMemberBinding="{Binding MsgData}" Header="报文数据" />
<GridViewColumn DisplayMemberBinding="{Binding Time}" Header="报文时间" />
</GridView>
</ListView.View>
</ListView>
</TabItem>
</TabControl>
</DataGrid.Columns>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<prism:InvokeCommandAction Command="{Binding DbcGridSelectionChangedCmd}" CommandParameter="{Binding ElementName=DbcDatagrid, Path=SelectedItem}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</DataGrid>
</Grid>