Commit 59a400e8 authored by 潘栩锋's avatar 潘栩锋 🚴

电容平扫,可以运行了

parent 22d58d76
......@@ -60,9 +60,15 @@
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
</Compile>
<Compile Include="PgInitparam.xaml.cs">
<DependentUpon>PgInitparam.xaml</DependentUpon>
</Compile>
<Compile Include="PgMenu.xaml.cs">
<DependentUpon>PgMenu.xaml</DependentUpon>
</Compile>
<Compile Include="UiModule\DynAreaThk.xaml.cs">
<DependentUpon>DynAreaThk.xaml</DependentUpon>
</Compile>
<Compile Include="UiModule\MenuMotion.xaml.cs">
<DependentUpon>MenuMotion.xaml</DependentUpon>
</Compile>
......@@ -73,10 +79,18 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="PgInitparam.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="PgMenu.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="UiModule\DynAreaThk.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="UiModule\MenuMotion.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
......@@ -110,6 +124,10 @@
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Project.FLY.Thick.BlowingScan\FLY.Thick.BlowingScan.UI\FLY.Thick.BlowingScan.UI.csproj">
<Project>{A79228C5-AB02-4201-A327-2FED0123B4B5}</Project>
<Name>FLY.Thick.BlowingScan.UI</Name>
</ProjectReference>
<ProjectReference Include="..\..\Project.FLY.Thick.Blowing\FLY.Thick.Blowing.UI\FLY.Thick.Blowing.UI.csproj">
<Project>{EC11911F-D868-49EA-BDA4-9F91CA7186AF}</Project>
<Name>FLY.Thick.Blowing.UI</Name>
......
This diff is collapsed.
using CommunityToolkit.Mvvm.Input;
using FLY.Thick.Base.UI;
using FLY.Thick.Cap.IService;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using Unity;
namespace FLY.Thick.Cap.UI.Client
{
/// <summary>
/// Page_Initparam.xaml 的交互逻辑
/// </summary>
public partial class PgInitparam : Page
{
PgInitParamVm viewModel;
public PgInitparam()
{
InitializeComponent();
if (System.ComponentModel.LicenseManager.UsageMode != System.ComponentModel.LicenseUsageMode.Runtime)
return;
this.Loaded += Page_Loaded;
this.Unloaded += Page_Unloaded;
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
viewModel.DisposeBinding();
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
viewModel.SetBinding();
}
[InjectionMethod]
public void Init(FLY.Thick.Base.IService.IInitParamService initParamService)
{
viewModel = new PgInitParamVm();
viewModel.Init((IInitParamService)initParamService);
this.DataContext = viewModel;
}
}
public class PgInitParamVm : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
#region 参数
/// <summary>
/// 扫描架长
/// </summary>
public int PosLength { get; set; }
/// <summary>
/// 自动归原点间距,次数
/// </summary>
public int AutoOrgInterval { get; set; }
/// <summary>
/// 编码器1 mm/pulse
/// </summary>
public double Encoder1_mmpp { get; set; }
/// <summary>
/// 设置的速度,与 实际速度比例 Speed1 = VScan*Speed1Scale
/// </summary>
public double Speed1Scale { get; set; }
/// <summary>
/// 探头 最大值
/// </summary>
public int MaxAd { get; set; }
/// <summary>
/// 探头下压后等待的秒数
/// </summary>
public int WaitSecAfterPushDown { get; set; }
#region 速度
/// <summary>
/// 扫描时速度 Velocity Of Scan
/// </summary>
public UInt32 VScan { get; set; }
/// <summary>
/// 调试时速度,向前走,向后走 Velocity Of JOG
/// </summary>
public UInt32 VJOG { get; set; }
/// <summary>
/// 精确速度 Velocity Of Accuracy 如: 机架修正, 样品取样, 机架信息获取
/// </summary>
public UInt32 VAccuracy { set; get; }
/// <summary>
/// 开始速度 Start Velocity
/// </summary>
public UInt32 SVelocity { set; get; }
/// <summary>
/// 加速时间
/// </summary>
public UInt32 ATime { set; get; }
/// <summary>
/// 减速时间
/// </summary>
public UInt32 DTime { set; get; }
/// <summary>
/// 归0速度1
/// </summary>
public UInt32 HVelocity1 { set; get; }
/// <summary>
/// 归0速度2
/// </summary>
public UInt32 HVelocity2 { set; get; }
#endregion
#endregion
#region Command
public RelayCommand ApplyCmd { get; }
#endregion
IInitParamService initParamService;
Dictionary<object, List<Misc.BindingOperations.PropertyChangedEventContexts>> bindingConexts = new Dictionary<object, List<Misc.BindingOperations.PropertyChangedEventContexts>>();
/// <summary>
/// 数据已经绑定了
/// </summary>
bool isBinding;
public PgInitParamVm()
{
ApplyCmd = new RelayCommand(Apply);
}
public void Init(IInitParamService initParamService)
{
this.initParamService = initParamService;
//参数绑定
SetBinding();
}
/// <summary>
/// 参数绑定
/// </summary>
public void SetBinding()
{
if (isBinding)//已经绑定了
return;
isBinding = true;
//下面全部event保存在bindingConexts
Misc.BindingOperations.StartMarkdownEvents(bindingConexts);
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.PosLength), this, nameof(PosLength));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.AutoOrgInterval), this, nameof(AutoOrgInterval));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.Encoder1_mmpp), this, nameof(Encoder1_mmpp));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.Speed1Scale), this, nameof(Speed1Scale));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.VScan), this, nameof(VScan));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.VJOG), this, nameof(VJOG));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.VAccuracy), this, nameof(VAccuracy));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.SVelocity), this, nameof(SVelocity));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.ATime), this, nameof(ATime));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.DTime), this, nameof(DTime));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.HVelocity1), this, nameof(HVelocity1));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.HVelocity2), this, nameof(HVelocity2));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.MaxAd), this, nameof(MaxAd));
Misc.BindingOperations.SetBinding(initParamService, nameof(initParamService.WaitSecAfterPushDown), this, nameof(WaitSecAfterPushDown));
//备份event完毕, 必须关闭记录
Misc.BindingOperations.StopMarkdownEvents();
}
/// <summary>
/// 解除绑定
/// </summary>
public void DisposeBinding()
{
if (!isBinding)//已经解除绑定了
return;
isBinding = false;
Misc.BindingOperations.DisposeEventTargetObject(bindingConexts);
}
private void Apply()
{
if (!WdPassword.Authorize("InitParam"))
return;
initParamService.PosLength = this.PosLength;
initParamService.AutoOrgInterval = this.AutoOrgInterval;
initParamService.Encoder1_mmpp = this.Encoder1_mmpp;
initParamService.Speed1Scale = this.Speed1Scale;
initParamService.VScan = this.VScan;
initParamService.VJOG = this.VJOG;
initParamService.VAccuracy = this.VAccuracy;
initParamService.SVelocity = this.SVelocity;
initParamService.ATime = this.ATime;
initParamService.DTime = this.DTime;
initParamService.HVelocity1 = this.HVelocity1;
initParamService.HVelocity2 = this.HVelocity2;
initParamService.MaxAd = MaxAd;
initParamService.WaitSecAfterPushDown = WaitSecAfterPushDown;
initParamService.Apply();
FLY.ControlLibrary.Window_Tip.Show("应用成功",
null,
TimeSpan.FromSeconds(2));
}
}
}
using FLY.Thick.Base.UI;
using FLY.Thick.Blowing.UI;
using FLY.Thick.BlowingScan.UI.Client;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Unity;
using PgBlowing = FLY.Thick.BlowingScan.UI.Client.PgBlowing;
using PgFlyAd = FLY.Thick.Base.UI.PgFlyAd;
......
<UserControl x:Class="FLY.Thick.Cap.UI.Client.UiModule.DynAreaThk"
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:local="clr-namespace:FLY.Thick.Cap.UI.Client.UiModule" xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
mc:Ignorable="d" d:DesignWidth="250"
>
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/FLY.ControlLibrary;component/Themes/Dictionary_MyStyle.xaml"/>
<ResourceDictionary Source="pack://application:,,,/FLY.Thick.Base.UI;component/Converter/Dictionary_MyConv.xaml"/>
</ResourceDictionary.MergedDictionaries>
<local:DynAreaThkVmUt x:Key="viewModel" Ad="888888" Thk="100.3" SampleAd0="888889" PosMm="1005" PosV="4.2" Position="10050" PosLength="20000" FilmWidth="2410" FilmVelocity="30.2" IsInPushDown="True"/>
</ResourceDictionary>
</UserControl.Resources>
<StackPanel d:DataContext="{StaticResource viewModel}">
<Border Style="{StaticResource Styles.Module.Border}" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid x:Name="grid_initparam"/>
<Border Background="{StaticResource Brushes.TitleBar.Background}" CornerRadius="3" Height="80" >
<Grid>
<Viewbox Margin="10">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Thk,StringFormat={}{0:F1}}" Foreground="White" FontSize="30" FontWeight="Bold" FontFamily="Microsoft Sans Serif" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" />
<TextBlock Style="{StaticResource Styles.Module.Text.ItemValue.Unit}" Text="um" />
</StackPanel>
</Viewbox>
</Grid>
</Border>
<StackPanel Grid.Row="1" Margin="2">
<Grid Margin="2" Name="grid_ad">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Module.Text.ItemHeader}"
Text="AD" />
<TextBlock Style="{StaticResource Styles.Module.Text.ItemValue}" FontSize="{StaticResource FontSize.FieldContent.Middle}"
Text="{Binding Ad}" />
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Module.Text.ItemHeader}"
Text="空气" />
<TextBlock Style="{StaticResource Styles.Module.Text.ItemValue}" FontSize="{StaticResource FontSize.FieldContent.Middle}"
Text="{Binding SampleAd0}" />
</StackPanel>
</Grid>
<Grid Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Rectangle Fill="#FF86C2E9" HorizontalAlignment="Left" Grid.ColumnSpan="3">
<Rectangle.Width>
<MultiBinding Converter="{StaticResource ratioconv}" Mode="OneWay">
<Binding Path="Position" />
<Binding Path="DataContext.PosLength" ElementName="grid_initparam"/>
<Binding Path="ActualWidth" ElementName="grid_ad"/>
</MultiBinding>
</Rectangle.Width>
</Rectangle>
<StackPanel Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Module.Text.ItemHeader}" Text="位置" />
<TextBlock Style="{StaticResource Styles.Module.Text.ItemValue}" Text="{Binding PosMm,StringFormat={}{0:F0}}"/>
<TextBlock Style="{StaticResource Styles.Module.Text.ItemValue.Unit}" Text="mm"/>
</StackPanel>
<StackPanel Grid.Column="1" Orientation="Horizontal">
<TextBlock Style="{StaticResource Styles.Module.Text.ItemValue}" Text="{Binding PosV,StringFormat={}{0:F1}}" />
<TextBlock Style="{StaticResource Styles.Module.Text.ItemValue.Unit}" Text="m/min" />
</StackPanel>
</Grid>
</StackPanel>
</Grid>
</Border>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Button Style="{StaticResource Styles.Button.Empty}" Command="{Binding PushDownCmd}">
<Border >
<Border.Style>
<Style TargetType="Border" BasedOn="{StaticResource Styles.Module.Border}">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="Margin" Value="3,3,0,3"/>
<Setter Property="CornerRadius" Value="3,0,0,3"/>
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Gray3}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsInPushDown}" Value="True">
<Setter Property="Background" Value="{StaticResource MahApps.Brushes.Accent2}"/>
<Setter Property="TextBlock.Foreground" Value="{StaticResource MahApps.Brushes.Selected.Foreground}"/>
<Setter Property="BorderThickness" Value="2"/>
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.ThemeForeground}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid Margin="{StaticResource ControlMargin}" HorizontalAlignment="Center">
<TextBlock Style="{StaticResource Styles.Module.Text.ItemHeader}"
FontSize="{StaticResource FontSize.FieldHeader}"
Margin="{StaticResource Margin.Text}"
Text="下压" />
</Grid>
</Border>
</Button>
<Button Grid.Column="1" Style="{StaticResource Styles.Button.Empty}" Command="{Binding LiftUpCmd}">
<Border >
<Border.Style>
<Style TargetType="Border" BasedOn="{StaticResource Styles.Module.Border}">
<Setter Property="BorderThickness" Value="1"/>
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.Gray3}"/>
<Setter Property="CornerRadius" Value="0,3,3,0"/>
<Setter Property="Margin" Value="0,3,3,3"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsInPushDown}" Value="False">
<Setter Property="Background" Value="{StaticResource MahApps.Brushes.ValidationSummary5}"/>
<Setter Property="TextBlock.Foreground" Value="{StaticResource MahApps.Brushes.Selected.Foreground}"/>
<Setter Property="BorderThickness" Value="2"/>
<Setter Property="BorderBrush" Value="{StaticResource MahApps.Brushes.ThemeForeground}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Grid Margin="{StaticResource ControlMargin}" HorizontalAlignment="Center">
<TextBlock Style="{StaticResource Styles.Module.Text.ItemHeader}"
FontSize="{StaticResource FontSize.FieldHeader}"
Margin="{StaticResource Margin.Text}"
Text="抬起" />
</Grid>
</Border>
</Button>
</Grid>
</StackPanel>
</UserControl>
......@@ -5,7 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:FLY.Thick.Cap.UI.Client.UiModule"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
mc:Ignorable="d" Background="Black">
mc:Ignorable="d" >
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
......@@ -15,36 +15,10 @@
<SolidColorBrush x:Key="ActivatedBrush2" Color="Red" />
<SolidColorBrush x:Key="NoActivatedBrush" Color="White" />
<SolidColorBrush x:Key="TextBrush" Color="White" />
<local:MenuMotionVmUt x:Key="viewModel" IsScanning="True" IsInPushDown="False"/>
<local:MenuMotionVmUt x:Key="viewModel" IsScanning="False" IsStopping="True" IsInPushDown="False" RemainTimeOfReadyToScan="60"/>
</ResourceDictionary>
</UserControl.Resources>
<StackPanel d:DataContext="{StaticResource viewModel}">
<Button Command="{Binding RaiseUpCmd}">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource Styles.Button.Icon}">
<Setter Property="Foreground" Value="{StaticResource NoActivatedBrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsInPushDown}" Value="False">
<Setter Property="Foreground" Value="{StaticResource ActivatedBrush2}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
<iconPacks:PackIconMaterial Kind="ArrowUpBoldCircle" />
</Button>
<Button Command="{Binding PushDownCmd}">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource Styles.Button.Icon}">
<Setter Property="Foreground" Value="{StaticResource NoActivatedBrush}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding IsInPushDown}" Value="True">
<Setter Property="Foreground" Value="{StaticResource ActivatedBrush}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
<iconPacks:PackIconMaterial Kind="ArrowDownBoldCircle" />
</Button>
<Button Command="{Binding ScanCmd}">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource Styles.Button.Icon}">
......@@ -56,10 +30,19 @@
</Style.Triggers>
</Style>
</Button.Style>
<Grid >
<iconPacks:PackIconMaterial Kind="Rotate3dVariant" />
<TextBlock Text="扫描" Foreground="{StaticResource TextBrush}" VerticalAlignment="Center" FontSize="10"/>
<Grid>
<StackPanel>
<iconPacks:PackIconMaterial Kind="Rotate3dVariant" />
<TextBlock Text="扫描" Foreground="{StaticResource TextBrush}"/>
</StackPanel>
<Border Background="{StaticResource ActivatedBrush2}" CornerRadius="10" Width="20" Height="20" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,-5,-5,0"
Visibility="{Binding IsShowRemainTime,Converter={StaticResource visbilityconv},ConverterParameter=Collapsed}">
<Viewbox>
<TextBlock Text="{Binding RemainTimeOfReadyToScan}" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="{StaticResource TextBrush}" />
</Viewbox>
</Border>
</Grid>
</Button>
<Button Command="{Binding StopCmd}">
<Button.Style>
......@@ -74,6 +57,7 @@
</Button.Style>
<StackPanel >
<iconPacks:PackIconMaterial Kind="CloseCircle" />
<TextBlock Text="停止" Foreground="{StaticResource TextBrush}"/>
</StackPanel>
</Button>
<Button Command="{Binding ForwCmd}">
......@@ -87,7 +71,10 @@
</Style.Triggers>
</Style>
</Button.Style>
<iconPacks:PackIconMaterial Kind="ArrowRightBoldCircle" />
<StackPanel >
<iconPacks:PackIconMaterial Kind="ArrowRightBoldCircle" />
<TextBlock Text="前进" Foreground="{StaticResource TextBrush}"/>
</StackPanel>
</Button>
<Button Command="{Binding BackwCmd}">
<Button.Style>
......@@ -100,7 +87,10 @@
</Style.Triggers>
</Style>
</Button.Style>
<iconPacks:PackIconMaterial Kind="ArrowLeftBoldCircle" />
<StackPanel >
<iconPacks:PackIconMaterial Kind="ArrowLeftBoldCircle" />
<TextBlock Text="后退" Foreground="{StaticResource TextBrush}"/>
</StackPanel>
</Button>
</StackPanel>
</UserControl>
using CommunityToolkit.Mvvm.Input;
using FLY.Thick.Base.Common;
using FLY.Thick.Cap.Common;
using FLY.Thick.Cap.IService;
using MultiLayout.UiModule;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;
using Unity;
using DynArea = FLY.Thick.Cap.Common.DynArea;
namespace FLY.Thick.Cap.UI.Client.UiModule
{
/// <summary>
......@@ -21,12 +18,29 @@ namespace FLY.Thick.Cap.UI.Client.UiModule
public MenuMotion()
{
InitializeComponent();
if (System.ComponentModel.LicenseManager.UsageMode != System.ComponentModel.LicenseUsageMode.Runtime)
return;
this.Loaded += Page_Loaded;
this.Unloaded += Page_Unloaded;
}
private void Page_Unloaded(object sender, RoutedEventArgs e)
{
viewModel.DisposeBinding();
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
viewModel.SetBinding();
}
[InjectionMethod]
public void Init(ITDGageService gageService)
public void Init(FLY.Thick.Base.IService.ITDGageService gageService)
{
viewModel = new MenuMotionVm();
viewModel.Init(gageService);
viewModel.Init((FLY.Thick.Cap.IService.ITDGageService)gageService);
this.DataContext = viewModel;
}
}
......@@ -59,6 +73,10 @@ namespace FLY.Thick.Cap.UI.Client.UiModule
/// </summary>
public bool IsInPushDown { get; set; }
public int RemainTimeOfReadyToScan { get; set; }
public bool IsShowRemainTime => RemainTimeOfReadyToScan > 0;
public RelayCommand ScanCmd { get; private set; }
public RelayCommand StopCmd { get; private set; }
public RelayCommand ForwCmd { get; private set; }
......@@ -68,6 +86,14 @@ namespace FLY.Thick.Cap.UI.Client.UiModule
ITDGageService gageService;
DynArea dynArea;
Dictionary<object, List<Misc.BindingOperations.PropertyChangedEventContexts>> bindingConexts = new Dictionary<object, List<Misc.BindingOperations.PropertyChangedEventContexts>>();
/// <summary>
/// 数据已经绑定了
/// </summary>
bool isBinding;
public MenuMotionVm()
{
ScanCmd = new RelayCommand(Scan);
......@@ -78,18 +104,53 @@ namespace FLY.Thick.Cap.UI.Client.UiModule
RaiseUpCmd = new RelayCommand(RaiseUp);
}
[InjectionMethod]
public void Init(ITDGageService gageService)
{
this.gageService = gageService;
this.dynArea = gageService.DynArea;
gageService.DynArea.PropertyChanged += DynArea_PropertyChanged;
//参数绑定
SetBinding();
}
/// <summary>
/// 参数绑定
/// </summary>
public void SetBinding()
{
if (isBinding)//已经绑定了
return;
isBinding = true;
//下面全部event保存在bindingConexts
Misc.BindingOperations.StartMarkdownEvents(bindingConexts);
Misc.BindingOperations.SetBinding(gageService, nameof(gageService.RemainTimeOfReadyToScan), this, nameof(RemainTimeOfReadyToScan));
//备份event完毕, 必须关闭记录
Misc.BindingOperations.StopMarkdownEvents();
gageService.DynArea.PropertyChanged += DynArea_PropertyChanged;
gageService.PropertyChanged += GageService_PropertyChanged;
updateControllerState();
updateIsInPushDown();
}
/// <summary>
/// 解除绑定
/// </summary>
public void DisposeBinding()
{
if (!isBinding)//已经解除绑定了
return;
isBinding = false;
Misc.BindingOperations.DisposeEventTargetObject(bindingConexts);
gageService.DynArea.PropertyChanged -= DynArea_PropertyChanged;
gageService.PropertyChanged -= GageService_PropertyChanged;
}
private void RaiseUp()
{
gageService.SetCapSensorPushDown(false);
......@@ -102,22 +163,39 @@ namespace FLY.Thick.Cap.UI.Client.UiModule
private void Backw()
{
gageService.Origin();
gageService.StartP2(STARTP2_MODE.ORG);
}
private void Forw()
{
gageService.Forw();
gageService.StartP2(STARTP2_MODE.FORW);
}
private void Stop()
{
gageService.Stop();
gageService.StartP2(STARTP2_MODE.STOP);
}
private void Scan()
{
gageService.Scan();
if (!gageService.IsInPushDown)
{
//警告
FLY.ControlLibrary.Window_WarningTip.Show("警告!!", "必须先执行 下压动作");
return;
}
if (gageService.RemainTimeOfReadyToScan > 0)
{
string msg = $"刚执行下压动作,\n\r还需要等待{gageService.RemainTimeOfReadyToScan}秒后,\n\r探头才能稳定。立刻扫描?";
if (FLY.ControlLibrary.MyMessageBox.Show(msg)!=true)
{
return;
}
}
gageService.StartP1();
}
......@@ -128,33 +206,39 @@ namespace FLY.Thick.Cap.UI.Client.UiModule
{
updateControllerState();
}
else if (e.PropertyName == nameof(DynArea.IsInPushDown)) {
}
private void GageService_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(gageService.IsInPushDown))
{
updateIsInPushDown();
}
}
void updateControllerState()
void updateControllerState()
{
IsScanning = dynArea.ControllerState == CTRL_STATE.SCAN;
IsStopping = dynArea.ControllerState == CTRL_STATE.FIX || dynArea.ControllerState == CTRL_STATE.STOP;
IsForwarding = dynArea.ControllerState == CTRL_STATE.FORW;
IsBackwarding = dynArea.ControllerState == CTRL_STATE.ORG || dynArea.ControllerState == CTRL_STATE.BACKW;
}
void updateIsInPushDown()
void updateIsInPushDown()
{
IsInPushDown = dynArea.IsInPushDown;
IsInPushDown = gageService.IsInPushDown;
}
}
public class MenuMotionVmUt : MenuMotionVm
public class MenuMotionVmUt : MenuMotionVm
{
public MenuMotionVmUt() {
public MenuMotionVmUt()
{
IsScanning = true;
IsInPushDown = true;
}
}
public class UiModule2_MenuMotion : IUiModule2
{
public string Title => "测厚.扫描运行";
public string Title => "电容测厚.动作";
public ComponentType Type => ComponentType.Menu;
......
......@@ -34,7 +34,7 @@ namespace FLY.Thick.Cap.UI.Client.UiModule
public class UiModule2_MenuSetting : IUiModule2
{
public string Title => "扫描.菜单";
public string Title => "电容测厚.菜单";
public ComponentType Type => ComponentType.Menu;
......
using FLY.Thick.Cap.Common;
using FLY.Thick.Cap.IService;
using FLY.Thick.Cap.IService;
using System;
namespace FLY.Thick.Cap.Client
......@@ -7,11 +6,30 @@ namespace FLY.Thick.Cap.Client
/// <summary>
///
/// </summary>
public class TDGageServiceClient : FObjBase.Reflect.Reflect_SeviceClient, ITDGageService
public class TDGageServiceClient : FLY.Thick.Base.Client.TDGageServiceClient, ITDGageService
{
protected override Type InterfaceType => typeof(ITDGageService);
public DynArea DynArea { get; } = new DynArea();
/// <summary>
/// 正在下压中
/// </summary>
public bool IsInPushDown { get; set; }
/// <summary>
/// 下压按钮触发了请求
/// </summary>
public bool IsPushDownButtonInTrigger { get; set; }
/// <summary>
/// 断膜中
/// </summary>
public bool IsInFilmBreak { get; set; }
/// <summary>
/// 下压可以执行扫描的剩余时间 (秒)
/// </summary>
public int RemainTimeOfReadyToScan { get; set; }
/// <summary>
///
/// </summary>
......@@ -24,39 +42,6 @@ namespace FLY.Thick.Cap.Client
/// <param name="connName">连接器</param>
public TDGageServiceClient(UInt32 serviceId, string connName) : base(serviceId, connName) { }
/// <summary>
///
/// </summary>
public void Scan()
{
Call(nameof(Scan));
}
public void Origin()
{
Call(nameof(Origin));
}
public void Forw()
{
Call(nameof(Forw));
}
public void Backw()
{
Call(nameof(Backw));
}
public void Stop()
{
Call(nameof(Stop));
}
public void Runto(int targetPos)
{
Call(nameof(Runto), new { targetPos });
}
/// <summary>
/// 设置电容传感器气阀推动下压
/// </summary>
......
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FLY.Thick.Cap.Common
{
public class DynArea : FLY.Thick.Base.Common.DynArea
{
public DynArea()
{
}
/// <summary>
/// 正在下压中
/// </summary>
public bool IsInPushDown { get; set; }
/// <summary>
/// 下压按钮触发了请求
/// </summary>
public bool IsPushDownButtonInTrigger { get; set; }
/// <summary>
/// 断膜中
/// </summary>
public bool IsInFilmBreak { get; set; }
/// <summary>
/// 下压可以执行扫描的剩余时间 (秒)
/// </summary>
public int RemainTimeOfReadyToScan { get; set; }
}
}
......@@ -44,7 +44,6 @@
<ItemGroup>
<Compile Include="Client\InitParamServiceClient.cs" />
<Compile Include="Client\TDGageServiceClient.cs" />
<Compile Include="Common\DynArea.cs" />
<Compile Include="Common\ERRNOs.cs" />
<Compile Include="Common\FlyADIODefine.cs" />
<Compile Include="IService\IInitParamService.cs" />
......
......@@ -9,28 +9,34 @@ using System.Threading.Tasks;
namespace FLY.Thick.Cap.IService
{
public interface ITDGageService : INotifyPropertyChanged
public interface ITDGageService : FLY.Thick.Base.IService.ITDGageService
{
[PropertyPush]
DynArea DynArea { get; }
void Scan();
void Origin();
void Forw();
void Backw();
/// <summary>
/// 正在下压中
/// </summary>
bool IsInPushDown { get; }
void Stop();
/// <summary>
/// 下压按钮触发了请求
/// </summary>
bool IsPushDownButtonInTrigger { get; }
void Runto(int targetPos);
/// <summary>
/// 断膜中
/// </summary>
bool IsInFilmBreak { get; }
/// <summary>
/// 下压可以执行扫描的剩余时间 (秒)
/// </summary>
int RemainTimeOfReadyToScan { get; }
/// <summary>
/// 设置电容传感器气阀推动下压
/// </summary>
/// <param name="isInPushDown"></param>
void SetCapSensorPushDown(bool isInPushDown);
}
}
......@@ -229,12 +229,13 @@ namespace FLY.Thick.Cap.Server
break;
case CTRLST.FORW_SAMPLE:
{
if (!flyAd7WithCapSensor.IsTimeToPushTimeGridAdv)
{
//timeGridAdv推送完成
gsample.Do(Misc.DIRECTION.FORWARD);
state = CTRLST.BACKWARD;
}
if (flyAd7WithCapSensor.IsTimeToPushTimeGridAdv)
break;
//timeGridAdv推送完成
gsample.Do(Misc.DIRECTION.FORWARD);
state = CTRLST.BACKWARD;
}
break;
case CTRLST.BACKWARD:
......@@ -264,12 +265,13 @@ namespace FLY.Thick.Cap.Server
break;
case CTRLST.BACKWAIT_2:
{
if (!flyAd7WithCapSensor.IsTimeToPushTimeGridAdv)
{
//timeGridAdv推送完成
FlushAD(DIRECTION.BACKWARD);
state = CTRLST.BACKWAIT_3;
}
if (flyAd7WithCapSensor.IsTimeToPushTimeGridAdv)
break;
//timeGridAdv推送完成
FlushAD(DIRECTION.BACKWARD);
state = CTRLST.BACKWAIT_3;
}
break;
case CTRLST.BACKWAIT_3:
......@@ -294,17 +296,23 @@ namespace FLY.Thick.Cap.Server
{
if (WaitFinish())
{
//是时候推送timeGridAdv
flyAd7WithCapSensor.IsTimeToPushTimeGridAdv = true;
state = CTRLST.BACKW_SAMPLE;
}
}
break;
case CTRLST.BACKW_SAMPLE:
{
if (flyAd7WithCapSensor.IsTimeToPushTimeGridAdv)
break;
gsample.Do(Misc.DIRECTION.BACKWARD);
//完成一次周期
if (!gsample.IsFailure())
orgStartTime = timer.Elapsed;
state = CTRLST.INIT;
}
break;
......
Subproject commit e70a57254003a85bad412837dbb84f06c493eb6f
Subproject commit 70d4619c783bcc73f24a486c8521dea8dc4ff257
......@@ -8,8 +8,6 @@
<namespace name="FLY.Thick.Base.UI.UiModule" />
<alias alias="IUiModule2" type="MultiLayout.UiModule.IUiModule2, MultiLayout" />
<container>
<register type="IUiModule2" mapTo="UiModule2_DynAreaThick" name="base_dathk" />
<register type="IUiModule2" mapTo="UiModule2_DynAreaSample" name="base_das" />
<register type="IUiModule2" mapTo="UiModule2_FixGraph" name="base_fg" />
<register type="IUiModule2" mapTo="UiModule2_DynAreaIO" name="base_daio2" />
</container>
......
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Unity.Configuration" />
</configSections>
<unity>
<assembly name="FLY.Thick.Blowing.UI" />
<namespace name="FLY.Thick.Blowing.UI.UiModule" />
<alias alias="IUiModule2" type="MultiLayout.UiModule.IUiModule2, MultiLayout" />
<container>
<register type="IUiModule2" mapTo="UiModule2_MenuProfile" name="blowing_mp" />
<register type="IUiModule2" mapTo="UiModule2_DynAreaProfile" name="blowing_dap" />
<register type="IUiModule2" mapTo="UiModule2_ScanGraph" name="blowing_sg" />
<register type="IUiModule2" mapTo="UiModule2_ScanGraph2" name="blowing_sg2" />
<register type="IUiModule2" mapTo="UiModule2_ScanGraphCircular" name="blowing_sgc" />
<register type="IUiModule2" mapTo="UiModule2_TrendGraph" name="blowing_tg" />
<register type="IUiModule2" mapTo="UiModule2_TrendGraph2" name="blowing_tg2" />
</container>
</unity>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Unity.Configuration" />
</configSections>
<unity>
<assembly name="FLY.Thick.BlowingScan.UI" />
<namespace name="FLY.Thick.BlowingScan.UI.Client.UiModule" />
<alias alias="IUiModule2" type="MultiLayout.UiModule.IUiModule2, MultiLayout" />
<container>
<register type="IUiModule2" mapTo="UiModule2_DynAreaBlowing" name="blowing_dab" />
<register type="IUiModule2" mapTo="UiModule2_DynAreaFilmWidth" name="blowing_dafw" />
</container>
</unity>
</configuration>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Unity.Configuration" />
</configSections>
<unity>
<assembly name="FLY.Thick.Base" />
<namespace name="FLY.Thick.Base.IService" />
<namespace name="FLY.Thick.Base.Client" />
<assembly name="FLY.Thick.Blowing" />
<namespace name="FLY.Thick.Blowing.IService" />
<namespace name="FLY.Thick.Blowing.Client" />
<assembly name="FLY.Thick.BlowingScan" />
<namespace name="FLY.Thick.BlowingScan.IService" />
<namespace name="FLY.Thick.BlowingScan.Client" />
<assembly name="FLY.OBJComponents" />
<namespace name="FLY.OBJComponents.IService" />
<namespace name="FLY.OBJComponents.Client" />
<container>
<register type="IFlyAdIoDefineService" mapTo="FlyAdIoDefineServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30000" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBorderSearchService" mapTo="BorderSearchServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30002" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="ICurveService" mapTo="CurveServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30003" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IGetSampleService" mapTo="GetSampleServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30005" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IFlyADService" mapTo="FlyADServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30009" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IFixService" mapTo="FixServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30011" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBlowingFixProfileService" mapTo="BlowingFixProfileServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30012" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IScanWarningService" mapTo="ScanWarningServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30013" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBulkDbService" mapTo="BulkDbServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30017" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBlowingService" mapTo="BlowingScanServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30020" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBlowingDetectService" mapTo="BlowingDetectServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30021" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IWarningSystem2Service" mapTo="WarningSystem2ServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="20000" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
</container>
</unity>
</configuration>
\ No newline at end of file
......@@ -4,25 +4,13 @@
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Unity.Configuration" />
</configSections>
<unity>
<assembly name="FLY.Thick.Blowing.UI" />
<namespace name="FLY.Thick.Blowing.UI.UiModule" />
<assembly name="FLY.Thick.BlowingScan.UI" />
<namespace name="FLY.Thick.BlowingScan.UI.Client.UiModule" />
<assembly name="FLY.Thick.Cap.UI" />
<namespace name="FLY.Thick.Cap.UI.Client.UiModule" />
<alias alias="IUiModule2" type="MultiLayout.UiModule.IUiModule2, MultiLayout" />
<container>
<register type="IUiModule2" mapTo="UiModule2_MenuSetting" name="cap_ms" />
<register type="IUiModule2" mapTo="UiModule2_MenuMotion" name="cap_mm" />
<register type="IUiModule2" mapTo="UiModule2_MenuProfile" name="blowing_mp" />
<register type="IUiModule2" mapTo="UiModule2_DynAreaProfile" name="blowing_dap" />
<register type="IUiModule2" mapTo="UiModule2_DynAreaBlowing" name="blowing_dab" />
<register type="IUiModule2" mapTo="UiModule2_DynAreaFilmWidth" name="blowing_dafw" />
<register type="IUiModule2" mapTo="UiModule2_ScanGraph" name="blowing_sg" />
<register type="IUiModule2" mapTo="UiModule2_ScanGraph2" name="blowing_sg2" />
<register type="IUiModule2" mapTo="UiModule2_ScanGraphCircular" name="blowing_sgc" />
<register type="IUiModule2" mapTo="UiModule2_TrendGraph" name="blowing_tg" />
<register type="IUiModule2" mapTo="UiModule2_TrendGraph2" name="blowing_tg2" />
<register type="IUiModule2" mapTo="UiModule2_DynAreaThk" name="cap_dathk" />
</container>
</unity>
</configuration>
\ No newline at end of file
......@@ -4,29 +4,11 @@
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Unity.Configuration" />
</configSections>
<unity>
<assembly name="FLY.Thick.Base" />
<namespace name="FLY.Thick.Base.IService" />
<namespace name="FLY.Thick.Base.Client" />
<assembly name="FLY.Thick.Blowing" />
<namespace name="FLY.Thick.Blowing.IService" />
<namespace name="FLY.Thick.Blowing.Client" />
<assembly name="FLY.Thick.BlowingScan" />
<namespace name="FLY.Thick.BlowingScan.IService" />
<namespace name="FLY.Thick.BlowingScan.Client" />
<assembly name="FLY.Thick.Cap" />
<namespace name="FLY.Thick.Cap.IService" />
<namespace name="FLY.Thick.Cap.Client" />
<assembly name="FLY.OBJComponents" />
<namespace name="FLY.OBJComponents.IService" />
<namespace name="FLY.OBJComponents.Client" />
<assembly name="FLY.Thick.Base" />
<namespace name="FLY.Thick.Base.IService" />
<container>
<register type="IFlyAdIoDefineService" mapTo="FlyAdIoDefineServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30000" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="ITDGageService" mapTo="TDGageServiceClient">
<lifetime type="singleton" />
<constructor>
......@@ -34,27 +16,6 @@
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBorderSearchService" mapTo="BorderSearchServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30002" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="ICurveService" mapTo="CurveServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30003" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IGetSampleService" mapTo="GetSampleServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30005" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IInitParamService" mapTo="InitParamServiceClient">
<lifetime type="singleton" />
<constructor>
......@@ -62,62 +23,6 @@
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IFlyADService" mapTo="FlyADServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30009" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IFixService" mapTo="FixServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30011" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBlowingFixProfileService" mapTo="BlowingFixProfileServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30012" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IScanWarningService" mapTo="ScanWarningServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30013" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBulkDbService" mapTo="BulkDbServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30017" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBlowingService" mapTo="BlowingScanServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30020" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IBlowingDetectService" mapTo="BlowingDetectServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="30021" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
<register type="IWarningSystem2Service" mapTo="WarningSystem2ServiceClient">
<lifetime type="singleton" />
<constructor>
<param name="serviceId" value="20000" />
<param name="connName" dependencyName="cn0" />
</constructor>
</register>
</container>
</unity>
</configuration>
\ No newline at end of file
......@@ -8,6 +8,7 @@
"Name": "gage0.service",
"Path": [
"gage0.service.config",
"blowingScan.service.config",
"cap.service.config",
"airRing.service.config",
"winder.service.config",
......@@ -38,6 +39,8 @@
"Path": [
"base.component.config",
"cap.component.config",
"blowing.component.config",
"blowingScan.component.config",
"unions.component.config",
"airRing.component.config",
"ibc.component.config",
......
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