增加相机界面
This commit is contained in:
parent
326d2feaa8
commit
4f3e308d3d
@ -11,6 +11,7 @@
|
|||||||
<!--<menuItem id="EFEM" resKey="EFEM" viewmodel="SicUI.Client.Models.Platform.TM.EFEMViewModel,SicUI" />-->
|
<!--<menuItem id="EFEM" resKey="EFEM" viewmodel="SicUI.Client.Models.Platform.TM.EFEMViewModel,SicUI" />-->
|
||||||
<!--<menuItem id="EFEM" resKey="EFEM" viewmodel="SicUI.Models.Maintenances.TM.EFEM2ViewModel,SicUI" />-->
|
<!--<menuItem id="EFEM" resKey="EFEM" viewmodel="SicUI.Models.Maintenances.TM.EFEM2ViewModel,SicUI" />-->
|
||||||
<menuItem id="Device" resKey="Device" viewmodel="SicUI.Client.Models.Platform.TM.DeviceViewModel,SicUI" />
|
<menuItem id="Device" resKey="Device" viewmodel="SicUI.Client.Models.Platform.TM.DeviceViewModel,SicUI" />
|
||||||
|
<menuItem id="Vision" resKey="Vision" viewmodel="SicUI.Client.Models.Platform.TM.Device2ViewModel,SicUI" />
|
||||||
<menuItem id="ioPlatform" resKey="Platform IO" System="TM.io" viewmodel="MECF.Framework.UI.Client.CenterViews.Maitenances.IO3.IO3ViewModel,MECF.Framework.UI.Client" />
|
<menuItem id="ioPlatform" resKey="Platform IO" System="TM.io" viewmodel="MECF.Framework.UI.Client.CenterViews.Maitenances.IO3.IO3ViewModel,MECF.Framework.UI.Client" />
|
||||||
<menuItem id="LeakCheck" resKey="LeakCheck" viewmodel="SicUI.Client.Models.Platform.LeakCheck.TMLeakCheckViewModel,SicUI" />
|
<menuItem id="LeakCheck" resKey="LeakCheck" viewmodel="SicUI.Client.Models.Platform.LeakCheck.TMLeakCheckViewModel,SicUI" />
|
||||||
</menuItem>
|
</menuItem>
|
||||||
|
|||||||
31
App/SicUI/Controls/CameraControl.xaml
Normal file
31
App/SicUI/Controls/CameraControl.xaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<UserControl x:Class="SicUI.Controls.CameraControl"
|
||||||
|
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:SicUI.Controls"
|
||||||
|
xmlns:deviceControl="clr-namespace:Aitex.Core.UI.DeviceControl;assembly=MECF.Framework.UI.Core"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignHeight="480" d:DesignWidth="520" Unloaded="CameraControl_Unloaded" Loaded="CameraControl_loaded">
|
||||||
|
<Grid>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="35"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="35"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Label HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="CCD采集" Style="{DynamicResource Table_TitleStyle}" />
|
||||||
|
<Border Grid.Row="1" Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||||
|
<Image x:Name="imageControl" Width="480" Height="360"/>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Row="2" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<TextBlock Text="Connection:" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="12 3"/>
|
||||||
|
<deviceControl:AITSensor Margin="12 3" HorizontalAlignment="Center" VerticalAlignment="Center" CustomColorOff="Gray" CustomColorOn="Lime" LightOnValue="{Binding CamConnection}" IsCustomRender="True" />
|
||||||
|
<Button Content="采集" Width="80" Margin="12 3" Click="ButtonGrab_Click"/>
|
||||||
|
<Button Content="连续采集" Width="80" Click="ButtonGrabbing_Click" Margin="12 3"/>
|
||||||
|
<Button Content="停止" Width="80" Click="ButtonStop_Click" Margin="12 3"/>
|
||||||
|
<TextBlock Text="{Binding CamMessage}" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="12 3"/>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
||||||
160
App/SicUI/Controls/CameraControl.xaml.cs
Normal file
160
App/SicUI/Controls/CameraControl.xaml.cs
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
using Aitex.Core.RT.Log;
|
||||||
|
using CommandLine;
|
||||||
|
using MECF.Framework.Common.DataCenter;
|
||||||
|
using SicUI.Controls.M2C4Parts;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Security.Cryptography;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
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 System.Windows.Threading;
|
||||||
|
using VM.PlatformSDKCS;
|
||||||
|
|
||||||
|
namespace SicUI.Controls
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// CameraControl.xaml 的交互逻辑
|
||||||
|
/// </summary>
|
||||||
|
public partial class CameraControl : UserControl
|
||||||
|
{
|
||||||
|
|
||||||
|
private WriteableBitmap _bitmap;
|
||||||
|
private Int32Rect _rect;
|
||||||
|
private CancellationTokenSource _cts;
|
||||||
|
|
||||||
|
public CameraControl()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
|
||||||
|
// 获取摄像头分辨率
|
||||||
|
var width = (int)QueryDataClient.Instance.Service.GetConfig("HikGigeCamera.Width");
|
||||||
|
var height = (int)QueryDataClient.Instance.Service.GetConfig("HikGigeCamera.Height");
|
||||||
|
|
||||||
|
// 创建 WriteableBitmap,注意像素格式需要与摄像头输出匹配(例如 Bgr24)
|
||||||
|
_bitmap = new WriteableBitmap(width, height, 96, 96, System.Windows.Media.PixelFormats.Bgr24, null);
|
||||||
|
_rect = new Int32Rect(0, 0, _bitmap.PixelWidth, _bitmap.PixelHeight);
|
||||||
|
// 只需设置一次 Source,不必每帧重新赋值
|
||||||
|
imageControl.Source = _bitmap;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task CaptureLoop(CancellationToken token)
|
||||||
|
{
|
||||||
|
while (!token.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var obj = QueryDataClient.Instance.Service.GetData($"LoadLock.HikGigeCamera.CamBitmap");
|
||||||
|
if (obj != null)
|
||||||
|
{
|
||||||
|
Bitmap b = BytesToBitmap((byte[])obj);
|
||||||
|
// 在 UI 线程更新图像数据
|
||||||
|
#pragma warning disable CS4014
|
||||||
|
Application.Current.Dispatcher.BeginInvoke(
|
||||||
|
DispatcherPriority.Background,
|
||||||
|
new Action(() => UpdateBitmap(b)));
|
||||||
|
#pragma warning restore CS4014
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
LOG.Warning($"Camera Capture failed{ex}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据需要调整延时,防止 CPU 占用过高
|
||||||
|
// 异步延时,释放后台线程资源,并响应取消请求
|
||||||
|
try
|
||||||
|
{
|
||||||
|
await Task.Delay(20, token);
|
||||||
|
}
|
||||||
|
catch (OperationCanceledException)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Bitmap BytesToBitmap(byte[] bytes)
|
||||||
|
{
|
||||||
|
using (MemoryStream ms = new MemoryStream(bytes))
|
||||||
|
{
|
||||||
|
return new Bitmap(ms); // 或使用Image.FromStream:ml-citation{ref="1,18" data="citationList"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 更新预先创建的 WriteableBitmap 的像素数据
|
||||||
|
/// </summary>
|
||||||
|
private void UpdateBitmap(Bitmap frame)
|
||||||
|
{
|
||||||
|
if (frame == null || _bitmap == null) return;
|
||||||
|
|
||||||
|
_bitmap.Lock();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// 3. 移除类级别的 _bitmapData,改为局部变量
|
||||||
|
var rect = new System.Drawing.Rectangle(0, 0, frame.Width, frame.Height);
|
||||||
|
var bitmapData = frame.LockBits(rect, ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
int size = bitmapData.Height * bitmapData.Stride;
|
||||||
|
_bitmap.WritePixels(_rect, bitmapData.Scan0, size, bitmapData.Stride, 0, 0);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
// 4. 无论如何必须解锁 GDI 数据
|
||||||
|
frame.UnlockBits(bitmapData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
// 5. 无论如何必须释放 Bitmap 和解锁 WriteableBitmap
|
||||||
|
frame.Dispose();
|
||||||
|
_bitmap.Unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonGrab_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikGigeCamera.Grab","UIGrab");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonGrabbing_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikGigeCamera.Grabbing");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CameraControl_Unloaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
_cts?.Cancel();
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikGigeCamera.Stop");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CameraControl_loaded(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
_cts = new CancellationTokenSource();
|
||||||
|
_ = CaptureLoop(_cts.Token);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ButtonStop_Click(object sender, RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikGigeCamera.Stop");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
841
App/SicUI/Models/Maintenances/TM/Device2View.xaml
Normal file
841
App/SicUI/Models/Maintenances/TM/Device2View.xaml
Normal file
@ -0,0 +1,841 @@
|
|||||||
|
<UserControl
|
||||||
|
x:Class="SicUI.Client.Models.Platform.TM.Device2View"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:cal="http://www.caliburn.org"
|
||||||
|
xmlns:controls="clr-namespace:SicUI.Controls"
|
||||||
|
xmlns:ctrl="http://OpenSEMI.Ctrlib.com/presentation"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:deviceControl="clr-namespace:Aitex.Core.UI.DeviceControl;assembly=MECF.Framework.UI.Core"
|
||||||
|
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||||
|
xmlns:lex="http://wpflocalizeextension.codeplex.com"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
xmlns:unitControls="clr-namespace:MECF.Framework.UI.Client.Ctrlib.UnitControls;assembly=MECF.Framework.UI.Client"
|
||||||
|
xmlns:Release="clr-namespace:VMControls.WPF.Release;assembly=VMControls.WPF.Release"
|
||||||
|
d:DesignHeight="800"
|
||||||
|
d:DesignWidth="1980"
|
||||||
|
lex:LocalizeDictionary.DesignCulture="en"
|
||||||
|
lex:ResxLocalizationProvider.DefaultAssembly="Sicentury.Localization"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_common"
|
||||||
|
mc:Ignorable="d">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="500" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid Grid.Column="0" Margin="0 0 5 0">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="auto"/>
|
||||||
|
<RowDefinition/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Grid Grid.Row="0">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="80" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="80" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="80" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="24" />
|
||||||
|
<RowDefinition Height="32" />
|
||||||
|
<RowDefinition Height="32" />
|
||||||
|
<RowDefinition Height="40" />
|
||||||
|
<RowDefinition Height="40" />
|
||||||
|
<RowDefinition Height="40" />
|
||||||
|
<RowDefinition Height="40" />
|
||||||
|
<RowDefinition Height="40" />
|
||||||
|
<RowDefinition Height="40" />
|
||||||
|
<RowDefinition Height="40" />
|
||||||
|
<RowDefinition Height="40" />
|
||||||
|
<RowDefinition/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Label
|
||||||
|
Grid.ColumnSpan="6"
|
||||||
|
HorizontalContentAlignment="Center"
|
||||||
|
VerticalContentAlignment="Center"
|
||||||
|
Content="Load Rotation"
|
||||||
|
Style="{DynamicResource Table_TitleStyle}" />
|
||||||
|
<Border
|
||||||
|
Grid.Row="1"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Title}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{lex:Loc ID_TXT_Busy}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="1"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<deviceControl:AITSensor
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
GreenColor="True"
|
||||||
|
LightOnValue="{Binding LdRotationIsBusy}" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="2"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Title}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{lex:Loc ID_TXT_Servo_On}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="3"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<deviceControl:AITSensor
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
GreenColor="True"
|
||||||
|
LightOnValue="{Binding LdRotationIsServoOn}" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="4"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Title}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{lex:Loc ID_TXT_Done}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="1"
|
||||||
|
Grid.Column="5"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<deviceControl:AITSensor
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
GreenColor="True"
|
||||||
|
LightOnValue="{Binding LdRotationIsServoDone}" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.Column="0"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Title}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{lex:Loc ID_TXT_WaferPlaced}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.Column="1"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<deviceControl:AITSensor
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
CustomColorOff="Gray"
|
||||||
|
CustomColorOn="Lime"
|
||||||
|
DeviceData="{Binding LoadWaferPlaced}"
|
||||||
|
IsCustomRender="True" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.Column="2"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Title}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{lex:Loc ID_TXT_TrayHomeSensor}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.Column="3"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<deviceControl:AITSensor
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
CustomColorOff="Gray"
|
||||||
|
CustomColorOn="Lime"
|
||||||
|
DeviceData="{Binding LoadTraySensor}"
|
||||||
|
IsCustomRender="True" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.Column="4"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Title}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{lex:Loc ID_TXT_Error}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.Column="5"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<deviceControl:AITSensor
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
GreenColor="True"
|
||||||
|
LightOnValue="{Binding LdRotationIsServoError}" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="5"
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="130"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
Content="{lex:Loc ID_BTN_RelativeHome_Content}"
|
||||||
|
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationRelativeHome" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="5"
|
||||||
|
Grid.Column="2"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="130"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Content="Offset"
|
||||||
|
IsEnabled="{Binding LdRotationBtnEnable}"
|
||||||
|
Visibility="Hidden">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationRelativeHomeOffset" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="5"
|
||||||
|
Grid.Column="4"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="80"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Content="{lex:Loc ID_BTN_Stop_Content}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationStop" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="6"
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="130"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
Content="{lex:Loc ID_BTN_JogCW_Content}"
|
||||||
|
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationJogCW">
|
||||||
|
<cal:Parameter Value="{Binding Path=Text, ElementName=LdStationJogDegree}" />
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="6"
|
||||||
|
Grid.Column="2"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<TextBox
|
||||||
|
x:Name="LdStationJogDegree"
|
||||||
|
MinWidth="90"
|
||||||
|
Margin="10,10,10,9.6"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Text="0.00" />
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="°" />
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="6"
|
||||||
|
Grid.Column="4"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="80"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Content="{lex:Loc ID_BTN_ServoOn_Content}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationServoOn" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="7"
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="130"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
Content="{lex:Loc ID_BTN_JogCCW_Content}"
|
||||||
|
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationJogCCW">
|
||||||
|
<cal:Parameter Value="{Binding Path=Text, ElementName=LdStationJogDegree}" />
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="7"
|
||||||
|
Grid.Column="2"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1" />
|
||||||
|
<Border
|
||||||
|
Grid.Row="7"
|
||||||
|
Grid.Column="4"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="80"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Content="{lex:Loc ID_BTN_Reset_Content}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationReset" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="3"
|
||||||
|
Grid.Column="0"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Title}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{lex:Loc ID_TXT_CurrentPos}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="3"
|
||||||
|
Grid.Column="1"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{Binding LdRotationCurPos, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0:F1}}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="3"
|
||||||
|
Grid.Column="2"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Title}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{lex:Loc ID_TXT_TrayPresence}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="3"
|
||||||
|
Grid.Column="3"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<deviceControl:AITSensor
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
CustomColorOff="Gray"
|
||||||
|
CustomColorOn="Lime"
|
||||||
|
DeviceData="{Binding LoadTrayPresence}"
|
||||||
|
IsCustomRender="True" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="2"
|
||||||
|
Grid.Column="3"
|
||||||
|
Padding="5,1,0,1"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="0,0,0,1">
|
||||||
|
<deviceControl:AITSensor
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
CustomColorOff="Gray"
|
||||||
|
CustomColorOn="Lime"
|
||||||
|
DeviceData="{Binding LoadTrayHomeSensor}"
|
||||||
|
IsCustomRender="True" />
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="3"
|
||||||
|
Grid.Column="4"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1" />
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="4"
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="130"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
Content="{lex:Loc ID_BTN_MoveOneCircle_Content}"
|
||||||
|
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationMoveOneCircle" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="4"
|
||||||
|
Grid.Column="2"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1" />
|
||||||
|
<Border
|
||||||
|
Grid.Row="4"
|
||||||
|
Grid.Column="4"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1" />
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="8"
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="130"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
Content="{lex:Loc ID_BTN_CCDPos1_Content}"
|
||||||
|
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationMoveCCD1Pos" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="8"
|
||||||
|
Grid.Column="2"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{Binding LdCCD1Degree, StringFormat={}{0:F1}}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="8"
|
||||||
|
Grid.Column="4"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1" />
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="9"
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="130"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
Content="{lex:Loc ID_BTN_CCDPos2_Content}"
|
||||||
|
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationMoveCCD2Pos" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="9"
|
||||||
|
Grid.Column="2"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{Binding LdCCD2Degree, StringFormat={}{0:F1}}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="9"
|
||||||
|
Grid.Column="4"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1" />
|
||||||
|
|
||||||
|
<Border
|
||||||
|
Grid.Row="10"
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<Button
|
||||||
|
Width="130"
|
||||||
|
Height="30"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
lex:ResxLocalizationProvider.DefaultDictionary="lang_deviceview"
|
||||||
|
Content="CCDPos3"
|
||||||
|
IsEnabled="{Binding LdRotationBtnEnable}">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="LdRotationMoveCCD3Pos" />
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="10"
|
||||||
|
Grid.Column="2"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1">
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
FontFamily="Arial"
|
||||||
|
FontSize="12"
|
||||||
|
Foreground="{DynamicResource FG_Black}"
|
||||||
|
Text="{Binding LdCCD3Degree, StringFormat={}{0:F1}}"
|
||||||
|
TextWrapping="Wrap" />
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
Grid.Row="10"
|
||||||
|
Grid.Column="4"
|
||||||
|
Grid.ColumnSpan="2"
|
||||||
|
Background="{DynamicResource Table_BG_Content}"
|
||||||
|
BorderBrush="{DynamicResource Table_BD}"
|
||||||
|
BorderThickness="1,0,1,1" />
|
||||||
|
</Grid>
|
||||||
|
<controls:CameraControl IsEnabled="{ Binding LdRotationBtnEnable}" Grid.Row="1" Margin="0 5 0 0"/>
|
||||||
|
</Grid>
|
||||||
|
<Grid Grid.Column="1" Grid.Row="0" Margin="5 0">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="30"/>
|
||||||
|
<RowDefinition Height="*"/>
|
||||||
|
<RowDefinition Height="40"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Label HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="视觉检测" Style="{DynamicResource Table_TitleStyle}" />
|
||||||
|
<Release:VmRenderControl Grid.Row="1" IImageSource="{Binding OutputRanderImage}" />
|
||||||
|
<Border Grid.Row="2" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="350"/>
|
||||||
|
<ColumnDefinition/>
|
||||||
|
<ColumnDefinition/>
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Border Grid.Column="0" Padding="5,1,0,1" Background="{DynamicResource Table_BG_Title}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||||
|
<StackPanel Orientation="Horizontal" Grid.Column="0">
|
||||||
|
<TextBlock Grid.Row="2" Margin="12 3" VerticalAlignment="Center" Text="Load:"/>
|
||||||
|
<deviceControl:AITSensor HorizontalAlignment="Center" GreenColor="True" LightOnValue="{Binding VMIsLoad}" />
|
||||||
|
<TextBlock Grid.Row="2" Margin="12 3" VerticalAlignment="Center" Text="Processing:"/>
|
||||||
|
<deviceControl:AITSensor HorizontalAlignment="Center" GreenColor="True" LightOnValue="{Binding VMIsProcessing}" />
|
||||||
|
<Button Content="重载程式" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="ReloadSolution">
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Column="1" Padding="5,1,0,1" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
<TextBlock Grid.Row="2" Width="70" Margin="12 3" VerticalAlignment="Center" Text="放晶圆检测"/>
|
||||||
|
<Button Content="测试本地照片" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="TestLocalFile">
|
||||||
|
<cal:Parameter Value="UIWaferPlaceCheck"/>
|
||||||
|
<cal:Parameter Value="false"/>
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
<Button Content="测试当前照片" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="TestCCD">
|
||||||
|
<cal:Parameter Value="UIWaferPlaceCheck"/>
|
||||||
|
<cal:Parameter Value="false"/>
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
<Button Content="设此为模板" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="SetSample">
|
||||||
|
<cal:Parameter Value="UIWaferPlaceCheck"/>
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<Border Grid.Column="2" Padding="5,1,0,1" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||||
|
<StackPanel Orientation="Horizontal" Grid.Column="2">
|
||||||
|
<TextBlock Grid.Row="2" Width="70" Margin="12 3" VerticalAlignment="Center" Text="组合检测"/>
|
||||||
|
<CheckBox x:Name="cbx6inch" VerticalAlignment="Center">
|
||||||
|
<TextBlock Text="6寸平边"/>
|
||||||
|
</CheckBox>
|
||||||
|
<Button Content="测试本地照片" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="TestLocalFile">
|
||||||
|
<cal:Parameter Value="UIGroupCheck"/>
|
||||||
|
<cal:Parameter Value="{Binding ElementName=cbx6inch,Path=IsChecked}"/>
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
<Button Content="测试当前照片" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="TestCCD">
|
||||||
|
<cal:Parameter Value="UIGroupCheck"/>
|
||||||
|
<cal:Parameter Value="{Binding ElementName=cbx6inch,Path=IsChecked}"/>
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
<Button Content="设此为模板" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="SetSample">
|
||||||
|
<cal:Parameter Value="GroupCheck"/>
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
<!--<Grid Grid.Column="2" Grid.Row="0" Margin="5 0">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="30"/>
|
||||||
|
<RowDefinition Height="500"/>
|
||||||
|
<RowDefinition Height="60"/>
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<Label HorizontalContentAlignment="Center" VerticalContentAlignment="Center" Content="组合检测" Style="{DynamicResource Table_TitleStyle}" />
|
||||||
|
<Release:VmRenderControl Grid.Row="1" IImageSource="{Binding OutputRanderImage}"/>
|
||||||
|
<Border Grid.Row="2" Background="{DynamicResource Table_BG_Content}" BorderBrush="{DynamicResource Table_BD}" BorderThickness="1,0,1,1">
|
||||||
|
<StackPanel Orientation="Horizontal">
|
||||||
|
-->
|
||||||
|
<!--<TextBlock Grid.Row="2" Width="50" Margin="12 3" VerticalAlignment="Center" Text="Func"/>-->
|
||||||
|
<!--
|
||||||
|
<Button Content="TestLocalFile" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="TestLocalFile"/>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
<Button Content="TestCCD" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="TestCCD">
|
||||||
|
</cal:ActionMessage>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
<Button Content="SetSample" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="SetSample"/>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>
|
||||||
|
-->
|
||||||
|
<!--<Button Content="ReloadSolution" Width="100" Height="30" Margin="12 3">
|
||||||
|
<i:Interaction.Triggers>
|
||||||
|
<i:EventTrigger EventName="Click">
|
||||||
|
<cal:ActionMessage MethodName="ReloadSolution"/>
|
||||||
|
</i:EventTrigger>
|
||||||
|
</i:Interaction.Triggers>
|
||||||
|
</Button>-->
|
||||||
|
<!--
|
||||||
|
<TextBlock Grid.Row="2" Margin="12 3" VerticalAlignment="Center" Text="Load:"/>
|
||||||
|
<deviceControl:AITSensor HorizontalAlignment="Center" GreenColor="True" LightOnValue="{Binding VMIsLoad}" />
|
||||||
|
<TextBlock Grid.Row="2" Margin="12 3" VerticalAlignment="Center" Text="Processing:"/>
|
||||||
|
<deviceControl:AITSensor HorizontalAlignment="Center" GreenColor="True" LightOnValue="{Binding VMIsProcessing}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
|
||||||
|
</Grid>-->
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
||||||
29
App/SicUI/Models/Maintenances/TM/Device2View.xaml.cs
Normal file
29
App/SicUI/Models/Maintenances/TM/Device2View.xaml.cs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows;
|
||||||
|
using System.Windows.Controls;
|
||||||
|
using VMControls.Interface;
|
||||||
|
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;
|
||||||
|
|
||||||
|
namespace SicUI.Client.Models.Platform.TM
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// DeviceView.xaml 的交互逻辑
|
||||||
|
/// </summary>
|
||||||
|
public partial class Device2View : UserControl
|
||||||
|
{
|
||||||
|
public Device2View()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
216
App/SicUI/Models/Maintenances/TM/Device2ViewModel.cs
Normal file
216
App/SicUI/Models/Maintenances/TM/Device2ViewModel.cs
Normal file
@ -0,0 +1,216 @@
|
|||||||
|
using SicUI.Models;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using Aitex.Core.Common.DeviceData;
|
||||||
|
using System.IO;
|
||||||
|
using System.Drawing;
|
||||||
|
using Aitex.Core.Util;
|
||||||
|
using VM.PlatformSDKCS;
|
||||||
|
|
||||||
|
namespace SicUI.Client.Models.Platform.TM
|
||||||
|
{
|
||||||
|
public class Device2ViewModel : SicUIViewModelBase
|
||||||
|
{
|
||||||
|
[Subscription("Load.Rotation.IsServoBusy")]
|
||||||
|
public bool LdRotationIsBusy { get; set; }
|
||||||
|
|
||||||
|
[Subscription("Load.Rotation.IsServoOn")]
|
||||||
|
public bool LdRotationIsServoOn { get; set; }
|
||||||
|
|
||||||
|
[Subscription("Load.Rotation.IsMoveDone")]
|
||||||
|
public bool LdRotationIsServoDone { get; set; }
|
||||||
|
|
||||||
|
[Subscription("Load.Rotation.IsServoError")]
|
||||||
|
public bool LdRotationIsServoError { get; set; }
|
||||||
|
|
||||||
|
[Subscription("TM.LLTrayPresence.DeviceData")]
|
||||||
|
public AITSensorData LoadTrayPresence { get; set; }
|
||||||
|
|
||||||
|
[Subscription("TM.LoadTrayHomeSensor.DeviceData")]
|
||||||
|
public AITSensorData LoadTrayHomeSensor { get; set; }
|
||||||
|
|
||||||
|
[Subscription("TM.LLWaferPlaced.DeviceData")]
|
||||||
|
public AITSensorData LoadWaferPlaced { get; set; }
|
||||||
|
|
||||||
|
[Subscription("Load.Rotation.CurPos")]
|
||||||
|
public double LdRotationCurPos { get; set; }
|
||||||
|
|
||||||
|
[Subscription("Load.Rotation.CCD1Degree")]
|
||||||
|
public double LdCCD1Degree { get; set; }
|
||||||
|
|
||||||
|
[Subscription("Load.Rotation.CCD2Degree")]
|
||||||
|
public double LdCCD2Degree { get; set; }
|
||||||
|
|
||||||
|
[Subscription("Load.Rotation.CCD3Degree")]
|
||||||
|
public double LdCCD3Degree { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.IsOnline")]
|
||||||
|
public bool LoadLockIsOnline { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.Status")]
|
||||||
|
public string LLStatus { get; set; }
|
||||||
|
|
||||||
|
public bool LdRotationBtnEnable => !LdRotationIsBusy && !LdRotationIsServoError && !LoadLockIsOnline && LLStatus == "Idle";
|
||||||
|
public Device2ViewModel()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnActivate()
|
||||||
|
{
|
||||||
|
base.OnActivate();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnDeactivate(bool close)
|
||||||
|
{
|
||||||
|
base.OnDeactivate(close);
|
||||||
|
}
|
||||||
|
|
||||||
|
//protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)
|
||||||
|
//{
|
||||||
|
// base.InvokeAfterUpdateProperty(data);
|
||||||
|
// if (data.ContainsKey("LoadLock.HikVisionMaster.OutputImage"))
|
||||||
|
// {
|
||||||
|
// var bp = (Bitmap)data["LoadLock.HikVisionMaster.OutputImage"];
|
||||||
|
// OutputRanderImage = new(bp);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
private byte[] _oldbyte;
|
||||||
|
protected override void InvokeBeforeUpdateProperty(Dictionary<string, object> data)
|
||||||
|
{
|
||||||
|
base.InvokeBeforeUpdateProperty(data);
|
||||||
|
var bp = (byte[])QueryDataClient.Instance.Service.GetData("LoadLock.HikVisionMaster.OutputImage");
|
||||||
|
if (bp != null)
|
||||||
|
{
|
||||||
|
if (_oldbyte!=null&&!Array.Equals(_oldbyte,bp))
|
||||||
|
{
|
||||||
|
Bitmap b = BytesToBitmap(bp);
|
||||||
|
OutputRanderImage?.Dispose();
|
||||||
|
OutputRanderImage = new ImageBaseData(b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_oldbyte = bp;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Bitmap BytesToBitmap(byte[] bytes)
|
||||||
|
{
|
||||||
|
using (MemoryStream ms = new MemoryStream(bytes))
|
||||||
|
{
|
||||||
|
return new Bitmap(ms); // 或使用Image.FromStream:ml-citation{ref="1,18" data="citationList"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationStop()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.Stop");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationReset()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.ServoReset");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationServoOn()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.ServoOn");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationMoveOneCircle()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.MoveOneCircle");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationRelativeHome()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.MoveRelativeHome");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationRelativeHomeOffset()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.HomeOffset");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationMoveCCD1Pos()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.MoveCCD1Pos");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationMoveCCD2Pos()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.MoveCCD2Pos");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationMoveCCD3Pos()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.MoveCCD3Pos");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationJogCW(float angle)
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.JogCW", angle);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LdRotationJogCCW(float angle)
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"Load.Rotation.JogCCW", angle);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region CCD
|
||||||
|
[Subscription("LoadLock.HikGigeCamera.IsConnected")]
|
||||||
|
public bool CamConnection { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.HikGigeCamera.Message")]
|
||||||
|
public string CamMessage { get; set; }
|
||||||
|
|
||||||
|
public bool CTS { get; set; } = false;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region VM
|
||||||
|
|
||||||
|
[Subscription("LoadLock.HikVisionMaster.SampleCircle")]
|
||||||
|
public double[] SampleCircle { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.HikVisionMaster.CurrentCircle")]
|
||||||
|
public double[] CurrentCircle { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.HikVisionMaster.Distance")]
|
||||||
|
public double Distance { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.HikVisionMaster.IsProcessing")]
|
||||||
|
public string VMIsProcessing { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.HikVisionMaster.LoadFile")]
|
||||||
|
public string VMIsLoad { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.HikVisionMaster.ModuleStatus")]
|
||||||
|
public bool VMRun { get; set; }
|
||||||
|
|
||||||
|
[Subscription("LoadLock.HikVisionMaster.Result")]
|
||||||
|
public bool VMResult { get; set; }
|
||||||
|
|
||||||
|
public ImageBaseData OutputRanderImage { get; set; }
|
||||||
|
|
||||||
|
public void TestLocalFile(string value, bool isinch6)
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikVisionMaster.ExecuteLocalFile", value + (isinch6 ? "FindLine" : ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void TestCCD(string value,bool isinch6)
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikVisionMaster.ExecuteGrab", value + (isinch6? "FindLine" : ""));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetSample(string value)
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikVisionMaster.SetSample", value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ReloadSolution()
|
||||||
|
{
|
||||||
|
InvokeClient.Instance.Service.DoOperation($"LoadLock.HikVisionMaster.ReloadSolution");
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -57,9 +57,41 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup />
|
<PropertyGroup />
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Apps.Data, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5defd79a1cc9b45b, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\Apps.Data.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="CalculatorModuleCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=05c54d68067b9216, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\CalculatorModuleCs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="CommandLine">
|
<Reference Include="CommandLine">
|
||||||
<HintPath>..\..\Dependencies\CommandLine.dll</HintPath>
|
<HintPath>..\..\Dependencies\CommandLine.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="GlobalVariableModuleCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df9beaf7c020f858, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\GlobalVariableModuleCs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="IfModuleCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1ba1107829384f3c, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\IfModuleCs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="ImageSourceModuleCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6a03c4a48a6df5e6, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\ImageSourceModuleCs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="IMVSCaliperEdgeModuCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2e9b837021fe7c82, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\IMVSCaliperEdgeModuCs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="IMVSCircleFitModuCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=43056db02cf11d53, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\IMVSCircleFitModuCs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="IMVSLineFindModuCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=15941e18b10db20b, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\IMVSLineFindModuCs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="KXGEM">
|
<Reference Include="KXGEM">
|
||||||
<HintPath>..\..\Dependencies\KXGEM.dll</HintPath>
|
<HintPath>..\..\Dependencies\KXGEM.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@ -72,6 +104,10 @@
|
|||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="PresentationFramework.Aero" />
|
<Reference Include="PresentationFramework.Aero" />
|
||||||
<Reference Include="presentationframework.aero2" />
|
<Reference Include="presentationframework.aero2" />
|
||||||
|
<Reference Include="SaveImageCs, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71ec4914c8d95fd5, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\SaveImageCs.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="SciChart.Charting">
|
<Reference Include="SciChart.Charting">
|
||||||
<HintPath>..\..\Dependencies\SciCart\SciChart.Charting.dll</HintPath>
|
<HintPath>..\..\Dependencies\SciCart\SciChart.Charting.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@ -104,6 +140,42 @@
|
|||||||
<Reference Include="System.Xaml">
|
<Reference Include="System.Xaml">
|
||||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="VM.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=61600122bc9264b9, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VM.Core.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VM.PlatformSDKCS, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c1484a72052ee3d4, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VM.PlatformSDKCS.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VM.Util, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a8f590f1c0b8da86, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VM.Util.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VM.Utility, Version=1.0.0.0, Culture=neutral, PublicKeyToken=11e824e986ec8874, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VM.Utility.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VMControls.BaseInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=14444b8df74b6e6a, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VMControls.BaseInterface.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VMControls.Interface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cb41614600cf774b, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VMControls.Interface.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VMControls.RenderInterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=4bcfc50547abbb24, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VMControls.RenderInterface.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VMControls.Winform.Release, Version=1.0.0.0, Culture=neutral, PublicKeyToken=2efa940dfee4dc7e, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VMControls.Winform.Release.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="VMControls.WPF.Release, Version=1.0.0.0, Culture=neutral, PublicKeyToken=fdd2c8be7291c30c, processorArchitecture=MSIL">
|
||||||
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\Dependencies\VisionMaster\VMControls.WPF.Release.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="WindowsBase" />
|
<Reference Include="WindowsBase" />
|
||||||
<Reference Include="PresentationCore" />
|
<Reference Include="PresentationCore" />
|
||||||
<Reference Include="PresentationFramework" />
|
<Reference Include="PresentationFramework" />
|
||||||
@ -142,6 +214,9 @@
|
|||||||
<Compile Include="Controls\BodyLid.xaml.cs">
|
<Compile Include="Controls\BodyLid.xaml.cs">
|
||||||
<DependentUpon>BodyLid.xaml</DependentUpon>
|
<DependentUpon>BodyLid.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Controls\CameraControl.xaml.cs">
|
||||||
|
<DependentUpon>CameraControl.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Controls\ChooseDialogBoxView.xaml.cs">
|
<Compile Include="Controls\ChooseDialogBoxView.xaml.cs">
|
||||||
<DependentUpon>ChooseDialogBoxView.xaml</DependentUpon>
|
<DependentUpon>ChooseDialogBoxView.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@ -213,6 +288,10 @@
|
|||||||
<DependentUpon>RuntimeView.xaml</DependentUpon>
|
<DependentUpon>RuntimeView.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Models\Maintenances\RuntimeViewModel.cs" />
|
<Compile Include="Models\Maintenances\RuntimeViewModel.cs" />
|
||||||
|
<Compile Include="Models\Maintenances\TM\Device2View.xaml.cs">
|
||||||
|
<DependentUpon>Device2View.xaml</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Models\Maintenances\TM\Device2ViewModel.cs" />
|
||||||
<Compile Include="Models\Maintenances\TM\DeviceView.xaml.cs">
|
<Compile Include="Models\Maintenances\TM\DeviceView.xaml.cs">
|
||||||
<DependentUpon>DeviceView.xaml</DependentUpon>
|
<DependentUpon>DeviceView.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
@ -371,6 +450,10 @@
|
|||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="Controls\CameraControl.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
<Page Include="Controls\ChooseDialogBoxView.xaml">
|
<Page Include="Controls\ChooseDialogBoxView.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
@ -447,6 +530,10 @@
|
|||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
</Page>
|
</Page>
|
||||||
|
<Page Include="Models\Maintenances\TM\Device2View.xaml">
|
||||||
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
|
</Page>
|
||||||
<Page Include="Models\Maintenances\TM\DeviceView.xaml">
|
<Page Include="Models\Maintenances\TM\DeviceView.xaml">
|
||||||
<SubType>Designer</SubType>
|
<SubType>Designer</SubType>
|
||||||
<Generator>MSBuild:Compile</Generator>
|
<Generator>MSBuild:Compile</Generator>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user