Commit adea8cba by liulongfei

算法 & 裁切 服务状态调整

parent 035fa7e8
...@@ -241,5 +241,8 @@ ...@@ -241,5 +241,8 @@
<Resource Include="Icons\triangle_down_16x16.png" /> <Resource Include="Icons\triangle_down_16x16.png" />
<Resource Include="Icons\triangle_up_16x16.png" /> <Resource Include="Icons\triangle_up_16x16.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Resource Include="Icons\status_yellow_25x22.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project> </Project>
\ No newline at end of file
<UserControl x:Class="VIZ.H2V.Module.AlgorithmServiceStatusPanelView"
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:behaviors="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local="clr-namespace:VIZ.H2V.Module"
d:DataContext="{d:DesignInstance Type=local:AlgorithmServiceStatusPanelViewModel}"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<behaviors:Interaction.Triggers>
<behaviors:EventTrigger EventName="Loaded">
<behaviors:InvokeCommandAction Command="{Binding LoadedCommand}" />
</behaviors:EventTrigger>
</behaviors:Interaction.Triggers>
<Grid>
</Grid>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using VIZ.Framework.Core;
namespace VIZ.H2V.Module
{
/// <summary>
/// AlgorithmServiceStatusPanelView.xaml 的交互逻辑
/// </summary>
public partial class AlgorithmServiceStatusPanelView : UserControl
{
public AlgorithmServiceStatusPanelView()
{
InitializeComponent();
WPFHelper.BindingViewModel(this, new AlgorithmServiceStatusPanelViewModel());
}
}
}
<UserControl x:Class="VIZ.H2V.Module.ClipServiceStatusPanelView"
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:behaviors="http://schemas.microsoft.com/xaml/behaviors"
xmlns:local="clr-namespace:VIZ.H2V.Module"
d:DataContext="{d:DesignInstance Type=local:ClipServiceStatusPanelViewModel}"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<behaviors:Interaction.Triggers>
<behaviors:EventTrigger EventName="Loaded">
<behaviors:InvokeCommandAction Command="{Binding LoadedCommand}" />
</behaviors:EventTrigger>
</behaviors:Interaction.Triggers>
<Grid>
</Grid>
</UserControl>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using VIZ.Framework.Core;
namespace VIZ.H2V.Module
{
/// <summary>
/// ClipServiceStatusPanelView.xaml 的交互逻辑
/// </summary>
public partial class ClipServiceStatusPanelView : UserControl
{
public ClipServiceStatusPanelView()
{
InitializeComponent();
WPFHelper.BindingViewModel(this, new ClipServiceStatusPanelViewModel());
}
}
}
...@@ -77,10 +77,40 @@ ...@@ -77,10 +77,40 @@
<ColumnDefinition Width="120"></ColumnDefinition> <ColumnDefinition Width="120"></ColumnDefinition>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<!-- 算法服务监控 --> <!-- 算法服务监控 -->
<StackPanel Orientation="Horizontal" Background="Transparent"> <StackPanel Orientation="Horizontal" Background="Transparent"
<!--<StackPanel.ToolTip> ToolTipService.Placement="Top" ToolTipService.HasDropShadow="True"
<local:AlgorithmServiceStatusPanelView></local:AlgorithmServiceStatusPanelView> ToolTipService.HorizontalOffset="-60">
</StackPanel.ToolTip>--> <StackPanel.ToolTip>
<ToolTip x:Name="ttAlgorithm" Background="#ff0f1221" BorderBrush="#ff0f1221">
<ListBox Style="{StaticResource ListBox_None}" Width="180" Height="160" Margin="10"
ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden"
ItemsSource="{Binding Path=NDIViewServices,Mode=OneWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid Height="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="120"></ColumnDefinition>
<ColumnDefinition Width="60"></ColumnDefinition>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center">
<TextBlock Text="{Binding Path=DisplayName}" FontSize="14" Foreground="White"
MaxWidth="90"
TextWrapping="NoWrap" TextTrimming="CharacterEllipsis"></TextBlock>
<TextBlock Text=":" Foreground="White" Margin="5,0,5,0"></TextBlock>
</StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" Grid.Column="1">
<TextBlock Text="{Binding Path=AlgorithmFPS.FPS}" Grid.Column="1" FontSize="14" Foreground="White"
Margin="5,0,0,0"></TextBlock>
<TextBlock Text="fps" Grid.Column="1" FontSize="14" Foreground="#88ffffff"
Margin="5,0,0,0"></TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ToolTip>
</StackPanel.ToolTip>
<Image Width="18" Height="18" VerticalAlignment="Center" <Image Width="18" Height="18" VerticalAlignment="Center"
Source="/VIZ.H2V.Module.Resource;component/Icons/status_25x22.png"></Image> Source="/VIZ.H2V.Module.Resource;component/Icons/status_25x22.png"></Image>
<TextBlock Text="算法服务" VerticalAlignment="Center" Foreground="White" FontSize="12" Margin="10,0,0,0"></TextBlock> <TextBlock Text="算法服务" VerticalAlignment="Center" Foreground="White" FontSize="12" Margin="10,0,0,0"></TextBlock>
......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Framework.Core;
namespace VIZ.H2V.Module
{
/// <summary>
/// 算法服务状态视图模型
/// </summary>
public class AlgorithmServiceStatusPanelViewModel : ViewModelBase
{
/// <summary>
/// 算法服务状态视图模型
/// </summary>
public AlgorithmServiceStatusPanelViewModel()
{
this.LoadedCommand = new VCommand(this.Loaded);
}
#region LoadedCommand -- 加载命令
/// <summary>
/// 加载命令
/// </summary>
public VCommand LoadedCommand { get; set; }
/// <summary>
/// 加载
/// </summary>
private void Loaded()
{
}
#endregion
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.Framework.Core;
namespace VIZ.H2V.Module
{
/// <summary>
/// 裁切服务状态面板视图模型
/// </summary>
public class ClipServiceStatusPanelViewModel : ViewModelBase
{
/// <summary>
/// 裁切服务状态面板视图模型
/// </summary>
public ClipServiceStatusPanelViewModel()
{
this.LoadedCommand = new VCommand(this.Loaded);
}
#region LoadedCommand -- 加载命令
/// <summary>
/// 加载命令
/// </summary>
public VCommand LoadedCommand { get; set; }
/// <summary>
/// 加载
/// </summary>
private void Loaded()
{
}
#endregion
}
}
...@@ -13,6 +13,8 @@ using VIZ.H2V.Domain; ...@@ -13,6 +13,8 @@ using VIZ.H2V.Domain;
using System.Diagnostics; using System.Diagnostics;
using Gma.System.MouseKeyHook; using Gma.System.MouseKeyHook;
using System.Windows.Interop; using System.Windows.Interop;
using log4net;
using System.Threading;
namespace VIZ.H2V.Module namespace VIZ.H2V.Module
{ {
...@@ -22,6 +24,11 @@ namespace VIZ.H2V.Module ...@@ -22,6 +24,11 @@ namespace VIZ.H2V.Module
public class NDIMainViewModel : ViewModelBase, INDIMainViewService, IHotkeySupport, IGpioSupport public class NDIMainViewModel : ViewModelBase, INDIMainViewService, IHotkeySupport, IGpioSupport
{ {
/// <summary> /// <summary>
/// 日志
/// </summary>
private readonly static ILog log = LogManager.GetLogger(typeof(NDIMainViewModel));
/// <summary>
/// NDI主视图模型 /// NDI主视图模型
/// </summary> /// </summary>
public NDIMainViewModel() public NDIMainViewModel()
...@@ -152,6 +159,48 @@ namespace VIZ.H2V.Module ...@@ -152,6 +159,48 @@ namespace VIZ.H2V.Module
#endregion #endregion
#region NDIViewServices -- NDI视图服务集合
private List<INDIViewService> ndiViewServices;
/// <summary>
/// NDI视图服务集合
/// </summary>
public List<INDIViewService> NDIViewServices
{
get { return ndiViewServices; }
set { ndiViewServices = value; this.RaisePropertyChanged(nameof(NDIViewServices)); }
}
#endregion
#region AlgorithmStatusMinFps -- 算法状态最小FPS
private int algorithmStatusMinFps;
/// <summary>
/// 算法状态最小值
/// </summary>
public int AlgorithmStatusMinFps
{
get { return algorithmStatusMinFps; }
set { algorithmStatusMinFps = value; this.RaisePropertyChanged(nameof(AlgorithmStatusMinFps)); }
}
#endregion
#region ClipStatusMinFps -- 裁切状态最小FPS
private int clipStatusMinFps;
/// <summary>
/// 裁切状态最小FPS
/// </summary>
public int ClipStatusMinFps
{
get { return clipStatusMinFps; }
set { clipStatusMinFps = value; this.RaisePropertyChanged(nameof(ClipStatusMinFps)); }
}
#endregion
// ====================================================================================== // ======================================================================================
// === Command === // === Command ===
// ====================================================================================== // ======================================================================================
...@@ -170,6 +219,9 @@ namespace VIZ.H2V.Module ...@@ -170,6 +219,9 @@ namespace VIZ.H2V.Module
{ {
// 获取热键配置 // 获取热键配置
this.HotkeyConfig = ApplicationDomainEx.LiteDbContext.HotkeyConfig.FindAll().FirstOrDefault(); this.HotkeyConfig = ApplicationDomainEx.LiteDbContext.HotkeyConfig.FindAll().FirstOrDefault();
// 开始初始化服务状态
this.BeginInitServiceStatus();
} }
#endregion #endregion
...@@ -365,5 +417,72 @@ namespace VIZ.H2V.Module ...@@ -365,5 +417,72 @@ namespace VIZ.H2V.Module
} }
}); });
} }
/// <summary>
/// 开始初始化服务状态
/// </summary>
private void BeginInitServiceStatus()
{
Task.Run(() =>
{
try
{
this.InitServiceStatus();
}
catch (Exception ex)
{
log.Error(ex);
}
});
}
/// <summary>
/// 初始化服务状态
/// </summary>
private void InitServiceStatus()
{
while (true)
{
// 获取视图服务
List<INDIViewService> services = ApplicationDomainEx.ServiceManager.GetServiceList<INDIViewService>();
if (services.Count != NDIViewModel.NDI_VIEW_MODEL_COUNT)
{
Thread.Sleep(1000);
continue;
}
foreach (INDIViewService service in services)
{
// 算法服务
service.AlgorithmFPS.PropertyChanged -= Algorith_FPS_PropertyChanged;
service.AlgorithmFPS.PropertyChanged += Algorith_FPS_PropertyChanged;
// 裁切服务
service.ClipFPS.PropertyChanged -= Clip_FPS_PropertyChanged;
service.ClipFPS.PropertyChanged += Clip_FPS_PropertyChanged;
}
this.NDIViewServices = services;
break;
}
}
/// <summary>
/// 算法FPS属性改变后触发
/// </summary>
private void Algorith_FPS_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
this.AlgorithmStatusMinFps = this.NDIViewServices.Min(p => p.AlgorithmFPS.FPS);
}
/// <summary>
/// 裁切FPS属性改变时触发
/// </summary>
private void Clip_FPS_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
this.ClipStatusMinFps = this.NDIViewServices.Min(p => p.ClipFPS.FPS);
}
} }
} }
...@@ -65,6 +65,16 @@ namespace VIZ.H2V.Module ...@@ -65,6 +65,16 @@ namespace VIZ.H2V.Module
NDIViewStatus ViewStatus { get; set; } NDIViewStatus ViewStatus { get; set; }
/// <summary> /// <summary>
/// 裁切服务FPS
/// </summary>
FPSHelper ClipFPS { get; }
/// <summary>
/// 算法服务FPS
/// </summary>
FPSHelper AlgorithmFPS { get; }
/// <summary>
/// 加载样式 /// 加载样式
/// </summary> /// </summary>
void LoadStyle(); void LoadStyle();
......
...@@ -112,7 +112,13 @@ ...@@ -112,7 +112,13 @@
<!-- =================================================================================================== --> <!-- =================================================================================================== -->
<!-- 标题 --> <!-- 标题 -->
<Grid HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1"> <Grid HorizontalAlignment="Center" VerticalAlignment="Center" Grid.Column="1" Background="Transparent">
<behaviors:Interaction.Triggers>
<behaviors:EventTrigger EventName="PreviewMouseLeftButtonDown">
<behaviors:InvokeCommandAction Command="{Binding SetActiveCommand}" PassEventArgsToCommand="False" />
</behaviors:EventTrigger>
</behaviors:Interaction.Triggers>
<!-- 信号1 --> <!-- 信号1 -->
<Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" <Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Visibility="{Binding Path=TallyPartViewModel.Tally1.PinValue,Converter={StaticResource Bool2VisibilityConverter}}" Visibility="{Binding Path=TallyPartViewModel.Tally1.PinValue,Converter={StaticResource Bool2VisibilityConverter}}"
...@@ -122,7 +128,7 @@ ...@@ -122,7 +128,7 @@
ToolTip="{Binding Path=DisplayName,Mode=OneWay}" ToolTip="{Binding Path=DisplayName,Mode=OneWay}"
Margin="60,5,60,5" Foreground="White" FontSize="18" Margin="60,5,60,5" Foreground="White" FontSize="18"
TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" TextWrapping="NoWrap" TextTrimming="CharacterEllipsis"
MaxWidth="400"></TextBlock> MaxWidth="300"></TextBlock>
</Grid> </Grid>
<!-- 算法 --> <!-- 算法 -->
<Grid Grid.RowSpan="2" Margin="0,20,0,0" <Grid Grid.RowSpan="2" Margin="0,20,0,0"
......
...@@ -472,5 +472,22 @@ namespace VIZ.H2V.Module ...@@ -472,5 +472,22 @@ namespace VIZ.H2V.Module
} }
#endregion #endregion
#region SetActiveCommand -- 设置激活状态命令
/// <summary>
/// 设置激活状态命令
/// </summary>
public VCommand SetActiveCommand { get; set; }
/// <summary>
/// 设置激活状态
/// </summary>
private void SetActive()
{
this.IsActive = true;
}
#endregion
} }
} }
...@@ -36,10 +36,18 @@ namespace VIZ.H2V.Module ...@@ -36,10 +36,18 @@ namespace VIZ.H2V.Module
public static NDIViewModel ActiveViewModel { get; private set; } public static NDIViewModel ActiveViewModel { get; private set; }
/// <summary> /// <summary>
/// NDI视图模型个数
/// </summary>
public static int NDI_VIEW_MODEL_COUNT { get; private set; }
/// <summary>
/// NDI视图模型 /// NDI视图模型
/// </summary> /// </summary>
public NDIViewModel() public NDIViewModel()
{ {
// 统计NDIViewModel的个数
++NDI_VIEW_MODEL_COUNT;
// 初始化命令 // 初始化命令
this.InitCommand(); this.InitCommand();
...@@ -71,6 +79,7 @@ namespace VIZ.H2V.Module ...@@ -71,6 +79,7 @@ namespace VIZ.H2V.Module
this.IsBorderEnabledChangedCommand = new VCommand(this.IsBorderEnabledChanged); this.IsBorderEnabledChangedCommand = new VCommand(this.IsBorderEnabledChanged);
this.IsAreaCorrectionEnabledChangedCommand = new VCommand(this.IsAreaCorrectionEnabledChanged); this.IsAreaCorrectionEnabledChangedCommand = new VCommand(this.IsAreaCorrectionEnabledChanged);
this.SaveAlgorithmConfigCommand = new VCommand(this.SaveAlgorithmConfig); this.SaveAlgorithmConfigCommand = new VCommand(this.SaveAlgorithmConfig);
this.SetActiveCommand = new VCommand(this.SetActive);
} }
/// <summary> /// <summary>
......
...@@ -132,14 +132,6 @@ ...@@ -132,14 +132,6 @@
</Reference> </Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Page Include="NDIMainView\View\AlgorithmServiceStatusPanelView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="NDIMainView\View\ClipServiceStatusPanelView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="NDISettingView\View\Algorithm\AlgorithmNearPanelView.xaml"> <Page Include="NDISettingView\View\Algorithm\AlgorithmNearPanelView.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
...@@ -224,14 +216,6 @@ ...@@ -224,14 +216,6 @@
<ItemGroup> <ItemGroup>
<Compile Include="NDIMainView\Controller\Gpio\GpioController.cs" /> <Compile Include="NDIMainView\Controller\Gpio\GpioController.cs" />
<Compile Include="NDIMainView\Controller\Gpio\IGpioSupport.cs" /> <Compile Include="NDIMainView\Controller\Gpio\IGpioSupport.cs" />
<Compile Include="NDIMainView\ViewModel\AlgorithmServiceStatusPanelViewModel.cs" />
<Compile Include="NDIMainView\ViewModel\ClipServiceStatusPanelViewModel.cs" />
<Compile Include="NDIMainView\View\AlgorithmServiceStatusPanelView.xaml.cs">
<DependentUpon>AlgorithmServiceStatusPanelView.xaml</DependentUpon>
</Compile>
<Compile Include="NDIMainView\View\ClipServiceStatusPanelView.xaml.cs">
<DependentUpon>ClipServiceStatusPanelView.xaml</DependentUpon>
</Compile>
<Compile Include="NDIMainView\Controller\Hotkey\HotkeyController.cs" /> <Compile Include="NDIMainView\Controller\Hotkey\HotkeyController.cs" />
<Compile Include="NDIMainView\Controller\Hotkey\IHotkeySupport.cs" /> <Compile Include="NDIMainView\Controller\Hotkey\IHotkeySupport.cs" />
<Compile Include="NDIMainView\Service\INDIMainViewService.cs" /> <Compile Include="NDIMainView\Service\INDIMainViewService.cs" />
...@@ -376,6 +360,7 @@ ...@@ -376,6 +360,7 @@
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Folder Include="NDIMainView\Model\" />
<Folder Include="NDISettingView\Service\" /> <Folder Include="NDISettingView\Service\" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment